办学质量监测教学评价系统
ageerle
2025-04-08 d2755f00bc2a6507f122f79d54ee009e2cdd26b3
feat: 测试版本提交
已重命名46个文件
已修改30个文件
已添加20个文件
已删除16个文件
3472 ■■■■■ 文件已修改
pom.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/Dockerfile 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/pom.xml 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/org/ruoyi/controller/KnowledgeController.java 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/pom.xml 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/pom.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAppStore.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatConfig.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatGpts.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatMessage.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPlugin.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatToken.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVisitorUsage.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVoucher.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAppStoreBo.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatConfigBo.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatGptsBo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatMessageBo.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPluginBo.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVisitorUsageBo.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVoucherBo.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/CacheListInfoVo.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/CaptchaVo.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAppStoreVo.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatConfigVo.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatGptsVo.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatMessageVo.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPluginVo.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatTokenVo.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVisitorUsageVo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVoucherVo.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatAppStoreMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatConfigMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatGptsMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatMessageMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPluginMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatTokenMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatVisitorUsageMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatVoucherMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAppStoreService.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatConfigService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatCostService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatGptsService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatMessageService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPluginService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatTokenService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVisitorUsageService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVoucherService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatConfigMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-device-api/pom.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-knowledge-api/pom.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-system-api/pom.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-weixin-api/pom.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/ChatController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/FaceController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/LumaController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/SubmitController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/SunoController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/VoiceController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-device/pom.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/pom.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/RuoYiAIApplication.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/RuoYiAIServletInitializer.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/AuthController.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/CaptchaController.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatConfigController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatGptsController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatMessageController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatPluginController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatStoreController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatVisitorUsageController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatVoucherController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/IndexController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/KnowledgeController.java 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/PayController.java 664 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/WeChatController.java 162 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/handler/wxcp/MsgHandler.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/listener/SSEEventSourceListener.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatAppStoreMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatConfigMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatGptsMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatMessageMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatPluginMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatTokenMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatVisitorUsageMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatVoucherMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatAppStoreService.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatAppStoreImpl.java 259 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatConfigServiceImpl.java 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatCostServiceImpl.java 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatGptsServiceImpl.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatMessageServiceImpl.java 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatPluginServiceImpl.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatTokenServiceImpl.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatVisitorUsageServiceImpl.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatVoucherServiceImpl.java 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/CoverServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/PptServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SseServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/application-prod.yml 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/application.yml 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/banner.txt 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/i18n/messages.properties 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/i18n/messages_en_US.properties 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/i18n/messages_zh_CN.properties 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/ip2region.xdb 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/logback-plus.xml 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatConfigMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatPluginMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatVisitorUsageMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/spy.properties 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-weixin/pom.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -344,10 +344,16 @@
    </dependencyManagement>
    <modules>
        <module>ruoyi-admin</module>
        <module>ruoyi-common</module>
        <module>ruoyi-modules</module>
        <module>ruoyi-modules-api</module>
        <module>ruoyi-modules-api</module>
        <module>ruoyi-modules-api/ruoyi-device-api</module>
        <module>ruoyi-modules-api/ruoyi-weixin-api</module>
        <module>ruoyi-modules/ruoyi-weixin</module>
        <module>ruoyi-modules/ruoyi-device</module>
    </modules>
    <packaging>pom</packaging>
    <build>
ruoyi-admin/Dockerfile
ÎļþÒÑɾ³ý
ruoyi-admin/pom.xml
ÎļþÒÑɾ³ý
ruoyi-admin/src/main/java/org/ruoyi/controller/KnowledgeController.java
ÎļþÒÑɾ³ý
ruoyi-modules-api/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.ruoyi</groupId>
        <artifactId>ruoyi-ai</artifactId>
        <version>1.0.0</version>
    </parent>
    <artifactId>ruoyi-modules-api</artifactId>
    <packaging>pom</packaging>
    <modules>
        <module>ruoyi-system-api</module>
        <module>ruoyi-chat-api</module>
        <module>ruoyi-knowledge-api</module>
    </modules>
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <!-- ç³»ç»Ÿæ ¸å¿ƒæ¨¡å— -->
        <dependency>
            <groupId>org.ruoyi</groupId>
            <artifactId>ruoyi-common-core</artifactId>
        </dependency>
        <!-- mybaits基础模块 -->
        <dependency>
            <groupId>org.ruoyi</groupId>
            <artifactId>ruoyi-common-mybatis</artifactId>
        </dependency>
        <!-- è„±æ•æ¨¡å— -->
        <dependency>
            <groupId>org.ruoyi</groupId>
            <artifactId>ruoyi-common-sensitive</artifactId>
        </dependency>
        <!-- excel模块-->
        <dependency>
            <groupId>org.ruoyi</groupId>
            <artifactId>ruoyi-common-excel</artifactId>
        </dependency>
    </dependencies>
</project>
ruoyi-modules-api/ruoyi-chat-api/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.ruoyi</groupId>
        <artifactId>ruoyi-modules-api</artifactId>
        <version>1.0.0</version>
    </parent>
    <artifactId>ruoyi-chat-api</artifactId>
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAppStore.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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;
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatConfig.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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 @@
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("chat_config")
public class ChatConfig extends TenantEntity {
public class ChatConfig extends BaseEntity {
    @Serial
    private static final long serialVersionUID = 1L;
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatGpts.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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;
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatMessage.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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;
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPlugin.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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;
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatToken.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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;
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVisitorUsage.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatVisitorUsage.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.ruoyi.system.domain;
package org.ruoyi.domain;
import com.baomidou.mybatisplus.annotation.TableId;
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVoucher.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAppStoreBo.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatConfigBo.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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.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;
/**
 * å¯¹è¯é…ç½®ä¿¡æ¯
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatGptsBo.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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 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
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatMessageBo.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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 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
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPluginBo.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVisitorUsageBo.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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 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
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVoucherBo.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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 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;
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<Map<String, String>> commandStats;
}
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;
}
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAppStoreVo.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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;
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatConfigVo.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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 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;
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatGptsVo.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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;
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatMessageVo.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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 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;
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPluginVo.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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;
/**
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatTokenVo.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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;
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVisitorUsageVo.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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;
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVoucherVo.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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;
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<ChatAppStore, ChatAppStoreVo> {
}
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<ChatConfig, ChatConfigVo> {
}
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<ChatGpts, ChatGptsVo> {
}
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<ChatMessage, ChatMessageVo> {
}
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<ChatPlugin, ChatPluginVo> {
}
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<ChatToken, ChatTokenVo> {
}
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<ChatVisitorUsage, ChatVisitorUsageVo> {
}
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<ChatVoucher, ChatVoucherVo> {
}
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAppStoreService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
package org.ruoyi.service;
import org.ruoyi.common.mybatis.core.page.PageQuery;
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;
/**
 * åº”用市场Service接口
 *
 * @author Lion Li
 * @date 2024-03-19
 */
public interface IChatAppStoreService {
    /**
     * æŸ¥è¯¢åº”用市场
     */
    ChatAppStoreVo queryById(Long id);
    /**
     * æŸ¥è¯¢åº”用市场列表
     */
    TableDataInfo<ChatAppStoreVo> queryPageList(ChatAppStoreBo bo, PageQuery pageQuery);
    /**
     * æŸ¥è¯¢åº”用市场列表
     */
    List<ChatAppStoreVo> queryList(ChatAppStoreBo bo);
    /**
     * ä¿®æ”¹åº”用市场
     */
    Boolean updateByBo(ChatAppStoreBo bo);
    /**
     * æ ¡éªŒå¹¶æ‰¹é‡åˆ é™¤åº”用市场信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatConfigService.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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;
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatCostService.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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 {
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatGptsService.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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;
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatMessageService.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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;
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPluginService.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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;
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatTokenService.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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 @@
    /**
     * æŸ¥è¯¢ç”¨æˆ·token
     */
    ChatToken queryByUserId(Long userId,String modelName);
    ChatToken queryByUserId(Long userId, String modelName);
    /**
     * æ¸…空用户token
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVisitorUsageService.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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;
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVoucherService.java
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/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;
ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatConfigMapper.xml
ÎļþÃû´Ó ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatVoucherMapper.xml ÐÞ¸Ä
@@ -2,6 +2,6 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.ruoyi.system.mapper.ChatVoucherMapper">
<mapper namespace="org.ruoyi.mapper.ChatConfigMapper">
</mapper>
ruoyi-modules-api/ruoyi-device-api/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.ruoyi</groupId>
        <artifactId>ruoyi-ai</artifactId>
        <version>1.0.0</version>
        <relativePath>../../pom.xml</relativePath>
    </parent>
    <artifactId>ruoyi-device-api</artifactId>
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>
ruoyi-modules-api/ruoyi-knowledge-api/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.ruoyi</groupId>
        <artifactId>ruoyi-modules-api</artifactId>
        <version>1.0.0</version>
    </parent>
    <artifactId>ruoyi-knowledge-api</artifactId>
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>
ruoyi-modules-api/ruoyi-system-api/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.ruoyi</groupId>
        <artifactId>ruoyi-modules-api</artifactId>
        <version>1.0.0</version>
    </parent>
    <artifactId>ruoyi-system-api</artifactId>
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>
ruoyi-modules-api/ruoyi-weixin-api/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.ruoyi</groupId>
        <artifactId>ruoyi-ai</artifactId>
        <version>1.0.0</version>
        <relativePath>../../pom.xml</relativePath>
    </parent>
    <artifactId>ruoyi-weixin-api</artifactId>
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/ChatController.java
@@ -17,10 +17,7 @@
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;
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/FaceController.java
@@ -9,7 +9,6 @@
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;
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/LumaController.java
@@ -9,7 +9,6 @@
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.*;
/**
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/SubmitController.java
@@ -10,7 +10,6 @@
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;
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/SunoController.java
@@ -10,7 +10,6 @@
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
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/VoiceController.java
@@ -7,7 +7,6 @@
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;
ruoyi-modules/ruoyi-device/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.ruoyi</groupId>
        <artifactId>ruoyi-ai</artifactId>
        <version>1.0.0</version>
        <relativePath>../../pom.xml</relativePath>
    </parent>
    <artifactId>ruoyi-device</artifactId>
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>
ruoyi-modules/ruoyi-system/pom.xml
@@ -124,6 +124,10 @@
            <version>1.0.79</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.ruoyi</groupId>
            <artifactId>ruoyi-common-mail</artifactId>
        </dependency>
    </dependencies>
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/RuoYiAIApplication.java
ÎļþÃû´Ó ruoyi-admin/src/main/java/org/ruoyi/RuoYiAIApplication.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.ruoyi;
package org.ruoyi.system;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/RuoYiAIServletInitializer.java
ÎļþÃû´Ó ruoyi-admin/src/main/java/org/ruoyi/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;
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/AuthController.java
ÎļþÃû´Ó ruoyi-admin/src/main/java/org/ruoyi/controller/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.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.*;
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/CaptchaController.java
ÎļþÃû´Ó ruoyi-admin/src/main/java/org/ruoyi/controller/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.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.RestController;
import java.time.Duration;
import java.util.*;
import java.util.HashMap;
import java.util.Map;
/**
 * éªŒè¯ç æ“ä½œå¤„理
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatConfigController.java
@@ -8,9 +8,6 @@
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.*;
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatGptsController.java
@@ -15,9 +15,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.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.*;
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.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.*;
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatPluginController.java
@@ -17,9 +17,6 @@
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;
/**
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatStoreController.java
@@ -3,10 +3,6 @@
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;
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatVisitorUsageController.java
@@ -15,9 +15,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.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.*;
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.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.*;
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/IndexController.java
ÎļþÃû´Ó ruoyi-admin/src/main/java/org/ruoyi/controller/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;
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<Message> messages = chatRequest.getMessages();
//        // èŽ·å–çŸ¥è¯†åº“ä¿¡æ¯
//        Message message = messages.get(messages.size() - 1);
//        StringBuilder sb = new StringBuilder(message.getContent().toString());
//        List<String> nearestList;
//        List<Double> 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<KnowledgeInfoVo> 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<Void> save(@Validated(AddGroup.class) @RequestBody KnowledgeInfoBo bo) {
//        knowledgeInfoService.saveOne(bo);
//        return R.ok();
//    }
//
//    /**
//     * åˆ é™¤çŸ¥è¯†åº“
//     */
//    @PostMapping("/remove/{id}")
//    public R<String> remove(@PathVariable String id){
//        knowledgeInfoService.removeKnowledge(id);
//        return R.ok("删除知识库成功!");
//    }
//
//    /**
//     * ä¿®æ”¹çŸ¥è¯†åº“
//     */
//    @Log(title = "知识库", businessType = BusinessType.UPDATE)
//    @PostMapping("/edit")
//    public R<Void> edit( @RequestBody KnowledgeInfoBo bo) {
//        return toAjax(knowledgeInfoService.updateByBo(bo));
//    }
//
//    /**
//     * å¯¼å‡ºçŸ¥è¯†åº“列表
//     */
//    @Log(title = "知识库", businessType = BusinessType.EXPORT)
//    @PostMapping("/export")
//    public void export(KnowledgeInfoBo bo, HttpServletResponse response) {
//        List<KnowledgeInfoVo> list = knowledgeInfoService.queryList(bo);
//        ExcelUtil.exportExcel(list, "知识库", KnowledgeInfoVo.class, response);
//    }
//
//    /**
//     * æŸ¥è¯¢çŸ¥è¯†é™„件信息
//     */
//    @GetMapping("/detail/{kid}")
//    public TableDataInfo<KnowledgeAttachVo> attach(KnowledgeAttachBo bo, PageQuery pageQuery,@PathVariable String kid){
//        bo.setKid(kid);
//        return attachService.queryPageList(bo, pageQuery);
//    }
//
//    /**
//     * ä¸Šä¼ çŸ¥è¯†åº“附件
//     */
//    @PostMapping(value = "/attach/upload")
//    public R<String> upload(KnowledgeInfoUploadRequest request){
//        knowledgeInfoService.upload(request);
//        return R.ok("上传知识库附件成功!");
//    }
//
//    /**
//     * èŽ·å–çŸ¥è¯†åº“é™„ä»¶è¯¦ç»†ä¿¡æ¯
//     *
//     * @param id ä¸»é”®
//     */
//    @GetMapping("attach/info/{id}")
//    public R<KnowledgeAttachVo> getAttachInfo(@NotNull(message = "主键不能为空")
//                                              @PathVariable Long id) {
//        return R.ok(attachService.queryById(id));
//    }
//
//    /**
//     * åˆ é™¤çŸ¥è¯†åº“附件
//     *
//     */
//    @PostMapping("attach/remove/{docId}")
//    public R<Void> removeAttach(@NotEmpty(message = "主键不能为空") @PathVariable String docId) {
//        attachService.removeKnowledgeAttach(docId);
//        return R.ok();
//    }
//
//
//    /**
//     * æŸ¥è¯¢çŸ¥è¯†ç‰‡æ®µ
//     */
//    @GetMapping("/fragment/list/{docId}")
//    public TableDataInfo<KnowledgeFragmentVo> fragmentList(KnowledgeFragmentBo bo, PageQuery pageQuery, @PathVariable String docId) {
//        bo.setDocId(docId);
//        return fragmentService.queryPageList(bo, pageQuery);
//    }
//
//}
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<PaymentOrdersVo> 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<PaymentOrdersVo> 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<PaymentOrdersVo> 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<PaymentOrdersVo> orderInfo(@RequestBody  OrderRequest orderRequest) {
        if(StringUtils.isEmpty(orderRequest.getOrderNo())){
            throw new BaseException("订单号不能为空!");
        }
        PaymentOrdersBo paymentOrdersBo = new PaymentOrdersBo();
        paymentOrdersBo.setOrderNo(orderRequest.getOrderNo());
        List<PaymentOrdersVo> 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<PaymentOrdersVo> 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<String, Object> params = new HashMap<>();
        params.put("name", orderRequest.getName());
        Product product = Product.create(params);
        Map<String, Object> recurring = new HashMap<>();
        recurring.put("interval", "month");
        Map<String, Object> 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<String> 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<PaymentOrdersVo> 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<PaymentOrdersVo> 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<PaymentOrdersVo> orderInfo(@RequestBody  OrderRequest orderRequest) {
//        if(StringUtils.isEmpty(orderRequest.getOrderNo())){
//            throw new BaseException("订单号不能为空!");
//        }
//        PaymentOrdersBo paymentOrdersBo = new PaymentOrdersBo();
//        paymentOrdersBo.setOrderNo(orderRequest.getOrderNo());
//        List<PaymentOrdersVo> 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<String, Object> params = new HashMap<>();
//        params.put("name", orderRequest.getName());
//        Product product = Product.create(params);
//
//        Map<String, Object> recurring = new HashMap<>();
//        recurring.put("interval", "month");
//        Map<String, Object> 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<String> 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);
//    }
//
//}
//
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<WxRobConfigVo> 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<WxRobConfigVo> 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();
//    }
//}
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/handler/wxcp/MsgHandler.java
@@ -19,7 +19,7 @@
@RequiredArgsConstructor
public class MsgHandler extends AbstractHandler {
    private final ISseService sseService;
//    private final ISseService sseService;
@@ -34,8 +34,10 @@
        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);
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/listener/SSEEventSourceListener.java
@@ -15,11 +15,8 @@
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;
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接口
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;
/**
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接口
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;
/**
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;
/**
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;
/**
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;
/**
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接口
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatAppStoreService.java
ÎļþÒÑɾ³ý
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatAppStoreImpl.java
ÎļþÒÑɾ³ý
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatConfigServiceImpl.java
ÎļþÒÑɾ³ý
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatCostServiceImpl.java
ÎļþÒÑɾ³ý
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatGptsServiceImpl.java
ÎļþÒÑɾ³ý
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatMessageServiceImpl.java
ÎļþÒÑɾ³ý
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatPluginServiceImpl.java
ÎļþÒÑɾ³ý
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatTokenServiceImpl.java
ÎļþÒÑɾ³ý
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatVisitorUsageServiceImpl.java
ÎļþÒÑɾ³ý
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatVoucherServiceImpl.java
ÎļþÒÑɾ³ý
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/CoverServiceImpl.java
@@ -24,7 +24,6 @@
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;
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/PptServiceImpl.java
@@ -9,13 +9,11 @@
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;
@@ -25,8 +23,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业务层处理
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.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 @@
    private OpenAiStreamClient openAiStreamClient;
    private final ChatConfig chatConfig;
    ChatConfig chatConfig;
    private final IChatCostService chatService;
ruoyi-modules/ruoyi-system/src/main/resources/application-prod.yml
ruoyi-modules/ruoyi-system/src/main/resources/application.yml
ruoyi-modules/ruoyi-system/src/main/resources/banner.txt
ruoyi-modules/ruoyi-system/src/main/resources/i18n/messages.properties
ruoyi-modules/ruoyi-system/src/main/resources/i18n/messages_en_US.properties
ruoyi-modules/ruoyi-system/src/main/resources/i18n/messages_zh_CN.properties
ruoyi-modules/ruoyi-system/src/main/resources/ip2region.xdb
Binary files differ
ruoyi-modules/ruoyi-system/src/main/resources/logback-plus.xml
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatConfigMapper.xml
ÎļþÒÑɾ³ý
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatPluginMapper.xml
ÎļþÒÑɾ³ý
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatVisitorUsageMapper.xml
ÎļþÒÑɾ³ý
ruoyi-modules/ruoyi-system/src/main/resources/spy.properties
ruoyi-modules/ruoyi-weixin/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.ruoyi</groupId>
        <artifactId>ruoyi-ai</artifactId>
        <version>1.0.0</version>
        <relativePath>../../pom.xml</relativePath>
    </parent>
    <artifactId>ruoyi-weixin</artifactId>
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>