diff --git a/README.md b/README.md index c12faa73..d37ea7ce 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,11 @@ ## 语音克隆 -https://github.com/ageerle/ruoyi-ai/assets/32251822/62c60f2a-add0-421b-8e32-16ed6a3e598b + + +https://github.com/ageerle/ruoyi-ai/assets/32251822/c3dd75eb-c5bd-4ab0-93bf-9221f4888827 + + ## 弹幕助手 @@ -72,10 +76,14 @@ https://github.com/ageerle/ruoyi-ai/assets/32251822/2d809d94-6cfb-41b1-9dc0-a72c -## 私有知识库管理(开发中) +## 私有知识库管理
- drawing - drawing + drawing + drawing + drawing + drawing + drawing + drawing
## 进群学习 diff --git a/image/02.png b/image/02.png new file mode 100644 index 00000000..ac033d22 Binary files /dev/null and b/image/02.png differ diff --git a/pom.xml b/pom.xml index 0ec370ce..ab2aa174 100644 --- a/pom.xml +++ b/pom.xml @@ -324,6 +324,8 @@ ${revision} + + com.xmzs ruoyi-generator diff --git a/ruoyi-admin/Dockerfile b/ruoyi-admin/Dockerfile index 0996e40c..386e378d 100644 --- a/ruoyi-admin/Dockerfile +++ b/ruoyi-admin/Dockerfile @@ -1,14 +1,17 @@ +#基础镜像 FROM findepi/graalvm:java17-native -MAINTAINER Lion Li +MAINTAINER ageerle RUN mkdir -p /ruoyi/server/logs \ /ruoyi/server/temp \ /ruoyi/skywalking/agent + +#工作空间 WORKDIR /ruoyi/server -ENV SERVER_PORT=8080 +ENV SERVER_PORT=6039 EXPOSE ${SERVER_PORT} diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index 58864d71..223ff6c4 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -64,6 +64,9 @@ ruoyi-midjourney + + + com.xmzs diff --git a/ruoyi-admin/src/main/java/com/xmzs/controller/AuthController.java b/ruoyi-admin/src/main/java/com/xmzs/controller/AuthController.java index 848f7b46..0405b11d 100644 --- a/ruoyi-admin/src/main/java/com/xmzs/controller/AuthController.java +++ b/ruoyi-admin/src/main/java/com/xmzs/controller/AuthController.java @@ -45,8 +45,6 @@ public class AuthController { private final SysRegisterService registerService; private final ISysTenantService tenantService; - - /** * 登录方法 * diff --git a/ruoyi-admin/src/main/java/com/xmzs/controller/CaptchaController.java b/ruoyi-admin/src/main/java/com/xmzs/controller/CaptchaController.java index 78941eec..de7d90bf 100644 --- a/ruoyi-admin/src/main/java/com/xmzs/controller/CaptchaController.java +++ b/ruoyi-admin/src/main/java/com/xmzs/controller/CaptchaController.java @@ -85,6 +85,7 @@ public class CaptchaController { * * @param emailRequest 用户邮箱 */ + //@PostMapping("/resource/email/code") @PostMapping("/resource/email/code") public R emailCode(@RequestBody @Valid EmailRequest emailRequest) { if (!mailProperties.getEnabled()) { diff --git a/ruoyi-admin/src/main/java/com/xmzs/controller/ChatController.java b/ruoyi-admin/src/main/java/com/xmzs/controller/ChatController.java index 2ee3c470..80b5dde2 100644 --- a/ruoyi-admin/src/main/java/com/xmzs/controller/ChatController.java +++ b/ruoyi-admin/src/main/java/com/xmzs/controller/ChatController.java @@ -3,8 +3,8 @@ package com.xmzs.controller; import com.xmzs.common.chat.domain.request.ChatRequest; import com.xmzs.common.chat.domain.request.Dall3Request; -import com.xmzs.common.chat.domain.request.MjTaskRequest; import com.xmzs.common.chat.entity.Tts.TextToSpeech; +import com.xmzs.common.chat.entity.files.UploadFileResponse; import com.xmzs.common.chat.entity.images.Item; import com.xmzs.common.chat.entity.whisper.WhisperResponse; import com.xmzs.common.core.domain.R; @@ -21,25 +21,15 @@ import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.core.io.InputStreamResource; -import org.springframework.http.MediaType; +import org.springframework.core.io.Resource; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; -import org.springframework.core.io.Resource; - -import java.io.IOException; -import java.io.InputStream; import java.util.List; -import retrofit2.Response; - /** * 描述: * @@ -64,6 +54,16 @@ public class ChatController { return ISseService.sseChat(chatRequest); } + /** + * 上传文件 + */ + @PostMapping("/v1/upload") + @ResponseBody + public UploadFileResponse upload(@RequestPart("file") MultipartFile file) { + return ISseService.upload(file); + } + + /** * 语音转文本 * @@ -94,18 +94,6 @@ public class ChatController { return R.ok(ISseService.dall3(request)); } - /** - * 扣除mj绘图费用 - * - * @return - */ - @PostMapping("/mjTask") - @ResponseBody - public R mjTask(@RequestBody MjTaskRequest mjTaskRequest) { - ISseService.mjTask(mjTaskRequest); - return R.ok(); - } - /** * 聊天记录 */ diff --git a/ruoyi-admin/src/main/java/com/xmzs/controller/PayController.java b/ruoyi-admin/src/main/java/com/xmzs/controller/PayController.java index ac6f96f1..e2c43cb7 100644 --- a/ruoyi-admin/src/main/java/com/xmzs/controller/PayController.java +++ b/ruoyi-admin/src/main/java/com/xmzs/controller/PayController.java @@ -23,7 +23,6 @@ import com.xmzs.system.domain.vo.SysUserVo; import com.xmzs.system.service.IPaymentOrdersService; import com.xmzs.system.service.ISysUserService; import com.xmzs.system.util.OrderNumberGenerator; -import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; @@ -43,15 +42,16 @@ public class PayController { private final IPaymentOrdersService paymentOrdersService; + private final PayConfig payConfig; + /** * 获取支付二维码 * * @Date 2023/7/3 - * @param response * @return void **/ @PostMapping("/payUrl") - public R payUrl(HttpServletResponse response, @RequestBody OrderRequest orderRequest) { + public R payUrl(@RequestBody OrderRequest orderRequest) { LoginUser loginUser = LoginHelper.getLoginUser(); // 创建订单 PaymentOrdersBo paymentOrders = new PaymentOrdersBo(); @@ -115,9 +115,9 @@ public class PayController { public String returnUrl(PayResponse payResponse) { // 校验签名 String mdString = "money=" + payResponse.getMoney() + "&name=" + payResponse.getName() + - "&out_trade_no=" + payResponse.getOut_trade_no() + "&pid=" + PayConfig.pid + + "&out_trade_no=" + payResponse.getOut_trade_no() + "&pid=" + payConfig.getPid() + "&trade_no=" + payResponse.getTrade_no() + "&trade_status=" + payResponse.getTrade_status() + - "&type=" + payResponse.getType() + PayConfig.key; + "&type=" + payResponse.getType() + payConfig.getKey(); String sign = MD5Util.GetMD5Code(mdString); if(!sign.equals(payResponse.getSign())){ throw new BaseException("校验签名失败!"); @@ -136,10 +136,8 @@ public class PayController { paymentOrdersVo.setPaymentMethod(payResponse.getType()); BeanUtil.copyProperties(paymentOrdersVo,paymentOrdersBo); paymentOrdersService.updateByBo(paymentOrdersBo); + SysUserVo sysUserVo = userService.selectUserById(paymentOrdersVo.getUserId()); - if(money>9.9){ - money = money*2; - } sysUserVo.setUserBalance(sysUserVo.getUserBalance()+money); SysUserBo sysUserBo = new SysUserBo(); BeanUtil.copyProperties(sysUserVo,sysUserBo); diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index dff7562e..0b7d2735 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -1,7 +1,7 @@ --- # 监控中心配置 spring.boot.admin.client: # 增加客户端开关 - enabled: true + enabled: false url: http://localhost:9090/admin instance: service-host-type: IP @@ -51,36 +51,36 @@ spring: # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题) url: jdbc:mysql://127.0.0.1:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true username: ry-vue - password: xxx + password: ry-vue # 从库数据源 -# slave: -# lazy: true -# type: ${spring.datasource.type} -# driverClassName: com.mysql.cj.jdbc.Driver -# url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true -# username: -# password: -# oracle: -# type: ${spring.datasource.type} -# driverClassName: oracle.jdbc.OracleDriver -# url: jdbc:oracle:thin:@//localhost:1521/XE -# username: ROOT -# password: root -# hikari: -# connectionTestQuery: SELECT 1 FROM DUAL -# postgres: -# type: ${spring.datasource.type} -# driverClassName: org.postgresql.Driver -# url: jdbc:postgresql://localhost:5432/postgres?useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true -# username: root -# password: root -# sqlserver: -# type: ${spring.datasource.type} -# driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver -# url: jdbc:sqlserver://localhost:1433;DatabaseName=tempdb;SelectMethod=cursor;encrypt=false;rewriteBatchedStatements=true -# username: SA -# password: root + # slave: + # lazy: true + # type: ${spring.datasource.type} + # driverClassName: com.mysql.cj.jdbc.Driver + # url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true + # username: + # password: + # oracle: + # type: ${spring.datasource.type} + # driverClassName: oracle.jdbc.OracleDriver + # url: jdbc:oracle:thin:@//localhost:1521/XE + # username: ROOT + # password: root + # hikari: + # connectionTestQuery: SELECT 1 FROM DUAL + # postgres: + # type: ${spring.datasource.type} + # driverClassName: org.postgresql.Driver + # url: jdbc:postgresql://localhost:5432/postgres?useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true + # username: root + # password: root + # sqlserver: + # type: ${spring.datasource.type} + # driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver + # url: jdbc:sqlserver://localhost:1433;DatabaseName=tempdb;SelectMethod=cursor;encrypt=false;rewriteBatchedStatements=true + # username: SA + # password: root hikari: # 最大连接池数量 maxPoolSize: 20 diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index fdf6c238..cd52c0f7 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -4,7 +4,7 @@ spring.servlet.multipart.location: /ruoyi/server/temp --- # 监控中心配置 spring.boot.admin.client: # 增加客户端开关 - enabled: true + enabled: false url: http://localhost:9090/admin instance: service-host-type: IP diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 949ee58f..12d9becd 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -212,27 +212,6 @@ mybatis-encryptor: # 公私钥 非对称算法的公私钥 如:SM2,RSA publicKey: privateKey: ---- # mail 邮件发送 -mail: - enabled: true - host: smtp.163.com - port: 465 - # 是否需要用户名密码验证 - auth: true - # 发送方,遵循RFC-822标准 - from: ageerle@163.com - # 用户名(注意:如果使用foxmail邮箱,此处user为qq号) - user: ageerle@163.com - # 密码(填写授权码) - pass: xxxx - # 使用 STARTTLS安全连接,STARTTLS是对纯文本通信协议的扩展。 - starttlsEnable: true - # 使用SSL安全连接 - sslEnable: true - # SMTP超时时长,单位毫秒,缺省值不超时 - timeout: 0 - # Socket连接超时值,单位毫秒,缺省值不超时 - connectionTimeout: 0 # Swagger配置 swagger: @@ -313,15 +292,12 @@ management: --- # websocket websocket: - enabled: true + enabled: false # 路径 path: '' # 设置访问源地址 allowedOrigins: '*' -# chatgpt配置信息 -chat: - apiKey: 'sk-xxx' - apiHost: 'https://api.pandarobot.chat/' + # 微信小程序配置信息 wx: miniapp: @@ -338,6 +314,8 @@ baidu: textReview: apiKey: '' # apiKey secretKey: '' # secretKey + appKey: xxxxxxxxxxxxxxxxx + secretKey: xxxxxxxxxxxxxxxxxxxxxxx wechat: # 是否使用微信 true/false @@ -353,23 +331,62 @@ keyword: image: "ai画图" # ai语音指令(TTS模型 https://platform.openai.com/docs/api-reference/audio) audio: "ai语音" + mj: - api-secret: + api-secret: 'sk-xx' task-store: type: in_memory timeout: 30d translate-way: gpt -# proxy: -# host: 127.0.0.1 -# port: 10809 + # proxy: + # host: 127.0.0.1 + # port: 10809 ng-discord: - server: https://discord.pandarobot.chat/ - cdn: https://app.pandarobot.chat/ - wss: https://gateway.pandarobot.chat/ + server: 'https://xxx.pandarobot.chat/' + cdn: 'https://xxx.pandarobot.chat/' + wss: 'https://xxx.pandarobot.chat/' openai: - gpt-api-url: 'https://api.gptgod.online/' - gpt-api-key: 'xxxxxxx' + gpt-api-url: 'https://api.pandarobot.chat/' + gpt-api-key: 'sk-xx' accounts: - - guild-id: 'xxxxxx' - channel-id: 'xxxxx' - user-token: 'xxxxxxx' + - guild-id: 'xx' + channel-id: 'xx' + user-token: 'xx' + +--- # mail 邮件发送 +mail: + enabled: true + host: smtp.163.com + port: 465 + # 是否需要用户名密码验证 + auth: true + # 发送方,遵循RFC-822标准 + from: ageerle@163.com + # 用户名(注意:如果使用foxmail邮箱,此处user为qq号) + user: ageerle@163.com + # 密码(填写授权码) + pass: TOGXBVPYFVPFRQMQ + # 使用 STARTTLS安全连接,STARTTLS是对纯文本通信协议的扩展。 + starttlsEnable: true + # 使用SSL安全连接 + sslEnable: true + # SMTP超时时长,单位毫秒,缺省值不超时 + timeout: 0 + # Socket连接超时值,单位毫秒,缺省值不超时 + connectionTimeout: 0 + +# chatgpt配置信息 +chat: + apiKey: 'sk-xxx' + apiHost: 'https://api.pandarobot.chat/' + +# 支付配置信息 +pay: + pid: 'xxx' + key: 'xxx' + payUrl: 'https://pay.pandarobot.chat/mapi.php' + notify_url: 'https://www.pandarobot.chat/pay/returnUrl' + return_url: 'https://www.pandarobot.chat/pay/notifyUrl' + type: 'wxpay' + device: 'pc' + sign_type: 'MD5' diff --git a/ruoyi-admin/src/test/java/com/xmzs/test/AssertUnitTest.java b/ruoyi-admin/src/test/java/com/xmzs/test/AssertUnitTest.java new file mode 100644 index 00000000..6d1f14ab --- /dev/null +++ b/ruoyi-admin/src/test/java/com/xmzs/test/AssertUnitTest.java @@ -0,0 +1,45 @@ +package com.xmzs.test; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +/** + * 断言单元测试案例 + * + * @author Lion Li + */ +@DisplayName("断言单元测试案例") +public class AssertUnitTest { + + @DisplayName("测试 assertEquals 方法") + @Test + public void testAssertEquals() { + Assertions.assertEquals("666", new String("666")); + Assertions.assertNotEquals("666", new String("666")); + } + + @DisplayName("测试 assertSame 方法") + @Test + public void testAssertSame() { + Object obj = new Object(); + Object obj1 = obj; + Assertions.assertSame(obj, obj1); + Assertions.assertNotSame(obj, obj1); + } + + @DisplayName("测试 assertTrue 方法") + @Test + public void testAssertTrue() { + Assertions.assertTrue(true); + Assertions.assertFalse(true); + } + + @DisplayName("测试 assertNull 方法") + @Test + public void testAssertNull() { + Assertions.assertNull(null); + Assertions.assertNotNull(null); + } + +} diff --git a/ruoyi-admin/src/test/java/com/xmzs/test/DemoUnitTest.java b/ruoyi-admin/src/test/java/com/xmzs/test/DemoUnitTest.java new file mode 100644 index 00000000..6981eb8a --- /dev/null +++ b/ruoyi-admin/src/test/java/com/xmzs/test/DemoUnitTest.java @@ -0,0 +1,70 @@ +package com.xmzs.test; + +import com.xmzs.common.core.config.RuoYiConfig; +import org.junit.jupiter.api.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import java.util.concurrent.TimeUnit; + +/** + * 单元测试案例 + * + * @author Lion Li + */ +@SpringBootTest // 此注解只能在 springboot 主包下使用 需包含 main 方法与 yml 配置文件 +@DisplayName("单元测试案例") +public class DemoUnitTest { + + @Autowired + private RuoYiConfig ruoYiConfig; + + @DisplayName("测试 @SpringBootTest @Test @DisplayName 注解") + @Test + public void testTest() { + System.out.println(ruoYiConfig); + } + + @Disabled + @DisplayName("测试 @Disabled 注解") + @Test + public void testDisabled() { + System.out.println(ruoYiConfig); + } + + @Timeout(value = 2L, unit = TimeUnit.SECONDS) + @DisplayName("测试 @Timeout 注解") + @Test + public void testTimeout() throws InterruptedException { + Thread.sleep(3000); + System.out.println(ruoYiConfig); + } + + + @DisplayName("测试 @RepeatedTest 注解") + @RepeatedTest(3) + public void testRepeatedTest() { + System.out.println(666); + } + + @BeforeAll + public static void testBeforeAll() { + System.out.println("@BeforeAll =================="); + } + + @BeforeEach + public void testBeforeEach() { + System.out.println("@BeforeEach =================="); + } + + @AfterEach + public void testAfterEach() { + System.out.println("@AfterEach =================="); + } + + @AfterAll + public static void testAfterAll() { + System.out.println("@AfterAll =================="); + } + +} diff --git a/ruoyi-admin/src/test/java/com/xmzs/test/ParamUnitTest.java b/ruoyi-admin/src/test/java/com/xmzs/test/ParamUnitTest.java new file mode 100644 index 00000000..82b9f55c --- /dev/null +++ b/ruoyi-admin/src/test/java/com/xmzs/test/ParamUnitTest.java @@ -0,0 +1,72 @@ +package com.xmzs.test; + +import com.xmzs.common.core.enums.UserType; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.EnumSource; +import org.junit.jupiter.params.provider.MethodSource; +import org.junit.jupiter.params.provider.NullSource; +import org.junit.jupiter.params.provider.ValueSource; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Stream; + +/** + * 带参数单元测试案例 + * + * @author Lion Li + */ +@DisplayName("带参数单元测试案例") +public class ParamUnitTest { + + @DisplayName("测试 @ValueSource 注解") + @ParameterizedTest + @ValueSource(strings = {"t1", "t2", "t3"}) + public void testValueSource(String str) { + System.out.println(str); + } + + @DisplayName("测试 @NullSource 注解") + @ParameterizedTest + @NullSource + public void testNullSource(String str) { + System.out.println(str); + } + + @DisplayName("测试 @EnumSource 注解") + @ParameterizedTest + @EnumSource(UserType.class) + public void testEnumSource(UserType type) { + System.out.println(type.getUserType()); + } + + @DisplayName("测试 @MethodSource 注解") + @ParameterizedTest + @MethodSource("getParam") + public void testMethodSource(String str) { + System.out.println(str); + } + + public static Stream getParam() { + List list = new ArrayList<>(); + list.add("t1"); + list.add("t2"); + list.add("t3"); + return list.stream(); + } + + @BeforeEach + public void testBeforeEach() { + System.out.println("@BeforeEach =================="); + } + + @AfterEach + public void testAfterEach() { + System.out.println("@AfterEach =================="); + } + + +} diff --git a/ruoyi-admin/src/test/java/com/xmzs/test/TagUnitTest.java b/ruoyi-admin/src/test/java/com/xmzs/test/TagUnitTest.java new file mode 100644 index 00000000..e4513873 --- /dev/null +++ b/ruoyi-admin/src/test/java/com/xmzs/test/TagUnitTest.java @@ -0,0 +1,54 @@ +package com.xmzs.test; + +import org.junit.jupiter.api.*; +import org.springframework.boot.test.context.SpringBootTest; + +/** + * 标签单元测试案例 + * + * @author Lion Li + */ +@SpringBootTest +@DisplayName("标签单元测试案例") +public class TagUnitTest { + + @Tag("dev") + @DisplayName("测试 @Tag dev") + @Test + public void testTagDev() { + System.out.println("dev"); + } + + @Tag("prod") + @DisplayName("测试 @Tag prod") + @Test + public void testTagProd() { + System.out.println("prod"); + } + + @Tag("local") + @DisplayName("测试 @Tag local") + @Test + public void testTagLocal() { + System.out.println("local"); + } + + @Tag("exclude") + @DisplayName("测试 @Tag exclude") + @Test + public void testTagExclude() { + System.out.println("exclude"); + } + + @BeforeEach + public void testBeforeEach() { + System.out.println("@BeforeEach =================="); + } + + @AfterEach + public void testAfterEach() { + System.out.println("@AfterEach =================="); + } + + +} diff --git a/ruoyi-common/ruoyi-common-bom/pom.xml b/ruoyi-common/ruoyi-common-bom/pom.xml index ac928505..3f069fb4 100644 --- a/ruoyi-common/ruoyi-common-bom/pom.xml +++ b/ruoyi-common/ruoyi-common-bom/pom.xml @@ -173,13 +173,15 @@ ${revision} - + com.xmzs ruoyi-midjourney ${revision} + + com.xmzs diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/constant/OpenAIConst.java b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/constant/OpenAIConst.java index 8393623e..34d9fc83 100644 --- a/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/constant/OpenAIConst.java +++ b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/constant/OpenAIConst.java @@ -12,22 +12,27 @@ public class OpenAIConst { public final static int SUCCEED_CODE = 200; + /** GPT3扣除费用 */ public final static double GPT3_COST = 0.05; - public final static double GPT4_COST = 0.3; + /** GPT4扣除费用 */ + public final static double GPT4_COST = 0.2; - public final static double GPT4_ALL_COST = 0.3; + /** DALL普通绘图扣除费用 */ + public final static double DALL3_COST = 0.3; - /** 绘图费用 */ - public final static double DALL3_COST = 0.4; + /** DALL高清绘图扣除费用 */ + public final static double DALL3_HD_COST = 0.5; - /** 绘图费用-高清 */ - public final static double DALL3_HD_COST = 0.8; + /** MJ操作类型1(变化、变焦、文生图、图生图、局部重绘、混图)扣除费用 */ + public final static double MJ_COST_TYPE1 = 0.3; - /** mdjourney绘图费用 */ - public final static double MJ_COST = 0.3; + /** MJ操作类型2(换脸、放大、图生文、prompt分析)扣除费用 */ + public final static double MJ_COST_TYPE2 = 0.1; + + /** MJ操作类型3(查询任务进度、获取seed)扣除费用 */ + public final static double MJ_COST_TYPE3 = 0.0; /** 默认账户余额 */ public final static double USER_BALANCE = 5; - } diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/request/ChatRequest.java b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/request/ChatRequest.java index 802118c2..a7584a5e 100644 --- a/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/request/ChatRequest.java +++ b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/request/ChatRequest.java @@ -22,16 +22,16 @@ public class ChatRequest { @NotEmpty(message = "对话消息不能为空") List messages; - List content; + List imageContent; private String prompt; private String userId; /** - * 需要识别的图片地址 + * 知识库id */ - private String imgurl; + private String kid; /** * gpt的默认设置 diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/request/RoleRequest.java b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/request/RoleRequest.java new file mode 100644 index 00000000..61844713 --- /dev/null +++ b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/request/RoleRequest.java @@ -0,0 +1,34 @@ +package com.xmzs.common.chat.domain.request; + +import lombok.Data; + +/** + * @author WangLe + */ +@Data +public class RoleRequest { + + /** + * 角色名称 + */ + private String name; + + /** + * 角色描述 + */ + private String description; + + /** + * 音频地址 + */ + private String prompt; + + /** + * 头像 + */ + private String avatar; + + + private String preProcess; + +} diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/request/SimpleGenerateRequest.java b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/request/SimpleGenerateRequest.java new file mode 100644 index 00000000..d4beb1e0 --- /dev/null +++ b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/request/SimpleGenerateRequest.java @@ -0,0 +1,35 @@ +package com.xmzs.common.chat.domain.request; + +import lombok.Data; + +/** + * @author WangLe + */ +@Data +public class SimpleGenerateRequest { + + /** + * 要使用的模型ID (目前统一为reecho-neural-voice-001) + */ + private String model = "reecho-neural-voice-001"; + + /** + * 多样性 (0-100,默认为97) + */ + private Integer randomness; + + /** + * 稳定性过滤 (0-100,默认为0) + */ + private Integer stability_boost; + + /** + * 角色ID + */ + private String voiceId; + + /** + * 要生成的文本内容 + */ + private String text; +} diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/response/MetadataResponse.java b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/response/MetadataResponse.java new file mode 100644 index 00000000..2773a334 --- /dev/null +++ b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/response/MetadataResponse.java @@ -0,0 +1,14 @@ +package com.xmzs.common.chat.domain.response; + +import lombok.Data; + +/** + * @author WangLe + */ +@Data +public class MetadataResponse { + private String promptMP3StorageUrl; + private String promptOriginAudioStorageUrl; + private String description; + private boolean preProcess; +} diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/response/RoleDataResponse.java b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/response/RoleDataResponse.java new file mode 100644 index 00000000..9470f1a6 --- /dev/null +++ b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/response/RoleDataResponse.java @@ -0,0 +1,20 @@ +package com.xmzs.common.chat.domain.response; + +import lombok.Data; + +/** + * @author WangLe + */ +@Data +public class RoleDataResponse { + private String id; + private String name; + private String status; + private String from; + private String originId; + private MetadataResponse metadata; + private String createdAt; + private String updatedAt; + private String deletedAt; + private String userId; +} diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/response/RoleResponse.java b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/response/RoleResponse.java new file mode 100644 index 00000000..58cc4c14 --- /dev/null +++ b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/response/RoleResponse.java @@ -0,0 +1,13 @@ +package com.xmzs.common.chat.domain.response; + +import lombok.Data; + +/** + * @author WangLe + */ +@Data +public class RoleResponse { + private String status; + private String message; + private RoleDataResponse data; +} diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/response/SimpleGenerateDataResponse.java b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/response/SimpleGenerateDataResponse.java new file mode 100644 index 00000000..b8a37a96 --- /dev/null +++ b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/response/SimpleGenerateDataResponse.java @@ -0,0 +1,25 @@ +package com.xmzs.common.chat.domain.response; + +import lombok.Data; + +/** + * @author WangLe + */ +@Data +public class SimpleGenerateDataResponse { + + /** + * 本次生成的ID + */ + private String id; + + /** + * 本次生成结果的音频文件地址 + */ + private String audio; + + /** + * 本次生成所消耗的点数 + */ + private Integer credit_used; +} diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/response/SimpleGenerateResponse.java b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/response/SimpleGenerateResponse.java new file mode 100644 index 00000000..0b0266c5 --- /dev/null +++ b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/domain/response/SimpleGenerateResponse.java @@ -0,0 +1,25 @@ +package com.xmzs.common.chat.domain.response; + +import lombok.Data; + +/** + * @author WangLe + */ +@Data +public class SimpleGenerateResponse { + + /** + * 状态码,失败时则为500 + */ + private String status; + + /** + * 状态消息 + */ + private String message; + + /** + * 生成详情 + */ + private SimpleGenerateDataResponse data; +} diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/entity/chat/BaseChatCompletion.java b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/entity/chat/BaseChatCompletion.java index c14571e6..9e6f5b8f 100644 --- a/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/entity/chat/BaseChatCompletion.java +++ b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/entity/chat/BaseChatCompletion.java @@ -2,7 +2,6 @@ package com.xmzs.common.chat.entity.chat; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; - import com.xmzs.common.chat.constant.OpenAIConst; import com.xmzs.common.chat.entity.chat.tool.Tools; import lombok.*; @@ -217,6 +216,23 @@ public class BaseChatCompletion implements Serializable { * gpt-4-0613,支持函数 */ GPT_4_0125_PREVIEW("gpt-4-0125-preview"), + + /** + * GPT_4_ALL + */ + GPT_4_ALL("gpt-4-all"), + + GPT_4_GIZMO("gpt-4-gizmo"), + + NET("net"), + + CLAUDE_3_SONNET("claude-3-sonnet-20240229"), + + GEMINI_PRO("gemini-pro"), + + STABLE_DIFFUSION("stable-diffusion"), + + SUNO_V3("suno-v3"), ; private final String name; } @@ -238,9 +254,10 @@ public class BaseChatCompletion implements Serializable { } public static double getModelCost(String modelName) { - return switch (modelName) { - case "gpt-3.5-turbo-0613" -> OpenAIConst.GPT3_COST; - default -> OpenAIConst.GPT4_COST; - }; + if(modelName.startsWith("gpt-3.5")){ + return OpenAIConst.GPT3_COST; + }else { + return OpenAIConst.GPT4_COST; + } } } diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/entity/files/File.java b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/entity/files/File.java index 581cd297..1dc00522 100644 --- a/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/entity/files/File.java +++ b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/entity/files/File.java @@ -16,13 +16,20 @@ import java.io.Serializable; @JsonIgnoreProperties(ignoreUnknown = true) public class File implements Serializable { - private String id; - private String object; +// private String id; +// private String object; +// private long bytes; +// private long created_at; +// private String filename; +// private String purpose; +// private String status; +// @JsonProperty("status_details") +// private String statusDetails; + private long bytes; private long created_at; private String filename; - private String purpose; - private String status; - @JsonProperty("status_details") - private String statusDetails; + private String id; + private String object; + private String url; } diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/openai/OpenAiStreamClient.java b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/openai/OpenAiStreamClient.java index a979a0f5..5c56ecff 100644 --- a/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/openai/OpenAiStreamClient.java +++ b/ruoyi-common/ruoyi-common-chat/src/main/java/com/xmzs/common/chat/openai/OpenAiStreamClient.java @@ -12,6 +12,7 @@ import com.xmzs.common.chat.entity.billing.Subscription; import com.xmzs.common.chat.entity.chat.BaseChatCompletion; import com.xmzs.common.chat.entity.chat.ChatCompletionResponse; import com.xmzs.common.chat.entity.chat.ChatCompletionWithPicture; +import com.xmzs.common.chat.entity.files.UploadFileResponse; import com.xmzs.common.chat.entity.images.Image; import com.xmzs.common.chat.entity.images.ImageResponse; import com.xmzs.common.chat.entity.models.Model; @@ -231,6 +232,23 @@ public class OpenAiStreamClient { return chatCompletionResponse.blockingGet(); } + /** + * 上传文件 + * + * @param purpose purpose + * @param file 文件对象 + * @return UploadFileResponse + */ + public UploadFileResponse uploadFile(String purpose, java.io.File file) { + // 创建 RequestBody,用于封装构建RequestBody + RequestBody fileBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); + MultipartBody.Part multipartBody = MultipartBody.Part.createFormData("file", file.getName(), fileBody); + + RequestBody purposeBody = RequestBody.create(MediaType.parse("multipart/form-data"), purpose); + Single uploadFileResponse = this.openAiApi.uploadFile(multipartBody, purposeBody); + return uploadFileResponse.blockingGet(); + } + /** * 获取openKey账户信息(近90天) * diff --git a/ruoyi-common/ruoyi-common-pay/src/main/java/com/xmzs/common/config/PayConfig.java b/ruoyi-common/ruoyi-common-pay/src/main/java/com/xmzs/common/config/PayConfig.java index 6c2ff906..97436ac6 100644 --- a/ruoyi-common/ruoyi-common-pay/src/main/java/com/xmzs/common/config/PayConfig.java +++ b/ruoyi-common/ruoyi-common-pay/src/main/java/com/xmzs/common/config/PayConfig.java @@ -1,50 +1,57 @@ package com.xmzs.common.config; +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + /** * 支付配置信息 * * @author Admin */ +@Data +@Component +@ConfigurationProperties(prefix = "pay") public class PayConfig { /** * 商户ID */ - public static String pid = "xxx"; + private String pid; /** * 接口地址 */ - public static String payUrl = "https://pay-cloud.vip/mapi.php"; + private String payUrl; /** * 私钥 */ - public static String key = "xxx"; + private String key ; /** * 服务器异步通知地址 */ - public static String notify_url = "https://www.pandarobot.chat/pay/returnUrl"; + private String notify_url; /** * 页面跳转通知地址 */ - public static String return_url = "https://www.pandarobot.chat/pay/notifyUrl"; + private String return_url; /** * 支付方式 */ - public static String type = "wxpay"; + private String type; /** * 设备类型 */ - public static String device = "pc"; + private String device; /** * 加密方式默认MD5 */ - public static String sign_type = "MD5"; + private String sign_type; } diff --git a/ruoyi-common/ruoyi-common-pay/src/main/java/com/xmzs/common/service/impl/PayServiceImpl.java b/ruoyi-common/ruoyi-common-pay/src/main/java/com/xmzs/common/service/impl/PayServiceImpl.java index 25edd3a6..eb2a90d6 100644 --- a/ruoyi-common/ruoyi-common-pay/src/main/java/com/xmzs/common/service/impl/PayServiceImpl.java +++ b/ruoyi-common/ruoyi-common-pay/src/main/java/com/xmzs/common/service/impl/PayServiceImpl.java @@ -2,9 +2,11 @@ package com.xmzs.common.service.impl; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONObject; + import com.xmzs.common.config.PayConfig; import com.xmzs.common.service.PayService; import com.xmzs.common.utils.MD5Util; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.HashMap; @@ -15,28 +17,31 @@ import java.util.Map; * @author Admin */ @Service +@RequiredArgsConstructor public class PayServiceImpl implements PayService { + + private final PayConfig payConfig; @Override public String getPayUrl(String orderNo, String name, double money, String clientIp) { String out_trade_no = orderNo, sign = ""; //封装请求参数 - String mdString = "clientip=" + clientIp + "&device=" + PayConfig.device + "&money=" + money + "&name=" + name + "&" + - "notify_url=" + PayConfig.notify_url + "&out_trade_no=" + out_trade_no + "&pid=" + PayConfig.pid + "&return_url=" + PayConfig.return_url + - "&type=" + PayConfig.type + PayConfig.key; + String mdString = "clientip=" + clientIp + "&device=" + payConfig.getDevice() + "&money=" + money + "&name=" + name + "&" + + "notify_url=" + payConfig.getNotify_url() + "&out_trade_no=" + out_trade_no + "&pid=" + payConfig.getPid() + "&return_url=" + payConfig.getReturn_url() + + "&type=" + payConfig.getType() + payConfig.getKey(); sign = MD5Util.GetMD5Code(mdString); Map map = new HashMap<>(10); map.put("clientip", clientIp); - map.put("device", PayConfig.device); + map.put("device", payConfig.getDevice()); map.put("money", money); map.put("name", name); - map.put("notify_url", PayConfig.notify_url); + map.put("notify_url", payConfig.getNotify_url()); map.put("out_trade_no", out_trade_no); - map.put("pid", PayConfig.pid); - map.put("return_url", PayConfig.return_url); - map.put("sign_type", PayConfig.sign_type); - map.put("type", PayConfig.type); + map.put("pid", payConfig.getPid()); + map.put("return_url", payConfig.getReturn_url()); + map.put("sign_type", payConfig.getSign_type()); + map.put("type", payConfig.getType()); map.put("sign", sign); - String body = HttpUtil.post(PayConfig.payUrl, map); + String body = HttpUtil.post(payConfig.getPayUrl(), map); JSONObject jsonObject = new JSONObject(body); return (String) jsonObject.get("qrcode"); } diff --git a/ruoyi-modules/pom.xml b/ruoyi-modules/pom.xml index 5f37684f..a6d07b22 100644 --- a/ruoyi-modules/pom.xml +++ b/ruoyi-modules/pom.xml @@ -22,7 +22,6 @@ ruoyi-job ruoyi-midjourney ruoyi-system - ruoyi-live diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/controller/TestDemoController.java b/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/controller/TestDemoController.java index 50532dbd..788afe05 100644 --- a/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/controller/TestDemoController.java +++ b/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/controller/TestDemoController.java @@ -7,30 +7,30 @@ import com.xmzs.common.core.utils.ValidatorUtils; import com.xmzs.common.core.validate.AddGroup; import com.xmzs.common.core.validate.EditGroup; import com.xmzs.common.core.validate.QueryGroup; -import com.xmzs.common.web.core.BaseController; -import com.xmzs.common.idempotent.annotation.RepeatSubmit; -import com.xmzs.common.mybatis.core.page.PageQuery; -import com.xmzs.common.mybatis.core.page.TableDataInfo; import com.xmzs.common.excel.core.ExcelResult; import com.xmzs.common.excel.utils.ExcelUtil; +import com.xmzs.common.idempotent.annotation.RepeatSubmit; import com.xmzs.common.log.annotation.Log; import com.xmzs.common.log.enums.BusinessType; +import com.xmzs.common.mybatis.core.page.PageQuery; +import com.xmzs.common.mybatis.core.page.TableDataInfo; +import com.xmzs.common.web.core.BaseController; import com.xmzs.demo.domain.TestDemo; import com.xmzs.demo.domain.bo.TestDemoBo; import com.xmzs.demo.domain.bo.TestDemoImportVo; import com.xmzs.demo.domain.vo.TestDemoVo; import com.xmzs.demo.service.ITestDemoService; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; - -import java.util.*; +import java.util.Arrays; +import java.util.List; import java.util.concurrent.TimeUnit; /** diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/controller/TestExcelController.java b/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/controller/TestExcelController.java index fa18cf0b..8209f300 100644 --- a/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/controller/TestExcelController.java +++ b/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/controller/TestExcelController.java @@ -2,13 +2,13 @@ package com.xmzs.demo.controller; import cn.hutool.core.collection.CollUtil; import com.xmzs.common.excel.utils.ExcelUtil; +import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; import lombok.Data; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import jakarta.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.HashMap; import java.util.List; diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/controller/TestI18nController.java b/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/controller/TestI18nController.java index 3df8c1f5..6cd52aa4 100644 --- a/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/controller/TestI18nController.java +++ b/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/controller/TestI18nController.java @@ -2,6 +2,8 @@ package com.xmzs.demo.controller; import com.xmzs.common.core.domain.R; import com.xmzs.common.core.utils.MessageUtils; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import lombok.Data; import org.hibernate.validator.constraints.Range; import org.springframework.validation.annotation.Validated; @@ -9,9 +11,6 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; - /** * 测试国际化 diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/controller/TestSensitiveController.java b/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/controller/TestSensitiveController.java index 5385030c..2c5f1a71 100644 --- a/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/controller/TestSensitiveController.java +++ b/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/controller/TestSensitiveController.java @@ -1,11 +1,11 @@ package com.xmzs.demo.controller; import com.xmzs.common.core.domain.R; -import com.xmzs.common.web.core.BaseController; import com.xmzs.common.sensitive.annotation.Sensitive; -import com.xmzs.common.sensitive.core.SensitiveStrategy; -import lombok.Data; import com.xmzs.common.sensitive.core.SensitiveService; +import com.xmzs.common.sensitive.core.SensitiveStrategy; +import com.xmzs.common.web.core.BaseController; +import lombok.Data; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/controller/TestTreeController.java b/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/controller/TestTreeController.java index 8eaa420e..2d1873b5 100644 --- a/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/controller/TestTreeController.java +++ b/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/controller/TestTreeController.java @@ -5,21 +5,21 @@ import com.xmzs.common.core.domain.R; import com.xmzs.common.core.validate.AddGroup; import com.xmzs.common.core.validate.EditGroup; import com.xmzs.common.core.validate.QueryGroup; -import com.xmzs.common.web.core.BaseController; import com.xmzs.common.excel.utils.ExcelUtil; import com.xmzs.common.idempotent.annotation.RepeatSubmit; import com.xmzs.common.log.annotation.Log; import com.xmzs.common.log.enums.BusinessType; +import com.xmzs.common.web.core.BaseController; import com.xmzs.demo.domain.bo.TestTreeBo; import com.xmzs.demo.domain.vo.TestTreeVo; import com.xmzs.demo.service.ITestTreeService; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; import java.util.Arrays; import java.util.List; diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/domain/bo/TestDemoBo.java b/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/domain/bo/TestDemoBo.java index 89df0b18..716b0336 100644 --- a/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/domain/bo/TestDemoBo.java +++ b/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/domain/bo/TestDemoBo.java @@ -5,11 +5,10 @@ import com.xmzs.common.core.validate.EditGroup; import com.xmzs.common.mybatis.core.domain.BaseEntity; import com.xmzs.demo.domain.TestDemo; import io.github.linpeilie.annotations.AutoMapper; -import lombok.Data; -import lombok.EqualsAndHashCode; - import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; /** * 测试单表业务对象 test_demo diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/domain/bo/TestDemoImportVo.java b/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/domain/bo/TestDemoImportVo.java index 077af6fc..695971a7 100644 --- a/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/domain/bo/TestDemoImportVo.java +++ b/ruoyi-modules/ruoyi-demo/src/main/java/com/xmzs/demo/domain/bo/TestDemoImportVo.java @@ -1,10 +1,9 @@ package com.xmzs.demo.domain.bo; import com.alibaba.excel.annotation.ExcelProperty; -import lombok.Data; - import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.Data; /** * 测试单表业务对象 test_demo diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/com/xmzs/generator/controller/GenController.java b/ruoyi-modules/ruoyi-generator/src/main/java/com/xmzs/generator/controller/GenController.java index 0a017f73..74d37f0b 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/java/com/xmzs/generator/controller/GenController.java +++ b/ruoyi-modules/ruoyi-generator/src/main/java/com/xmzs/generator/controller/GenController.java @@ -4,19 +4,19 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.convert.Convert; import cn.hutool.core.io.IoUtil; import com.xmzs.common.core.domain.R; -import com.xmzs.common.web.core.BaseController; -import com.xmzs.common.mybatis.core.page.PageQuery; -import com.xmzs.common.mybatis.core.page.TableDataInfo; import com.xmzs.common.log.annotation.Log; import com.xmzs.common.log.enums.BusinessType; +import com.xmzs.common.mybatis.core.page.PageQuery; +import com.xmzs.common.mybatis.core.page.TableDataInfo; +import com.xmzs.common.web.core.BaseController; import com.xmzs.generator.domain.GenTable; import com.xmzs.generator.domain.GenTableColumn; import com.xmzs.generator.service.IGenTableService; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.HashMap; import java.util.List; diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/com/xmzs/generator/domain/GenTableColumn.java b/ruoyi-modules/ruoyi-generator/src/main/java/com/xmzs/generator/domain/GenTableColumn.java index d675af7e..f107b0e9 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/java/com/xmzs/generator/domain/GenTableColumn.java +++ b/ruoyi-modules/ruoyi-generator/src/main/java/com/xmzs/generator/domain/GenTableColumn.java @@ -6,12 +6,11 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.xmzs.common.core.utils.StringUtils; import com.xmzs.common.mybatis.core.domain.BaseEntity; +import jakarta.validation.constraints.NotBlank; import lombok.Data; import lombok.EqualsAndHashCode; import org.apache.ibatis.type.JdbcType; -import jakarta.validation.constraints.NotBlank; - /** * 代码生成业务字段表 gen_table_column * diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/com/xmzs/generator/service/GenTableServiceImpl.java b/ruoyi-modules/ruoyi-generator/src/main/java/com/xmzs/generator/service/GenTableServiceImpl.java index 3436b7f1..f2c6c64c 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/java/com/xmzs/generator/service/GenTableServiceImpl.java +++ b/ruoyi-modules/ruoyi-generator/src/main/java/com/xmzs/generator/service/GenTableServiceImpl.java @@ -11,7 +11,6 @@ import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xmzs.common.core.constant.Constants; -import com.xmzs.generator.constant.GenConstants; import com.xmzs.common.core.exception.ServiceException; import com.xmzs.common.core.utils.StreamUtils; import com.xmzs.common.core.utils.StringUtils; @@ -20,6 +19,7 @@ import com.xmzs.common.json.utils.JsonUtils; import com.xmzs.common.mybatis.core.page.PageQuery; import com.xmzs.common.mybatis.core.page.TableDataInfo; import com.xmzs.common.satoken.utils.LoginHelper; +import com.xmzs.generator.constant.GenConstants; import com.xmzs.generator.domain.GenTable; import com.xmzs.generator.domain.GenTableColumn; import com.xmzs.generator.mapper.GenTableColumnMapper; diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/com/xmzs/generator/util/GenUtils.java b/ruoyi-modules/ruoyi-generator/src/main/java/com/xmzs/generator/util/GenUtils.java index 78d8265c..46da7844 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/java/com/xmzs/generator/util/GenUtils.java +++ b/ruoyi-modules/ruoyi-generator/src/main/java/com/xmzs/generator/util/GenUtils.java @@ -1,9 +1,9 @@ package com.xmzs.generator.util; -import com.xmzs.generator.constant.GenConstants; import com.xmzs.common.core.utils.StringUtils; import com.xmzs.common.satoken.utils.LoginHelper; import com.xmzs.generator.config.GenConfig; +import com.xmzs.generator.constant.GenConstants; import com.xmzs.generator.domain.GenTable; import com.xmzs.generator.domain.GenTableColumn; import lombok.AccessLevel; diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/com/xmzs/generator/util/VelocityUtils.java b/ruoyi-modules/ruoyi-generator/src/main/java/com/xmzs/generator/util/VelocityUtils.java index 3e34edea..47ca1841 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/java/com/xmzs/generator/util/VelocityUtils.java +++ b/ruoyi-modules/ruoyi-generator/src/main/java/com/xmzs/generator/util/VelocityUtils.java @@ -3,11 +3,11 @@ package com.xmzs.generator.util; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.Dict; -import com.xmzs.generator.constant.GenConstants; import com.xmzs.common.core.utils.DateUtils; import com.xmzs.common.core.utils.StringUtils; import com.xmzs.common.json.utils.JsonUtils; import com.xmzs.common.mybatis.helper.DataBaseHelper; +import com.xmzs.generator.constant.GenConstants; import com.xmzs.generator.domain.GenTable; import com.xmzs.generator.domain.GenTableColumn; import lombok.AccessLevel; diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/ts/api.ts.vm b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/ts/api.ts.vm index 3aa4a5f6..9ef9ff4a 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/ts/api.ts.vm +++ b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/ts/api.ts.vm @@ -1,6 +1,6 @@ import request from '@/utils/request'; -import { AxiosPromise } from 'axios'; -import { ${BusinessName}VO, ${BusinessName}Form, ${BusinessName}Query } from '@/api/${moduleName}/${businessName}/types'; +import {AxiosPromise} from 'axios'; +import {${BusinessName}Form, ${BusinessName}Query, ${BusinessName}VO} from '@/api/'; /** * 查询${functionName}列表 diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vue/index.vue.vm b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vue/index.vue.vm index 84432ac8..6847f3b0 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vue/index.vue.vm +++ b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vue/index.vue.vm @@ -258,12 +258,19 @@