diff --git a/pom.xml b/pom.xml index d8f67281..d8d596c1 100644 --- a/pom.xml +++ b/pom.xml @@ -344,10 +344,16 @@ - ruoyi-admin ruoyi-common ruoyi-modules + ruoyi-modules-api + ruoyi-modules-api + ruoyi-modules-api/ruoyi-device-api + ruoyi-modules-api/ruoyi-weixin-api + ruoyi-modules/ruoyi-weixin + ruoyi-modules/ruoyi-device + pom diff --git a/ruoyi-admin/Dockerfile b/ruoyi-admin/Dockerfile deleted file mode 100644 index bf14c4ee..00000000 --- a/ruoyi-admin/Dockerfile +++ /dev/null @@ -1,35 +0,0 @@ -#基础镜像 -FROM findepi/graalvm:java17-native - -# 设置环境变量 -ENV LANG C.UTF-8 -ENV LANGUAGE C.UTF-8 -ENV LC_ALL C.UTF-8 -ENV SERVER_PORT=6039 - -MAINTAINER ageerle - -RUN mkdir -p /ruoyi/server/logs \ - /ruoyi/server/temp \ - /ruoyi/skywalking/agent - - -#工作空间 -WORKDIR /ruoyi/server - - - -EXPOSE ${SERVER_PORT} - -ADD ./target/ruoyi-admin.jar ./app.jar - - -ENTRYPOINT ["java", \ - "-Djava.security.egd=file:/dev/./urandom", \ - "-Dserver.port=${SERVER_PORT}", \ - # 应用名称 如果想区分集群节点监控 改成不同的名称即可 -# "-Dskywalking.agent.service_name=ruoyi-server", \ -# "-javaagent:/ruoyi/skywalking/agent/skywalking-agent.jar", \ - "-jar", "app.jar"] - - diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml deleted file mode 100644 index 5ad40cdd..00000000 --- a/ruoyi-admin/pom.xml +++ /dev/null @@ -1,129 +0,0 @@ - - - - ruoyi-ai - org.ruoyi - ${revision} - ../pom.xml - - 4.0.0 - jar - ruoyi-admin - - - web服务入口 - - - - - - - com.mysql - mysql-connector-j - - - - - com.oracle.database.jdbc - ojdbc8 - - - - - org.postgresql - postgresql - - - - - com.microsoft.sqlserver - mssql-jdbc - - - - org.ruoyi - ruoyi-common-doc - - - - org.ruoyi - ruoyi-system - - - - org.ruoyi - ruoyi-chat - - - - org.ruoyi - ruoyi-knowledge - - - - org.ruoyi - ruoyi-generator - - - - - org.ruoyi - ruoyi-demo - - - - org.springframework.boot - spring-boot-starter-test - test - - - - - net.coobird - thumbnailator - 0.4.11 - - - io.github.ollama4j - ollama4j - 1.0.79 - compile - - - - - - ${project.artifactId} - - - org.springframework.boot - spring-boot-maven-plugin - ${spring-boot.version} - - - - repackage - - - - - - org.apache.maven.plugins - maven-jar-plugin - ${maven-jar-plugin.version} - - - org.apache.maven.plugins - maven-war-plugin - ${maven-war-plugin.version} - - false - ${project.artifactId} - - - - - - diff --git a/ruoyi-admin/src/main/java/org/ruoyi/controller/KnowledgeController.java b/ruoyi-admin/src/main/java/org/ruoyi/controller/KnowledgeController.java deleted file mode 100644 index e399e888..00000000 --- a/ruoyi-admin/src/main/java/org/ruoyi/controller/KnowledgeController.java +++ /dev/null @@ -1,184 +0,0 @@ -package org.ruoyi.controller; - -import cn.dev33.satoken.stp.StpUtil; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.RequiredArgsConstructor; -import org.ruoyi.common.chat.domain.request.ChatRequest; -import org.ruoyi.common.chat.entity.chat.Message; -import org.ruoyi.common.core.domain.R; -import org.ruoyi.common.core.validate.AddGroup; -import org.ruoyi.common.excel.utils.ExcelUtil; -import org.ruoyi.common.log.annotation.Log; -import org.ruoyi.common.log.enums.BusinessType; -import org.ruoyi.common.mybatis.core.page.PageQuery; -import org.ruoyi.common.mybatis.core.page.TableDataInfo; -import org.ruoyi.common.satoken.utils.LoginHelper; -import org.ruoyi.common.web.core.BaseController; -import org.ruoyi.knowledge.chain.vectorstore.VectorStore; -import org.ruoyi.knowledge.domain.bo.KnowledgeAttachBo; -import org.ruoyi.knowledge.domain.bo.KnowledgeFragmentBo; -import org.ruoyi.knowledge.domain.bo.KnowledgeInfoBo; -import org.ruoyi.knowledge.domain.req.KnowledgeInfoUploadRequest; -import org.ruoyi.knowledge.domain.vo.KnowledgeAttachVo; -import org.ruoyi.knowledge.domain.vo.KnowledgeFragmentVo; -import org.ruoyi.knowledge.domain.vo.KnowledgeInfoVo; -import org.ruoyi.knowledge.service.EmbeddingService; -import org.ruoyi.knowledge.service.IKnowledgeAttachService; -import org.ruoyi.knowledge.service.IKnowledgeFragmentService; -import org.ruoyi.knowledge.service.IKnowledgeInfoService; -import org.ruoyi.system.service.ISseService; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; - -import java.util.List; - - -/** - * 知识库 - * - * @author Lion Li - * @date 2024-10-21 - */ -@Validated -@RequiredArgsConstructor -@RestController -@RequestMapping("/knowledge") -public class KnowledgeController extends BaseController { - - private final IKnowledgeInfoService knowledgeInfoService; - - private final VectorStore vectorStore; - - private final IKnowledgeAttachService attachService; - - private final IKnowledgeFragmentService fragmentService; - - private final EmbeddingService embeddingService; - - private final ISseService sseService; - - /** - * 知识库对话 - */ - @PostMapping("/send") - public SseEmitter send(@RequestBody @Valid ChatRequest chatRequest, HttpServletRequest request) { - List messages = chatRequest.getMessages(); - // 获取知识库信息 - Message message = messages.get(messages.size() - 1); - StringBuilder sb = new StringBuilder(message.getContent().toString()); - List nearestList; - List queryVector = embeddingService.getQueryVector(message.getContent().toString(), chatRequest.getKid()); - nearestList = vectorStore.nearest(queryVector, chatRequest.getKid()); - for (String prompt : nearestList) { - sb.append("\n####").append(prompt); - } - sb.append( (nearestList.size() > 0 ? "\n\n注意:回答问题时,须严格根据我给你的系统上下文内容原文进行回答,请不要自己发挥,回答时保持原来文本的段落层级" : "")); - message.setContent(sb.toString()); - return sseService.sseChat(chatRequest, request); - } - - /** - * 根据用户信息查询本地知识库 - */ - @GetMapping("/list") - public TableDataInfo list(KnowledgeInfoBo bo, PageQuery pageQuery) { - if(!StpUtil.isLogin()){ - return null; - } - bo.setUid(LoginHelper.getUserId()); - return knowledgeInfoService.queryPageList(bo, pageQuery); - } - - /** - * 新增知识库 - */ - @Log(title = "知识库", businessType = BusinessType.INSERT) - @PostMapping("/save") - public R save(@Validated(AddGroup.class) @RequestBody KnowledgeInfoBo bo) { - knowledgeInfoService.saveOne(bo); - return R.ok(); - } - - /** - * 删除知识库 - */ - @PostMapping("/remove/{id}") - public R remove(@PathVariable String id){ - knowledgeInfoService.removeKnowledge(id); - return R.ok("删除知识库成功!"); - } - - /** - * 修改知识库 - */ - @Log(title = "知识库", businessType = BusinessType.UPDATE) - @PostMapping("/edit") - public R edit( @RequestBody KnowledgeInfoBo bo) { - return toAjax(knowledgeInfoService.updateByBo(bo)); - } - - /** - * 导出知识库列表 - */ - @Log(title = "知识库", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(KnowledgeInfoBo bo, HttpServletResponse response) { - List list = knowledgeInfoService.queryList(bo); - ExcelUtil.exportExcel(list, "知识库", KnowledgeInfoVo.class, response); - } - - /** - * 查询知识附件信息 - */ - @GetMapping("/detail/{kid}") - public TableDataInfo attach(KnowledgeAttachBo bo, PageQuery pageQuery,@PathVariable String kid){ - bo.setKid(kid); - return attachService.queryPageList(bo, pageQuery); - } - - /** - * 上传知识库附件 - */ - @PostMapping(value = "/attach/upload") - public R upload(KnowledgeInfoUploadRequest request){ - knowledgeInfoService.upload(request); - return R.ok("上传知识库附件成功!"); - } - - /** - * 获取知识库附件详细信息 - * - * @param id 主键 - */ - @GetMapping("attach/info/{id}") - public R getAttachInfo(@NotNull(message = "主键不能为空") - @PathVariable Long id) { - return R.ok(attachService.queryById(id)); - } - - /** - * 删除知识库附件 - * - */ - @PostMapping("attach/remove/{docId}") - public R removeAttach(@NotEmpty(message = "主键不能为空") @PathVariable String docId) { - attachService.removeKnowledgeAttach(docId); - return R.ok(); - } - - - /** - * 查询知识片段 - */ - @GetMapping("/fragment/list/{docId}") - public TableDataInfo fragmentList(KnowledgeFragmentBo bo, PageQuery pageQuery, @PathVariable String docId) { - bo.setDocId(docId); - return fragmentService.queryPageList(bo, pageQuery); - } - -} diff --git a/ruoyi-modules-api/pom.xml b/ruoyi-modules-api/pom.xml new file mode 100644 index 00000000..5acc7101 --- /dev/null +++ b/ruoyi-modules-api/pom.xml @@ -0,0 +1,61 @@ + + + 4.0.0 + + org.ruoyi + ruoyi-ai + 1.0.0 + + + ruoyi-modules-api + pom + + ruoyi-system-api + ruoyi-chat-api + ruoyi-knowledge-api + + + + 17 + 17 + UTF-8 + + + + + + + org.ruoyi + ruoyi-common-core + + + + + + org.ruoyi + ruoyi-common-mybatis + + + + + + org.ruoyi + ruoyi-common-sensitive + + + + + + org.ruoyi + ruoyi-common-excel + + + + + + + + + diff --git a/ruoyi-modules-api/ruoyi-chat-api/pom.xml b/ruoyi-modules-api/ruoyi-chat-api/pom.xml new file mode 100644 index 00000000..fde7a466 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-chat-api/pom.xml @@ -0,0 +1,22 @@ + + + 4.0.0 + + org.ruoyi + ruoyi-modules-api + 1.0.0 + + + ruoyi-chat-api + + + 17 + 17 + UTF-8 + + + + + diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatAppStore.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAppStore.java similarity index 96% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatAppStore.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAppStore.java index b98cbeae..298984ce 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatAppStore.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAppStore.java @@ -1,10 +1,10 @@ -package org.ruoyi.system.domain; +package org.ruoyi.domain; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import org.ruoyi.common.mybatis.core.domain.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; +import org.ruoyi.common.mybatis.core.domain.BaseEntity; import java.io.Serial; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatConfig.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatConfig.java similarity index 90% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatConfig.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatConfig.java index a38b2f0a..385bd2d9 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatConfig.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatConfig.java @@ -1,13 +1,13 @@ -package org.ruoyi.system.domain; +package org.ruoyi.domain; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; +import org.ruoyi.common.mybatis.core.domain.BaseEntity; import org.ruoyi.common.sensitive.annotation.Sensitive; import org.ruoyi.common.sensitive.core.SensitiveStrategy; -import org.ruoyi.common.tenant.core.TenantEntity; import java.io.Serial; @@ -20,7 +20,7 @@ import java.io.Serial; @Data @EqualsAndHashCode(callSuper = true) @TableName("chat_config") -public class ChatConfig extends TenantEntity { +public class ChatConfig extends BaseEntity { @Serial private static final long serialVersionUID = 1L; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatGpts.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatGpts.java similarity index 98% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatGpts.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatGpts.java index 8734eaa0..675d7698 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatGpts.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatGpts.java @@ -1,4 +1,4 @@ -package org.ruoyi.system.domain; +package org.ruoyi.domain; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatMessage.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatMessage.java similarity index 98% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatMessage.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatMessage.java index b60a0870..7ef7886d 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatMessage.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatMessage.java @@ -1,4 +1,4 @@ -package org.ruoyi.system.domain; +package org.ruoyi.domain; import com.baomidou.mybatisplus.annotation.TableName; import jakarta.validation.constraints.NotBlank; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatPlugin.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPlugin.java similarity index 83% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatPlugin.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPlugin.java index 768c6678..d2c88432 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatPlugin.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPlugin.java @@ -1,6 +1,7 @@ -package org.ruoyi.system.domain; +package org.ruoyi.domain; -import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; import org.ruoyi.common.mybatis.core.domain.BaseEntity; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatToken.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatToken.java similarity index 96% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatToken.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatToken.java index 865762f7..e1d04ead 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatToken.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatToken.java @@ -1,11 +1,11 @@ -package org.ruoyi.system.domain; +package org.ruoyi.domain; import com.baomidou.mybatisplus.annotation.TableName; -import org.ruoyi.common.core.validate.AddGroup; -import org.ruoyi.common.core.validate.EditGroup; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Data; +import org.ruoyi.common.core.validate.AddGroup; +import org.ruoyi.common.core.validate.EditGroup; import java.io.Serial; import java.io.Serializable; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatVisitorUsage.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVisitorUsage.java similarity index 97% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatVisitorUsage.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVisitorUsage.java index 3b203811..3883ca92 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatVisitorUsage.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVisitorUsage.java @@ -1,4 +1,4 @@ -package org.ruoyi.system.domain; +package org.ruoyi.domain; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatVoucher.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVoucher.java similarity index 88% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatVoucher.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVoucher.java index ec4b6313..047a1087 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatVoucher.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVoucher.java @@ -1,12 +1,13 @@ -package org.ruoyi.system.domain; +package org.ruoyi.domain; -import com.baomidou.mybatisplus.annotation.*; -import org.ruoyi.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; -import java.math.BigDecimal; +import org.ruoyi.common.mybatis.core.domain.BaseEntity; import java.io.Serial; +import java.math.BigDecimal; /** * 用户兑换记录对象 chat_voucher diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatAppStoreBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAppStoreBo.java similarity index 93% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatAppStoreBo.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAppStoreBo.java index 5af1096a..b4c04908 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatAppStoreBo.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAppStoreBo.java @@ -1,12 +1,13 @@ -package org.ruoyi.system.domain.bo; +package org.ruoyi.domain.bo; -import org.ruoyi.common.mybatis.core.domain.BaseEntity; -import org.ruoyi.system.domain.ChatAppStore; import io.github.linpeilie.annotations.AutoMapper; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.EqualsAndHashCode; +import org.ruoyi.common.mybatis.core.domain.BaseEntity; +import org.ruoyi.domain.ChatAppStore; + /** * 应用市场业务对象 voice_role diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatConfigBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatConfigBo.java similarity index 95% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatConfigBo.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatConfigBo.java index fbada8b9..bf2d7bb7 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatConfigBo.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatConfigBo.java @@ -1,4 +1,4 @@ -package org.ruoyi.system.domain.bo; +package org.ruoyi.domain.bo; import io.github.linpeilie.annotations.AutoMapper; import jakarta.validation.constraints.NotBlank; @@ -10,7 +10,8 @@ import org.ruoyi.common.core.validate.EditGroup; import org.ruoyi.common.mybatis.core.domain.BaseEntity; import org.ruoyi.common.sensitive.annotation.Sensitive; import org.ruoyi.common.sensitive.core.SensitiveStrategy; -import org.ruoyi.system.domain.ChatConfig; +import org.ruoyi.domain.ChatConfig; + /** * 对话配置信息 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatGptsBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatGptsBo.java similarity index 95% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatGptsBo.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatGptsBo.java index dd08528f..27614672 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatGptsBo.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatGptsBo.java @@ -1,4 +1,4 @@ -package org.ruoyi.system.domain.bo; +package org.ruoyi.domain.bo; import io.github.linpeilie.annotations.AutoMapper; import jakarta.validation.constraints.NotBlank; @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode; import org.ruoyi.common.core.validate.AddGroup; import org.ruoyi.common.core.validate.EditGroup; import org.ruoyi.common.mybatis.core.domain.BaseEntity; -import org.ruoyi.system.domain.ChatGpts; +import org.ruoyi.domain.ChatGpts; /** * gpts管理业务对象 chat_gpts diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatMessageBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatMessageBo.java similarity index 94% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatMessageBo.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatMessageBo.java index 4610ab81..e66dc71e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatMessageBo.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatMessageBo.java @@ -1,4 +1,4 @@ -package org.ruoyi.system.domain.bo; +package org.ruoyi.domain.bo; import io.github.linpeilie.annotations.AutoMapper; import jakarta.validation.constraints.NotBlank; @@ -8,7 +8,8 @@ import lombok.EqualsAndHashCode; import org.ruoyi.common.core.validate.AddGroup; import org.ruoyi.common.core.validate.EditGroup; import org.ruoyi.common.mybatis.core.domain.BaseEntity; -import org.ruoyi.system.domain.ChatMessage; +import org.ruoyi.domain.ChatMessage; + /** * 聊天消息业务对象 chat_message diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatPluginBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPluginBo.java similarity index 87% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatPluginBo.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPluginBo.java index 141215e6..1e20837a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatPluginBo.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPluginBo.java @@ -1,13 +1,15 @@ -package org.ruoyi.system.domain.bo; +package org.ruoyi.domain.bo; -import org.ruoyi.common.core.validate.AddGroup; -import org.ruoyi.common.core.validate.EditGroup; -import org.ruoyi.system.domain.ChatPlugin; -import org.ruoyi.common.mybatis.core.domain.BaseEntity; import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.EqualsAndHashCode; -import jakarta.validation.constraints.*; +import org.ruoyi.common.core.validate.AddGroup; +import org.ruoyi.common.core.validate.EditGroup; +import org.ruoyi.common.mybatis.core.domain.BaseEntity; +import org.ruoyi.domain.ChatPlugin; + /** * 插件管理业务对象 chat_plugin diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatVisitorUsageBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVisitorUsageBo.java similarity index 94% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatVisitorUsageBo.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVisitorUsageBo.java index 6518350d..1755d2f3 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatVisitorUsageBo.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVisitorUsageBo.java @@ -1,4 +1,4 @@ -package org.ruoyi.system.domain.bo; +package org.ruoyi.domain.bo; import io.github.linpeilie.annotations.AutoMapper; import jakarta.validation.constraints.NotBlank; @@ -8,7 +8,8 @@ import lombok.EqualsAndHashCode; import org.ruoyi.common.core.validate.AddGroup; import org.ruoyi.common.core.validate.EditGroup; import org.ruoyi.common.mybatis.core.domain.BaseEntity; -import org.ruoyi.system.domain.ChatVisitorUsage; +import org.ruoyi.domain.ChatVisitorUsage; + /** * 访客管理业务对象 chat_visitor_usage diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatVoucherBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVoucherBo.java similarity index 94% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatVoucherBo.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVoucherBo.java index 98ff3c72..60983b7e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatVoucherBo.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVoucherBo.java @@ -1,4 +1,4 @@ -package org.ruoyi.system.domain.bo; +package org.ruoyi.domain.bo; import io.github.linpeilie.annotations.AutoMapper; import jakarta.validation.constraints.NotNull; @@ -7,7 +7,8 @@ import lombok.EqualsAndHashCode; import org.ruoyi.common.core.validate.AddGroup; import org.ruoyi.common.core.validate.EditGroup; import org.ruoyi.common.mybatis.core.domain.BaseEntity; -import org.ruoyi.system.domain.ChatVoucher; +import org.ruoyi.domain.ChatVoucher; + import java.math.BigDecimal; diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/CacheListInfoVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/CacheListInfoVo.java new file mode 100644 index 00000000..b865940e --- /dev/null +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/CacheListInfoVo.java @@ -0,0 +1,23 @@ +package org.ruoyi.domain.vo; + +import lombok.Data; + +import java.util.List; +import java.util.Map; +import java.util.Properties; + +/** + * 缓存监控列表信息 + * + * @author Michelle.Chung + */ +@Data +public class CacheListInfoVo { + + private Properties info; + + private Long dbSize; + + private List> commandStats; + +} diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/CaptchaVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/CaptchaVo.java new file mode 100644 index 00000000..492d2425 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/CaptchaVo.java @@ -0,0 +1,25 @@ +package org.ruoyi.domain.vo; + +import lombok.Data; + +/** + * 验证码信息 + * + * @author Michelle.Chung + */ +@Data +public class CaptchaVo { + + /** + * 是否开启验证码 + */ + private Boolean captchaEnabled = true; + + private String uuid; + + /** + * 验证码图片 + */ + private String img; + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatAppStoreVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAppStoreVo.java similarity index 93% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatAppStoreVo.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAppStoreVo.java index ff46912a..4ae8a95d 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatAppStoreVo.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAppStoreVo.java @@ -1,10 +1,12 @@ -package org.ruoyi.system.domain.vo; +package org.ruoyi.domain.vo; + import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; -import org.ruoyi.system.domain.ChatAppStore; +import org.ruoyi.domain.ChatAppStore; + import java.io.Serial; import java.io.Serializable; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatConfigVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatConfigVo.java similarity index 94% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatConfigVo.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatConfigVo.java index 3444ed35..ba028868 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatConfigVo.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatConfigVo.java @@ -1,4 +1,4 @@ -package org.ruoyi.system.domain.vo; +package org.ruoyi.domain.vo; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; @@ -6,7 +6,8 @@ import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import org.ruoyi.common.sensitive.annotation.Sensitive; import org.ruoyi.common.sensitive.core.SensitiveStrategy; -import org.ruoyi.system.domain.ChatConfig; +import org.ruoyi.domain.ChatConfig; + import java.io.Serial; import java.io.Serializable; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatGptsVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatGptsVo.java similarity index 96% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatGptsVo.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatGptsVo.java index b6331798..ead5f6c8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatGptsVo.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatGptsVo.java @@ -1,10 +1,11 @@ -package org.ruoyi.system.domain.vo; +package org.ruoyi.domain.vo; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; -import org.ruoyi.system.domain.ChatGpts; +import org.ruoyi.domain.ChatGpts; + import java.io.Serial; import java.io.Serializable; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatMessageVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatMessageVo.java similarity index 95% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatMessageVo.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatMessageVo.java index 641e0f7f..f21e41de 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatMessageVo.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatMessageVo.java @@ -1,4 +1,4 @@ -package org.ruoyi.system.domain.vo; +package org.ruoyi.domain.vo; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import io.github.linpeilie.annotations.AutoMapper; @@ -7,7 +7,8 @@ import jakarta.validation.constraints.NotNull; import lombok.Data; import org.ruoyi.common.core.validate.AddGroup; import org.ruoyi.common.core.validate.EditGroup; -import org.ruoyi.system.domain.ChatMessage; +import org.ruoyi.domain.ChatMessage; + import java.io.Serial; import java.io.Serializable; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatPluginVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPluginVo.java similarity index 89% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatPluginVo.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPluginVo.java index 4e4b0968..c4d41fec 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatPluginVo.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPluginVo.java @@ -1,16 +1,13 @@ -package org.ruoyi.system.domain.vo; +package org.ruoyi.domain.vo; -import org.ruoyi.system.domain.ChatPlugin; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; - import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; +import org.ruoyi.domain.ChatPlugin; import java.io.Serial; import java.io.Serializable; -import java.util.Date; - /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatTokenVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatTokenVo.java similarity index 96% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatTokenVo.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatTokenVo.java index ce7eff4a..60a3c20d 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatTokenVo.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatTokenVo.java @@ -1,10 +1,10 @@ -package org.ruoyi.system.domain.vo; +package org.ruoyi.domain.vo; -import org.ruoyi.common.core.validate.AddGroup; -import org.ruoyi.common.core.validate.EditGroup; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Data; +import org.ruoyi.common.core.validate.AddGroup; +import org.ruoyi.common.core.validate.EditGroup; import java.io.Serializable; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatVisitorUsageVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVisitorUsageVo.java similarity index 93% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatVisitorUsageVo.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVisitorUsageVo.java index 217ae449..d85963de 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatVisitorUsageVo.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVisitorUsageVo.java @@ -1,10 +1,10 @@ -package org.ruoyi.system.domain.vo; +package org.ruoyi.domain.vo; -import org.ruoyi.system.domain.ChatVisitorUsage; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; +import org.ruoyi.domain.ChatVisitorUsage; import java.io.Serial; import java.io.Serializable; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatVoucherVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVoucherVo.java similarity index 95% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatVoucherVo.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVoucherVo.java index 0b13b59c..b1462c56 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatVoucherVo.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVoucherVo.java @@ -1,11 +1,10 @@ -package org.ruoyi.system.domain.vo; +package org.ruoyi.domain.vo; -import org.ruoyi.system.domain.ChatVoucher; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; - import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; +import org.ruoyi.domain.ChatVoucher; import java.io.Serial; import java.io.Serializable; diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatAppStoreMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatAppStoreMapper.java new file mode 100644 index 00000000..9f142440 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatAppStoreMapper.java @@ -0,0 +1,16 @@ +package org.ruoyi.mapper; + +import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus; +import org.ruoyi.domain.ChatAppStore; +import org.ruoyi.domain.vo.ChatAppStoreVo; + + +/** + * 应用市场Mapper接口 + * + * @author Lion Li + * @date 2024-03-19 + */ +public interface ChatAppStoreMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatConfigMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatConfigMapper.java new file mode 100644 index 00000000..8b8069ae --- /dev/null +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatConfigMapper.java @@ -0,0 +1,17 @@ +package org.ruoyi.mapper; + +import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus; +import org.ruoyi.domain.ChatConfig; +import org.ruoyi.domain.vo.ChatConfigVo; + + +/** + * 对话配置信息Mapper接口 + * + * @author Lion Li + * @date 2024-04-13 + */ +public interface ChatConfigMapper extends BaseMapperPlus { + + +} diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatGptsMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatGptsMapper.java new file mode 100644 index 00000000..1d9b0a5d --- /dev/null +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatGptsMapper.java @@ -0,0 +1,16 @@ +package org.ruoyi.mapper; + +import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus; +import org.ruoyi.domain.ChatGpts; +import org.ruoyi.domain.vo.ChatGptsVo; + + +/** + * gpts管理Mapper接口 + * + * @author Lion Li + * @date 2024-07-09 + */ +public interface ChatGptsMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatMessageMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatMessageMapper.java new file mode 100644 index 00000000..239a5a4d --- /dev/null +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatMessageMapper.java @@ -0,0 +1,16 @@ +package org.ruoyi.mapper; + +import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus; +import org.ruoyi.domain.ChatMessage; +import org.ruoyi.domain.vo.ChatMessageVo; + + +/** + * 聊天消息Mapper接口 + * + * @author Lion Li + * @date 2023-11-26 + */ +public interface ChatMessageMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPluginMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPluginMapper.java new file mode 100644 index 00000000..e0c64565 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPluginMapper.java @@ -0,0 +1,16 @@ +package org.ruoyi.mapper; + +import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus; +import org.ruoyi.domain.ChatPlugin; +import org.ruoyi.domain.vo.ChatPluginVo; + + +/** + * 插件管理Mapper接口 + * + * @author ageerle + * @date 2025-03-30 + */ +public interface ChatPluginMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatTokenMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatTokenMapper.java new file mode 100644 index 00000000..894b2408 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatTokenMapper.java @@ -0,0 +1,16 @@ +package org.ruoyi.mapper; + +import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus; +import org.ruoyi.domain.ChatToken; +import org.ruoyi.domain.vo.ChatTokenVo; + + +/** + * 聊天消息Mapper接口 + * + * @author Lion Li + * @date 2023-11-26 + */ +public interface ChatTokenMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatVisitorUsageMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatVisitorUsageMapper.java new file mode 100644 index 00000000..95cac453 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatVisitorUsageMapper.java @@ -0,0 +1,16 @@ +package org.ruoyi.mapper; + +import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus; +import org.ruoyi.domain.ChatVisitorUsage; +import org.ruoyi.domain.vo.ChatVisitorUsageVo; + + +/** + * 访客管理Mapper接口 + * + * @author Lion Li + * @date 2024-07-14 + */ +public interface ChatVisitorUsageMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatVoucherMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatVoucherMapper.java new file mode 100644 index 00000000..7c859302 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatVoucherMapper.java @@ -0,0 +1,16 @@ +package org.ruoyi.mapper; + +import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus; +import org.ruoyi.domain.ChatVoucher; +import org.ruoyi.domain.vo.ChatVoucherVo; + + +/** + * 用户兑换记录Mapper接口 + * + * @author Lion Li + * @date 2024-05-03 + */ +public interface ChatVoucherMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatAppStoreService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAppStoreService.java similarity index 50% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatAppStoreService.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAppStoreService.java index 44b49675..3c5f4efd 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatAppStoreService.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAppStoreService.java @@ -1,14 +1,10 @@ -package org.ruoyi.system.service; +package org.ruoyi.service; -import org.ruoyi.system.domain.vo.ChatAppStoreVo; -import org.ruoyi.system.domain.bo.ChatAppStoreBo; -import org.ruoyi.common.mybatis.core.page.TableDataInfo; import org.ruoyi.common.mybatis.core.page.PageQuery; -import org.ruoyi.system.request.RoleListDto; -import org.ruoyi.system.request.RoleRequest; -import org.ruoyi.system.request.SimpleGenerateRequest; -import org.ruoyi.system.response.SimpleGenerateDataResponse; -import org.ruoyi.system.response.rolelist.ChatAppStoreVO; +import org.ruoyi.common.mybatis.core.page.TableDataInfo; +import org.ruoyi.domain.bo.ChatAppStoreBo; +import org.ruoyi.domain.vo.ChatAppStoreVo; + import java.util.Collection; import java.util.List; @@ -36,15 +32,6 @@ public interface IChatAppStoreService { */ List queryList(ChatAppStoreBo bo); - /** - * 新增应用市场 - */ - Boolean insertByBo(RoleRequest roleRequest); - - /** - * 生成音频 - */ - SimpleGenerateDataResponse simpleGenerate(SimpleGenerateRequest simpleGenerateRequest); /** * 修改应用市场 @@ -56,16 +43,5 @@ public interface IChatAppStoreService { */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); - /** - * 查询市场角色 - * - * @return 角色列表 - */ - List roleList(); - /** - * 收藏市场角色 - * - */ - void copyRole(RoleListDto roleListDto); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatConfigService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatConfigService.java similarity index 88% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatConfigService.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatConfigService.java index 45e0067a..6c77647f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatConfigService.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatConfigService.java @@ -1,9 +1,9 @@ -package org.ruoyi.system.service; +package org.ruoyi.service; import org.ruoyi.common.mybatis.core.page.PageQuery; import org.ruoyi.common.mybatis.core.page.TableDataInfo; -import org.ruoyi.system.domain.bo.ChatConfigBo; -import org.ruoyi.system.domain.vo.ChatConfigVo; +import org.ruoyi.domain.bo.ChatConfigBo; +import org.ruoyi.domain.vo.ChatConfigVo; import java.util.Collection; import java.util.List; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatCostService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatCostService.java similarity index 88% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatCostService.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatCostService.java index c1174656..e5825b0f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatCostService.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatCostService.java @@ -1,6 +1,6 @@ -package org.ruoyi.system.service; +package org.ruoyi.service; -import org.ruoyi.system.domain.bo.ChatMessageBo; +import org.ruoyi.domain.bo.ChatMessageBo; public interface IChatCostService { diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatGptsService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatGptsService.java similarity index 87% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatGptsService.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatGptsService.java index 7f4bb365..808225d9 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatGptsService.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatGptsService.java @@ -1,9 +1,9 @@ -package org.ruoyi.system.service; +package org.ruoyi.service; -import org.ruoyi.system.domain.vo.ChatGptsVo; -import org.ruoyi.system.domain.bo.ChatGptsBo; -import org.ruoyi.common.mybatis.core.page.TableDataInfo; import org.ruoyi.common.mybatis.core.page.PageQuery; +import org.ruoyi.common.mybatis.core.page.TableDataInfo; +import org.ruoyi.domain.bo.ChatGptsBo; +import org.ruoyi.domain.vo.ChatGptsVo; import java.util.Collection; import java.util.List; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatMessageService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatMessageService.java similarity index 87% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatMessageService.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatMessageService.java index 671cdc04..f8bef4e0 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatMessageService.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatMessageService.java @@ -1,9 +1,9 @@ -package org.ruoyi.system.service; +package org.ruoyi.service; import org.ruoyi.common.mybatis.core.page.PageQuery; import org.ruoyi.common.mybatis.core.page.TableDataInfo; -import org.ruoyi.system.domain.bo.ChatMessageBo; -import org.ruoyi.system.domain.vo.ChatMessageVo; +import org.ruoyi.domain.bo.ChatMessageBo; +import org.ruoyi.domain.vo.ChatMessageVo; import java.util.Collection; import java.util.List; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatPluginService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPluginService.java similarity index 83% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatPluginService.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPluginService.java index d1981444..08ed858a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatPluginService.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPluginService.java @@ -1,10 +1,9 @@ -package org.ruoyi.system.service; +package org.ruoyi.service; -import org.ruoyi.system.domain.ChatPlugin; -import org.ruoyi.system.domain.vo.ChatPluginVo; -import org.ruoyi.system.domain.bo.ChatPluginBo; -import org.ruoyi.common.mybatis.core.page.TableDataInfo; import org.ruoyi.common.mybatis.core.page.PageQuery; +import org.ruoyi.common.mybatis.core.page.TableDataInfo; +import org.ruoyi.domain.bo.ChatPluginBo; +import org.ruoyi.domain.vo.ChatPluginVo; import java.util.Collection; import java.util.List; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatTokenService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatTokenService.java similarity index 68% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatTokenService.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatTokenService.java index c758a0d8..7eb1b1f2 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatTokenService.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatTokenService.java @@ -1,6 +1,6 @@ -package org.ruoyi.system.service; +package org.ruoyi.service; -import org.ruoyi.system.domain.ChatToken; +import org.ruoyi.domain.ChatToken; /** * 聊天消息Service接口 @@ -13,7 +13,7 @@ public interface IChatTokenService { /** * 查询用户token */ - ChatToken queryByUserId(Long userId,String modelName); + ChatToken queryByUserId(Long userId, String modelName); /** * 清空用户token diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatVisitorUsageService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVisitorUsageService.java similarity index 87% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatVisitorUsageService.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVisitorUsageService.java index 87ab91ce..20c39263 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatVisitorUsageService.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVisitorUsageService.java @@ -1,9 +1,9 @@ -package org.ruoyi.system.service; +package org.ruoyi.service; -import org.ruoyi.system.domain.vo.ChatVisitorUsageVo; -import org.ruoyi.system.domain.bo.ChatVisitorUsageBo; -import org.ruoyi.common.mybatis.core.page.TableDataInfo; import org.ruoyi.common.mybatis.core.page.PageQuery; +import org.ruoyi.common.mybatis.core.page.TableDataInfo; +import org.ruoyi.domain.bo.ChatVisitorUsageBo; +import org.ruoyi.domain.vo.ChatVisitorUsageVo; import java.util.Collection; import java.util.List; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatVoucherService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVoucherService.java similarity index 88% rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatVoucherService.java rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVoucherService.java index 4dfb6843..2f81822b 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatVoucherService.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVoucherService.java @@ -1,9 +1,9 @@ -package org.ruoyi.system.service; +package org.ruoyi.service; -import org.ruoyi.system.domain.vo.ChatVoucherVo; -import org.ruoyi.system.domain.bo.ChatVoucherBo; -import org.ruoyi.common.mybatis.core.page.TableDataInfo; import org.ruoyi.common.mybatis.core.page.PageQuery; +import org.ruoyi.common.mybatis.core.page.TableDataInfo; +import org.ruoyi.domain.bo.ChatVoucherBo; +import org.ruoyi.domain.vo.ChatVoucherVo; import java.util.Collection; import java.util.List; diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatConfigMapper.xml b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatConfigMapper.xml similarity index 71% rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatConfigMapper.xml rename to ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatConfigMapper.xml index b620c1e1..509a739a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatConfigMapper.xml +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatConfigMapper.xml @@ -2,6 +2,6 @@ - + diff --git a/ruoyi-modules-api/ruoyi-device-api/pom.xml b/ruoyi-modules-api/ruoyi-device-api/pom.xml new file mode 100644 index 00000000..7a9cb1a6 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-device-api/pom.xml @@ -0,0 +1,21 @@ + + + 4.0.0 + + org.ruoyi + ruoyi-ai + 1.0.0 + ../../pom.xml + + + ruoyi-device-api + + + 17 + 17 + UTF-8 + + + diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/pom.xml b/ruoyi-modules-api/ruoyi-knowledge-api/pom.xml new file mode 100644 index 00000000..1ba1e998 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-knowledge-api/pom.xml @@ -0,0 +1,20 @@ + + + 4.0.0 + + org.ruoyi + ruoyi-modules-api + 1.0.0 + + + ruoyi-knowledge-api + + + 17 + 17 + UTF-8 + + + diff --git a/ruoyi-modules-api/ruoyi-system-api/pom.xml b/ruoyi-modules-api/ruoyi-system-api/pom.xml new file mode 100644 index 00000000..1b458738 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-system-api/pom.xml @@ -0,0 +1,20 @@ + + + 4.0.0 + + org.ruoyi + ruoyi-modules-api + 1.0.0 + + + ruoyi-system-api + + + 17 + 17 + UTF-8 + + + diff --git a/ruoyi-modules-api/ruoyi-weixin-api/pom.xml b/ruoyi-modules-api/ruoyi-weixin-api/pom.xml new file mode 100644 index 00000000..1d16920e --- /dev/null +++ b/ruoyi-modules-api/ruoyi-weixin-api/pom.xml @@ -0,0 +1,21 @@ + + + 4.0.0 + + org.ruoyi + ruoyi-ai + 1.0.0 + ../../pom.xml + + + ruoyi-weixin-api + + + 17 + 17 + UTF-8 + + + diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/ChatController.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/ChatController.java index a2d1614e..e6a44464 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/ChatController.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/ChatController.java @@ -17,10 +17,7 @@ import org.ruoyi.common.core.exception.base.BaseException; import org.ruoyi.common.mybatis.core.page.PageQuery; import org.ruoyi.common.mybatis.core.page.TableDataInfo; import org.ruoyi.common.satoken.utils.LoginHelper; -import org.ruoyi.system.domain.bo.ChatMessageBo; import org.ruoyi.system.domain.request.translation.TranslationRequest; -import org.ruoyi.system.domain.vo.ChatMessageVo; -import org.ruoyi.system.service.IChatMessageService; import org.ruoyi.system.service.ISseService; import org.springframework.core.io.Resource; import org.springframework.http.ResponseEntity; diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/FaceController.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/FaceController.java index d84a3ade..cb2f2591 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/FaceController.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/FaceController.java @@ -9,7 +9,6 @@ import okhttp3.Request; import org.apache.commons.lang3.math.NumberUtils; import org.ruoyi.chat.domain.InsightFace; import org.ruoyi.chat.util.MjOkHttpUtil; -import org.ruoyi.system.service.IChatCostService; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/LumaController.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/LumaController.java index 4d60cb6d..f3628f42 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/LumaController.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/LumaController.java @@ -9,7 +9,6 @@ import org.apache.commons.lang3.math.NumberUtils; import org.ruoyi.common.core.utils.OkHttpUtil; import org.ruoyi.system.cofing.OkHttpConfig; import org.ruoyi.system.domain.GenerateLuma; -import org.ruoyi.system.service.IChatCostService; import org.springframework.web.bind.annotation.*; /** diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/SubmitController.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/SubmitController.java index 3723fc18..a5e9208b 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/SubmitController.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/SubmitController.java @@ -10,7 +10,6 @@ import org.apache.commons.lang3.math.NumberUtils; import org.ruoyi.chat.dto.*; import org.ruoyi.chat.enums.ActionType; import org.ruoyi.chat.util.MjOkHttpUtil; -import org.ruoyi.system.service.IChatCostService; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/SunoController.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/SunoController.java index 0c51f302..07754fe5 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/SunoController.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/SunoController.java @@ -10,7 +10,6 @@ import org.ruoyi.common.core.utils.OkHttpUtil; import org.ruoyi.system.cofing.OkHttpConfig; import org.ruoyi.system.domain.GenerateLyric; import org.ruoyi.system.domain.GenerateSuno; -import org.ruoyi.system.service.IChatCostService; import org.springframework.web.bind.annotation.*; @RestController diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/VoiceController.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/VoiceController.java index 6ea57d65..a551cbff 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/VoiceController.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/VoiceController.java @@ -7,7 +7,6 @@ import org.ruoyi.system.request.RoleListDto; import org.ruoyi.system.request.SimpleGenerateRequest; import org.ruoyi.system.response.SimpleGenerateDataResponse; import org.ruoyi.system.response.rolelist.ChatAppStoreVO; -import org.ruoyi.system.service.IChatAppStoreService; import org.springframework.web.bind.annotation.*; import java.util.List; diff --git a/ruoyi-modules/ruoyi-device/pom.xml b/ruoyi-modules/ruoyi-device/pom.xml new file mode 100644 index 00000000..ec4cbc40 --- /dev/null +++ b/ruoyi-modules/ruoyi-device/pom.xml @@ -0,0 +1,21 @@ + + + 4.0.0 + + org.ruoyi + ruoyi-ai + 1.0.0 + ../../pom.xml + + + ruoyi-device + + + 17 + 17 + UTF-8 + + + diff --git a/ruoyi-modules/ruoyi-system/pom.xml b/ruoyi-modules/ruoyi-system/pom.xml index cdce8241..17d37c57 100644 --- a/ruoyi-modules/ruoyi-system/pom.xml +++ b/ruoyi-modules/ruoyi-system/pom.xml @@ -124,6 +124,10 @@ 1.0.79 compile + + org.ruoyi + ruoyi-common-mail + diff --git a/ruoyi-admin/src/main/java/org/ruoyi/RuoYiAIApplication.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/RuoYiAIApplication.java similarity index 96% rename from ruoyi-admin/src/main/java/org/ruoyi/RuoYiAIApplication.java rename to ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/RuoYiAIApplication.java index 2d0693c3..68748bc1 100644 --- a/ruoyi-admin/src/main/java/org/ruoyi/RuoYiAIApplication.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/RuoYiAIApplication.java @@ -1,4 +1,4 @@ -package org.ruoyi; +package org.ruoyi.system; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/ruoyi-admin/src/main/java/org/ruoyi/RuoYiAIServletInitializer.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/RuoYiAIServletInitializer.java similarity index 94% rename from ruoyi-admin/src/main/java/org/ruoyi/RuoYiAIServletInitializer.java rename to ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/RuoYiAIServletInitializer.java index 626d7a31..16d037c5 100644 --- a/ruoyi-admin/src/main/java/org/ruoyi/RuoYiAIServletInitializer.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/RuoYiAIServletInitializer.java @@ -1,4 +1,4 @@ -package org.ruoyi; +package org.ruoyi.system; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; diff --git a/ruoyi-admin/src/main/java/org/ruoyi/controller/AuthController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/AuthController.java similarity index 94% rename from ruoyi-admin/src/main/java/org/ruoyi/controller/AuthController.java rename to ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/AuthController.java index 10931863..9be06e69 100644 --- a/ruoyi-admin/src/main/java/org/ruoyi/controller/AuthController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/AuthController.java @@ -1,16 +1,14 @@ -package org.ruoyi.controller; +package org.ruoyi.system.controller.system; import cn.dev33.satoken.annotation.SaIgnore; import cn.hutool.core.collection.CollUtil; import cn.hutool.json.JSONUtil; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; import me.chanjar.weixin.common.error.WxErrorException; import org.ruoyi.common.core.constant.Constants; import org.ruoyi.common.core.domain.R; -import org.ruoyi.common.core.domain.model.EmailLoginBody; -import org.ruoyi.common.core.domain.model.LoginBody; -import org.ruoyi.common.core.domain.model.RegisterBody; -import org.ruoyi.common.core.domain.model.SmsLoginBody; -import org.ruoyi.common.core.domain.model.VisitorLoginBody; +import org.ruoyi.common.core.domain.model.*; import org.ruoyi.common.core.utils.MapstructUtils; import org.ruoyi.common.core.utils.StreamUtils; import org.ruoyi.common.core.utils.StringUtils; @@ -18,16 +16,12 @@ import org.ruoyi.common.satoken.utils.LoginHelper; import org.ruoyi.common.tenant.helper.TenantHelper; import org.ruoyi.system.domain.bo.SysTenantBo; import org.ruoyi.system.domain.vo.LoginTenantVo; +import org.ruoyi.system.domain.vo.LoginVo; import org.ruoyi.system.domain.vo.SysTenantVo; import org.ruoyi.system.domain.vo.TenantListVo; import org.ruoyi.system.service.ISysTenantService; - import org.ruoyi.system.service.SysLoginService; import org.ruoyi.system.service.SysRegisterService; -import org.ruoyi.system.domain.vo.LoginVo; - -import jakarta.servlet.http.HttpServletRequest; -import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-admin/src/main/java/org/ruoyi/controller/CaptchaController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/CaptchaController.java similarity index 98% rename from ruoyi-admin/src/main/java/org/ruoyi/controller/CaptchaController.java rename to ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/CaptchaController.java index 89cf2437..dda65dcc 100644 --- a/ruoyi-admin/src/main/java/org/ruoyi/controller/CaptchaController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/CaptchaController.java @@ -1,10 +1,14 @@ -package org.ruoyi.controller; +package org.ruoyi.system.controller.system; import cn.dev33.satoken.annotation.SaIgnore; import cn.hutool.captcha.AbstractCaptcha; import cn.hutool.captcha.generator.CodeGenerator; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.RandomUtil; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotBlank; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.ruoyi.common.core.constant.Constants; import org.ruoyi.common.core.constant.GlobalConstants; import org.ruoyi.common.core.domain.R; @@ -22,10 +26,6 @@ import org.ruoyi.common.web.config.properties.CaptchaProperties; import org.ruoyi.common.web.enums.CaptchaType; import org.ruoyi.system.domain.request.EmailRequest; import org.ruoyi.system.domain.vo.CaptchaVo; -import jakarta.validation.Valid; -import jakarta.validation.constraints.NotBlank; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; import org.springframework.expression.Expression; import org.springframework.expression.ExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser; @@ -36,7 +36,8 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import java.time.Duration; -import java.util.*; +import java.util.HashMap; +import java.util.Map; /** * 验证码操作处理 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatConfigController.java index 045f3838..a3db5ad8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatConfigController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatConfigController.java @@ -8,9 +8,6 @@ import org.ruoyi.common.core.domain.R; import org.ruoyi.common.core.service.ConfigService; import org.ruoyi.common.core.validate.EditGroup; import org.ruoyi.common.web.core.BaseController; -import org.ruoyi.system.domain.bo.ChatConfigBo; -import org.ruoyi.system.domain.vo.ChatConfigVo; -import org.ruoyi.system.service.IChatConfigService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatGptsController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatGptsController.java index 5610e868..96e5b19a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatGptsController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatGptsController.java @@ -15,9 +15,6 @@ import org.ruoyi.common.log.enums.BusinessType; import org.ruoyi.common.mybatis.core.page.PageQuery; import org.ruoyi.common.mybatis.core.page.TableDataInfo; import org.ruoyi.common.web.core.BaseController; -import org.ruoyi.system.domain.bo.ChatGptsBo; -import org.ruoyi.system.domain.vo.ChatGptsVo; -import org.ruoyi.system.service.IChatGptsService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatMessageController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatMessageController.java index 8487e932..5d0486df 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatMessageController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatMessageController.java @@ -16,9 +16,6 @@ import org.ruoyi.common.mybatis.core.page.PageQuery; import org.ruoyi.common.mybatis.core.page.TableDataInfo; import org.ruoyi.common.satoken.utils.LoginHelper; import org.ruoyi.common.web.core.BaseController; -import org.ruoyi.system.domain.bo.ChatMessageBo; -import org.ruoyi.system.domain.vo.ChatMessageVo; -import org.ruoyi.system.service.IChatMessageService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatPluginController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatPluginController.java index 01f65a49..a0d9a1b4 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatPluginController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatPluginController.java @@ -17,9 +17,6 @@ import org.ruoyi.common.core.domain.R; import org.ruoyi.common.core.validate.AddGroup; import org.ruoyi.common.core.validate.EditGroup; import org.ruoyi.common.log.enums.BusinessType; -import org.ruoyi.system.domain.vo.ChatPluginVo; -import org.ruoyi.system.domain.bo.ChatPluginBo; -import org.ruoyi.system.service.IChatPluginService; import org.ruoyi.common.mybatis.core.page.TableDataInfo; /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatStoreController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatStoreController.java index a5a6bb07..532fb330 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatStoreController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatStoreController.java @@ -3,10 +3,6 @@ package org.ruoyi.system.controller.system; import lombok.RequiredArgsConstructor; import org.ruoyi.common.core.domain.R; import org.ruoyi.common.web.core.BaseController; -import org.ruoyi.system.domain.bo.ChatAppStoreBo; -import org.ruoyi.system.domain.bo.ChatMessageBo; -import org.ruoyi.system.domain.vo.ChatAppStoreVo; -import org.ruoyi.system.service.IChatAppStoreService; import org.springframework.web.bind.annotation.*; import java.util.List; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatVisitorUsageController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatVisitorUsageController.java index 5871128e..f4022782 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatVisitorUsageController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatVisitorUsageController.java @@ -15,9 +15,6 @@ import org.ruoyi.common.log.enums.BusinessType; import org.ruoyi.common.mybatis.core.page.PageQuery; import org.ruoyi.common.mybatis.core.page.TableDataInfo; import org.ruoyi.common.web.core.BaseController; -import org.ruoyi.system.domain.bo.ChatVisitorUsageBo; -import org.ruoyi.system.domain.vo.ChatVisitorUsageVo; -import org.ruoyi.system.service.IChatVisitorUsageService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatVoucherController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatVoucherController.java index cd9fae7d..88cc4f40 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatVoucherController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatVoucherController.java @@ -16,9 +16,6 @@ import org.ruoyi.common.mybatis.core.page.PageQuery; import org.ruoyi.common.mybatis.core.page.TableDataInfo; import org.ruoyi.common.web.core.BaseController; import org.ruoyi.common.wechat.web.utils.UUIDShortUtil; -import org.ruoyi.system.domain.bo.ChatVoucherBo; -import org.ruoyi.system.domain.vo.ChatVoucherVo; -import org.ruoyi.system.service.IChatVoucherService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-admin/src/main/java/org/ruoyi/controller/IndexController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/IndexController.java similarity index 91% rename from ruoyi-admin/src/main/java/org/ruoyi/controller/IndexController.java rename to ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/IndexController.java index ecbfe71e..72b6828d 100644 --- a/ruoyi-admin/src/main/java/org/ruoyi/controller/IndexController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/IndexController.java @@ -1,4 +1,4 @@ -package org.ruoyi.controller; +package org.ruoyi.system.controller.system; import cn.dev33.satoken.annotation.SaIgnore; import lombok.RequiredArgsConstructor; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/KnowledgeController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/KnowledgeController.java new file mode 100644 index 00000000..3ea10afe --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/KnowledgeController.java @@ -0,0 +1,184 @@ +//package org.ruoyi.system.controller.system; +// +//import cn.dev33.satoken.stp.StpUtil; +//import jakarta.servlet.http.HttpServletRequest; +//import jakarta.servlet.http.HttpServletResponse; +//import jakarta.validation.Valid; +//import jakarta.validation.constraints.NotEmpty; +//import jakarta.validation.constraints.NotNull; +//import lombok.RequiredArgsConstructor; +//import org.ruoyi.common.chat.domain.request.ChatRequest; +//import org.ruoyi.common.chat.entity.chat.Message; +//import org.ruoyi.common.core.domain.R; +//import org.ruoyi.common.core.validate.AddGroup; +//import org.ruoyi.common.excel.utils.ExcelUtil; +//import org.ruoyi.common.log.annotation.Log; +//import org.ruoyi.common.log.enums.BusinessType; +//import org.ruoyi.common.mybatis.core.page.PageQuery; +//import org.ruoyi.common.mybatis.core.page.TableDataInfo; +//import org.ruoyi.common.satoken.utils.LoginHelper; +//import org.ruoyi.common.web.core.BaseController; +//import org.ruoyi.knowledge.chain.vectorstore.VectorStore; +//import org.ruoyi.knowledge.domain.bo.KnowledgeAttachBo; +//import org.ruoyi.knowledge.domain.bo.KnowledgeFragmentBo; +//import org.ruoyi.knowledge.domain.bo.KnowledgeInfoBo; +//import org.ruoyi.knowledge.domain.req.KnowledgeInfoUploadRequest; +//import org.ruoyi.knowledge.domain.vo.KnowledgeAttachVo; +//import org.ruoyi.knowledge.domain.vo.KnowledgeFragmentVo; +//import org.ruoyi.knowledge.domain.vo.KnowledgeInfoVo; +//import org.ruoyi.knowledge.service.EmbeddingService; +//import org.ruoyi.knowledge.service.IKnowledgeAttachService; +//import org.ruoyi.knowledge.service.IKnowledgeFragmentService; +//import org.ruoyi.knowledge.service.IKnowledgeInfoService; +//import org.ruoyi.system.service.ISseService; +//import org.springframework.validation.annotation.Validated; +//import org.springframework.web.bind.annotation.*; +//import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; +// +//import java.util.List; +// +// +///** +// * 知识库 +// * +// * @author Lion Li +// * @date 2024-10-21 +// */ +//@Validated +//@RequiredArgsConstructor +//@RestController +//@RequestMapping("/knowledge") +//public class KnowledgeController extends BaseController { +// +// private final IKnowledgeInfoService knowledgeInfoService; +// +// private final VectorStore vectorStore; +// +// private final IKnowledgeAttachService attachService; +// +// private final IKnowledgeFragmentService fragmentService; +// +// private final EmbeddingService embeddingService; +// +// private final ISseService sseService; +// +// /** +// * 知识库对话 +// */ +// @PostMapping("/send") +// public SseEmitter send(@RequestBody @Valid ChatRequest chatRequest, HttpServletRequest request) { +// List messages = chatRequest.getMessages(); +// // 获取知识库信息 +// Message message = messages.get(messages.size() - 1); +// StringBuilder sb = new StringBuilder(message.getContent().toString()); +// List nearestList; +// List queryVector = embeddingService.getQueryVector(message.getContent().toString(), chatRequest.getKid()); +// nearestList = vectorStore.nearest(queryVector, chatRequest.getKid()); +// for (String prompt : nearestList) { +// sb.append("\n####").append(prompt); +// } +// sb.append( (nearestList.size() > 0 ? "\n\n注意:回答问题时,须严格根据我给你的系统上下文内容原文进行回答,请不要自己发挥,回答时保持原来文本的段落层级" : "")); +// message.setContent(sb.toString()); +// return sseService.sseChat(chatRequest, request); +// } +// +// /** +// * 根据用户信息查询本地知识库 +// */ +// @GetMapping("/list") +// public TableDataInfo list(KnowledgeInfoBo bo, PageQuery pageQuery) { +// if(!StpUtil.isLogin()){ +// return null; +// } +// bo.setUid(LoginHelper.getUserId()); +// return knowledgeInfoService.queryPageList(bo, pageQuery); +// } +// +// /** +// * 新增知识库 +// */ +// @Log(title = "知识库", businessType = BusinessType.INSERT) +// @PostMapping("/save") +// public R save(@Validated(AddGroup.class) @RequestBody KnowledgeInfoBo bo) { +// knowledgeInfoService.saveOne(bo); +// return R.ok(); +// } +// +// /** +// * 删除知识库 +// */ +// @PostMapping("/remove/{id}") +// public R remove(@PathVariable String id){ +// knowledgeInfoService.removeKnowledge(id); +// return R.ok("删除知识库成功!"); +// } +// +// /** +// * 修改知识库 +// */ +// @Log(title = "知识库", businessType = BusinessType.UPDATE) +// @PostMapping("/edit") +// public R edit( @RequestBody KnowledgeInfoBo bo) { +// return toAjax(knowledgeInfoService.updateByBo(bo)); +// } +// +// /** +// * 导出知识库列表 +// */ +// @Log(title = "知识库", businessType = BusinessType.EXPORT) +// @PostMapping("/export") +// public void export(KnowledgeInfoBo bo, HttpServletResponse response) { +// List list = knowledgeInfoService.queryList(bo); +// ExcelUtil.exportExcel(list, "知识库", KnowledgeInfoVo.class, response); +// } +// +// /** +// * 查询知识附件信息 +// */ +// @GetMapping("/detail/{kid}") +// public TableDataInfo attach(KnowledgeAttachBo bo, PageQuery pageQuery,@PathVariable String kid){ +// bo.setKid(kid); +// return attachService.queryPageList(bo, pageQuery); +// } +// +// /** +// * 上传知识库附件 +// */ +// @PostMapping(value = "/attach/upload") +// public R upload(KnowledgeInfoUploadRequest request){ +// knowledgeInfoService.upload(request); +// return R.ok("上传知识库附件成功!"); +// } +// +// /** +// * 获取知识库附件详细信息 +// * +// * @param id 主键 +// */ +// @GetMapping("attach/info/{id}") +// public R getAttachInfo(@NotNull(message = "主键不能为空") +// @PathVariable Long id) { +// return R.ok(attachService.queryById(id)); +// } +// +// /** +// * 删除知识库附件 +// * +// */ +// @PostMapping("attach/remove/{docId}") +// public R removeAttach(@NotEmpty(message = "主键不能为空") @PathVariable String docId) { +// attachService.removeKnowledgeAttach(docId); +// return R.ok(); +// } +// +// +// /** +// * 查询知识片段 +// */ +// @GetMapping("/fragment/list/{docId}") +// public TableDataInfo fragmentList(KnowledgeFragmentBo bo, PageQuery pageQuery, @PathVariable String docId) { +// bo.setDocId(docId); +// return fragmentService.queryPageList(bo, pageQuery); +// } +// +//} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/PayController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/PayController.java index 5e9d1930..eef83314 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/PayController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/PayController.java @@ -1,333 +1,333 @@ -package org.ruoyi.system.controller.system; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.extra.qrcode.QrCodeUtil; -import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; -import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse; -import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; -import com.github.binarywang.wxpay.bean.order.WxPayNativeOrderResult; -import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest; -import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest; -import com.github.binarywang.wxpay.exception.WxPayException; -import com.github.binarywang.wxpay.service.WxPayService; -import com.stripe.Stripe; -import com.stripe.exception.StripeException; -import com.stripe.model.Event; -import com.stripe.model.Price; -import com.stripe.model.Product; -import com.stripe.model.checkout.Session; -import com.stripe.net.Webhook; -import com.stripe.param.checkout.SessionCreateParams; -import jakarta.servlet.http.HttpServletRequest; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.ruoyi.common.config.PayConfig; -import org.ruoyi.common.core.domain.R; -import org.ruoyi.common.core.exception.base.BaseException; -import org.ruoyi.common.core.service.ConfigService; -import org.ruoyi.common.core.utils.StringUtils; -import org.ruoyi.common.oss.core.OssClient; -import org.ruoyi.common.oss.entity.UploadResult; -import org.ruoyi.common.oss.factory.OssFactory; -import org.ruoyi.common.response.PayResponse; -import org.ruoyi.common.service.PayService; -import org.ruoyi.common.utils.MD5Util; -import org.ruoyi.system.domain.bo.PaymentOrdersBo; -import org.ruoyi.system.domain.bo.SysUserBo; -import org.ruoyi.system.domain.request.OrderRequest; -import org.ruoyi.system.domain.vo.PaymentOrdersVo; -import org.ruoyi.system.domain.vo.SysUserVo; -import org.ruoyi.system.service.IPaymentOrdersService; -import org.ruoyi.system.service.ISysUserService; -import org.springframework.web.bind.annotation.*; - -import java.io.ByteArrayOutputStream; -import java.io.InputStream; -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - - -@RequiredArgsConstructor -@RestController -@RequestMapping("/pay") -@Slf4j -public class PayController { - - private final PayService payService; - - private final ISysUserService userService; - - private final IPaymentOrdersService paymentOrdersService; - - private final PayConfig payConfig; - - private final WxPayService wxService; - - private final ConfigService configService; - - /** - * 获取支付二维码 - * - * @Date 2023/7/3 - * @return void - **/ - @PostMapping("/payUrl") - public R payUrl(@RequestBody OrderRequest orderRequest) { - PaymentOrdersBo payOrder = paymentOrdersService.createPayOrder(orderRequest); - PaymentOrdersVo paymentOrdersVo = new PaymentOrdersVo(); - if(!Boolean.parseBoolean(getKey("enabled"))){ - String payUrl = payService.getPayUrl(payOrder.getOrderNo(), orderRequest.getName(), Double.parseDouble(orderRequest.getMoney()), "192.168.1.6"); - byte[] bytes = QrCodeUtil.generatePng(payUrl, 300, 300); - OssClient storage = OssFactory.instance(); - UploadResult upload=storage.upload(bytes, storage.getPath("qrCode",".png"), "image/png"); - BeanUtil.copyProperties(payOrder,paymentOrdersVo); - paymentOrdersVo.setUrl(upload.getUrl()); - }else { - WxPayUnifiedOrderRequest request = new WxPayUnifiedOrderRequest(); - request.setTradeType("NATIVE"); - request.setBody(orderRequest.getName()); - request.setOutTradeNo(payOrder.getOrderNo()); - request.setTotalFee(BaseWxPayRequest.yuanToFen(orderRequest.getMoney())); - request.setSpbillCreateIp("127.0.0.1"); - request.setNotifyUrl(getKey("notifyUrl")); - request.setProductId(payOrder.getId().toString()); - try { - WxPayNativeOrderResult order = wxService.createOrder(request); - byte[] bytes = QrCodeUtil.generatePng(order.getCodeUrl(), 300, 300); - OssClient storage = OssFactory.instance(); - UploadResult upload = storage.upload(bytes, storage.getPath("qrCode",".png"), "image/png"); - BeanUtil.copyProperties(payOrder,paymentOrdersVo); - paymentOrdersVo.setUrl(upload.getUrl()); - } catch (WxPayException e) { - throw new BaseException("获取微信支付二维码发生错误:{}"+e.getMessage()); - } - } - return R.ok(paymentOrdersVo); - } - - /** - * 回调通知地址 - * - * @Date 2023/7/3 - * @param - * @return void - **/ - @GetMapping("/notifyUrl") - public String notifyUrl(PayResponse payResponse) { - // 校验签名 - String mdString = "money=" + payResponse.getMoney() + "&name=" + payResponse.getName() + - "&out_trade_no=" + payResponse.getOut_trade_no() + "&pid=" + payConfig.getPid() + - "&trade_no=" + payResponse.getTrade_no() + "&trade_status=" + payResponse.getTrade_status() + - "&type=" + payResponse.getType() + payConfig.getKey(); - String sign = MD5Util.GetMD5Code(mdString); - if(!sign.equals(payResponse.getSign())){ - throw new BaseException("校验签名失败!"); - } - double money = Double.parseDouble(payResponse.getMoney()); - log.info("支付订单号{}",payResponse); - PaymentOrdersBo paymentOrdersBo = new PaymentOrdersBo(); - paymentOrdersBo.setOrderNo(payResponse.getOut_trade_no()); - List paymentOrdersList = paymentOrdersService.queryList(paymentOrdersBo); - if (CollectionUtil.isEmpty(paymentOrdersList)){ - throw new BaseException("订单不存在!"); - } - // 订单状态修改为已支付 - PaymentOrdersVo paymentOrdersVo = paymentOrdersList.get(0); - paymentOrdersVo.setPaymentStatus("2"); - paymentOrdersVo.setPaymentMethod(payResponse.getType()); - BeanUtil.copyProperties(paymentOrdersVo,paymentOrdersBo); - paymentOrdersService.updateByBo(paymentOrdersBo); - - SysUserVo sysUserVo = userService.selectUserById(paymentOrdersVo.getUserId()); - sysUserVo.setUserBalance(sysUserVo.getUserBalance() + money); - SysUserBo sysUserBo = new SysUserBo(); - BeanUtil.copyProperties(sysUserVo,sysUserBo); - // 设置为付费用户 - sysUserBo.setUserGrade("1"); - userService.updateUser(sysUserBo); - return "success"; - } - - /** - * 跳转通知地址 - * - * @Date 2023/7/3 - * @param - * @return void - **/ - @GetMapping("/return_url") - public void returnUrl() { - log.info("return_url==========="); - } - - - @PostMapping("/notify/wxOrder") - public String parseOrderNotifyResult(@RequestBody String xmlData) throws WxPayException { - WxPayOrderNotifyResult notifyResult = this.wxService.parseOrderNotifyResult(xmlData); - // TODO 根据自己业务场景需要构造返回对象 - PaymentOrdersBo paymentOrdersBo = new PaymentOrdersBo(); - paymentOrdersBo.setOrderNo(notifyResult.getOutTradeNo()); - List paymentOrdersList = paymentOrdersService.queryList(paymentOrdersBo); - PaymentOrdersVo paymentOrdersVo = paymentOrdersList.get(0); - paymentOrdersVo.setPaymentStatus("2"); - paymentOrdersVo.setPaymentMethod("wx"); - BeanUtil.copyProperties(paymentOrdersVo,paymentOrdersBo); - paymentOrdersService.updateByBo(paymentOrdersBo); - SysUserVo sysUserVo = userService.selectUserById(paymentOrdersVo.getUserId()); - sysUserVo.setUserBalance(sysUserVo.getUserBalance() + convertCentsToYuan(notifyResult.getTotalFee())); - SysUserBo sysUserBo = new SysUserBo(); - BeanUtil.copyProperties(sysUserVo,sysUserBo); - // 设置为付费用户 - sysUserBo.setUserGrade("1"); - userService.updateUser(sysUserBo); - return WxPayNotifyResponse.success("success"); - } - - /** - * 将分转换为元,并保留精度。 - * - * @param cents 分的金额,类型为Integer - * @return 转换后的元金额,类型为double - */ - public static double convertCentsToYuan(Integer cents) { - // 处理空输入 - if (cents == null) { - throw new IllegalArgumentException("输入的分金额不能为空"); - } - - // 100分 = 1元 - BigDecimal centsBigDecimal = new BigDecimal(cents); - BigDecimal yuan = centsBigDecimal.divide(new BigDecimal(100), 2, RoundingMode.HALF_UP); - // 转换为double并返回 - return yuan.doubleValue(); - } - - /** - * 获取订单信息 - * - */ - @PostMapping("/orderInfo") - public R orderInfo(@RequestBody OrderRequest orderRequest) { - if(StringUtils.isEmpty(orderRequest.getOrderNo())){ - throw new BaseException("订单号不能为空!"); - } - PaymentOrdersBo paymentOrdersBo = new PaymentOrdersBo(); - paymentOrdersBo.setOrderNo(orderRequest.getOrderNo()); - List paymentOrdersList = paymentOrdersService.queryList(paymentOrdersBo); - if (CollectionUtil.isEmpty(paymentOrdersList)){ - throw new BaseException("订单不存在!"); - } - PaymentOrdersVo paymentOrdersVo = paymentOrdersList.get(0); - return R.ok(paymentOrdersVo); - } - - // 获取支付链接 -// static { -// Stripe.apiKey = "sk_test_51PMMj2KcfX4oNioqXkoKpScTsgmR55xQki2tg8MEZJYc0gjhYV85t2FzDasE06eqZb0sqyYhOp3UXhcGGQLWI4A9008aq8SOnb"; +//package org.ruoyi.system.controller.system; +// +//import cn.hutool.core.bean.BeanUtil; +//import cn.hutool.core.collection.CollectionUtil; +//import cn.hutool.extra.qrcode.QrCodeUtil; +//import cn.hutool.json.JSONObject; +//import cn.hutool.json.JSONUtil; +//import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse; +//import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; +//import com.github.binarywang.wxpay.bean.order.WxPayNativeOrderResult; +//import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest; +//import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest; +//import com.github.binarywang.wxpay.exception.WxPayException; +//import com.github.binarywang.wxpay.service.WxPayService; +//import com.stripe.Stripe; +//import com.stripe.exception.StripeException; +//import com.stripe.model.Event; +//import com.stripe.model.Price; +//import com.stripe.model.Product; +//import com.stripe.model.checkout.Session; +//import com.stripe.net.Webhook; +//import com.stripe.param.checkout.SessionCreateParams; +//import jakarta.servlet.http.HttpServletRequest; +//import lombok.RequiredArgsConstructor; +//import lombok.extern.slf4j.Slf4j; +//import org.ruoyi.common.config.PayConfig; +//import org.ruoyi.common.core.domain.R; +//import org.ruoyi.common.core.exception.base.BaseException; +//import org.ruoyi.common.core.service.ConfigService; +//import org.ruoyi.common.core.utils.StringUtils; +//import org.ruoyi.common.oss.core.OssClient; +//import org.ruoyi.common.oss.entity.UploadResult; +//import org.ruoyi.common.oss.factory.OssFactory; +//import org.ruoyi.common.response.PayResponse; +//import org.ruoyi.common.service.PayService; +//import org.ruoyi.common.utils.MD5Util; +//import org.ruoyi.system.domain.bo.PaymentOrdersBo; +//import org.ruoyi.system.domain.bo.SysUserBo; +//import org.ruoyi.system.domain.request.OrderRequest; +//import org.ruoyi.system.domain.vo.PaymentOrdersVo; +//import org.ruoyi.system.domain.vo.SysUserVo; +//import org.ruoyi.system.service.IPaymentOrdersService; +//import org.ruoyi.system.service.ISysUserService; +//import org.springframework.web.bind.annotation.*; +// +//import java.io.ByteArrayOutputStream; +//import java.io.InputStream; +//import java.math.BigDecimal; +//import java.math.RoundingMode; +//import java.util.HashMap; +//import java.util.List; +//import java.util.Map; +// +// +//@RequiredArgsConstructor +//@RestController +//@RequestMapping("/pay") +//@Slf4j +//public class PayController { +// +// private final PayService payService; +// +// private final ISysUserService userService; +// +// private final IPaymentOrdersService paymentOrdersService; +// +// private final PayConfig payConfig; +// +// private final WxPayService wxService; +// +// private final ConfigService configService; +// +// /** +// * 获取支付二维码 +// * +// * @Date 2023/7/3 +// * @return void +// **/ +// @PostMapping("/payUrl") +// public R payUrl(@RequestBody OrderRequest orderRequest) { +// PaymentOrdersBo payOrder = paymentOrdersService.createPayOrder(orderRequest); +// PaymentOrdersVo paymentOrdersVo = new PaymentOrdersVo(); +// if(!Boolean.parseBoolean(getKey("enabled"))){ +// String payUrl = payService.getPayUrl(payOrder.getOrderNo(), orderRequest.getName(), Double.parseDouble(orderRequest.getMoney()), "192.168.1.6"); +// byte[] bytes = QrCodeUtil.generatePng(payUrl, 300, 300); +// OssClient storage = OssFactory.instance(); +// UploadResult upload=storage.upload(bytes, storage.getPath("qrCode",".png"), "image/png"); +// BeanUtil.copyProperties(payOrder,paymentOrdersVo); +// paymentOrdersVo.setUrl(upload.getUrl()); +// }else { +// WxPayUnifiedOrderRequest request = new WxPayUnifiedOrderRequest(); +// request.setTradeType("NATIVE"); +// request.setBody(orderRequest.getName()); +// request.setOutTradeNo(payOrder.getOrderNo()); +// request.setTotalFee(BaseWxPayRequest.yuanToFen(orderRequest.getMoney())); +// request.setSpbillCreateIp("127.0.0.1"); +// request.setNotifyUrl(getKey("notifyUrl")); +// request.setProductId(payOrder.getId().toString()); +// try { +// WxPayNativeOrderResult order = wxService.createOrder(request); +// byte[] bytes = QrCodeUtil.generatePng(order.getCodeUrl(), 300, 300); +// OssClient storage = OssFactory.instance(); +// UploadResult upload = storage.upload(bytes, storage.getPath("qrCode",".png"), "image/png"); +// BeanUtil.copyProperties(payOrder,paymentOrdersVo); +// paymentOrdersVo.setUrl(upload.getUrl()); +// } catch (WxPayException e) { +// throw new BaseException("获取微信支付二维码发生错误:{}"+e.getMessage()); +// } +// } +// return R.ok(paymentOrdersVo); // } - - /** - * 去支付 - * 1、创建产品 - * 2、设置价格 - * 3、创建支付信息 得到url - * @return - */ - @PostMapping("/stripePay") - public String pay(@RequestBody OrderRequest orderRequest) throws StripeException { - - String enabled = configService.getConfigValue("stripe", "enabled"); - if(!Boolean.parseBoolean(enabled)){ - String prompt = configService.getConfigValue("stripe", "prompt"); - throw new BaseException(prompt); - } - - // 获取支付链接 - Stripe.apiKey = configService.getConfigValue("stripe", "key"); - - // 获取金额字符串并解析为 double - double moneyDouble = Double.parseDouble(orderRequest.getMoney()); - - // 将金额转换为以分为单位的整数 - int randMoney = (int) (moneyDouble * 100); - - Map params = new HashMap<>(); - params.put("name", orderRequest.getName()); - Product product = Product.create(params); - - Map recurring = new HashMap<>(); - recurring.put("interval", "month"); - Map params2 = new HashMap<>(); - params2.put("unit_amount", randMoney); - params2.put("currency", "usd"); - params2.put("recurring", recurring); - params2.put("product", product.getId()); - Price price = Price.create(params2); - - // 创建支付订单 - PaymentOrdersBo payOrder = paymentOrdersService.createPayOrder(orderRequest); - - //创建支付信息 得到url - SessionCreateParams params3 = SessionCreateParams.builder() - .setMode(SessionCreateParams.Mode.SUBSCRIPTION) - .setSuccessUrl(configService.getConfigValue("stripe", "success")) - .setCancelUrl(configService.getConfigValue("stripe", "cancel")) - .addLineItem( - SessionCreateParams.LineItem.builder() - .setQuantity(1L) - .setPrice(price.getId()) - .build()).putMetadata("orderId", payOrder.getOrderNo()) - .build(); - Session session = Session.create(params3); - return session.getUrl(); - } - - /** - * 支付回调 - * - */ - @PostMapping("/stripe_events") - public R stripeEvent(HttpServletRequest request) { - try { - String endpointSecret = configService.getConfigValue("stripe", "secret");//webhook秘钥签名 - InputStream inputStream = request.getInputStream(); - ByteArrayOutputStream output = new ByteArrayOutputStream(); - byte[] buffer = new byte[1024*4]; - int n = 0; - while (-1 != (n = inputStream.read(buffer))) { - output.write(buffer, 0, n); - } - byte[] bytes = output.toByteArray(); - String payload = new String(bytes, "UTF-8"); - String sigHeader = request.getHeader("Stripe-Signature"); - Event event = Webhook.constructEvent(payload, sigHeader, endpointSecret);//验签,并获取事件 - if("checkout.session.completed".equals(event.getType())){ - // 解析 JSON 字符串为 JSONObject - JSONObject jsonObject = JSONUtil.parseObj(event); - // 获取 metadata 对象 - JSONObject metadata = jsonObject.getJSONObject("data") - .getJSONObject("object") - .getJSONObject("metadata"); - - OrderRequest orderRequest = new OrderRequest(); - orderRequest.setPayType("stripe"); - orderRequest.setOrderNo(metadata.getStr("orderId")); - paymentOrdersService.updatePayOrder(orderRequest); - } - } catch (Exception e) { - System.out.println("stripe异步通知(webhook事件)"+e); - } - return R.ok(); - } - - public String getKey(String key) { - return configService.getConfigValue("weixin", key); - } - -} - +// +// /** +// * 回调通知地址 +// * +// * @Date 2023/7/3 +// * @param +// * @return void +// **/ +// @GetMapping("/notifyUrl") +// public String notifyUrl(PayResponse payResponse) { +// // 校验签名 +// String mdString = "money=" + payResponse.getMoney() + "&name=" + payResponse.getName() + +// "&out_trade_no=" + payResponse.getOut_trade_no() + "&pid=" + payConfig.getPid() + +// "&trade_no=" + payResponse.getTrade_no() + "&trade_status=" + payResponse.getTrade_status() + +// "&type=" + payResponse.getType() + payConfig.getKey(); +// String sign = MD5Util.GetMD5Code(mdString); +// if(!sign.equals(payResponse.getSign())){ +// throw new BaseException("校验签名失败!"); +// } +// double money = Double.parseDouble(payResponse.getMoney()); +// log.info("支付订单号{}",payResponse); +// PaymentOrdersBo paymentOrdersBo = new PaymentOrdersBo(); +// paymentOrdersBo.setOrderNo(payResponse.getOut_trade_no()); +// List paymentOrdersList = paymentOrdersService.queryList(paymentOrdersBo); +// if (CollectionUtil.isEmpty(paymentOrdersList)){ +// throw new BaseException("订单不存在!"); +// } +// // 订单状态修改为已支付 +// PaymentOrdersVo paymentOrdersVo = paymentOrdersList.get(0); +// paymentOrdersVo.setPaymentStatus("2"); +// paymentOrdersVo.setPaymentMethod(payResponse.getType()); +// BeanUtil.copyProperties(paymentOrdersVo,paymentOrdersBo); +// paymentOrdersService.updateByBo(paymentOrdersBo); +// +// SysUserVo sysUserVo = userService.selectUserById(paymentOrdersVo.getUserId()); +// sysUserVo.setUserBalance(sysUserVo.getUserBalance() + money); +// SysUserBo sysUserBo = new SysUserBo(); +// BeanUtil.copyProperties(sysUserVo,sysUserBo); +// // 设置为付费用户 +// sysUserBo.setUserGrade("1"); +// userService.updateUser(sysUserBo); +// return "success"; +// } +// +// /** +// * 跳转通知地址 +// * +// * @Date 2023/7/3 +// * @param +// * @return void +// **/ +// @GetMapping("/return_url") +// public void returnUrl() { +// log.info("return_url==========="); +// } +// +// +// @PostMapping("/notify/wxOrder") +// public String parseOrderNotifyResult(@RequestBody String xmlData) throws WxPayException { +// WxPayOrderNotifyResult notifyResult = this.wxService.parseOrderNotifyResult(xmlData); +// // TODO 根据自己业务场景需要构造返回对象 +// PaymentOrdersBo paymentOrdersBo = new PaymentOrdersBo(); +// paymentOrdersBo.setOrderNo(notifyResult.getOutTradeNo()); +// List paymentOrdersList = paymentOrdersService.queryList(paymentOrdersBo); +// PaymentOrdersVo paymentOrdersVo = paymentOrdersList.get(0); +// paymentOrdersVo.setPaymentStatus("2"); +// paymentOrdersVo.setPaymentMethod("wx"); +// BeanUtil.copyProperties(paymentOrdersVo,paymentOrdersBo); +// paymentOrdersService.updateByBo(paymentOrdersBo); +// SysUserVo sysUserVo = userService.selectUserById(paymentOrdersVo.getUserId()); +// sysUserVo.setUserBalance(sysUserVo.getUserBalance() + convertCentsToYuan(notifyResult.getTotalFee())); +// SysUserBo sysUserBo = new SysUserBo(); +// BeanUtil.copyProperties(sysUserVo,sysUserBo); +// // 设置为付费用户 +// sysUserBo.setUserGrade("1"); +// userService.updateUser(sysUserBo); +// return WxPayNotifyResponse.success("success"); +// } +// +// /** +// * 将分转换为元,并保留精度。 +// * +// * @param cents 分的金额,类型为Integer +// * @return 转换后的元金额,类型为double +// */ +// public static double convertCentsToYuan(Integer cents) { +// // 处理空输入 +// if (cents == null) { +// throw new IllegalArgumentException("输入的分金额不能为空"); +// } +// +// // 100分 = 1元 +// BigDecimal centsBigDecimal = new BigDecimal(cents); +// BigDecimal yuan = centsBigDecimal.divide(new BigDecimal(100), 2, RoundingMode.HALF_UP); +// // 转换为double并返回 +// return yuan.doubleValue(); +// } +// +// /** +// * 获取订单信息 +// * +// */ +// @PostMapping("/orderInfo") +// public R orderInfo(@RequestBody OrderRequest orderRequest) { +// if(StringUtils.isEmpty(orderRequest.getOrderNo())){ +// throw new BaseException("订单号不能为空!"); +// } +// PaymentOrdersBo paymentOrdersBo = new PaymentOrdersBo(); +// paymentOrdersBo.setOrderNo(orderRequest.getOrderNo()); +// List paymentOrdersList = paymentOrdersService.queryList(paymentOrdersBo); +// if (CollectionUtil.isEmpty(paymentOrdersList)){ +// throw new BaseException("订单不存在!"); +// } +// PaymentOrdersVo paymentOrdersVo = paymentOrdersList.get(0); +// return R.ok(paymentOrdersVo); +// } +// +// // 获取支付链接 +//// static { +//// Stripe.apiKey = "sk_test_51PMMj2KcfX4oNioqXkoKpScTsgmR55xQki2tg8MEZJYc0gjhYV85t2FzDasE06eqZb0sqyYhOp3UXhcGGQLWI4A9008aq8SOnb"; +//// } +// +// /** +// * 去支付 +// * 1、创建产品 +// * 2、设置价格 +// * 3、创建支付信息 得到url +// * @return +// */ +// @PostMapping("/stripePay") +// public String pay(@RequestBody OrderRequest orderRequest) throws StripeException { +// +// String enabled = configService.getConfigValue("stripe", "enabled"); +// if(!Boolean.parseBoolean(enabled)){ +// String prompt = configService.getConfigValue("stripe", "prompt"); +// throw new BaseException(prompt); +// } +// +// // 获取支付链接 +// Stripe.apiKey = configService.getConfigValue("stripe", "key"); +// +// // 获取金额字符串并解析为 double +// double moneyDouble = Double.parseDouble(orderRequest.getMoney()); +// +// // 将金额转换为以分为单位的整数 +// int randMoney = (int) (moneyDouble * 100); +// +// Map params = new HashMap<>(); +// params.put("name", orderRequest.getName()); +// Product product = Product.create(params); +// +// Map recurring = new HashMap<>(); +// recurring.put("interval", "month"); +// Map params2 = new HashMap<>(); +// params2.put("unit_amount", randMoney); +// params2.put("currency", "usd"); +// params2.put("recurring", recurring); +// params2.put("product", product.getId()); +// Price price = Price.create(params2); +// +// // 创建支付订单 +// PaymentOrdersBo payOrder = paymentOrdersService.createPayOrder(orderRequest); +// +// //创建支付信息 得到url +// SessionCreateParams params3 = SessionCreateParams.builder() +// .setMode(SessionCreateParams.Mode.SUBSCRIPTION) +// .setSuccessUrl(configService.getConfigValue("stripe", "success")) +// .setCancelUrl(configService.getConfigValue("stripe", "cancel")) +// .addLineItem( +// SessionCreateParams.LineItem.builder() +// .setQuantity(1L) +// .setPrice(price.getId()) +// .build()).putMetadata("orderId", payOrder.getOrderNo()) +// .build(); +// Session session = Session.create(params3); +// return session.getUrl(); +// } +// +// /** +// * 支付回调 +// * +// */ +// @PostMapping("/stripe_events") +// public R stripeEvent(HttpServletRequest request) { +// try { +// String endpointSecret = configService.getConfigValue("stripe", "secret");//webhook秘钥签名 +// InputStream inputStream = request.getInputStream(); +// ByteArrayOutputStream output = new ByteArrayOutputStream(); +// byte[] buffer = new byte[1024*4]; +// int n = 0; +// while (-1 != (n = inputStream.read(buffer))) { +// output.write(buffer, 0, n); +// } +// byte[] bytes = output.toByteArray(); +// String payload = new String(bytes, "UTF-8"); +// String sigHeader = request.getHeader("Stripe-Signature"); +// Event event = Webhook.constructEvent(payload, sigHeader, endpointSecret);//验签,并获取事件 +// if("checkout.session.completed".equals(event.getType())){ +// // 解析 JSON 字符串为 JSONObject +// JSONObject jsonObject = JSONUtil.parseObj(event); +// // 获取 metadata 对象 +// JSONObject metadata = jsonObject.getJSONObject("data") +// .getJSONObject("object") +// .getJSONObject("metadata"); +// +// OrderRequest orderRequest = new OrderRequest(); +// orderRequest.setPayType("stripe"); +// orderRequest.setOrderNo(metadata.getStr("orderId")); +// paymentOrdersService.updatePayOrder(orderRequest); +// } +// } catch (Exception e) { +// System.out.println("stripe异步通知(webhook事件)"+e); +// } +// return R.ok(); +// } +// +// public String getKey(String key) { +// return configService.getConfigValue("weixin", key); +// } +// +//} +// diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/WeChatController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/WeChatController.java index a2702b2b..eeaeb908 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/WeChatController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/WeChatController.java @@ -1,81 +1,81 @@ -package org.ruoyi.system.controller.system; - -import cn.dev33.satoken.annotation.SaIgnore; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.ruoyi.common.core.exception.ServiceException; -import org.ruoyi.common.wechat.itchat4j.api.WechatTools; -import org.ruoyi.common.wechat.itchat4j.controller.LoginController; -import org.ruoyi.common.wechat.itchat4j.core.MsgCenter; -import org.ruoyi.common.wechat.itchat4j.face.IMsgHandlerFace; -import org.ruoyi.common.wechat.web.base.BaseException; -import org.ruoyi.system.domain.bo.WxRobConfigBo; -import org.ruoyi.system.domain.vo.WxRobConfigVo; -import org.ruoyi.system.handler.MyMsgHandler; -import org.ruoyi.system.service.ISseService; -import org.ruoyi.system.service.IWxRobConfigService; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; - -/** - * 个人微信扩展控制器 - * - * @author WangLe - */ -@SaIgnore -@Slf4j -@Validated -@RequiredArgsConstructor -@RestController -public class WeChatController { - - private final ISseService sseService; - - private final IWxRobConfigService wxRobConfigService; - - /** - * 登录第一步,获取二维码链接 - * @throws BaseException - */ - @PostMapping("/getQr") - public String getQr(@RequestParam String uniqueKey) { - LoginController login = new LoginController(uniqueKey); - try { - return login.login_1(); - } catch (BaseException e) { - throw new ServiceException("获取二维码失败:"+ e.getMessage()); - } - } - - @PostMapping("/wxLogin") - public Boolean wxLogin(@RequestParam String uniqueKey) { - LoginController login = new LoginController(uniqueKey); - return login.login_2(); - } - - @PostMapping("/wxInit") - public Boolean wxInit(@RequestParam String uniqueKey) { - LoginController login = new LoginController(uniqueKey); - // 开启消息处理线程 - WxRobConfigBo wxRobConfigBo = new WxRobConfigBo(); - wxRobConfigBo.setUniqueKey(uniqueKey); - List wxRobConfigVos = wxRobConfigService.queryList(wxRobConfigBo); - //查询机器人对应的用户 - start(uniqueKey,new MyMsgHandler(uniqueKey,sseService,wxRobConfigVos.get(0))); - return login.login_3(); - } - - @PostMapping("/wxLogout") - public void wxLogout(@RequestParam String uniqueKey) { - WechatTools.logout(uniqueKey); - } - - public void start(String uniqueKey,IMsgHandlerFace msgHandler) { - log.info("7.+++开启消息处理线程["+uniqueKey+"]+++"); - new Thread(() -> MsgCenter.handleMsg(uniqueKey,msgHandler)).start(); - } -} +//package org.ruoyi.system.controller.system; +// +//import cn.dev33.satoken.annotation.SaIgnore; +//import lombok.RequiredArgsConstructor; +//import lombok.extern.slf4j.Slf4j; +//import org.ruoyi.common.core.exception.ServiceException; +//import org.ruoyi.common.wechat.itchat4j.api.WechatTools; +//import org.ruoyi.common.wechat.itchat4j.controller.LoginController; +//import org.ruoyi.common.wechat.itchat4j.core.MsgCenter; +//import org.ruoyi.common.wechat.itchat4j.face.IMsgHandlerFace; +//import org.ruoyi.common.wechat.web.base.BaseException; +//import org.ruoyi.system.domain.bo.WxRobConfigBo; +//import org.ruoyi.system.domain.vo.WxRobConfigVo; +//import org.ruoyi.system.handler.MyMsgHandler; +//import org.ruoyi.system.service.ISseService; +//import org.ruoyi.system.service.IWxRobConfigService; +//import org.springframework.validation.annotation.Validated; +//import org.springframework.web.bind.annotation.PostMapping; +//import org.springframework.web.bind.annotation.RequestParam; +//import org.springframework.web.bind.annotation.RestController; +// +//import java.util.List; +// +///** +// * 个人微信扩展控制器 +// * +// * @author WangLe +// */ +//@SaIgnore +//@Slf4j +//@Validated +//@RequiredArgsConstructor +//@RestController +//public class WeChatController { +// +// private final ISseService sseService; +// +// private final IWxRobConfigService wxRobConfigService; +// +// /** +// * 登录第一步,获取二维码链接 +// * @throws BaseException +// */ +// @PostMapping("/getQr") +// public String getQr(@RequestParam String uniqueKey) { +// LoginController login = new LoginController(uniqueKey); +// try { +// return login.login_1(); +// } catch (BaseException e) { +// throw new ServiceException("获取二维码失败:"+ e.getMessage()); +// } +// } +// +// @PostMapping("/wxLogin") +// public Boolean wxLogin(@RequestParam String uniqueKey) { +// LoginController login = new LoginController(uniqueKey); +// return login.login_2(); +// } +// +// @PostMapping("/wxInit") +// public Boolean wxInit(@RequestParam String uniqueKey) { +// LoginController login = new LoginController(uniqueKey); +// // 开启消息处理线程 +// WxRobConfigBo wxRobConfigBo = new WxRobConfigBo(); +// wxRobConfigBo.setUniqueKey(uniqueKey); +// List wxRobConfigVos = wxRobConfigService.queryList(wxRobConfigBo); +// //查询机器人对应的用户 +// start(uniqueKey,new MyMsgHandler(uniqueKey,sseService,wxRobConfigVos.get(0))); +// return login.login_3(); +// } +// +// @PostMapping("/wxLogout") +// public void wxLogout(@RequestParam String uniqueKey) { +// WechatTools.logout(uniqueKey); +// } +// +// public void start(String uniqueKey,IMsgHandlerFace msgHandler) { +// log.info("7.+++开启消息处理线程["+uniqueKey+"]+++"); +// new Thread(() -> MsgCenter.handleMsg(uniqueKey,msgHandler)).start(); +// } +//} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/handler/wxcp/MsgHandler.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/handler/wxcp/MsgHandler.java index 155f042d..b52a628f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/handler/wxcp/MsgHandler.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/handler/wxcp/MsgHandler.java @@ -19,7 +19,7 @@ import java.util.Map; @RequiredArgsConstructor public class MsgHandler extends AbstractHandler { - private final ISseService sseService; +// private final ISseService sseService; @@ -34,8 +34,10 @@ public class MsgHandler extends AbstractHandler { if (!msgType.equals(WxConsts.XmlMsgType.EVENT)) { //TODO 可以选择将消息保存到本地 } + //TODO 组装回复消息 - String content = sseService.wxCpChat(wxMessage.getContent()); + String content = ""; + //sseService.wxCpChat(wxMessage.getContent()); return new TextBuilder().build(content, wxMessage, cpService); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/listener/SSEEventSourceListener.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/listener/SSEEventSourceListener.java index 1bbe226d..92d767ba 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/listener/SSEEventSourceListener.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/listener/SSEEventSourceListener.java @@ -15,11 +15,8 @@ import org.ruoyi.common.chat.entity.chat.ChatCompletionResponse; import org.ruoyi.common.chat.utils.TikTokensUtil; import org.ruoyi.common.core.utils.SpringUtils; import org.ruoyi.common.core.utils.StringUtils; -import org.ruoyi.system.domain.bo.ChatMessageBo; import org.ruoyi.system.domain.bo.SysModelBo; import org.ruoyi.system.domain.vo.SysModelVo; -import org.ruoyi.system.service.IChatCostService; -import org.ruoyi.system.service.IChatMessageService; import org.ruoyi.system.service.ISysModelService; import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatAppStoreMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatAppStoreMapper.java index db27f687..a47df631 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatAppStoreMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatAppStoreMapper.java @@ -1,8 +1,6 @@ package org.ruoyi.system.mapper; import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus; -import org.ruoyi.system.domain.ChatAppStore; -import org.ruoyi.system.domain.vo.ChatAppStoreVo; /** * 应用市场Mapper接口 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatConfigMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatConfigMapper.java index d230e9a4..5f767814 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatConfigMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatConfigMapper.java @@ -1,7 +1,5 @@ package org.ruoyi.system.mapper; -import org.ruoyi.system.domain.ChatConfig; -import org.ruoyi.system.domain.vo.ChatConfigVo; import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus; /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatGptsMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatGptsMapper.java index 75555a60..f1f2f739 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatGptsMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatGptsMapper.java @@ -1,8 +1,6 @@ package org.ruoyi.system.mapper; import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus; -import org.ruoyi.system.domain.ChatGpts; -import org.ruoyi.system.domain.vo.ChatGptsVo; /** * gpts管理Mapper接口 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatMessageMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatMessageMapper.java index a58d611d..7c4e7476 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatMessageMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatMessageMapper.java @@ -1,8 +1,6 @@ package org.ruoyi.system.mapper; import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus; -import org.ruoyi.system.domain.ChatMessage; -import org.ruoyi.system.domain.vo.ChatMessageVo; /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatPluginMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatPluginMapper.java index 3070d159..29fb348e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatPluginMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatPluginMapper.java @@ -1,7 +1,5 @@ package org.ruoyi.system.mapper; -import org.ruoyi.system.domain.ChatPlugin; -import org.ruoyi.system.domain.vo.ChatPluginVo; import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus; /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatTokenMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatTokenMapper.java index 5bd62065..aeea71e7 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatTokenMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatTokenMapper.java @@ -1,8 +1,6 @@ package org.ruoyi.system.mapper; import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus; -import org.ruoyi.system.domain.ChatToken; -import org.ruoyi.system.domain.vo.ChatTokenVo; /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatVisitorUsageMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatVisitorUsageMapper.java index 7b4a8fc5..56424e66 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatVisitorUsageMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatVisitorUsageMapper.java @@ -1,7 +1,5 @@ package org.ruoyi.system.mapper; -import org.ruoyi.system.domain.ChatVisitorUsage; -import org.ruoyi.system.domain.vo.ChatVisitorUsageVo; import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus; /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatVoucherMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatVoucherMapper.java index 490270dc..d54e7054 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatVoucherMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatVoucherMapper.java @@ -1,8 +1,6 @@ package org.ruoyi.system.mapper; import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus; -import org.ruoyi.system.domain.ChatVoucher; -import org.ruoyi.system.domain.vo.ChatVoucherVo; /** * 用户兑换记录Mapper接口 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatAppStoreImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatAppStoreImpl.java deleted file mode 100644 index 25a76867..00000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatAppStoreImpl.java +++ /dev/null @@ -1,259 +0,0 @@ -package org.ruoyi.system.service.impl; - -import cn.hutool.json.JSONUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; -import org.ruoyi.common.core.domain.model.LoginUser; -import org.ruoyi.common.core.exception.base.BaseException; -import org.ruoyi.common.core.utils.MapstructUtils; -import org.ruoyi.common.core.utils.StringUtils; -import org.ruoyi.common.mybatis.core.page.PageQuery; -import org.ruoyi.common.mybatis.core.page.TableDataInfo; -import org.ruoyi.common.satoken.utils.LoginHelper; -import org.ruoyi.system.domain.ChatAppStore; -import org.ruoyi.system.domain.bo.ChatAppStoreBo; -import org.ruoyi.system.domain.vo.ChatAppStoreVo; -import org.ruoyi.system.mapper.ChatAppStoreMapper; -import org.ruoyi.system.request.RoleListDto; -import org.ruoyi.system.request.RoleRequest; -import org.ruoyi.system.request.SimpleGenerateRequest; -import org.ruoyi.system.response.RoleResponse; -import org.ruoyi.system.response.SimpleGenerateDataResponse; -import org.ruoyi.system.response.SimpleGenerateResponse; -import org.ruoyi.system.response.rolelist.ContentResponse; -import org.ruoyi.system.response.rolelist.RoleListResponse; -import org.ruoyi.system.response.rolelist.ChatAppStoreVO; -import org.ruoyi.system.service.IChatCostService; -import org.ruoyi.system.service.IChatAppStoreService; -import org.ruoyi.system.util.AudioOkHttpUtil; -import org.springframework.stereotype.Service; - -import java.io.IOException; -import java.util.*; - -/** - * 应用市场Service业务层处理 - * - * @author Lion Li - * @date 2024-03-19 - */ -@RequiredArgsConstructor -@Service -@Slf4j -public class ChatAppStoreImpl implements IChatAppStoreService { - - private final ChatAppStoreMapper baseMapper; - - private final IChatCostService chatService; - - private final AudioOkHttpUtil audioOkHttpUtil; - - /** - * 查询应用市场 - */ - @Override - public ChatAppStoreVo queryById(Long id) { - return baseMapper.selectVoById(id); - } - - /** - * 查询应用市场列表 - */ - @Override - public TableDataInfo queryPageList(ChatAppStoreBo bo, PageQuery pageQuery) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); - return TableDataInfo.build(result); - } - - /** - * 查询应用市场列表 - */ - @Override - public List queryList(ChatAppStoreBo bo) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); - } - - private LambdaQueryWrapper buildQueryWrapper(ChatAppStoreBo bo) { - Map params = bo.getParams(); - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.like(StringUtils.isNotBlank(bo.getName()), ChatAppStore::getName, bo.getName()); - lqw.eq(StringUtils.isNotBlank(bo.getDescription()), ChatAppStore::getDescription, bo.getDescription()); - lqw.eq(StringUtils.isNotBlank(bo.getAvatar()), ChatAppStore::getAvatar, bo.getAvatar()); - lqw.eq(bo.getCreateBy()!=null, ChatAppStore::getCreateBy, bo.getCreateBy()); - return lqw; - } - - /** - * 新增应用市场 - */ - @Override - public Boolean insertByBo(RoleRequest roleRequest) { - try { - String prompt = convertFileToBase64(roleRequest.getPrompt()); - roleRequest.setPrompt("data:audio/x-m4a;base64," + prompt); - - String avatar = convertFileToBase64(roleRequest.getAvatar()); - roleRequest.setAvatar("data:image/png;base64," + avatar); - - } catch (IOException e) { - log.error("转换base64出现错误:{}", e.getMessage()); - } - // 创建一个Request对象来配置你的请求 - String json = JSONUtil.toJsonStr(roleRequest); - Request postRequest = audioOkHttpUtil.createPostRequest("api/tts/voice", json); - String body = audioOkHttpUtil.executeRequest(postRequest); - RoleResponse bean = JSONUtil.toBean(body, RoleResponse.class); - ChatAppStore addVoiceRole = new ChatAppStore(); - addVoiceRole.setName(roleRequest.getName()); - addVoiceRole.setDescription(roleRequest.getDescription()); - addVoiceRole.setAvatar(bean.getData().getMetadata().getAvatar()); - - return baseMapper.insert(addVoiceRole) > 0; - } - - private static String convertFileToBase64(String fileUrl) throws IOException { - OkHttpClient client = new OkHttpClient(); - Request request = new Request.Builder().url(fileUrl).build(); - Response response = client.newCall(request).execute(); - if (!response.isSuccessful()) throw new IOException("Failed to download file: " + response); - byte[] fileData = response.body().bytes(); - return Base64.getEncoder().encodeToString(fileData); - } - - /** - * 修改应用市场 - */ - @Override - public Boolean updateByBo(ChatAppStoreBo bo) { - ChatAppStore update = MapstructUtils.convert(bo, ChatAppStore.class); - validEntityBeforeSave(update); - return baseMapper.updateById(update) > 0; - } - - /** - * 保存前的数据校验 - */ - private void validEntityBeforeSave(ChatAppStore entity) { - //TODO 做一些数据校验,如唯一约束 - } - - /** - * 批量删除应用市场 - */ - @Override - public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if (isValid) { - //TODO 做一些业务上的校验,判断是否需要校验 - } - return baseMapper.deleteBatchIds(ids) > 0; - } - - /** - * 实时生成语音 - * - * @param simpleGenerateRequest 生成语音对象 - * @return 生成的语音信息 - */ - @Override - public SimpleGenerateDataResponse simpleGenerate(SimpleGenerateRequest simpleGenerateRequest) { - double charge = calculateCharge(simpleGenerateRequest.getText()); - // 扣除费用并且保存消息记录 - chatService.taskDeduct(simpleGenerateRequest.getModel(), simpleGenerateRequest.getText(), charge); - // 创建一个Request对象来配置你的请求 - String json = JSONUtil.toJsonStr(simpleGenerateRequest); - Request postRequest = audioOkHttpUtil.createPostRequest("api/tts/simple-generate", json); - String body = audioOkHttpUtil.executeRequest(postRequest); - SimpleGenerateResponse bean = JSONUtil.toBean(body, SimpleGenerateResponse.class); - return bean.getData(); - } - - /** - * 查询市场角色 - * - * @return 角色列表 - */ - @Override - public List roleList() { - Request postRequest = audioOkHttpUtil.createGetRequest("api/tts/voice"); - String body = audioOkHttpUtil.executeRequest(postRequest); - RoleListResponse bean = JSONUtil.toBean(body, RoleListResponse.class); - List roleList = new ArrayList<>(); - for (ContentResponse element : bean.getData()) { - String name = element.getName(); - String description = element.getMetadata().getDescription(); - String voicesId = element.getId(); - String avatar = element.getMetadata().getAvatar(); - String previewAudio; - if (element.getMetadata().getPrompts() == null) { - // 从JSON中解析出的数据没有prompts - previewAudio = element.getMetadata().getPreviewAudio(); - } else { - previewAudio = element.getMetadata().getPrompts().get(0).getPromptOriginAudioStorageUrl(); - } - //roleList.add(new ChatAppStoreVO()); - } - return roleList; - - } - - /** - * 收藏市场角色 - */ - @Override - public void copyRole(RoleListDto roleListDto) { - // 保存至数据库 - ChatAppStore voiceRole = new ChatAppStore(); - voiceRole.setName(roleListDto.getName()); - voiceRole.setDescription(roleListDto.getDescription()); - voiceRole.setAvatar(roleListDto.getAvatar()); - baseMapper.insert(voiceRole); - } - - /** - * 根据文本长度计算扣除的金额。 - * - * @param text 输入的文本 - * @return 扣除的金额 - */ - public static double calculateCharge(String text) { - if (text == null || text.isEmpty()) { - return 0.0; - } - - int length = text.length(); - double charge = 0.0; - - while (length > 0) { - if (length >= 500) { - // 对于每500个字符,扣除0.5元 - charge += (length / 500) * 0.5; - length %= 500; // 处理剩余字符 - } else if (length >= 100) { - // 对于100到499个字符,扣除0.2元 - charge += 0.2; - break; // 处理完毕,退出循环 - } else { - // 对于少于100个字符,扣除0.1元 - charge += 0.1; - break; // 处理完毕,退出循环 - } - } - return charge; - } - - public Long getUserId() { - LoginUser loginUser = LoginHelper.getLoginUser(); - if (loginUser == null) { - throw new BaseException("用户未登录!"); - } - return loginUser.getUserId(); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatConfigServiceImpl.java deleted file mode 100644 index 7d2c99f6..00000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatConfigServiceImpl.java +++ /dev/null @@ -1,159 +0,0 @@ -package org.ruoyi.system.service.impl; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.ruoyi.common.core.event.ConfigChangeEvent; -import org.ruoyi.common.core.service.ConfigService; -import org.ruoyi.common.core.utils.MapstructUtils; -import org.ruoyi.common.core.utils.StringUtils; -import org.ruoyi.common.mybatis.core.page.PageQuery; -import org.ruoyi.common.mybatis.core.page.TableDataInfo; -import org.ruoyi.system.domain.ChatConfig; -import org.ruoyi.system.domain.bo.ChatConfigBo; -import org.ruoyi.system.domain.vo.ChatConfigVo; -import org.ruoyi.system.mapper.ChatConfigMapper; -import org.ruoyi.system.service.IChatConfigService; -import org.springframework.context.ApplicationEventPublisher; -import org.springframework.stereotype.Service; - -import java.util.Collection; -import java.util.List; - -/** - * 对话配置信息 -Service业务层处理 - * - * @author Lion Li - * @date 2024-04-13 - */ -@RequiredArgsConstructor -@Service -@Slf4j -public class ChatConfigServiceImpl implements IChatConfigService, ConfigService { - - private final ChatConfigMapper baseMapper; - - private final ApplicationEventPublisher eventPublisher; - - /** - * 查询对话配置信息 - - */ - @Override - public ChatConfigVo queryById(Long id){ - return baseMapper.selectVoById(id); - } - - /** - * 查询对话配置信息列表 - */ - @Override - public TableDataInfo queryPageList(ChatConfigBo bo, PageQuery pageQuery) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); - return TableDataInfo.build(result); - } - - /** - * 查询对话配置信息列表 - */ - @Override - public List queryList(ChatConfigBo bo) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); - } - - private LambdaQueryWrapper buildQueryWrapper(ChatConfigBo bo) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(StringUtils.isNotBlank(bo.getCategory()), ChatConfig::getCategory, bo.getCategory()); - lqw.like(StringUtils.isNotBlank(bo.getConfigName()), ChatConfig::getConfigName, bo.getConfigName()); - lqw.eq(StringUtils.isNotBlank(bo.getConfigValue()), ChatConfig::getConfigValue, bo.getConfigValue()); - return lqw; - } - - /** - * 新增对话配置信息 - - */ - @Override - public Boolean insertByBo(ChatConfigBo bo) { - ChatConfig add = MapstructUtils.convert(bo, ChatConfig.class); - validEntityBeforeSave(add); - boolean flag = baseMapper.insert(add) > 0; - if (flag) { - bo.setId(add.getId()); - } - return flag; - } - - /** - * 修改对话配置信息 - - */ - @Override - public Boolean updateByBo(ChatConfigBo bo) { - ChatConfig update = MapstructUtils.convert(bo, ChatConfig.class); - validEntityBeforeSave(update); - // 更新配置信息(类型区分) - eventPublisher.publishEvent(new ConfigChangeEvent(this)); - return baseMapper.updateById(update) > 0; - } - - /** - * 保存前的数据校验 - */ - private void validEntityBeforeSave(ChatConfig entity){ - //TODO 做一些数据校验,如唯一约束 - } - - /** - * 批量删除对话配置信息 - - */ - @Override - public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ - //TODO 做一些业务上的校验,判断是否需要校验 - } - return baseMapper.deleteBatchIds(ids) > 0; - } - - /** - * 根据配置类型和配置key获取值 - * - * @param category - * @param configKey - * @return - */ - @Override - public String getConfigValue(String category,String configKey) { - ChatConfigBo bo = new ChatConfigBo(); - bo.setCategory(category); - bo.setConfigName(configKey); - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - ChatConfigVo chatConfigVo = baseMapper.selectVoOne(lqw); - if(chatConfigVo != null){ - return chatConfigVo.getConfigValue(); - }else { - return ""; - } - } - - /** - * 根据配置类型和配置key获取值 - * - * @param category - * @return - */ - @Override - public List getSysConfigValue(String category) { - ChatConfigBo bo = new ChatConfigBo(); - bo.setCategory(category); - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); - } - -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatCostServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatCostServiceImpl.java deleted file mode 100644 index 137bea06..00000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatCostServiceImpl.java +++ /dev/null @@ -1,161 +0,0 @@ -package org.ruoyi.system.service.impl; - -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.ruoyi.common.core.domain.model.LoginUser; -import org.ruoyi.common.core.exception.ServiceException; -import org.ruoyi.common.core.exception.base.BaseException; -import org.ruoyi.common.satoken.utils.LoginHelper; -import org.ruoyi.system.domain.ChatToken; -import org.ruoyi.system.domain.SysUser; -import org.ruoyi.system.domain.bo.ChatMessageBo; -import org.ruoyi.system.domain.bo.SysModelBo; -import org.ruoyi.system.domain.vo.SysModelVo; -import org.ruoyi.system.mapper.SysUserMapper; -import org.ruoyi.system.service.IChatCostService; -import org.ruoyi.system.service.IChatMessageService; -import org.ruoyi.system.service.IChatTokenService; -import org.ruoyi.system.service.ISysModelService; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * @author hncboy - * @date 2023/3/22 19:41 - * 聊天相关业务实现类 - */ -@Slf4j -@Service -@RequiredArgsConstructor -public class ChatCostServiceImpl implements IChatCostService { - - private final SysUserMapper sysUserMapper; - - private final IChatMessageService chatMessageService; - - private final IChatTokenService chatTokenService; - - private final ISysModelService sysModelService; - - /** - * 根据消耗的tokens扣除余额 - * - * @param chatMessageBo - */ - public void deductToken(ChatMessageBo chatMessageBo) { - // 计算总token数 - ChatToken chatToken = chatTokenService.queryByUserId(chatMessageBo.getUserId(), chatMessageBo.getModelName()); - if (chatToken == null) { - chatToken = new ChatToken(); - chatToken.setToken(0); - } - int totalTokens = chatToken.getToken() + chatMessageBo.getTotalTokens(); - // 如果总token数大于等于1000,进行费用扣除 - if (totalTokens >= 1000) { - // 计算费用 - int token1 = totalTokens / 1000; - int token2 = totalTokens % 1000; - if (token2 > 0) { - // 保存剩余tokens - chatToken.setModelName(chatMessageBo.getModelName()); - chatToken.setUserId(chatMessageBo.getUserId()); - chatToken.setToken(token2); - chatTokenService.editToken(chatToken); - } else { - chatTokenService.resetToken(chatMessageBo.getUserId(), chatMessageBo.getModelName()); - } - // 扣除用户余额 - SysModelBo sysModelBo = new SysModelBo(); - sysModelBo.setModelName(chatMessageBo.getModelName()); - List sysModelList = sysModelService.queryList(sysModelBo); - double modelPrice = sysModelList.get(0).getModelPrice(); - Double numberCost = token1 * modelPrice; - deductUserBalance(chatMessageBo.getUserId(), numberCost); - chatMessageBo.setDeductCost(numberCost); - } else { - // 扣除用户余额 - deductUserBalance(chatMessageBo.getUserId(), 0.0); - chatMessageBo.setDeductCost(0d); - chatMessageBo.setRemark("不满1kToken,计入下一次!"); - chatToken.setToken(totalTokens); - chatToken.setModelName(chatMessageBo.getModelName()); - chatToken.setUserId(chatMessageBo.getUserId()); - chatTokenService.editToken(chatToken); - } - // 保存消息记录 - chatMessageService.insertByBo(chatMessageBo); - } - - - - /** - * 从用户余额中扣除费用 - * - * @param userId 用户ID - * @param numberCost 要扣除的费用 - */ - @Override - public void deductUserBalance(Long userId, Double numberCost) { - SysUser sysUser = sysUserMapper.selectById(userId); - if (sysUser == null) { - return; - } - - Double userBalance = sysUser.getUserBalance(); - if (userBalance < numberCost || userBalance == 0) { - throw new ServiceException("余额不足, 请充值"); - } - sysUserMapper.update(null, - new LambdaUpdateWrapper() - .set(SysUser::getUserBalance, Math.max(userBalance - numberCost, 0)) - .eq(SysUser::getUserId, userId)); - } - - - - /** - * 扣除任务费用 - * - */ - @Override - public void taskDeduct(String type,String prompt, double cost) { - // 判断用户是否付费 - checkUserGrade(); - // 扣除费用 - deductUserBalance(getUserId(), cost); - // 保存消息记录 - ChatMessageBo chatMessageBo = new ChatMessageBo(); - chatMessageBo.setUserId(getUserId()); - chatMessageBo.setModelName(type); - chatMessageBo.setContent(prompt); - chatMessageBo.setDeductCost(cost); - chatMessageBo.setTotalTokens(0); - chatMessageService.insertByBo(chatMessageBo); - } - - /** - * 判断用户是否付费 - */ - @Override - public void checkUserGrade() { - SysUser sysUser = sysUserMapper.selectById(getUserId()); - if("0".equals(sysUser.getUserGrade())){ - throw new BaseException("This model is currently unavailable for free users. Please make any amount of deposit to access."); - } - } - - /** - * 获取用户Id - * - * @return - */ - public Long getUserId() { - LoginUser loginUser = LoginHelper.getLoginUser(); - if (loginUser == null) { - throw new BaseException("用户未登录!"); - } - return loginUser.getUserId(); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatGptsServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatGptsServiceImpl.java deleted file mode 100644 index 38ca74a5..00000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatGptsServiceImpl.java +++ /dev/null @@ -1,118 +0,0 @@ -package org.ruoyi.system.service.impl; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import lombok.RequiredArgsConstructor; -import org.ruoyi.common.core.utils.MapstructUtils; -import org.ruoyi.common.core.utils.StringUtils; -import org.ruoyi.common.mybatis.core.page.PageQuery; -import org.ruoyi.common.mybatis.core.page.TableDataInfo; -import org.ruoyi.system.domain.ChatGpts; -import org.ruoyi.system.domain.bo.ChatGptsBo; -import org.ruoyi.system.domain.vo.ChatGptsVo; -import org.ruoyi.system.mapper.ChatGptsMapper; -import org.ruoyi.system.service.IChatGptsService; -import org.springframework.stereotype.Service; - -import java.util.Collection; -import java.util.List; -import java.util.Map; - -/** - * gpts管理Service业务层处理 - * - * @author Lion Li - * @date 2024-07-09 - */ -@RequiredArgsConstructor -@Service -public class ChatGptsServiceImpl implements IChatGptsService { - - private final ChatGptsMapper baseMapper; - - /** - * 查询gpts管理 - */ - @Override - public ChatGptsVo queryById(Long id){ - return baseMapper.selectVoById(id); - } - - /** - * 查询gpts管理列表 - */ - @Override - public TableDataInfo queryPageList(ChatGptsBo bo, PageQuery pageQuery) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); - return TableDataInfo.build(result); - } - - /** - * 查询gpts管理列表 - */ - @Override - public List queryList(ChatGptsBo bo) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); - } - - private LambdaQueryWrapper buildQueryWrapper(ChatGptsBo bo) { - Map params = bo.getParams(); - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(StringUtils.isNotBlank(bo.getGid()), ChatGpts::getGid, bo.getGid()); - lqw.like(StringUtils.isNotBlank(bo.getName()), ChatGpts::getName, bo.getName()); - lqw.eq(StringUtils.isNotBlank(bo.getLogo()), ChatGpts::getLogo, bo.getLogo()); - lqw.eq(StringUtils.isNotBlank(bo.getInfo()), ChatGpts::getInfo, bo.getInfo()); - lqw.eq(StringUtils.isNotBlank(bo.getAuthorId()), ChatGpts::getAuthorId, bo.getAuthorId()); - lqw.like(StringUtils.isNotBlank(bo.getAuthorName()), ChatGpts::getAuthorName, bo.getAuthorName()); - lqw.eq(StringUtils.isNotBlank(bo.getUseCnt()), ChatGpts::getUseCnt, bo.getUseCnt()); - lqw.eq(StringUtils.isNotBlank(bo.getBad()), ChatGpts::getBad, bo.getBad()); - lqw.eq(StringUtils.isNotBlank(bo.getType()), ChatGpts::getType, bo.getType()); - lqw.eq(StringUtils.isNotBlank(bo.getUpdateIp()), ChatGpts::getUpdateIp, bo.getUpdateIp()); - return lqw; - } - - /** - * 新增gpts管理 - */ - @Override - public Boolean insertByBo(ChatGptsBo bo) { - ChatGpts add = MapstructUtils.convert(bo, ChatGpts.class); - validEntityBeforeSave(add); - boolean flag = baseMapper.insert(add) > 0; - if (flag) { - bo.setId(add.getId()); - } - return flag; - } - - /** - * 修改gpts管理 - */ - @Override - public Boolean updateByBo(ChatGptsBo bo) { - ChatGpts update = MapstructUtils.convert(bo, ChatGpts.class); - validEntityBeforeSave(update); - return baseMapper.updateById(update) > 0; - } - - /** - * 保存前的数据校验 - */ - private void validEntityBeforeSave(ChatGpts entity){ - //TODO 做一些数据校验,如唯一约束 - } - - /** - * 批量删除gpts管理 - */ - @Override - public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ - //TODO 做一些业务上的校验,判断是否需要校验 - } - return baseMapper.deleteBatchIds(ids) > 0; - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatMessageServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatMessageServiceImpl.java deleted file mode 100644 index 421c6cfc..00000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatMessageServiceImpl.java +++ /dev/null @@ -1,144 +0,0 @@ -package org.ruoyi.system.service.impl; - -import cn.hutool.core.collection.CollectionUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import lombok.RequiredArgsConstructor; -import org.ruoyi.common.core.utils.MapstructUtils; -import org.ruoyi.common.core.utils.StringUtils; -import org.ruoyi.common.mybatis.core.page.PageQuery; -import org.ruoyi.common.mybatis.core.page.TableDataInfo; -import org.ruoyi.system.domain.ChatMessage; -import org.ruoyi.system.domain.SysUser; -import org.ruoyi.system.domain.bo.ChatMessageBo; -import org.ruoyi.system.domain.vo.ChatMessageVo; -import org.ruoyi.system.domain.vo.SysUserVo; -import org.ruoyi.system.mapper.ChatMessageMapper; -import org.ruoyi.system.mapper.SysUserMapper; -import org.ruoyi.system.service.IChatMessageService; -import org.springframework.stereotype.Service; - -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * 聊天消息Service业务层处理 - * - * @author Lion Li - * @date 2023-11-26 - */ -@RequiredArgsConstructor -@Service -public class ChatMessageServiceImpl implements IChatMessageService { - - private final ChatMessageMapper baseMapper; - - private final SysUserMapper sysUserMapper; - /** - * 查询聊天消息 - */ - @Override - public ChatMessageVo queryById(Long id){ - return baseMapper.selectVoById(id); - } - - /** - * 查询聊天消息列表 - */ - @Override - public TableDataInfo queryPageList(ChatMessageBo bo, PageQuery pageQuery) { - // 根据用户名称查询用户 - if(StringUtils.isNotEmpty(bo.getUserName())){ - SysUserVo sysUserVo = sysUserMapper.selectUserByUserName(bo.getUserName()); - bo.setUserId(sysUserVo.getUserId()); - } - - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); - if(CollectionUtil.isEmpty(result.getRecords())){ - return TableDataInfo.build(result); - } - List userIds = result.getRecords().stream() - .map(ChatMessageVo::getUserId) - .collect(Collectors.toList()); - // 一次性查询所有userName - Map userIdToUserNameMap = getUserNamesByUserIds(userIds); - // 设置userName - result.getRecords().forEach(chatMessageVo -> { - chatMessageVo.setUserName(userIdToUserNameMap.get(chatMessageVo.getUserId())); - }); - return TableDataInfo.build(result); - } - - private Map getUserNamesByUserIds(List userIds) { - // 实现批量查询userName的逻辑,例如通过sysUserMapper查询sys_user表 - List sysUsers = sysUserMapper.selectBatchIds(userIds); - return sysUsers.stream() - .collect(Collectors.toMap(SysUser::getUserId, SysUser::getUserName)); - } - - /** - * 查询聊天消息列表 - */ - @Override - public List queryList(ChatMessageBo bo) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); - } - - private LambdaQueryWrapper buildQueryWrapper(ChatMessageBo bo) { - Map params = bo.getParams(); - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(bo.getUserId() != null, ChatMessage::getUserId, bo.getUserId()); - lqw.eq(StringUtils.isNotBlank(bo.getContent()), ChatMessage::getContent, bo.getContent()); - lqw.eq(bo.getDeductCost() != null, ChatMessage::getDeductCost, bo.getDeductCost()); - lqw.eq(bo.getTotalTokens() != null, ChatMessage::getTotalTokens, bo.getTotalTokens()); - lqw.like(StringUtils.isNotBlank(bo.getModelName()), ChatMessage::getModelName, bo.getModelName()); - return lqw; - } - - /** - * 新增聊天消息 - */ - @Override - public Boolean insertByBo(ChatMessageBo bo) { - ChatMessage add = MapstructUtils.convert(bo, ChatMessage.class); - validEntityBeforeSave(add); - boolean flag = baseMapper.insert(add) > 0; - if (flag) { - bo.setId(add.getId()); - } - return flag; - } - - /** - * 修改聊天消息 - */ - @Override - public Boolean updateByBo(ChatMessageBo bo) { - ChatMessage update = MapstructUtils.convert(bo, ChatMessage.class); - validEntityBeforeSave(update); - return baseMapper.updateById(update) > 0; - } - - /** - * 保存前的数据校验 - */ - private void validEntityBeforeSave(ChatMessage entity){ - //TODO 做一些数据校验,如唯一约束 - } - - /** - * 批量删除聊天消息 - */ - @Override - public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ - //TODO 做一些业务上的校验,判断是否需要校验 - } - return baseMapper.deleteBatchIds(ids) > 0; - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatPluginServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatPluginServiceImpl.java deleted file mode 100644 index 6b84e0cc..00000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatPluginServiceImpl.java +++ /dev/null @@ -1,110 +0,0 @@ -package org.ruoyi.system.service.impl; - -import org.ruoyi.common.core.utils.MapstructUtils; -import org.ruoyi.common.core.utils.StringUtils; -import org.ruoyi.common.mybatis.core.page.TableDataInfo; -import org.ruoyi.common.mybatis.core.page.PageQuery; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.ruoyi.system.domain.bo.ChatPluginBo; -import org.ruoyi.system.domain.vo.ChatPluginVo; -import org.ruoyi.system.domain.ChatPlugin; -import org.ruoyi.system.mapper.ChatPluginMapper; -import org.ruoyi.system.service.IChatPluginService; - -import java.util.List; -import java.util.Map; -import java.util.Collection; - -/** - * 插件管理Service业务层处理 - * - * @author ageerle - * @date 2025-03-30 - */ -@RequiredArgsConstructor -@Service -public class ChatPluginServiceImpl implements IChatPluginService { - - private final ChatPluginMapper baseMapper; - - /** - * 查询插件管理 - */ - @Override - public ChatPluginVo queryById(Long id){ - return baseMapper.selectVoById(id); - } - - /** - * 查询插件管理列表 - */ - @Override - public TableDataInfo queryPageList(ChatPluginBo bo, PageQuery pageQuery) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); - return TableDataInfo.build(result); - } - - /** - * 查询插件管理列表 - */ - @Override - public List queryList(ChatPluginBo bo) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); - } - - private LambdaQueryWrapper buildQueryWrapper(ChatPluginBo bo) { - Map params = bo.getParams(); - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.like(StringUtils.isNotBlank(bo.getName()), ChatPlugin::getName, bo.getName()); - lqw.eq(StringUtils.isNotBlank(bo.getCode()), ChatPlugin::getCode, bo.getCode()); - return lqw; - } - - /** - * 新增插件管理 - */ - @Override - public Boolean insertByBo(ChatPluginBo bo) { - ChatPlugin add = MapstructUtils.convert(bo, ChatPlugin.class); - validEntityBeforeSave(add); - boolean flag = baseMapper.insert(add) > 0; - if (flag) { - bo.setId(add.getId()); - } - return flag; - } - - /** - * 修改插件管理 - */ - @Override - public Boolean updateByBo(ChatPluginBo bo) { - ChatPlugin update = MapstructUtils.convert(bo, ChatPlugin.class); - validEntityBeforeSave(update); - return baseMapper.updateById(update) > 0; - } - - /** - * 保存前的数据校验 - */ - private void validEntityBeforeSave(ChatPlugin entity){ - //TODO 做一些数据校验,如唯一约束 - } - - /** - * 批量删除插件管理 - */ - @Override - public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ - //TODO 做一些业务上的校验,判断是否需要校验 - } - return baseMapper.deleteBatchIds(ids) > 0; - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatTokenServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatTokenServiceImpl.java deleted file mode 100644 index f5e69bc3..00000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatTokenServiceImpl.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.ruoyi.system.service.impl; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import org.ruoyi.system.domain.ChatToken; -import org.ruoyi.system.mapper.ChatTokenMapper; -import org.ruoyi.system.service.IChatTokenService; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -/** - * 聊天消息Service业务层处理 - * - * @author Lion Li - * @date 2023-11-26 - */ -@RequiredArgsConstructor -@Service -public class ChatTokenServiceImpl implements IChatTokenService { - - private final ChatTokenMapper baseMapper; - - @Override - public ChatToken queryByUserId(Long userId,String modelName) { - return baseMapper.selectOne( - new LambdaQueryWrapper() - .eq(ChatToken::getUserId, userId) - .eq(ChatToken::getModelName, modelName) - .last("limit 1") - ); - } - - /** - * 清空用户token - * - */ - @Override - public void resetToken(Long userId,String modelName) { - ChatToken chatToken = queryByUserId(userId, modelName); - chatToken.setToken(0); - baseMapper.updateById(chatToken); - } - - /** - * 增加用户token - * - */ - @Override - public void editToken(ChatToken chatToken) { - if(chatToken.getId() == null){ - baseMapper.insert(chatToken); - }else { - baseMapper.updateById(chatToken); - } - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatVisitorUsageServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatVisitorUsageServiceImpl.java deleted file mode 100644 index 85f1e767..00000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatVisitorUsageServiceImpl.java +++ /dev/null @@ -1,112 +0,0 @@ -package org.ruoyi.system.service.impl; - -import org.ruoyi.common.core.utils.MapstructUtils; -import org.ruoyi.common.core.utils.StringUtils; -import org.ruoyi.common.mybatis.core.page.TableDataInfo; -import org.ruoyi.common.mybatis.core.page.PageQuery; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.ruoyi.system.domain.bo.ChatVisitorUsageBo; -import org.ruoyi.system.domain.vo.ChatVisitorUsageVo; -import org.ruoyi.system.domain.ChatVisitorUsage; -import org.ruoyi.system.mapper.ChatVisitorUsageMapper; -import org.ruoyi.system.service.IChatVisitorUsageService; - -import java.util.List; -import java.util.Map; -import java.util.Collection; - -/** - * 访客管理Service业务层处理 - * - * @author Lion Li - * @date 2024-07-14 - */ -@RequiredArgsConstructor -@Service -public class ChatVisitorUsageServiceImpl implements IChatVisitorUsageService { - - private final ChatVisitorUsageMapper baseMapper; - - /** - * 查询访客管理 - */ - @Override - public ChatVisitorUsageVo queryById(Long id){ - return baseMapper.selectVoById(id); - } - - /** - * 查询访客管理列表 - */ - @Override - public TableDataInfo queryPageList(ChatVisitorUsageBo bo, PageQuery pageQuery) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); - return TableDataInfo.build(result); - } - - /** - * 查询访客管理列表 - */ - @Override - public List queryList(ChatVisitorUsageBo bo) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); - } - - private LambdaQueryWrapper buildQueryWrapper(ChatVisitorUsageBo bo) { - Map params = bo.getParams(); - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(StringUtils.isNotBlank(bo.getFingerprint()), ChatVisitorUsage::getFingerprint, bo.getFingerprint()); - lqw.eq(StringUtils.isNotBlank(bo.getUsageCount()), ChatVisitorUsage::getUsageCount, bo.getUsageCount()); - lqw.eq(StringUtils.isNotBlank(bo.getIpAddress()), ChatVisitorUsage::getIpAddress, bo.getIpAddress()); - lqw.eq(StringUtils.isNotBlank(bo.getUpdateIp()), ChatVisitorUsage::getUpdateIp, bo.getUpdateIp()); - return lqw; - } - - /** - * 新增访客管理 - */ - @Override - public Boolean insertByBo(ChatVisitorUsageBo bo) { - ChatVisitorUsage add = MapstructUtils.convert(bo, ChatVisitorUsage.class); - validEntityBeforeSave(add); - boolean flag = baseMapper.insert(add) > 0; - if (flag) { - bo.setId(add.getId()); - } - return flag; - } - - /** - * 修改访客管理 - */ - @Override - public Boolean updateByBo(ChatVisitorUsageBo bo) { - ChatVisitorUsage update = MapstructUtils.convert(bo, ChatVisitorUsage.class); - validEntityBeforeSave(update); - return baseMapper.updateById(update) > 0; - } - - /** - * 保存前的数据校验 - */ - private void validEntityBeforeSave(ChatVisitorUsage entity){ - //TODO 做一些数据校验,如唯一约束 - } - - /** - * 批量删除访客管理 - */ - @Override - public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ - //TODO 做一些业务上的校验,判断是否需要校验 - } - return baseMapper.deleteBatchIds(ids) > 0; - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatVoucherServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatVoucherServiceImpl.java deleted file mode 100644 index 41078ab6..00000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatVoucherServiceImpl.java +++ /dev/null @@ -1,180 +0,0 @@ -package org.ruoyi.system.service.impl; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.collection.CollectionUtil; -import org.ruoyi.common.core.utils.MapstructUtils; -import org.ruoyi.common.core.utils.StringUtils; -import org.ruoyi.common.mybatis.core.page.TableDataInfo; -import org.ruoyi.common.mybatis.core.page.PageQuery; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import org.ruoyi.common.satoken.utils.LoginHelper; -import org.ruoyi.system.domain.SysUser; -import org.ruoyi.system.domain.bo.SysUserBo; -import org.ruoyi.system.domain.vo.SysUserVo; -import org.ruoyi.system.mapper.SysUserMapper; -import org.ruoyi.system.service.ISysUserService; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.ruoyi.system.domain.bo.ChatVoucherBo; -import org.ruoyi.system.domain.vo.ChatVoucherVo; -import org.ruoyi.system.domain.ChatVoucher; -import org.ruoyi.system.mapper.ChatVoucherMapper; -import org.ruoyi.system.service.IChatVoucherService; - -import java.util.List; -import java.util.Map; -import java.util.Collection; -import java.util.stream.Collectors; - -/** - * 用户兑换记录Service业务层处理 - * - * @author Lion Li - * @date 2024-05-03 - */ -@RequiredArgsConstructor -@Service -public class ChatVoucherServiceImpl implements IChatVoucherService { - - private final ChatVoucherMapper baseMapper; - - private final ISysUserService sysUserService; - - private final SysUserMapper sysUserMapper; - - /** - * 查询用户兑换记录 - */ - @Override - public ChatVoucherVo queryById(Long id){ - return baseMapper.selectVoById(id); - } - - /** - * 查询用户兑换记录列表 - */ - @Override - public TableDataInfo queryPageList(ChatVoucherBo bo, PageQuery pageQuery) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); - if(CollectionUtil.isEmpty(result.getRecords())){ - return TableDataInfo.build(result); - } - // 获取所有userId - List userIds = result.getRecords().stream() - .map(ChatVoucherVo::getUserId) - .collect(Collectors.toList()); - // 一次性查询所有userName - Map userIdToUserNameMap = getUserNamesByUserIds(userIds); - // 设置userName - result.getRecords().forEach(chatVoucherVo -> { - chatVoucherVo.setUserName(userIdToUserNameMap.get(chatVoucherVo.getUserId())); - }); - return TableDataInfo.build(result); - } - - private Map getUserNamesByUserIds(List userIds) { - // 实现批量查询userName的逻辑,例如通过sysUserMapper查询sys_user表 - List sysUsers = sysUserMapper.selectBatchIds(userIds); - return sysUsers.stream() - .collect(Collectors.toMap(SysUser::getUserId, SysUser::getUserName)); - } - - /** - * 查询用户兑换记录列表 - */ - @Override - public List queryList(ChatVoucherBo bo) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); - } - - private LambdaQueryWrapper buildQueryWrapper(ChatVoucherBo bo) { - Map params = bo.getParams(); - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(bo.getUserId() != null, ChatVoucher::getUserId, bo.getUserId()); - lqw.eq(StringUtils.isNotBlank(bo.getCode()), ChatVoucher::getCode, bo.getCode()); - lqw.eq(bo.getAmount() != null, ChatVoucher::getAmount, bo.getAmount()); - lqw.eq(StringUtils.isNotBlank(bo.getStatus()), ChatVoucher::getStatus, bo.getStatus()); - return lqw; - } - - /** - * 新增用户兑换记录 - */ - @Override - public Boolean insertByBo(ChatVoucherBo bo) { - ChatVoucher add = MapstructUtils.convert(bo, ChatVoucher.class); - validEntityBeforeSave(add); - boolean flag = baseMapper.insert(add) > 0; - if (flag) { - bo.setId(add.getId()); - } - return flag; - } - - /** - * 修改用户兑换记录 - */ - @Override - public Boolean updateByBo(ChatVoucherBo bo) { - ChatVoucher update = MapstructUtils.convert(bo, ChatVoucher.class); - validEntityBeforeSave(update); - return baseMapper.updateById(update) > 0; - } - - /** - * 保存前的数据校验 - */ - private void validEntityBeforeSave(ChatVoucher entity){ - //TODO 做一些数据校验,如唯一约束 - } - - /** - * 批量删除用户兑换记录 - */ - @Override - public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ - //TODO 做一些业务上的校验,判断是否需要校验 - } - return baseMapper.deleteBatchIds(ids) > 0; - } - - /** - * 兑换卡密 - * - * @param bo 卡密信息 - */ - @Override - public Boolean redeem(ChatVoucherBo bo) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(StringUtils.isNotBlank(bo.getCode()), ChatVoucher::getCode, bo.getCode()); - ChatVoucherVo chatVoucherVo = baseMapper.selectVoOne(lqw); - if(chatVoucherVo != null){ - // 如果卡密已经兑换 - if("2".equals(chatVoucherVo.getStatus())){ - return false; - } - SysUserVo sysUserVo = sysUserService.selectUserById(LoginHelper.getLoginUser().getUserId()); - // 更新卡密记录 - chatVoucherVo.setUserId(LoginHelper.getLoginUser().getUserId()); - chatVoucherVo.setStatus("2"); - chatVoucherVo.setBalanceBefore(sysUserVo.getUserBalance()); - chatVoucherVo.setBalanceAfter(sysUserVo.getUserBalance()+chatVoucherVo.getAmount()); - // 添加用户余额 - sysUserVo.setUserBalance(sysUserVo.getUserBalance() + chatVoucherVo.getAmount()); - SysUserBo user = new SysUserBo(); - BeanUtil.copyProperties(sysUserVo,user); - sysUserService.updateUser(user); - - ChatVoucher update = MapstructUtils.convert(chatVoucherVo, ChatVoucher.class); - baseMapper.updateById(update); - }else { - return false; - } - return true; - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/CoverServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/CoverServiceImpl.java index b2dbba6c..4b6d96ef 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/CoverServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/CoverServiceImpl.java @@ -24,7 +24,6 @@ import org.ruoyi.system.domain.model.ApiResult; import org.ruoyi.system.domain.vo.cover.*; import org.ruoyi.system.mapper.CoverMapper; import org.ruoyi.system.mapper.CoverPromptAudioMapper; -import org.ruoyi.system.service.IChatCostService; import org.ruoyi.system.service.ICoverService; import org.ruoyi.system.util.WeChatScanHttpUtil; import org.springframework.stereotype.Service; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/PptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/PptServiceImpl.java index dcb3c2c9..a3f17e94 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/PptServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/PptServiceImpl.java @@ -9,13 +9,11 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.math.NumberUtils; import org.ruoyi.common.core.constant.Constants; import org.ruoyi.common.core.domain.model.LoginUser; -import org.ruoyi.common.core.exception.base.BaseException; import org.ruoyi.common.core.service.ConfigService; import org.ruoyi.common.redis.utils.RedisUtils; import org.ruoyi.common.satoken.utils.LoginHelper; import org.ruoyi.system.cofing.OkHttpConfig; import org.ruoyi.system.domain.vo.ppt.*; -import org.ruoyi.system.service.IChatCostService; import org.ruoyi.system.service.IPptService; import org.ruoyi.system.util.HttpUtils; import org.ruoyi.system.util.WddPptApi; @@ -26,8 +24,6 @@ import javax.swing.filechooser.FileSystemView; import java.io.File; import java.time.Duration; -import static org.ruoyi.common.satoken.utils.LoginHelper.getLoginUser; - /** * AI-PPTService业务层处理 * diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SseServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SseServiceImpl.java index 7310b233..807650d9 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SseServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SseServiceImpl.java @@ -42,9 +42,7 @@ import org.ruoyi.common.core.utils.file.FileUtils; import org.ruoyi.common.core.utils.file.MimeTypeUtils; import org.ruoyi.common.satoken.utils.LoginHelper; import org.ruoyi.system.domain.SysModel; -import org.ruoyi.system.domain.bo.ChatMessageBo; import org.ruoyi.system.domain.request.translation.TranslationRequest; -import org.ruoyi.system.domain.vo.ChatGptsVo; import org.ruoyi.system.listener.SSEEventSourceListener; import org.ruoyi.system.service.*; import org.springframework.core.io.InputStreamResource; @@ -78,8 +76,7 @@ public class SseServiceImpl implements ISseService { private OpenAiStreamClient openAiStreamClient; - private final ChatConfig chatConfig; - + ChatConfig chatConfig; private final IChatCostService chatService; diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-modules/ruoyi-system/src/main/resources/application-prod.yml similarity index 100% rename from ruoyi-admin/src/main/resources/application-prod.yml rename to ruoyi-modules/ruoyi-system/src/main/resources/application-prod.yml diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-modules/ruoyi-system/src/main/resources/application.yml similarity index 100% rename from ruoyi-admin/src/main/resources/application.yml rename to ruoyi-modules/ruoyi-system/src/main/resources/application.yml diff --git a/ruoyi-admin/src/main/resources/banner.txt b/ruoyi-modules/ruoyi-system/src/main/resources/banner.txt similarity index 100% rename from ruoyi-admin/src/main/resources/banner.txt rename to ruoyi-modules/ruoyi-system/src/main/resources/banner.txt diff --git a/ruoyi-admin/src/main/resources/i18n/messages.properties b/ruoyi-modules/ruoyi-system/src/main/resources/i18n/messages.properties similarity index 100% rename from ruoyi-admin/src/main/resources/i18n/messages.properties rename to ruoyi-modules/ruoyi-system/src/main/resources/i18n/messages.properties diff --git a/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties b/ruoyi-modules/ruoyi-system/src/main/resources/i18n/messages_en_US.properties similarity index 100% rename from ruoyi-admin/src/main/resources/i18n/messages_en_US.properties rename to ruoyi-modules/ruoyi-system/src/main/resources/i18n/messages_en_US.properties diff --git a/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties b/ruoyi-modules/ruoyi-system/src/main/resources/i18n/messages_zh_CN.properties similarity index 100% rename from ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties rename to ruoyi-modules/ruoyi-system/src/main/resources/i18n/messages_zh_CN.properties diff --git a/ruoyi-admin/src/main/resources/ip2region.xdb b/ruoyi-modules/ruoyi-system/src/main/resources/ip2region.xdb similarity index 100% rename from ruoyi-admin/src/main/resources/ip2region.xdb rename to ruoyi-modules/ruoyi-system/src/main/resources/ip2region.xdb diff --git a/ruoyi-admin/src/main/resources/logback-plus.xml b/ruoyi-modules/ruoyi-system/src/main/resources/logback-plus.xml similarity index 100% rename from ruoyi-admin/src/main/resources/logback-plus.xml rename to ruoyi-modules/ruoyi-system/src/main/resources/logback-plus.xml diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatPluginMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatPluginMapper.xml deleted file mode 100644 index 3a678fba..00000000 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatPluginMapper.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatVisitorUsageMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatVisitorUsageMapper.xml deleted file mode 100644 index 7a49c859..00000000 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatVisitorUsageMapper.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatVoucherMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatVoucherMapper.xml deleted file mode 100644 index e5a80225..00000000 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatVoucherMapper.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/ruoyi-admin/src/main/resources/spy.properties b/ruoyi-modules/ruoyi-system/src/main/resources/spy.properties similarity index 100% rename from ruoyi-admin/src/main/resources/spy.properties rename to ruoyi-modules/ruoyi-system/src/main/resources/spy.properties diff --git a/ruoyi-modules/ruoyi-weixin/pom.xml b/ruoyi-modules/ruoyi-weixin/pom.xml new file mode 100644 index 00000000..3e067c04 --- /dev/null +++ b/ruoyi-modules/ruoyi-weixin/pom.xml @@ -0,0 +1,21 @@ + + + 4.0.0 + + org.ruoyi + ruoyi-ai + 1.0.0 + ../../pom.xml + + + ruoyi-weixin + + + 17 + 17 + UTF-8 + + +