imageContent;
+ @NotEmpty(message = "传入的模型不能为空")
+ private String model;
+ /**
+ * 提示词
+ */
private String prompt;
- private String userId;
+ /**
+ * 系统提示词
+ */
+ private String sysPrompt;
+
+ /**
+ * 是否开启流式对话
+ */
+ private Boolean stream = Boolean.TRUE;
+
+ /**
+ * 是否开启联网搜索(0关闭 1开启)
+ */
+ private Boolean search = Boolean.FALSE;
+
+ /**
+ * 是否开启mcp
+ */
+ private Boolean isMcp = Boolean.FALSE;
/**
* 知识库id
@@ -34,13 +52,14 @@ public class ChatRequest {
private String kid;
/**
- * gpt的默认设置
+ * 用户id
*/
- private String systemMessage = "";
+ private Long userId;
- private double top_p = 1;
-
- private double temperature = 0.2;
+ /**
+ * 应用ID
+ */
+ private String appId;
/**
* 上下文的条数
@@ -52,4 +71,5 @@ public class ChatRequest {
*/
private Boolean usingContext = Boolean.TRUE;
+
}
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/sse/ConsoleEventSourceListener.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/sse/ConsoleEventSourceListener.java
index c05fa19f..e02b2655 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/sse/ConsoleEventSourceListener.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/sse/ConsoleEventSourceListener.java
@@ -28,7 +28,6 @@ public class ConsoleEventSourceListener extends EventSourceListener {
log.info("OpenAI返回数据:{}", data);
if ("[DONE]".equals(data)) {
log.info("OpenAI返回数据结束了");
- return;
}
}
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/sse/PluginListener.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/sse/PluginListener.java
index 6701a251..8b9d4a4f 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/sse/PluginListener.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/sse/PluginListener.java
@@ -8,7 +8,6 @@ import okhttp3.ResponseBody;
import okhttp3.sse.EventSource;
import okhttp3.sse.EventSourceListener;
import org.jetbrains.annotations.NotNull;
-import org.ruoyi.common.chat.constant.OpenAIConst;
import org.ruoyi.common.chat.entity.chat.ChatCompletion;
import org.ruoyi.common.chat.entity.chat.ChatCompletionResponse;
import org.ruoyi.common.chat.entity.chat.FunctionCall;
diff --git a/ruoyi-common/ruoyi-common-core/pom.xml b/ruoyi-common/ruoyi-common-core/pom.xml
index 36bd0d8e..52934671 100644
--- a/ruoyi-common/ruoyi-common-core/pom.xml
+++ b/ruoyi-common/ruoyi-common-core/pom.xml
@@ -47,25 +47,11 @@
jakarta.servlet-api
+
cn.hutool
- hutool-core
-
-
-
- cn.hutool
- hutool-http
-
-
-
- cn.hutool
- hutool-extra
-
-
-
- cn.hutool
- hutool-json
- provided
+ hutool-all
+ ${hutool.version}
@@ -73,18 +59,6 @@
lombok
-
- com.github.binarywang
- weixin-java-cp
- ${weixin-java-miniapp.version}
-
-
-
- com.github.binarywang
- weixin-java-cp
- ${weixin-java-cp.version}
-
-
org.springframework.boot
@@ -108,6 +82,11 @@
ip2region
+
+ com.github.binarywang
+ weixin-java-cp
+ ${weixin-java-cp.version}
+
com.github.binarywang
@@ -130,16 +109,19 @@
com.squareup.okhttp3
okhttp
+ ${okhttp.version}
com.squareup.okhttp3
okhttp-sse
+ ${okhttp.version}
com.squareup.okhttp3
logging-interceptor
+ ${okhttp.version}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/constant/RegexConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/constant/RegexConstants.java
new file mode 100644
index 00000000..0e9abd8a
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/constant/RegexConstants.java
@@ -0,0 +1,59 @@
+package org.ruoyi.common.core.constant;
+
+import cn.hutool.core.lang.RegexPool;
+
+/**
+ * 常用正则表达式字符串
+ *
+ * 常用正则表达式集合,更多正则见: https://any86.github.io/any-rule/
+ *
+ * @author Feng
+ */
+public interface RegexConstants extends RegexPool {
+
+ /**
+ * 字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)
+ */
+ String DICTIONARY_TYPE = "^[a-z][a-z0-9_]*$";
+
+ /**
+ * 权限标识必须符合以下格式:
+ * 1. 标准格式:xxx:yyy:zzz
+ * - 第一部分(xxx):只能包含字母、数字和下划线(_),不能使用 `*`
+ * - 第二部分(yyy):可以包含字母、数字、下划线(_)和 `*`
+ * - 第三部分(zzz):可以包含字母、数字、下划线(_)和 `*`
+ * 2. 允许空字符串(""),表示没有权限标识
+ */
+ String PERMISSION_STRING = "^$|^[a-zA-Z0-9_]+:[a-zA-Z0-9_*]+:[a-zA-Z0-9_*]+$";
+
+ /**
+ * 身份证号码(后6位)
+ */
+ String ID_CARD_LAST_6 = "^(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$";
+
+ /**
+ * QQ号码
+ */
+ String QQ_NUMBER = "^[1-9][0-9]\\d{4,9}$";
+
+ /**
+ * 邮政编码
+ */
+ String POSTAL_CODE = "^[1-9]\\d{5}$";
+
+ /**
+ * 注册账号
+ */
+ String ACCOUNT = "^[a-zA-Z][a-zA-Z0-9_]{4,15}$";
+
+ /**
+ * 密码:包含至少8个字符,包括大写字母、小写字母、数字和特殊字符
+ */
+ String PASSWORD = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,}$";
+
+ /**
+ * 通用状态(0表示正常,1表示停用)
+ */
+ String STATUS = "^[01]$";
+
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/constant/SystemConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/constant/SystemConstants.java
new file mode 100644
index 00000000..adde6d58
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/constant/SystemConstants.java
@@ -0,0 +1,80 @@
+package org.ruoyi.common.core.constant;
+
+/**
+ * 系统常量信息
+ *
+ * @author Lion Li
+ */
+public interface SystemConstants {
+
+ /**
+ * 正常状态
+ */
+ String NORMAL = "0";
+
+ /**
+ * 异常状态
+ */
+ String DISABLE = "1";
+
+ /**
+ * 是否为系统默认(是)
+ */
+ String YES = "Y";
+
+ /**
+ * 是否为系统默认(否)
+ */
+ String NO = "N";
+
+ /**
+ * 是否菜单外链(是)
+ */
+ String YES_FRAME = "0";
+
+ /**
+ * 是否菜单外链(否)
+ */
+ String NO_FRAME = "1";
+
+ /**
+ * 菜单类型(目录)
+ */
+ String TYPE_DIR = "M";
+
+ /**
+ * 菜单类型(菜单)
+ */
+ String TYPE_MENU = "C";
+
+ /**
+ * 菜单类型(按钮)
+ */
+ String TYPE_BUTTON = "F";
+
+ /**
+ * Layout组件标识
+ */
+ String LAYOUT = "Layout";
+
+ /**
+ * ParentView组件标识
+ */
+ String PARENT_VIEW = "ParentView";
+
+ /**
+ * InnerLink组件标识
+ */
+ String INNER_LINK = "InnerLink";
+
+ /**
+ * 超级管理员ID
+ */
+ Long SUPER_ADMIN_ID = 1L;
+
+ /**
+ * 根部门祖级列表
+ */
+ String ROOT_DEPT_ANCESTORS = "0";
+
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/factory/RegexPatternPoolFactory.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/factory/RegexPatternPoolFactory.java
new file mode 100644
index 00000000..c15bdbac
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/factory/RegexPatternPoolFactory.java
@@ -0,0 +1,53 @@
+package org.ruoyi.common.core.factory;
+
+import cn.hutool.core.lang.PatternPool;
+import org.ruoyi.common.core.constant.RegexConstants;
+
+
+import java.util.regex.Pattern;
+
+/**
+ * 正则表达式模式池工厂
+ *
初始化的时候将正则表达式加入缓存池当中
+ * 提高正则表达式的性能,避免重复编译相同的正则表达式
+ *
+ * @author 21001
+ */
+public class RegexPatternPoolFactory extends PatternPool {
+
+ /**
+ * 字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)
+ */
+ public static final Pattern DICTIONARY_TYPE = get(RegexConstants.DICTIONARY_TYPE);
+
+ /**
+ * 身份证号码(后6位)
+ */
+ public static final Pattern ID_CARD_LAST_6 = get(RegexConstants.ID_CARD_LAST_6);
+
+ /**
+ * QQ号码
+ */
+ public static final Pattern QQ_NUMBER = get(RegexConstants.QQ_NUMBER);
+
+ /**
+ * 邮政编码
+ */
+ public static final Pattern POSTAL_CODE = get(RegexConstants.POSTAL_CODE);
+
+ /**
+ * 注册账号
+ */
+ public static final Pattern ACCOUNT = get(RegexConstants.ACCOUNT);
+
+ /**
+ * 密码:包含至少8个字符,包括大写字母、小写字母、数字和特殊字符
+ */
+ public static final Pattern PASSWORD = get(RegexConstants.PASSWORD);
+
+ /**
+ * 通用状态(0表示正常,1表示停用)
+ */
+ public static final Pattern STATUS = get(RegexConstants.STATUS);
+
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/factory/YmlPropertySourceFactory.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/factory/YmlPropertySourceFactory.java
new file mode 100644
index 00000000..3b356d82
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/factory/YmlPropertySourceFactory.java
@@ -0,0 +1,32 @@
+package org.ruoyi.common.core.factory;
+
+
+import org.ruoyi.common.core.utils.StringUtils;
+import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
+import org.springframework.core.env.PropertiesPropertySource;
+import org.springframework.core.env.PropertySource;
+import org.springframework.core.io.support.DefaultPropertySourceFactory;
+import org.springframework.core.io.support.EncodedResource;
+
+import java.io.IOException;
+
+/**
+ * yml 配置源工厂
+ *
+ * @author Lion Li
+ */
+public class YmlPropertySourceFactory extends DefaultPropertySourceFactory {
+
+ @Override
+ public PropertySource> createPropertySource(String name, EncodedResource resource) throws IOException {
+ String sourceName = resource.getResource().getFilename();
+ if (StringUtils.isNotBlank(sourceName) && StringUtils.endsWithAny(sourceName, ".yml", ".yaml")) {
+ YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
+ factory.setResources(resource.getResource());
+ factory.afterPropertiesSet();
+ return new PropertiesPropertySource(sourceName, factory.getObject());
+ }
+ return super.createPropertySource(name, resource);
+ }
+
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/utils/ObjectUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/utils/ObjectUtils.java
new file mode 100644
index 00000000..7f7d5910
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/utils/ObjectUtils.java
@@ -0,0 +1,60 @@
+package org.ruoyi.common.core.utils;
+
+import cn.hutool.core.util.ObjectUtil;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+
+import java.util.function.Function;
+
+/**
+ * 对象工具类
+ *
+ * @author 秋辞未寒
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public class ObjectUtils extends ObjectUtil {
+
+ /**
+ * 如果对象不为空,则获取对象中的某个字段 ObjectUtils.notNullGetter(user, User::getName);
+ *
+ * @param obj 对象
+ * @param func 获取方法
+ * @return 对象字段
+ */
+ public static E notNullGetter(T obj, Function func) {
+ if (isNotNull(obj) && isNotNull(func)) {
+ return func.apply(obj);
+ }
+ return null;
+ }
+
+ /**
+ * 如果对象不为空,则获取对象中的某个字段,否则返回默认值
+ *
+ * @param obj 对象
+ * @param func 获取方法
+ * @param defaultValue 默认值
+ * @return 对象字段
+ */
+ public static E notNullGetter(T obj, Function func, E defaultValue) {
+ if (isNotNull(obj) && isNotNull(func)) {
+ return func.apply(obj);
+ }
+ return defaultValue;
+ }
+
+ /**
+ * 如果值不为空,则返回值,否则返回默认值
+ *
+ * @param obj 对象
+ * @param defaultValue 默认值
+ * @return 对象字段
+ */
+ public static T notNull(T obj, T defaultValue) {
+ if (isNotNull(obj)) {
+ return obj;
+ }
+ return defaultValue;
+ }
+
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/utils/SpringUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/utils/SpringUtils.java
index 99937c79..bd5dc544 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/utils/SpringUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/utils/SpringUtils.java
@@ -1,9 +1,10 @@
package org.ruoyi.common.core.utils;
import cn.hutool.extra.spring.SpringUtil;
-import org.springframework.aop.framework.AopContext;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
+import org.springframework.boot.autoconfigure.thread.Threading;
import org.springframework.context.ApplicationContext;
+import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
/**
@@ -48,7 +49,7 @@ public final class SpringUtils extends SpringUtil {
*/
@SuppressWarnings("unchecked")
public static T getAopProxy(T invoker) {
- return (T) AopContext.currentProxy();
+ return (T) getBean(invoker.getClass());
}
@@ -59,4 +60,8 @@ public final class SpringUtils extends SpringUtil {
return getApplicationContext();
}
+ public static boolean isVirtual() {
+ return Threading.VIRTUAL.isActive(getBean(Environment.class));
+ }
+
}
diff --git a/ruoyi-common/ruoyi-common-encrypt/pom.xml b/ruoyi-common/ruoyi-common-encrypt/pom.xml
index da85259e..28608bd5 100644
--- a/ruoyi-common/ruoyi-common-encrypt/pom.xml
+++ b/ruoyi-common/ruoyi-common-encrypt/pom.xml
@@ -23,11 +23,6 @@
ruoyi-common-core
-
- org.mybatis.spring.boot
- mybatis-spring-boot-starter
-
-
org.bouncycastle
bcprov-jdk15to18
@@ -38,6 +33,23 @@
hutool-crypto
+
+ org.springframework
+ spring-webmvc
+
+
+
+ com.baomidou
+ mybatis-plus-spring-boot3-starter
+ true
+
+
+ org.mybatis
+ mybatis-spring
+
+
+
+
diff --git a/ruoyi-common/ruoyi-common-live/pom.xml b/ruoyi-common/ruoyi-common-live/pom.xml
index 9e6fe9b8..26082fcd 100644
--- a/ruoyi-common/ruoyi-common-live/pom.xml
+++ b/ruoyi-common/ruoyi-common-live/pom.xml
@@ -1,17 +1,19 @@
+ 4.0.0
org.ruoyi
ruoyi-common
${revision}
../pom.xml
+
pom
- 4.0.0
+
ruoyi-common-live
- 弹幕监听
+ AI直播
@@ -31,7 +33,7 @@
1.13.0
2.16.0
- 5.8.24
+ 5.8.35
4.1.104.Final
1.4.12
1.18.30
diff --git a/ruoyi-common/ruoyi-common-mail/src/main/java/org/ruoyi/common/mail/config/MailConfig.java b/ruoyi-common/ruoyi-common-mail/src/main/java/org/ruoyi/common/mail/config/MailConfig.java
index acd82278..28001d16 100644
--- a/ruoyi-common/ruoyi-common-mail/src/main/java/org/ruoyi/common/mail/config/MailConfig.java
+++ b/ruoyi-common/ruoyi-common-mail/src/main/java/org/ruoyi/common/mail/config/MailConfig.java
@@ -7,8 +7,7 @@ import org.ruoyi.common.core.service.ConfigService;
import org.ruoyi.common.mail.utils.MailAccount;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Scope;
-import org.springframework.scheduling.annotation.Scheduled;
+
/**
* JavaMail 配置
@@ -22,10 +21,9 @@ import org.springframework.scheduling.annotation.Scheduled;
public class MailConfig {
private final ConfigService configService;
- private MailAccount account; // 缓存MailAccount实例
+ private MailAccount account;
@Bean
- @Scope("singleton")
public MailAccount mailAccount() {
if (account == null) {
account = new MailAccount();
@@ -34,7 +32,6 @@ public class MailConfig {
return account;
}
- @Scheduled(fixedDelay = 10000) // 每10秒检查一次
public void updateMailAccount() {
account.setHost(getKey("host"));
account.setPort(NumberUtils.toInt(getKey("port"), 465));
diff --git a/ruoyi-common/ruoyi-common-mail/src/main/java/org/ruoyi/common/mail/config/properties/MailProperties.java b/ruoyi-common/ruoyi-common-mail/src/main/java/org/ruoyi/common/mail/properties/MailProperties.java
similarity index 95%
rename from ruoyi-common/ruoyi-common-mail/src/main/java/org/ruoyi/common/mail/config/properties/MailProperties.java
rename to ruoyi-common/ruoyi-common-mail/src/main/java/org/ruoyi/common/mail/properties/MailProperties.java
index 246172bb..e2a9e1db 100644
--- a/ruoyi-common/ruoyi-common-mail/src/main/java/org/ruoyi/common/mail/config/properties/MailProperties.java
+++ b/ruoyi-common/ruoyi-common-mail/src/main/java/org/ruoyi/common/mail/properties/MailProperties.java
@@ -1,4 +1,4 @@
-package org.ruoyi.common.mail.config.properties;
+package org.ruoyi.common.mail.properties;
import lombok.Data;
diff --git a/ruoyi-common/ruoyi-common-mybatis/pom.xml b/ruoyi-common/ruoyi-common-mybatis/pom.xml
index 0f6505e0..138732c5 100644
--- a/ruoyi-common/ruoyi-common-mybatis/pom.xml
+++ b/ruoyi-common/ruoyi-common-mybatis/pom.xml
@@ -6,7 +6,6 @@
org.ruoyi
ruoyi-common
${revision}
- ../pom.xml
4.0.0
@@ -30,12 +29,17 @@
com.baomidou
- dynamic-datasource-spring-boot-starter
+ dynamic-datasource-spring-boot3-starter
com.baomidou
- mybatis-plus-boot-starter
+ mybatis-plus-spring-boot3-starter
+
+
+
+ com.baomidou
+ mybatis-plus-jsqlparser
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/baomidou/dynamic/datasource/processor/jakarta/DsJakartaHeaderProcessor.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/baomidou/dynamic/datasource/processor/jakarta/DsJakartaHeaderProcessor.java
deleted file mode 100644
index f0a50a2d..00000000
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/baomidou/dynamic/datasource/processor/jakarta/DsJakartaHeaderProcessor.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright © 2018 organization baomidou
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.baomidou.dynamic.datasource.processor.jakarta;
-
-import com.baomidou.dynamic.datasource.processor.DsProcessor;
-import jakarta.servlet.http.HttpServletRequest;
-import org.aopalliance.intercept.MethodInvocation;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-/**
- * @author TaoYu
- * @since 3.6.0
- */
-public class DsJakartaHeaderProcessor extends DsProcessor {
-
- /**
- * header prefix
- */
- private static final String HEADER_PREFIX = "#header";
-
- @Override
- public boolean matches(String key) {
- return key.startsWith(HEADER_PREFIX);
- }
-
- @Override
- public String doDetermineDatasource(MethodInvocation invocation, String key) {
- HttpServletRequest request = (HttpServletRequest) ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
- return request.getHeader(key.substring(8));
- }
-}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/baomidou/dynamic/datasource/processor/jakarta/DsJakartaSessionProcessor.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/baomidou/dynamic/datasource/processor/jakarta/DsJakartaSessionProcessor.java
deleted file mode 100644
index 0ea8a130..00000000
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/baomidou/dynamic/datasource/processor/jakarta/DsJakartaSessionProcessor.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright © 2018 organization baomidou
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.baomidou.dynamic.datasource.processor.jakarta;
-
-import com.baomidou.dynamic.datasource.processor.DsProcessor;
-import jakarta.servlet.http.HttpServletRequest;
-import org.aopalliance.intercept.MethodInvocation;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-
-/**
- * @author TaoYu
- * @since 3.6.0
- */
-public class DsJakartaSessionProcessor extends DsProcessor {
-
- /**
- * session开头
- */
- private static final String SESSION_PREFIX = "#session";
-
- @Override
- public boolean matches(String key) {
- return key.startsWith(SESSION_PREFIX);
- }
-
- @Override
- public String doDetermineDatasource(MethodInvocation invocation, String key) {
- HttpServletRequest request = (HttpServletRequest) ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
- return request.getSession().getAttribute(key.substring(9)).toString();
- }
-}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/annotation/DataColumn.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/annotation/DataColumn.java
new file mode 100644
index 00000000..706b1e8f
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/annotation/DataColumn.java
@@ -0,0 +1,40 @@
+package org.ruoyi.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * 数据权限注解,用于标记数据权限的占位符关键字和替换值
+ *
+ * 一个注解只能对应一个模板
+ *
+ *
+ * @author Lion Li
+ * @version 3.5.0
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface DataColumn {
+
+ /**
+ * 数据权限模板的占位符关键字,默认为 "deptName"
+ *
+ * @return 占位符关键字数组
+ */
+ String[] key() default "deptName";
+
+ /**
+ * 数据权限模板的占位符替换值,默认为 "dept_id"
+ *
+ * @return 占位符替换值数组
+ */
+ String[] value() default "dept_id";
+
+ /**
+ * 权限标识符 用于通过菜单权限标识符来获取数据权限
+ * 拥有此标识符的角色 将不会拼接此角色的数据过滤sql
+ *
+ * @return 权限标识符
+ */
+ String permission() default "";
+}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/annotation/DataPermission.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/annotation/DataPermission.java
new file mode 100644
index 00000000..24170faa
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/annotation/DataPermission.java
@@ -0,0 +1,30 @@
+package org.ruoyi.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * 数据权限组注解,用于标记数据权限配置数组
+ *
+ * @author Lion Li
+ * @version 3.5.0
+ */
+@Target({ElementType.METHOD, ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface DataPermission {
+
+ /**
+ * 数据权限配置数组,用于指定数据权限的占位符关键字和替换值
+ *
+ * @return 数据权限配置数组
+ */
+ DataColumn[] value();
+
+ /**
+ * 权限拼接标识符(用于指定连接语句的sql符号)
+ * 如不填 默认 select 用 OR 其他语句用 AND
+ * 内容 OR 或者 AND
+ */
+ String joinStr() default "";
+
+}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/aspect/DataPermissionAspect.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/aspect/DataPermissionAspect.java
new file mode 100644
index 00000000..f9026e91
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/aspect/DataPermissionAspect.java
@@ -0,0 +1,50 @@
+package org.ruoyi.aspect;
+
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.AfterReturning;
+import org.aspectj.lang.annotation.AfterThrowing;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.ruoyi.annotation.DataPermission;
+import org.ruoyi.helper.DataPermissionHelper;
+
+/**
+ * 数据权限处理
+ *
+ * @author Lion Li
+ */
+@Slf4j
+@Aspect
+public class DataPermissionAspect {
+
+ /**
+ * 处理请求前执行
+ */
+ @Before(value = "@annotation(dataPermission)")
+ public void doBefore(JoinPoint joinPoint, DataPermission dataPermission) {
+ DataPermissionHelper.setPermission(dataPermission);
+ }
+
+ /**
+ * 处理完请求后执行
+ *
+ * @param joinPoint 切点
+ */
+ @AfterReturning(pointcut = "@annotation(dataPermission)")
+ public void doAfterReturning(JoinPoint joinPoint, DataPermission dataPermission) {
+ DataPermissionHelper.removePermission();
+ }
+
+ /**
+ * 拦截异常操作
+ *
+ * @param joinPoint 切点
+ * @param e 异常
+ */
+ @AfterThrowing(value = "@annotation(dataPermission)", throwing = "e")
+ public void doAfterThrowing(JoinPoint joinPoint, DataPermission dataPermission, Exception e) {
+ DataPermissionHelper.removePermission();
+ }
+
+}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/annotation/DataColumn.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/annotation/DataColumn.java
deleted file mode 100644
index a3419da5..00000000
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/annotation/DataColumn.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.ruoyi.common.mybatis.annotation;
-
-import java.lang.annotation.*;
-
-/**
- * 数据权限
- *
- * 一个注解只能对应一个模板
- *
- * @author Lion Li
- * @version 3.5.0
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-public @interface DataColumn {
-
- /**
- * 占位符关键字
- */
- String[] key() default "deptName";
-
- /**
- * 占位符替换值
- */
- String[] value() default "dept_id";
-
-}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/annotation/DataPermission.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/annotation/DataPermission.java
deleted file mode 100644
index 037eb81a..00000000
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/annotation/DataPermission.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.ruoyi.common.mybatis.annotation;
-
-import java.lang.annotation.*;
-
-/**
- * 数据权限组
- *
- * @author Lion Li
- * @version 3.5.0
- */
-@Target({ElementType.METHOD, ElementType.TYPE})
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-public @interface DataPermission {
-
- DataColumn[] value();
-
-}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/core/mapper/BaseMapperPlus.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/core/mapper/BaseMapperPlus.java
deleted file mode 100644
index b14c14ef..00000000
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/core/mapper/BaseMapperPlus.java
+++ /dev/null
@@ -1,198 +0,0 @@
-package org.ruoyi.common.mybatis.core.mapper;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.ReflectionKit;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.toolkit.Db;
-import org.apache.ibatis.logging.Log;
-import org.apache.ibatis.logging.LogFactory;
-import org.ruoyi.common.core.utils.MapstructUtils;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-/**
- * 自定义 Mapper 接口, 实现 自定义扩展
- *
- * @param table 泛型
- * @param vo 泛型
- * @author Lion Li
- * @since 2021-05-13
- */
-@SuppressWarnings("unchecked")
-public interface BaseMapperPlus extends BaseMapper {
-
- Log log = LogFactory.getLog(BaseMapperPlus.class);
-
- default Class currentVoClass() {
- return (Class) ReflectionKit.getSuperClassGenericType(this.getClass(), BaseMapperPlus.class, 1);
- }
-
- default Class currentModelClass() {
- return (Class) ReflectionKit.getSuperClassGenericType(this.getClass(), BaseMapperPlus.class, 0);
- }
-
- default List selectList() {
- return this.selectList(new QueryWrapper<>());
- }
-
- /**
- * 批量插入
- */
- default boolean insertBatch(Collection entityList) {
- return Db.saveBatch(entityList);
- }
-
- /**
- * 批量更新
- */
- default boolean updateBatchById(Collection entityList) {
- return Db.updateBatchById(entityList);
- }
-
- /**
- * 批量插入或更新
- */
- default boolean insertOrUpdateBatch(Collection entityList) {
- return Db.saveOrUpdateBatch(entityList);
- }
-
- /**
- * 批量插入(包含限制条数)
- */
- default boolean insertBatch(Collection entityList, int batchSize) {
- return Db.saveBatch(entityList, batchSize);
- }
-
- /**
- * 批量更新(包含限制条数)
- */
- default boolean updateBatchById(Collection entityList, int batchSize) {
- return Db.updateBatchById(entityList, batchSize);
- }
-
- /**
- * 批量插入或更新(包含限制条数)
- */
- default boolean insertOrUpdateBatch(Collection entityList, int batchSize) {
- return Db.saveOrUpdateBatch(entityList, batchSize);
- }
-
- /**
- * 插入或更新(包含限制条数)
- */
- default boolean insertOrUpdate(T entity) {
- return Db.saveOrUpdate(entity);
- }
-
- default V selectVoById(Serializable id) {
- return selectVoById(id, this.currentVoClass());
- }
-
- /**
- * 根据 ID 查询
- */
- default C selectVoById(Serializable id, Class voClass) {
- T obj = this.selectById(id);
- if (ObjectUtil.isNull(obj)) {
- return null;
- }
- return MapstructUtils.convert(obj, voClass);
- }
-
- default List selectVoBatchIds(Collection extends Serializable> idList) {
- return selectVoBatchIds(idList, this.currentVoClass());
- }
-
- /**
- * 查询(根据ID 批量查询)
- */
- default List selectVoBatchIds(Collection extends Serializable> idList, Class voClass) {
- List list = this.selectBatchIds(idList);
- if (CollUtil.isEmpty(list)) {
- return CollUtil.newArrayList();
- }
- return MapstructUtils.convert(list, voClass);
- }
-
- default List selectVoByMap(Map map) {
- return selectVoByMap(map, this.currentVoClass());
- }
-
- /**
- * 查询(根据 columnMap 条件)
- */
- default List selectVoByMap(Map map, Class voClass) {
- List list = this.selectByMap(map);
- if (CollUtil.isEmpty(list)) {
- return CollUtil.newArrayList();
- }
- return MapstructUtils.convert(list, voClass);
- }
-
- default V selectVoOne(Wrapper wrapper) {
- return selectVoOne(wrapper, this.currentVoClass());
- }
-
- /**
- * 根据 entity 条件,查询一条记录
- */
- default C selectVoOne(Wrapper wrapper, Class voClass) {
- T obj = this.selectOne(wrapper);
- if (ObjectUtil.isNull(obj)) {
- return null;
- }
- return MapstructUtils.convert(obj, voClass);
- }
-
- default List selectVoList() {
- return selectVoList(new QueryWrapper<>(), this.currentVoClass());
- }
-
- default List selectVoList(Wrapper wrapper) {
- return selectVoList(wrapper, this.currentVoClass());
- }
-
- /**
- * 根据 entity 条件,查询全部记录
- */
- default List selectVoList(Wrapper wrapper, Class voClass) {
- List list = this.selectList(wrapper);
- if (CollUtil.isEmpty(list)) {
- return CollUtil.newArrayList();
- }
- return MapstructUtils.convert(list, voClass);
- }
-
- default > P selectVoPage(IPage page, Wrapper wrapper) {
- return selectVoPage(page, wrapper, this.currentVoClass());
- }
-
- /**
- * 分页查询VO
- */
- default > P selectVoPage(IPage page, Wrapper wrapper, Class voClass) {
- IPage pageData = this.selectPage(page, wrapper);
- IPage voPage = new Page<>(pageData.getCurrent(), pageData.getSize(), pageData.getTotal());
- if (CollUtil.isEmpty(pageData.getRecords())) {
- return (P) voPage;
- }
- voPage.setRecords(MapstructUtils.convert(pageData.getRecords(), voClass));
- return (P) voPage;
- }
-
- default List selectObjs(Wrapper wrapper, Function super Object, C> mapper) {
- return this.selectObjs(wrapper).stream().filter(Objects::nonNull).map(mapper).collect(Collectors.toList());
- }
-
-}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/enums/DataScopeType.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/enums/DataScopeType.java
deleted file mode 100644
index 65362ad0..00000000
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/enums/DataScopeType.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package org.ruoyi.common.mybatis.enums;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.common.mybatis.helper.DataPermissionHelper;
-
-/**
- * 数据权限类型
- *
- * 语法支持 spel 模板表达式
- *
- * 内置数据 user 当前用户 内容参考 LoginUser
- * 如需扩展数据 可使用 {@link DataPermissionHelper} 操作
- * 内置服务 sdss 系统数据权限服务 内容参考 SysDataScopeService
- * 如需扩展更多自定义服务 可以参考 sdss 自行编写
- *
- * @author Lion Li
- * @version 3.5.0
- */
-@Getter
-@AllArgsConstructor
-public enum DataScopeType {
-
- /**
- * 全部数据权限
- */
- ALL("1", "", ""),
-
- /**
- * 自定数据权限
- */
- CUSTOM("2", " #{#deptName} IN ( #{@sdss.getRoleCustom( #user.roleId )} ) ", ""),
-
- /**
- * 部门数据权限
- */
- DEPT("3", " #{#deptName} = #{#user.deptId} ", ""),
-
- /**
- * 部门及以下数据权限
- */
- DEPT_AND_CHILD("4", " #{#deptName} IN ( #{@sdss.getDeptAndChild( #user.deptId )} )", ""),
-
- /**
- * 仅本人数据权限
- */
- SELF("5", " #{#userName} = #{#user.userId} ", " 1 = 0 ");
-
- private final String code;
-
- /**
- * 语法 采用 spel 模板表达式
- */
- private final String sqlTemplate;
-
- /**
- * 不满足 sqlTemplate 则填充
- */
- private final String elseSql;
-
- public static DataScopeType findCode(String code) {
- if (StringUtils.isBlank(code)) {
- return null;
- }
- for (DataScopeType type : values()) {
- if (type.getCode().equals(code)) {
- return type;
- }
- }
- return null;
- }
-}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/handler/InjectionMetaObjectHandler.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/handler/InjectionMetaObjectHandler.java
deleted file mode 100644
index dfa24f0b..00000000
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/handler/InjectionMetaObjectHandler.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package org.ruoyi.common.mybatis.handler;
-
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.http.HttpStatus;
-import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.ibatis.reflection.MetaObject;
-import org.ruoyi.common.core.domain.model.LoginUser;
-import org.ruoyi.common.core.exception.ServiceException;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
-import org.ruoyi.common.satoken.utils.LoginHelper;
-
-import java.util.Date;
-
-/**
- * MP注入处理器
- *
- * @author Lion Li
- * @date 2021/4/25
- */
-@Slf4j
-public class InjectionMetaObjectHandler implements MetaObjectHandler {
-
- @Override
- public void insertFill(MetaObject metaObject) {
- try {
- if (ObjectUtil.isNotNull(metaObject) && metaObject.getOriginalObject() instanceof BaseEntity baseEntity) {
- Date current = ObjectUtil.isNotNull(baseEntity.getCreateTime())
- ? baseEntity.getCreateTime() : new Date();
- baseEntity.setCreateTime(current);
- baseEntity.setUpdateTime(current);
- LoginUser loginUser = getLoginUser();
- if (ObjectUtil.isNotNull(loginUser)) {
- Long userId = ObjectUtil.isNotNull(baseEntity.getCreateBy())
- ? baseEntity.getCreateBy() : loginUser.getUserId();
- // 当前已登录 且 创建人为空 则填充
- baseEntity.setCreateBy(userId);
- // 当前已登录 且 更新人为空 则填充
- baseEntity.setUpdateBy(userId);
- baseEntity.setCreateDept(ObjectUtil.isNotNull(baseEntity.getCreateDept())
- ? baseEntity.getCreateDept() : loginUser.getDeptId());
- }
- }
- } catch (Exception e) {
- throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);
- }
- }
-
- @Override
- public void updateFill(MetaObject metaObject) {
- try {
- if (ObjectUtil.isNotNull(metaObject) && metaObject.getOriginalObject() instanceof BaseEntity baseEntity) {
- Date current = new Date();
- // 更新时间填充(不管为不为空)
- baseEntity.setUpdateTime(current);
- LoginUser loginUser = getLoginUser();
- // 当前已登录 更新人填充(不管为不为空)
- if (ObjectUtil.isNotNull(loginUser)) {
- baseEntity.setUpdateBy(loginUser.getUserId());
- }
- }
- } catch (Exception e) {
- throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);
- }
- }
-
- /**
- * 获取登录用户名
- */
- private LoginUser getLoginUser() {
- LoginUser loginUser;
- try {
- loginUser = LoginHelper.getLoginUser();
- } catch (Exception e) {
- log.warn("自动注入警告 => 用户未登录");
- return null;
- }
- return loginUser;
- }
-
-}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/handler/PlusDataPermissionHandler.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/handler/PlusDataPermissionHandler.java
deleted file mode 100644
index f928f42a..00000000
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/handler/PlusDataPermissionHandler.java
+++ /dev/null
@@ -1,198 +0,0 @@
-package org.ruoyi.common.mybatis.handler;
-
-import cn.hutool.core.annotation.AnnotationUtil;
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.collection.ConcurrentHashSet;
-import cn.hutool.core.util.ArrayUtil;
-import cn.hutool.core.util.ClassUtil;
-import cn.hutool.core.util.ObjectUtil;
-import lombok.extern.slf4j.Slf4j;
-import net.sf.jsqlparser.JSQLParserException;
-import net.sf.jsqlparser.expression.Expression;
-import net.sf.jsqlparser.expression.Parenthesis;
-import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
-import net.sf.jsqlparser.parser.CCJSqlParserUtil;
-import org.ruoyi.common.core.domain.dto.RoleDTO;
-import org.ruoyi.common.core.domain.model.LoginUser;
-import org.ruoyi.common.core.exception.ServiceException;
-import org.ruoyi.common.core.utils.SpringUtils;
-import org.ruoyi.common.core.utils.StreamUtils;
-import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.common.mybatis.annotation.DataColumn;
-import org.ruoyi.common.mybatis.annotation.DataPermission;
-import org.ruoyi.common.mybatis.enums.DataScopeType;
-import org.ruoyi.common.mybatis.helper.DataPermissionHelper;
-import org.ruoyi.common.satoken.utils.LoginHelper;
-import org.springframework.context.expression.BeanFactoryResolver;
-import org.springframework.expression.BeanResolver;
-import org.springframework.expression.ExpressionParser;
-import org.springframework.expression.ParserContext;
-import org.springframework.expression.common.TemplateParserContext;
-import org.springframework.expression.spel.standard.SpelExpressionParser;
-import org.springframework.expression.spel.support.StandardEvaluationContext;
-
-import java.lang.reflect.Method;
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.function.Function;
-
-/**
- * 数据权限过滤
- *
- * @author Lion Li
- * @version 3.5.0
- */
-@Slf4j
-public class PlusDataPermissionHandler {
-
- /**
- * 方法或类(名称) 与 注解的映射关系缓存
- */
- private final Map dataPermissionCacheMap = new ConcurrentHashMap<>();
-
- /**
- * 无效注解方法缓存用于快速返回
- */
- private final Set invalidCacheSet = new ConcurrentHashSet<>();
-
- /**
- * spel 解析器
- */
- private final ExpressionParser parser = new SpelExpressionParser();
- private final ParserContext parserContext = new TemplateParserContext();
- /**
- * bean解析器 用于处理 spel 表达式中对 bean 的调用
- */
- private final BeanResolver beanResolver = new BeanFactoryResolver(SpringUtils.getBeanFactory());
-
-
- public Expression getSqlSegment(Expression where, String mappedStatementId, boolean isSelect) {
- DataColumn[] dataColumns = findAnnotation(mappedStatementId);
- if (ArrayUtil.isEmpty(dataColumns)) {
- invalidCacheSet.add(mappedStatementId);
- return where;
- }
- LoginUser currentUser = DataPermissionHelper.getVariable("user");
- if (ObjectUtil.isNull(currentUser)) {
- currentUser = LoginHelper.getLoginUser();
- DataPermissionHelper.setVariable("user", currentUser);
- }
- // 如果是超级管理员或租户管理员,则不过滤数据
- if (LoginHelper.isSuperAdmin() || LoginHelper.isTenantAdmin()) {
- return where;
- }
- String dataFilterSql = buildDataFilter(dataColumns, isSelect);
- if (StringUtils.isBlank(dataFilterSql)) {
- return where;
- }
- try {
- Expression expression = CCJSqlParserUtil.parseExpression(dataFilterSql);
- // 数据权限使用单独的括号 防止与其他条件冲突
- Parenthesis parenthesis = new Parenthesis(expression);
- if (ObjectUtil.isNotNull(where)) {
- return new AndExpression(where, parenthesis);
- } else {
- return parenthesis;
- }
- } catch (JSQLParserException e) {
- throw new ServiceException("数据权限解析异常 => " + e.getMessage());
- }
- }
-
- /**
- * 构造数据过滤sql
- */
- private String buildDataFilter(DataColumn[] dataColumns, boolean isSelect) {
- // 更新或删除需满足所有条件
- String joinStr = isSelect ? " OR " : " AND ";
- LoginUser user = DataPermissionHelper.getVariable("user");
- StandardEvaluationContext context = new StandardEvaluationContext();
- context.setBeanResolver(beanResolver);
- DataPermissionHelper.getContext().forEach(context::setVariable);
- Set conditions = new HashSet<>();
- for (RoleDTO role : user.getRoles()) {
- user.setRoleId(role.getRoleId());
- // 获取角色权限泛型
- DataScopeType type = DataScopeType.findCode(role.getDataScope());
- if (ObjectUtil.isNull(type)) {
- throw new ServiceException("角色数据范围异常 => " + role.getDataScope());
- }
- // 全部数据权限直接返回
- if (type == DataScopeType.ALL) {
- return "";
- }
- boolean isSuccess = false;
- for (DataColumn dataColumn : dataColumns) {
- if (dataColumn.key().length != dataColumn.value().length) {
- throw new ServiceException("角色数据范围异常 => key与value长度不匹配");
- }
- // 不包含 key 变量 则不处理
- if (!StringUtils.containsAny(type.getSqlTemplate(),
- Arrays.stream(dataColumn.key()).map(key -> "#" + key).toArray(String[]::new)
- )) {
- continue;
- }
- // 设置注解变量 key 为表达式变量 value 为变量值
- for (int i = 0; i < dataColumn.key().length; i++) {
- context.setVariable(dataColumn.key()[i], dataColumn.value()[i]);
- }
-
- // 解析sql模板并填充
- String sql = parser.parseExpression(type.getSqlTemplate(), parserContext).getValue(context, String.class);
- conditions.add(joinStr + sql);
- isSuccess = true;
- }
- // 未处理成功则填充兜底方案
- if (!isSuccess && StringUtils.isNotBlank(type.getElseSql())) {
- conditions.add(joinStr + type.getElseSql());
- }
- }
-
- if (CollUtil.isNotEmpty(conditions)) {
- String sql = StreamUtils.join(conditions, Function.identity(), "");
- return sql.substring(joinStr.length());
- }
- return "";
- }
-
- private DataColumn[] findAnnotation(String mappedStatementId) {
- StringBuilder sb = new StringBuilder(mappedStatementId);
- int index = sb.lastIndexOf(".");
- String clazzName = sb.substring(0, index);
- String methodName = sb.substring(index + 1, sb.length());
- Class> clazz = ClassUtil.loadClass(clazzName);
- List methods = Arrays.stream(ClassUtil.getDeclaredMethods(clazz))
- .filter(method -> method.getName().equals(methodName)).toList();
- DataPermission dataPermission;
- // 获取方法注解
- for (Method method : methods) {
- dataPermission = dataPermissionCacheMap.get(mappedStatementId);
- if (ObjectUtil.isNotNull(dataPermission)) {
- return dataPermission.value();
- }
- if (AnnotationUtil.hasAnnotation(method, DataPermission.class)) {
- dataPermission = AnnotationUtil.getAnnotation(method, DataPermission.class);
- dataPermissionCacheMap.put(mappedStatementId, dataPermission);
- return dataPermission.value();
- }
- }
- dataPermission = dataPermissionCacheMap.get(clazz.getName());
- if (ObjectUtil.isNotNull(dataPermission)) {
- return dataPermission.value();
- }
- // 获取类注解
- if (AnnotationUtil.hasAnnotation(clazz, DataPermission.class)) {
- dataPermission = AnnotationUtil.getAnnotation(clazz, DataPermission.class);
- dataPermissionCacheMap.put(clazz.getName(), dataPermission);
- return dataPermission.value();
- }
- return null;
- }
-
- /**
- * 是否为无效方法 无数据权限
- */
- public boolean isInvalid(String mappedStatementId) {
- return invalidCacheSet.contains(mappedStatementId);
- }
-}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/helper/DataPermissionHelper.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/helper/DataPermissionHelper.java
deleted file mode 100644
index 8e3de7a3..00000000
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/helper/DataPermissionHelper.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package org.ruoyi.common.mybatis.helper;
-
-import cn.dev33.satoken.context.SaHolder;
-import cn.dev33.satoken.context.model.SaStorage;
-import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.core.plugins.IgnoreStrategy;
-import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper;
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.function.Supplier;
-
-/**
- * 数据权限助手
- *
- * @author Lion Li
- * @version 3.5.0
- */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-@SuppressWarnings("unchecked cast")
-public class DataPermissionHelper {
-
- private static final String DATA_PERMISSION_KEY = "data:permission";
-
- public static T getVariable(String key) {
- Map context = getContext();
- return (T) context.get(key);
- }
-
-
- public static void setVariable(String key, Object value) {
- Map context = getContext();
- context.put(key, value);
- }
-
- public static Map getContext() {
- SaStorage saStorage = SaHolder.getStorage();
- Object attribute = saStorage.get(DATA_PERMISSION_KEY);
- if (ObjectUtil.isNull(attribute)) {
- saStorage.set(DATA_PERMISSION_KEY, new HashMap<>());
- attribute = saStorage.get(DATA_PERMISSION_KEY);
- }
- if (attribute instanceof Map map) {
- return map;
- }
- throw new NullPointerException("data permission context type exception");
- }
-
- /**
- * 开启忽略数据权限(开启后需手动调用 {@link #disableIgnore()} 关闭)
- */
- public static void enableIgnore() {
- InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().dataPermission(true).build());
- }
-
- /**
- * 关闭忽略数据权限
- */
- public static void disableIgnore() {
- InterceptorIgnoreHelper.clearIgnoreStrategy();
- }
-
- /**
- * 在忽略数据权限中执行
- *
- * @param handle 处理执行方法
- */
- public static void ignore(Runnable handle) {
- enableIgnore();
- try {
- handle.run();
- } finally {
- disableIgnore();
- }
- }
-
- /**
- * 在忽略数据权限中执行
- *
- * @param handle 处理执行方法
- */
- public static T ignore(Supplier handle) {
- enableIgnore();
- try {
- return handle.get();
- } finally {
- disableIgnore();
- }
- }
-
-}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/interceptor/PlusDataPermissionInterceptor.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/interceptor/PlusDataPermissionInterceptor.java
deleted file mode 100644
index 98895d0a..00000000
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/interceptor/PlusDataPermissionInterceptor.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package org.ruoyi.common.mybatis.interceptor;
-
-import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper;
-import com.baomidou.mybatisplus.core.toolkit.PluginUtils;
-import com.baomidou.mybatisplus.extension.parser.JsqlParserSupport;
-import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
-import net.sf.jsqlparser.expression.Expression;
-import net.sf.jsqlparser.statement.delete.Delete;
-import net.sf.jsqlparser.statement.select.PlainSelect;
-import net.sf.jsqlparser.statement.select.Select;
-import net.sf.jsqlparser.statement.select.SelectBody;
-import net.sf.jsqlparser.statement.select.SetOperationList;
-import net.sf.jsqlparser.statement.update.Update;
-import org.apache.ibatis.executor.Executor;
-import org.apache.ibatis.executor.statement.StatementHandler;
-import org.apache.ibatis.mapping.BoundSql;
-import org.apache.ibatis.mapping.MappedStatement;
-import org.apache.ibatis.mapping.SqlCommandType;
-import org.apache.ibatis.session.ResultHandler;
-import org.apache.ibatis.session.RowBounds;
-import org.ruoyi.common.mybatis.handler.PlusDataPermissionHandler;
-
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.util.List;
-
-/**
- * 数据权限拦截器
- *
- * @author Lion Li
- * @version 3.5.0
- */
-public class PlusDataPermissionInterceptor extends JsqlParserSupport implements InnerInterceptor {
-
- private final PlusDataPermissionHandler dataPermissionHandler = new PlusDataPermissionHandler();
-
- @Override
- public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException {
- // 检查忽略注解
- if (InterceptorIgnoreHelper.willIgnoreDataPermission(ms.getId())) {
- return;
- }
- // 检查是否无效 无数据权限注解
- if (dataPermissionHandler.isInvalid(ms.getId())) {
- return;
- }
- // 解析 sql 分配对应方法
- PluginUtils.MPBoundSql mpBs = PluginUtils.mpBoundSql(boundSql);
- mpBs.sql(parserSingle(mpBs.sql(), ms.getId()));
- }
-
- @Override
- public void beforePrepare(StatementHandler sh, Connection connection, Integer transactionTimeout) {
- PluginUtils.MPStatementHandler mpSh = PluginUtils.mpStatementHandler(sh);
- MappedStatement ms = mpSh.mappedStatement();
- SqlCommandType sct = ms.getSqlCommandType();
- if (sct == SqlCommandType.UPDATE || sct == SqlCommandType.DELETE) {
- if (InterceptorIgnoreHelper.willIgnoreDataPermission(ms.getId())) {
- return;
- }
- PluginUtils.MPBoundSql mpBs = mpSh.mPBoundSql();
- mpBs.sql(parserMulti(mpBs.sql(), ms.getId()));
- }
- }
-
- @Override
- protected void processSelect(Select select, int index, String sql, Object obj) {
- SelectBody selectBody = select.getSelectBody();
- if (selectBody instanceof PlainSelect plainSelect) {
- this.setWhere(plainSelect, (String) obj);
- } else if (selectBody instanceof SetOperationList setOperationList) {
- List selectBodyList = setOperationList.getSelects();
- selectBodyList.forEach(s -> this.setWhere((PlainSelect) s, (String) obj));
- }
- }
-
- @Override
- protected void processUpdate(Update update, int index, String sql, Object obj) {
- Expression sqlSegment = dataPermissionHandler.getSqlSegment(update.getWhere(), (String) obj, false);
- if (null != sqlSegment) {
- update.setWhere(sqlSegment);
- }
- }
-
- @Override
- protected void processDelete(Delete delete, int index, String sql, Object obj) {
- Expression sqlSegment = dataPermissionHandler.getSqlSegment(delete.getWhere(), (String) obj, false);
- if (null != sqlSegment) {
- delete.setWhere(sqlSegment);
- }
- }
-
- /**
- * 设置 where 条件
- *
- * @param plainSelect 查询对象
- * @param mappedStatementId 执行方法id
- */
- protected void setWhere(PlainSelect plainSelect, String mappedStatementId) {
- Expression sqlSegment = dataPermissionHandler.getSqlSegment(plainSelect.getWhere(), mappedStatementId, true);
- if (null != sqlSegment) {
- plainSelect.setWhere(sqlSegment);
- }
- }
-
-}
-
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/jakarta/DsJakartaHeaderProcessor.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/jakarta/DsJakartaHeaderProcessor.java
deleted file mode 100644
index fd67e07c..00000000
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/jakarta/DsJakartaHeaderProcessor.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright © 2018 organization baomidou
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.ruoyi.common.mybatis.jakarta;
-
-import com.baomidou.dynamic.datasource.processor.DsProcessor;
-import jakarta.servlet.http.HttpServletRequest;
-import org.aopalliance.intercept.MethodInvocation;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-/**
- * @author TaoYu
- * @since 3.6.0
- */
-public class DsJakartaHeaderProcessor extends DsProcessor {
-
- /**
- * header prefix
- */
- private static final String HEADER_PREFIX = "#header";
-
- @Override
- public boolean matches(String key) {
- return key.startsWith(HEADER_PREFIX);
- }
-
- @Override
- public String doDetermineDatasource(MethodInvocation invocation, String key) {
- HttpServletRequest request = (HttpServletRequest) ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
- return request.getHeader(key.substring(8));
- }
-}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/jakarta/DsJakartaSessionProcessor.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/jakarta/DsJakartaSessionProcessor.java
deleted file mode 100644
index f055b463..00000000
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/jakarta/DsJakartaSessionProcessor.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright © 2018 organization baomidou
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.ruoyi.common.mybatis.jakarta;
-
-import com.baomidou.dynamic.datasource.processor.DsProcessor;
-import jakarta.servlet.http.HttpServletRequest;
-import org.aopalliance.intercept.MethodInvocation;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-
-/**
- * @author TaoYu
- * @since 3.6.0
- */
-public class DsJakartaSessionProcessor extends DsProcessor {
-
- /**
- * session开头
- */
- private static final String SESSION_PREFIX = "#session";
-
- @Override
- public boolean matches(String key) {
- return key.startsWith(SESSION_PREFIX);
- }
-
- @Override
- public String doDetermineDatasource(MethodInvocation invocation, String key) {
- HttpServletRequest request = (HttpServletRequest) ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
- return request.getSession().getAttribute(key.substring(9)).toString();
- }
-}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/config/MybatisPlusConfig.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/config/MybatisPlusConfig.java
similarity index 66%
rename from ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/config/MybatisPlusConfig.java
rename to ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/config/MybatisPlusConfig.java
index 7f28b1f6..f5942b2e 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/config/MybatisPlusConfig.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/config/MybatisPlusConfig.java
@@ -1,17 +1,25 @@
-package org.ruoyi.common.mybatis.config;
+package org.ruoyi.config;
import cn.hutool.core.net.NetUtil;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import com.baomidou.mybatisplus.core.handlers.PostInitTableInfoHandler;
import com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator;
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
-import org.ruoyi.common.mybatis.handler.InjectionMetaObjectHandler;
-import org.ruoyi.common.mybatis.interceptor.PlusDataPermissionInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
+import org.ruoyi.aspect.DataPermissionAspect;
+import org.ruoyi.common.core.factory.YmlPropertySourceFactory;
+import org.ruoyi.common.core.utils.SpringUtils;
+import org.ruoyi.handler.InjectionMetaObjectHandler;
+import org.ruoyi.handler.MybatisExceptionHandler;
+import org.ruoyi.handler.PlusPostInitTableInfoHandler;
+import org.ruoyi.interceptor.PlusDataPermissionInterceptor;
import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.boot.autoconfigure.AutoConfiguration;
+import org.springframework.beans.BeansException;
import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.PropertySource;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
@@ -20,13 +28,19 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
* @author Lion Li
*/
@EnableTransactionManagement(proxyTargetClass = true)
-@AutoConfiguration
@MapperScan("${mybatis-plus.mapperPackage}")
+@PropertySource(value = "classpath:common-mybatis.yml", factory = YmlPropertySourceFactory.class)
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+ // 多租户插件 必须放到第一位
+ try {
+ TenantLineInnerInterceptor tenant = SpringUtils.getBean(TenantLineInnerInterceptor.class);
+ interceptor.addInnerInterceptor(tenant);
+ } catch (BeansException ignore) {
+ }
// 数据权限处理
interceptor.addInnerInterceptor(dataPermissionInterceptor());
// 分页插件
@@ -40,7 +54,15 @@ public class MybatisPlusConfig {
* 数据权限拦截器
*/
public PlusDataPermissionInterceptor dataPermissionInterceptor() {
- return new PlusDataPermissionInterceptor();
+ return new PlusDataPermissionInterceptor(SpringUtils.getProperty("mybatis-plus.mapperPackage"));
+ }
+
+ /**
+ * 数据权限切面处理器
+ */
+ @Bean
+ public DataPermissionAspect dataPermissionAspect() {
+ return new DataPermissionAspect();
}
/**
@@ -48,8 +70,6 @@ public class MybatisPlusConfig {
*/
public PaginationInnerInterceptor paginationInnerInterceptor() {
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
- // 设置最大单页限制数量,默认 500 条,-1 不受限制
- paginationInnerInterceptor.setMaxLimit(-1L);
// 分页合理化
paginationInnerInterceptor.setOverflow(true);
return paginationInnerInterceptor;
@@ -79,6 +99,22 @@ public class MybatisPlusConfig {
return new DefaultIdentifierGenerator(NetUtil.getLocalhost());
}
+ /**
+ * 异常处理器
+ */
+ @Bean
+ public MybatisExceptionHandler mybatisExceptionHandler() {
+ return new MybatisExceptionHandler();
+ }
+
+ /**
+ * 初始化表对象处理器
+ */
+ @Bean
+ public PostInitTableInfoHandler postInitTableInfoHandler() {
+ return new PlusPostInitTableInfoHandler();
+ }
+
/**
* PaginationInnerInterceptor 分页插件,自动识别数据库类型
* https://baomidou.com/pages/97710a/
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/core/domain/BaseEntity.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/core/domain/BaseEntity.java
similarity index 96%
rename from ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/core/domain/BaseEntity.java
rename to ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/core/domain/BaseEntity.java
index bfc43c54..5e362d60 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/core/domain/BaseEntity.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/core/domain/BaseEntity.java
@@ -1,4 +1,4 @@
-package org.ruoyi.common.mybatis.core.domain;
+package org.ruoyi.core.domain;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
@@ -17,7 +17,6 @@ import java.util.Map;
*
* @author Lion Li
*/
-
@Data
public class BaseEntity implements Serializable {
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/core/mapper/BaseMapperPlus.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/core/mapper/BaseMapperPlus.java
new file mode 100644
index 00000000..097c7210
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/core/mapper/BaseMapperPlus.java
@@ -0,0 +1,335 @@
+package org.ruoyi.core.mapper;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.reflect.GenericTypeUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.toolkit.Db;
+import org.apache.ibatis.logging.Log;
+import org.apache.ibatis.logging.LogFactory;
+import org.ruoyi.common.core.utils.MapstructUtils;
+import org.ruoyi.common.core.utils.StreamUtils;
+
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+
+/**
+ * 自定义 Mapper 接口, 实现 自定义扩展
+ *
+ * @param table 泛型
+ * @param vo 泛型
+ * @author Lion Li
+ * @since 2021-05-13
+ */
+@SuppressWarnings("unchecked")
+public interface BaseMapperPlus extends BaseMapper {
+
+ Log log = LogFactory.getLog(BaseMapperPlus.class);
+
+ /**
+ * 获取当前实例对象关联的泛型类型 V 的 Class 对象
+ *
+ * @return 返回当前实例对象关联的泛型类型 V 的 Class 对象
+ */
+ default Class currentVoClass() {
+ return (Class) GenericTypeUtils.resolveTypeArguments(this.getClass(), BaseMapperPlus.class)[1];
+ }
+
+ /**
+ * 获取当前实例对象关联的泛型类型 T 的 Class 对象
+ *
+ * @return 返回当前实例对象关联的泛型类型 T 的 Class 对象
+ */
+ default Class currentModelClass() {
+ return (Class) GenericTypeUtils.resolveTypeArguments(this.getClass(), BaseMapperPlus.class)[0];
+ }
+
+ /**
+ * 使用默认的查询条件查询并返回结果列表
+ *
+ * @return 返回查询结果的列表
+ */
+ default List selectList() {
+ return this.selectList(new QueryWrapper<>());
+ }
+
+ /**
+ * 批量插入实体对象集合
+ *
+ * @param entityList 实体对象集合
+ * @return 插入操作是否成功的布尔值
+ */
+ default boolean insertBatch(Collection entityList) {
+ return Db.saveBatch(entityList);
+ }
+
+ /**
+ * 批量根据ID更新实体对象集合
+ *
+ * @param entityList 实体对象集合
+ * @return 更新操作是否成功的布尔值
+ */
+ default boolean updateBatchById(Collection entityList) {
+ return Db.updateBatchById(entityList);
+ }
+
+ /**
+ * 批量插入或更新实体对象集合
+ *
+ * @param entityList 实体对象集合
+ * @return 插入或更新操作是否成功的布尔值
+ */
+ default boolean insertOrUpdateBatch(Collection entityList) {
+ return Db.saveOrUpdateBatch(entityList);
+ }
+
+ /**
+ * 批量插入实体对象集合并指定批处理大小
+ *
+ * @param entityList 实体对象集合
+ * @param batchSize 批处理大小
+ * @return 插入操作是否成功的布尔值
+ */
+ default boolean insertBatch(Collection entityList, int batchSize) {
+ return Db.saveBatch(entityList, batchSize);
+ }
+
+ /**
+ * 批量根据ID更新实体对象集合并指定批处理大小
+ *
+ * @param entityList 实体对象集合
+ * @param batchSize 批处理大小
+ * @return 更新操作是否成功的布尔值
+ */
+ default boolean updateBatchById(Collection entityList, int batchSize) {
+ return Db.updateBatchById(entityList, batchSize);
+ }
+
+ /**
+ * 批量插入或更新实体对象集合并指定批处理大小
+ *
+ * @param entityList 实体对象集合
+ * @param batchSize 批处理大小
+ * @return 插入或更新操作是否成功的布尔值
+ */
+ default boolean insertOrUpdateBatch(Collection entityList, int batchSize) {
+ return Db.saveOrUpdateBatch(entityList, batchSize);
+ }
+
+ /**
+ * 根据ID查询单个VO对象
+ *
+ * @param id 主键ID
+ * @return 查询到的单个VO对象
+ */
+ default V selectVoById(Serializable id) {
+ return selectVoById(id, this.currentVoClass());
+ }
+
+ /**
+ * 根据ID查询单个VO对象并将其转换为指定的VO类
+ *
+ * @param id 主键ID
+ * @param voClass 要转换的VO类的Class对象
+ * @param VO类的类型
+ * @return 查询到的单个VO对象,经过转换为指定的VO类后返回
+ */
+ default C selectVoById(Serializable id, Class voClass) {
+ T obj = this.selectById(id);
+ if (ObjectUtil.isNull(obj)) {
+ return null;
+ }
+ return MapstructUtils.convert(obj, voClass);
+ }
+
+ /**
+ * 根据ID集合批量查询VO对象列表
+ *
+ * @param idList 主键ID集合
+ * @return 查询到的VO对象列表
+ */
+ default List selectVoByIds(Collection extends Serializable> idList) {
+ return selectVoByIds(idList, this.currentVoClass());
+ }
+
+ /**
+ * 根据ID集合批量查询实体对象列表,并将其转换为指定的VO对象列表
+ *
+ * @param idList 主键ID集合
+ * @param voClass 要转换的VO类的Class对象
+ * @param VO类的类型
+ * @return 查询到的VO对象列表,经过转换为指定的VO类后返回
+ */
+ default List selectVoByIds(Collection extends Serializable> idList, Class voClass) {
+ List list = this.selectByIds(idList);
+ if (CollUtil.isEmpty(list)) {
+ return CollUtil.newArrayList();
+ }
+ return MapstructUtils.convert(list, voClass);
+ }
+
+ /**
+ * 根据查询条件Map查询VO对象列表
+ *
+ * @param map 查询条件Map
+ * @return 查询到的VO对象列表
+ */
+ default List selectVoByMap(Map map) {
+ return selectVoByMap(map, this.currentVoClass());
+ }
+
+ /**
+ * 根据查询条件Map查询实体对象列表,并将其转换为指定的VO对象列表
+ *
+ * @param map 查询条件Map
+ * @param voClass 要转换的VO类的Class对象
+ * @param VO类的类型
+ * @return 查询到的VO对象列表,经过转换为指定的VO类后返回
+ */
+ default List selectVoByMap(Map map, Class voClass) {
+ List list = this.selectByMap(map);
+ if (CollUtil.isEmpty(list)) {
+ return CollUtil.newArrayList();
+ }
+ return MapstructUtils.convert(list, voClass);
+ }
+
+ /**
+ * 根据条件查询单个VO对象
+ *
+ * @param wrapper 查询条件Wrapper
+ * @return 查询到的单个VO对象
+ */
+ default V selectVoOne(Wrapper wrapper) {
+ return selectVoOne(wrapper, this.currentVoClass());
+ }
+
+ /**
+ * 根据条件查询单个VO对象,并根据需要决定是否抛出异常
+ *
+ * @param wrapper 查询条件Wrapper
+ * @param throwEx 是否抛出异常的标志
+ * @return 查询到的单个VO对象
+ */
+ default V selectVoOne(Wrapper wrapper, boolean throwEx) {
+ return selectVoOne(wrapper, this.currentVoClass(), throwEx);
+ }
+
+ /**
+ * 根据条件查询单个VO对象,并指定返回的VO对象的类型
+ *
+ * @param wrapper 查询条件Wrapper
+ * @param voClass 返回的VO对象的Class对象
+ * @param 返回的VO对象的类型
+ * @return 查询到的单个VO对象,经过类型转换为指定的VO类后返回
+ */
+ default C selectVoOne(Wrapper wrapper, Class voClass) {
+ return selectVoOne(wrapper, voClass, true);
+ }
+
+ /**
+ * 根据条件查询单个实体对象,并将其转换为指定的VO对象
+ *
+ * @param wrapper 查询条件Wrapper
+ * @param voClass 要转换的VO类的Class对象
+ * @param throwEx 是否抛出异常的标志
+ * @param VO类的类型
+ * @return 查询到的单个VO对象,经过转换为指定的VO类后返回
+ */
+ default C selectVoOne(Wrapper wrapper, Class voClass, boolean throwEx) {
+ T obj = this.selectOne(wrapper, throwEx);
+ if (ObjectUtil.isNull(obj)) {
+ return null;
+ }
+ return MapstructUtils.convert(obj, voClass);
+ }
+
+ /**
+ * 查询所有VO对象列表
+ *
+ * @return 查询到的VO对象列表
+ */
+ default List selectVoList() {
+ return selectVoList(new QueryWrapper<>(), this.currentVoClass());
+ }
+
+ /**
+ * 根据条件查询VO对象列表
+ *
+ * @param wrapper 查询条件Wrapper
+ * @return 查询到的VO对象列表
+ */
+ default List selectVoList(Wrapper wrapper) {
+ return selectVoList(wrapper, this.currentVoClass());
+ }
+
+ /**
+ * 根据条件查询实体对象列表,并将其转换为指定的VO对象列表
+ *
+ * @param wrapper 查询条件Wrapper
+ * @param voClass 要转换的VO类的Class对象
+ * @param VO类的类型
+ * @return 查询到的VO对象列表,经过转换为指定的VO类后返回
+ */
+ default List selectVoList(Wrapper wrapper, Class voClass) {
+ List list = this.selectList(wrapper);
+ if (CollUtil.isEmpty(list)) {
+ return CollUtil.newArrayList();
+ }
+ return MapstructUtils.convert(list, voClass);
+ }
+
+ /**
+ * 根据条件分页查询VO对象列表
+ *
+ * @param page 分页信息
+ * @param wrapper 查询条件Wrapper
+ * @return 查询到的VO对象分页列表
+ */
+ default > P selectVoPage(IPage page, Wrapper wrapper) {
+ return selectVoPage(page, wrapper, this.currentVoClass());
+ }
+
+ /**
+ * 根据条件分页查询实体对象列表,并将其转换为指定的VO对象分页列表
+ *
+ * @param page 分页信息
+ * @param wrapper 查询条件Wrapper
+ * @param voClass 要转换的VO类的Class对象
+ * @param VO类的类型
+ * @param VO对象分页列表的类型
+ * @return 查询到的VO对象分页列表,经过转换为指定的VO类后返回
+ */
+ default > P selectVoPage(IPage page, Wrapper wrapper, Class voClass) {
+ // 根据条件分页查询实体对象列表
+ List list = this.selectList(page, wrapper);
+ // 创建一个新的VO对象分页列表,并设置分页信息
+ IPage voPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
+ if (CollUtil.isEmpty(list)) {
+ return (P) voPage;
+ }
+ voPage.setRecords(MapstructUtils.convert(list, voClass));
+ return (P) voPage;
+ }
+
+ /**
+ * 根据条件查询符合条件的对象,并将其转换为指定类型的对象列表
+ *
+ * @param wrapper 查询条件Wrapper
+ * @param mapper 转换函数,用于将查询到的对象转换为指定类型的对象
+ * @param 要转换的对象的类型
+ * @return 查询到的符合条件的对象列表,经过转换为指定类型的对象后返回
+ */
+ default List selectObjs(Wrapper wrapper, Function super Object, C> mapper) {
+ return StreamUtils.toList(this.selectObjs(wrapper), mapper);
+ }
+
+}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/core/page/PageQuery.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/core/page/PageQuery.java
similarity index 90%
rename from ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/core/page/PageQuery.java
rename to ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/core/page/PageQuery.java
index 33e0190d..a388cb4a 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/core/page/PageQuery.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/core/page/PageQuery.java
@@ -1,9 +1,10 @@
-package org.ruoyi.common.mybatis.core.page;
+package org.ruoyi.core.page;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import org.ruoyi.common.core.exception.ServiceException;
import org.ruoyi.common.core.utils.StringUtils;
@@ -19,7 +20,6 @@ import java.util.List;
*
* @author Lion Li
*/
-
@Data
public class PageQuery implements Serializable {
@@ -56,6 +56,9 @@ public class PageQuery implements Serializable {
*/
public static final int DEFAULT_PAGE_SIZE = Integer.MAX_VALUE;
+ /**
+ * 构建分页对象
+ */
public Page build() {
Integer pageNum = ObjectUtil.defaultIfNull(getPageNum(), DEFAULT_PAGE_NUM);
Integer pageSize = ObjectUtil.defaultIfNull(getPageSize(), DEFAULT_PAGE_SIZE);
@@ -111,4 +114,14 @@ public class PageQuery implements Serializable {
return list;
}
+ @JsonIgnore
+ public Integer getFirstNum() {
+ return (pageNum - 1) * pageSize;
+ }
+
+ public PageQuery(Integer pageSize, Integer pageNum) {
+ this.pageSize = pageSize;
+ this.pageNum = pageNum;
+ }
+
}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/core/page/TableDataInfo.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/core/page/TableDataInfo.java
similarity index 85%
rename from ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/core/page/TableDataInfo.java
rename to ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/core/page/TableDataInfo.java
index b4f7cd70..eb321ae9 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/core/page/TableDataInfo.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/core/page/TableDataInfo.java
@@ -1,4 +1,4 @@
-package org.ruoyi.common.mybatis.core.page;
+package org.ruoyi.core.page;
import cn.hutool.http.HttpStatus;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -14,7 +14,6 @@ import java.util.List;
*
* @author Lion Li
*/
-
@Data
@NoArgsConstructor
public class TableDataInfo implements Serializable {
@@ -51,8 +50,13 @@ public class TableDataInfo implements Serializable {
public TableDataInfo(List list, long total) {
this.rows = list;
this.total = total;
+ this.code = HttpStatus.HTTP_OK;
+ this.msg = "查询成功";
}
+ /**
+ * 根据分页对象构建表格分页数据对象
+ */
public static TableDataInfo build(IPage page) {
TableDataInfo rspData = new TableDataInfo<>();
rspData.setCode(HttpStatus.HTTP_OK);
@@ -62,6 +66,9 @@ public class TableDataInfo implements Serializable {
return rspData;
}
+ /**
+ * 根据数据列表构建表格分页数据对象
+ */
public static TableDataInfo build(List list) {
TableDataInfo rspData = new TableDataInfo<>();
rspData.setCode(HttpStatus.HTTP_OK);
@@ -71,6 +78,9 @@ public class TableDataInfo implements Serializable {
return rspData;
}
+ /**
+ * 构建表格分页数据对象
+ */
public static TableDataInfo build() {
TableDataInfo rspData = new TableDataInfo<>();
rspData.setCode(HttpStatus.HTTP_OK);
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/enums/DataBaseType.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/enums/DataBaseType.java
similarity index 74%
rename from ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/enums/DataBaseType.java
rename to ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/enums/DataBaseType.java
index fba59340..1b32cda4 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/enums/DataBaseType.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/enums/DataBaseType.java
@@ -1,9 +1,10 @@
-package org.ruoyi.common.mybatis.enums;
+package org.ruoyi.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.ruoyi.common.core.utils.StringUtils;
+
/**
* 数据库类型
*
@@ -33,8 +34,17 @@ public enum DataBaseType {
*/
SQL_SERVER("Microsoft SQL Server");
+ /**
+ * 数据库类型
+ */
private final String type;
+ /**
+ * 根据数据库产品名称查找对应的数据库类型
+ *
+ * @param databaseProductName 数据库产品名称
+ * @return 对应的数据库类型枚举值,如果未找到则返回 null
+ */
public static DataBaseType find(String databaseProductName) {
if (StringUtils.isBlank(databaseProductName)) {
return null;
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/enums/DataScopeType.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/enums/DataScopeType.java
new file mode 100644
index 00000000..f478adbd
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/enums/DataScopeType.java
@@ -0,0 +1,87 @@
+package org.ruoyi.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import org.ruoyi.common.core.domain.model.LoginUser;
+import org.ruoyi.common.core.utils.StringUtils;
+import org.ruoyi.helper.DataPermissionHelper;
+
+/**
+ * 数据权限类型枚举
+ *
+ * 支持使用 SpEL 模板表达式定义 SQL 查询条件
+ * 内置数据:
+ * - {@code user}: 当前登录用户信息,参考 {@link LoginUser}
+ * 内置服务:
+ * - {@code sdss}: 系统数据权限服务,参考 ISysDataScopeService
+ * 如需扩展数据,可以通过 {@link DataPermissionHelper} 进行操作
+ * 如需扩展服务,可以通过 ISysDataScopeService 自行编写
+ *
+ *
+ * @author Lion Li
+ * @version 3.5.0
+ */
+@Getter
+@AllArgsConstructor
+public enum DataScopeType {
+
+ /**
+ * 全部数据权限
+ */
+ ALL("1", "", ""),
+
+ /**
+ * 自定数据权限
+ */
+ CUSTOM("2", " #{#deptName} IN ( #{@sdss.getRoleCustom( #user.roleId )} ) ", " 1 = 0 "),
+
+ /**
+ * 部门数据权限
+ */
+ DEPT("3", " #{#deptName} = #{#user.deptId} ", " 1 = 0 "),
+
+ /**
+ * 部门及以下数据权限
+ */
+ DEPT_AND_CHILD("4", " #{#deptName} IN ( #{@sdss.getDeptAndChild( #user.deptId )} )", " 1 = 0 "),
+
+ /**
+ * 仅本人数据权限
+ */
+ SELF("5", " #{#userName} = #{#user.userId} ", " 1 = 0 "),
+
+ /**
+ * 部门及以下或本人数据权限
+ */
+ DEPT_AND_CHILD_OR_SELF("6", " #{#deptName} IN ( #{@sdss.getDeptAndChild( #user.deptId )} ) OR #{#userName} = #{#user.userId} ", " 1 = 0 ");
+
+ private final String code;
+
+ /**
+ * SpEL 模板表达式,用于构建 SQL 查询条件
+ */
+ private final String sqlTemplate;
+
+ /**
+ * 如果不满足 {@code sqlTemplate} 的条件,则使用此默认 SQL 表达式
+ */
+ private final String elseSql;
+
+ /**
+ * 根据枚举代码查找对应的枚举值
+ *
+ * @param code 枚举代码
+ * @return 对应的枚举值,如果未找到则返回 null
+ */
+ public static DataScopeType findCode(String code) {
+ if (StringUtils.isBlank(code)) {
+ return null;
+ }
+ for (DataScopeType type : values()) {
+ if (type.getCode().equals(code)) {
+ return type;
+ }
+ }
+ return null;
+ }
+}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/handler/InjectionMetaObjectHandler.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/handler/InjectionMetaObjectHandler.java
new file mode 100644
index 00000000..57843d35
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/handler/InjectionMetaObjectHandler.java
@@ -0,0 +1,103 @@
+package org.ruoyi.handler;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.http.HttpStatus;
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.reflection.MetaObject;
+import org.ruoyi.common.core.domain.model.LoginUser;
+import org.ruoyi.common.core.exception.ServiceException;
+import org.ruoyi.common.core.utils.ObjectUtils;
+import org.ruoyi.common.satoken.utils.LoginHelper;
+import org.ruoyi.core.domain.BaseEntity;
+
+
+import java.util.Date;
+
+/**
+ * MP注入处理器
+ *
+ * @author Lion Li
+ * @date 2021/4/25
+ */
+@Slf4j
+public class InjectionMetaObjectHandler implements MetaObjectHandler {
+
+ /**
+ * 插入填充方法,用于在插入数据时自动填充实体对象中的创建时间、更新时间、创建人、更新人等信息
+ *
+ * @param metaObject 元对象,用于获取原始对象并进行填充
+ */
+ @Override
+ public void insertFill(MetaObject metaObject) {
+ try {
+ if (ObjectUtil.isNotNull(metaObject) && metaObject.getOriginalObject() instanceof BaseEntity baseEntity) {
+ // 获取当前时间作为创建时间和更新时间,如果创建时间不为空,则使用创建时间,否则使用当前时间
+ Date current = ObjectUtils.notNull(baseEntity.getCreateTime(), new Date());
+ baseEntity.setCreateTime(current);
+ baseEntity.setUpdateTime(current);
+
+ // 如果创建人为空,则填充当前登录用户的信息
+ if (ObjectUtil.isNull(baseEntity.getCreateBy())) {
+ LoginUser loginUser = getLoginUser();
+ if (ObjectUtil.isNotNull(loginUser)) {
+ Long userId = loginUser.getUserId();
+ // 填充创建人、更新人和创建部门信息
+ baseEntity.setCreateBy(userId);
+ baseEntity.setUpdateBy(userId);
+ baseEntity.setCreateDept(ObjectUtils.notNull(baseEntity.getCreateDept(), loginUser.getDeptId()));
+ }
+ }
+ } else {
+ Date date = new Date();
+ this.strictInsertFill(metaObject, "createTime", Date.class, date);
+ this.strictInsertFill(metaObject, "updateTime", Date.class, date);
+ }
+ } catch (Exception e) {
+ throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);
+ }
+ }
+
+ /**
+ * 更新填充方法,用于在更新数据时自动填充实体对象中的更新时间和更新人信息
+ *
+ * @param metaObject 元对象,用于获取原始对象并进行填充
+ */
+ @Override
+ public void updateFill(MetaObject metaObject) {
+ try {
+ if (ObjectUtil.isNotNull(metaObject) && metaObject.getOriginalObject() instanceof BaseEntity baseEntity) {
+ // 获取当前时间作为更新时间,无论原始对象中的更新时间是否为空都填充
+ Date current = new Date();
+ baseEntity.setUpdateTime(current);
+
+ // 获取当前登录用户的ID,并填充更新人信息
+ Long userId = LoginHelper.getUserId();
+ if (ObjectUtil.isNotNull(userId)) {
+ baseEntity.setUpdateBy(userId);
+ }
+ } else {
+ this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
+ }
+ } catch (Exception e) {
+ throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);
+ }
+ }
+
+ /**
+ * 获取当前登录用户信息
+ *
+ * @return 当前登录用户的信息,如果用户未登录则返回 null
+ */
+ private LoginUser getLoginUser() {
+ LoginUser loginUser;
+ try {
+ loginUser = LoginHelper.getLoginUser();
+ } catch (Exception e) {
+ log.warn("自动注入警告 => 用户未登录");
+ return null;
+ }
+ return loginUser;
+ }
+
+}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/handler/MybatisExceptionHandler.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/handler/MybatisExceptionHandler.java
similarity index 90%
rename from ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/handler/MybatisExceptionHandler.java
rename to ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/handler/MybatisExceptionHandler.java
index 281d172d..0cb338c2 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/handler/MybatisExceptionHandler.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/handler/MybatisExceptionHandler.java
@@ -1,9 +1,11 @@
-package org.ruoyi.common.mybatis.handler;
+package org.ruoyi.handler;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
-import org.ruoyi.common.core.domain.R;
+
import org.mybatis.spring.MyBatisSystemException;
+import org.ruoyi.common.core.domain.R;
+import org.ruoyi.common.core.utils.StringUtils;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@@ -34,7 +36,7 @@ public class MybatisExceptionHandler {
public R handleCannotFindDataSourceException(MyBatisSystemException e, HttpServletRequest request) {
String requestURI = request.getRequestURI();
String message = e.getMessage();
- if (message.contains("CannotFindDataSourceException")) {
+ if (StringUtils.contains("CannotFindDataSourceException", message)) {
log.error("请求地址'{}', 未找到数据源", requestURI);
return R.fail("未找到数据源,请联系管理员确认");
}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/handler/PlusDataPermissionHandler.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/handler/PlusDataPermissionHandler.java
new file mode 100644
index 00000000..46e0b2e9
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/handler/PlusDataPermissionHandler.java
@@ -0,0 +1,359 @@
+package org.ruoyi.handler;
+
+import cn.hutool.core.annotation.AnnotationUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import net.sf.jsqlparser.JSQLParserException;
+import net.sf.jsqlparser.expression.Expression;
+import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
+import net.sf.jsqlparser.expression.operators.relational.ParenthesedExpressionList;
+import net.sf.jsqlparser.parser.CCJSqlParserUtil;
+import org.apache.ibatis.io.Resources;
+
+import org.ruoyi.annotation.DataColumn;
+import org.ruoyi.annotation.DataPermission;
+import org.ruoyi.common.core.domain.dto.RoleDTO;
+import org.ruoyi.common.core.domain.model.LoginUser;
+import org.ruoyi.common.core.exception.ServiceException;
+import org.ruoyi.common.core.utils.SpringUtils;
+import org.ruoyi.common.core.utils.StreamUtils;
+import org.ruoyi.common.core.utils.StringUtils;
+import org.ruoyi.common.satoken.utils.LoginHelper;
+import org.ruoyi.enums.DataScopeType;
+import org.ruoyi.helper.DataPermissionHelper;
+
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.expression.BeanFactoryResolver;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.core.io.support.ResourcePatternResolver;
+import org.springframework.core.type.ClassMetadata;
+import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
+import org.springframework.expression.*;
+import org.springframework.expression.common.TemplateParserContext;
+import org.springframework.expression.spel.standard.SpelExpressionParser;
+import org.springframework.expression.spel.support.StandardEvaluationContext;
+import org.springframework.util.ClassUtils;
+
+import java.lang.reflect.Method;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Function;
+
+/**
+ * 数据权限过滤
+ *
+ * @author Lion Li
+ * @version 3.5.0
+ */
+@Slf4j
+public class PlusDataPermissionHandler {
+
+ /**
+ * 类名称与注解的映射关系缓存(由于aop无法拦截mybatis接口类上的注解 只能通过启动预扫描的方式进行)
+ */
+ private final Map dataPermissionCacheMap = new ConcurrentHashMap<>();
+
+ /**
+ * spel 解析器
+ */
+ private final ExpressionParser parser = new SpelExpressionParser();
+ private final ParserContext parserContext = new TemplateParserContext();
+ /**
+ * bean解析器 用于处理 spel 表达式中对 bean 的调用
+ */
+ private final BeanResolver beanResolver = new BeanFactoryResolver(SpringUtils.getBeanFactory());
+
+ /**
+ * 构造方法,扫描指定包下的 Mapper 类并初始化缓存
+ *
+ * @param mapperPackage Mapper 类所在的包路径
+ */
+ public PlusDataPermissionHandler(String mapperPackage) {
+ scanMapperClasses(mapperPackage);
+ }
+
+ /**
+ * 获取数据过滤条件的 SQL 片段
+ *
+ * @param where 原始的查询条件表达式
+ * @param mappedStatementId Mapper 方法的 ID
+ * @param isSelect 是否为查询语句
+ * @return 数据过滤条件的 SQL 片段
+ */
+ public Expression getSqlSegment(Expression where, String mappedStatementId, boolean isSelect) {
+ try {
+ // 获取数据权限配置
+ DataPermission dataPermission = getDataPermission(mappedStatementId);
+ // 获取当前登录用户信息
+ LoginUser currentUser = DataPermissionHelper.getVariable("user");
+ if (ObjectUtil.isNull(currentUser)) {
+ currentUser = LoginHelper.getLoginUser();
+ DataPermissionHelper.setVariable("user", currentUser);
+ }
+ // 如果是超级管理员或租户管理员,则不过滤数据
+ if (LoginHelper.isSuperAdmin() || LoginHelper.isTenantAdmin()) {
+ return where;
+ }
+ // 构造数据过滤条件的 SQL 片段
+ String dataFilterSql = buildDataFilter(dataPermission, isSelect);
+ if (StringUtils.isBlank(dataFilterSql)) {
+ return where;
+ }
+ Expression expression = CCJSqlParserUtil.parseExpression(dataFilterSql);
+ // 数据权限使用单独的括号 防止与其他条件冲突
+ ParenthesedExpressionList parenthesis = new ParenthesedExpressionList<>(expression);
+ if (ObjectUtil.isNotNull(where)) {
+ return new AndExpression(where, parenthesis);
+ } else {
+ return parenthesis;
+ }
+ } catch (JSQLParserException e) {
+ throw new ServiceException("数据权限解析异常 => " + e.getMessage());
+ } finally {
+ DataPermissionHelper.removePermission();
+ }
+ }
+
+ /**
+ * 构建数据过滤条件的 SQL 语句
+ *
+ * @param dataPermission 数据权限注解
+ * @param isSelect 标志当前操作是否为查询操作,查询操作和更新或删除操作在处理过滤条件时会有不同的处理方式
+ * @return 构建的数据过滤条件的 SQL 语句
+ * @throws ServiceException 如果角色的数据范围异常或者 key 与 value 的长度不匹配,则抛出 ServiceException 异常
+ */
+ private String buildDataFilter(DataPermission dataPermission, boolean isSelect) {
+ // 更新或删除需满足所有条件
+ String joinStr = isSelect ? " OR " : " AND ";
+ if (StringUtils.isNotBlank(dataPermission.joinStr())) {
+ joinStr = " " + dataPermission.joinStr() + " ";
+ }
+ LoginUser user = DataPermissionHelper.getVariable("user");
+ Object defaultValue = "-1";
+ NullSafeStandardEvaluationContext context = new NullSafeStandardEvaluationContext(defaultValue);
+ context.addPropertyAccessor(new NullSafePropertyAccessor(context.getPropertyAccessors().get(0), defaultValue));
+ context.setBeanResolver(beanResolver);
+ DataPermissionHelper.getContext().forEach(context::setVariable);
+ Set conditions = new HashSet<>();
+ // 优先设置变量
+ List keys = new ArrayList<>();
+ Map ignoreMap = new HashMap<>();
+ for (DataColumn dataColumn : dataPermission.value()) {
+ if (dataColumn.key().length != dataColumn.value().length) {
+ throw new ServiceException("角色数据范围异常 => key与value长度不匹配");
+ }
+ // 包含权限标识符 这直接跳过
+ if (StringUtils.isNotBlank(dataColumn.permission()) &&
+ CollUtil.contains(user.getMenuPermission(), dataColumn.permission())
+ ) {
+ ignoreMap.put(dataColumn, Boolean.TRUE);
+ continue;
+ }
+ // 设置注解变量 key 为表达式变量 value 为变量值
+ for (int i = 0; i < dataColumn.key().length; i++) {
+ context.setVariable(dataColumn.key()[i], dataColumn.value()[i]);
+ }
+ keys.addAll(Arrays.stream(dataColumn.key()).map(key -> "#" + key).toList());
+ }
+
+ for (RoleDTO role : user.getRoles()) {
+ user.setRoleId(role.getRoleId());
+ // 获取角色权限泛型
+ DataScopeType type = DataScopeType.findCode(role.getDataScope());
+ if (ObjectUtil.isNull(type)) {
+ throw new ServiceException("角色数据范围异常 => " + role.getDataScope());
+ }
+ // 全部数据权限直接返回
+ if (type == DataScopeType.ALL) {
+ return StringUtils.EMPTY;
+ }
+ boolean isSuccess = false;
+ for (DataColumn dataColumn : dataPermission.value()) {
+ // 包含权限标识符 这直接跳过
+ if (ignoreMap.containsKey(dataColumn)) {
+ // 修复多角色与权限标识符共用问题 https://gitee.com/dromara/RuoYi-Vue-Plus/issues/IB4CS4
+ conditions.add(joinStr + " 1 = 1 ");
+ isSuccess = true;
+ continue;
+ }
+ // 不包含 key 变量 则不处理
+ if (!StringUtils.containsAny(type.getSqlTemplate(), keys.toArray(String[]::new))) {
+ continue;
+ }
+ // 当前注解不满足模板 不处理
+ if (!StringUtils.containsAny(type.getSqlTemplate(), dataColumn.key())) {
+ continue;
+ }
+ // 忽略数据权限 防止spel表达式内有其他sql查询导致死循环调用
+ String sql = DataPermissionHelper.ignore(() ->
+ parser.parseExpression(type.getSqlTemplate(), parserContext).getValue(context, String.class)
+ );
+ // 解析sql模板并填充
+ conditions.add(joinStr + sql);
+ isSuccess = true;
+ }
+ // 未处理成功则填充兜底方案
+ if (!isSuccess && StringUtils.isNotBlank(type.getElseSql())) {
+ conditions.add(joinStr + type.getElseSql());
+ }
+ }
+
+ if (CollUtil.isNotEmpty(conditions)) {
+ String sql = StreamUtils.join(conditions, Function.identity(), "");
+ return sql.substring(joinStr.length());
+ }
+ return StringUtils.EMPTY;
+ }
+
+ /**
+ * 扫描指定包下的 Mapper 类,并查找其中带有特定注解的方法或类
+ *
+ * @param mapperPackage Mapper 类所在的包路径
+ */
+ private void scanMapperClasses(String mapperPackage) {
+ // 创建资源解析器和元数据读取工厂
+ PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
+ CachingMetadataReaderFactory factory = new CachingMetadataReaderFactory();
+ // 将 Mapper 包路径按分隔符拆分为数组
+ String[] packagePatternArray = StringUtils.splitPreserveAllTokens(mapperPackage, ConfigurableApplicationContext.CONFIG_LOCATION_DELIMITERS);
+ String classpath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX;
+ try {
+ for (String packagePattern : packagePatternArray) {
+ // 将包路径转换为资源路径
+ String path = ClassUtils.convertClassNameToResourcePath(packagePattern);
+ // 获取指定路径下的所有 .class 文件资源
+ Resource[] resources = resolver.getResources(classpath + path + "/*.class");
+ for (Resource resource : resources) {
+ // 获取资源的类元数据
+ ClassMetadata classMetadata = factory.getMetadataReader(resource).getClassMetadata();
+ // 获取资源对应的类对象
+ Class> clazz = Resources.classForName(classMetadata.getClassName());
+ // 查找类中的特定注解
+ findAnnotation(clazz);
+ }
+ }
+ } catch (Exception e) {
+ log.error("初始化数据安全缓存时出错:{}", e.getMessage());
+ }
+ }
+
+ /**
+ * 在指定的类中查找特定的注解 DataPermission,并将带有这个注解的方法或类存储到 dataPermissionCacheMap 中
+ *
+ * @param clazz 要查找的类
+ */
+ private void findAnnotation(Class> clazz) {
+ DataPermission dataPermission;
+ for (Method method : clazz.getMethods()) {
+ if (method.isDefault() || method.isVarArgs()) {
+ continue;
+ }
+ String mappedStatementId = clazz.getName() + "." + method.getName();
+ if (AnnotationUtil.hasAnnotation(method, DataPermission.class)) {
+ dataPermission = AnnotationUtil.getAnnotation(method, DataPermission.class);
+ dataPermissionCacheMap.put(mappedStatementId, dataPermission);
+ }
+ }
+ if (AnnotationUtil.hasAnnotation(clazz, DataPermission.class)) {
+ dataPermission = AnnotationUtil.getAnnotation(clazz, DataPermission.class);
+ dataPermissionCacheMap.put(clazz.getName(), dataPermission);
+ }
+ }
+
+ /**
+ * 根据映射语句 ID 或类名获取对应的 DataPermission 注解对象
+ *
+ * @param mapperId 映射语句 ID
+ * @return DataPermission 注解对象,如果不存在则返回 null
+ */
+ public DataPermission getDataPermission(String mapperId) {
+ // 检查上下文中是否包含映射语句 ID 对应的 DataPermission 注解对象
+ if (DataPermissionHelper.getPermission() != null) {
+ return DataPermissionHelper.getPermission();
+ }
+ // 检查缓存中是否包含映射语句 ID 对应的 DataPermission 注解对象
+ if (dataPermissionCacheMap.containsKey(mapperId)) {
+ return dataPermissionCacheMap.get(mapperId);
+ }
+ // 如果缓存中不包含映射语句 ID 对应的 DataPermission 注解对象,则尝试使用类名作为键查找
+ String clazzName = mapperId.substring(0, mapperId.lastIndexOf("."));
+ if (dataPermissionCacheMap.containsKey(clazzName)) {
+ return dataPermissionCacheMap.get(clazzName);
+ }
+ return null;
+ }
+
+ /**
+ * 检查给定的映射语句 ID 是否有效,即是否能够找到对应的 DataPermission 注解对象
+ *
+ * @param mapperId 映射语句 ID
+ * @return 如果找到对应的 DataPermission 注解对象,则返回 false;否则返回 true
+ */
+ public boolean invalid(String mapperId) {
+ return getDataPermission(mapperId) == null;
+ }
+
+ /**
+ * 对所有null变量找不到的变量返回默认值
+ */
+ @AllArgsConstructor
+ private static class NullSafeStandardEvaluationContext extends StandardEvaluationContext {
+
+ private final Object defaultValue;
+
+ @Override
+ public Object lookupVariable(String name) {
+ Object obj = super.lookupVariable(name);
+ // 如果读取到的值是 null,则返回默认值
+ if (obj == null) {
+ return defaultValue;
+ }
+ return obj;
+ }
+
+ }
+
+ /**
+ * 对所有null变量找不到的变量返回默认值 委托模式 将不需要处理的方法委托给原处理器
+ */
+ @AllArgsConstructor
+ private static class NullSafePropertyAccessor implements PropertyAccessor {
+
+ private final PropertyAccessor delegate;
+ private final Object defaultValue;
+
+ @Override
+ public Class>[] getSpecificTargetClasses() {
+ return delegate.getSpecificTargetClasses();
+ }
+
+ @Override
+ public boolean canRead(EvaluationContext context, Object target, String name) throws AccessException {
+ return delegate.canRead(context, target, name);
+ }
+
+ @Override
+ public TypedValue read(EvaluationContext context, Object target, String name) throws AccessException {
+ TypedValue value = delegate.read(context, target, name);
+ // 如果读取到的值是 null,则返回默认值
+ if (value.getValue() == null) {
+ return new TypedValue(defaultValue);
+ }
+ return value;
+ }
+
+ @Override
+ public boolean canWrite(EvaluationContext context, Object target, String name) throws AccessException {
+ return delegate.canWrite(context, target, name);
+ }
+
+ @Override
+ public void write(EvaluationContext context, Object target, String name, Object newValue) throws AccessException {
+ delegate.write(context, target, name, newValue);
+ }
+ }
+
+}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/handler/PlusPostInitTableInfoHandler.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/handler/PlusPostInitTableInfoHandler.java
new file mode 100644
index 00000000..aac6bb55
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/handler/PlusPostInitTableInfoHandler.java
@@ -0,0 +1,28 @@
+package org.ruoyi.handler;
+
+import cn.hutool.core.convert.Convert;
+import com.baomidou.mybatisplus.core.handlers.PostInitTableInfoHandler;
+import com.baomidou.mybatisplus.core.metadata.TableInfo;
+import org.apache.ibatis.session.Configuration;
+import org.ruoyi.common.core.utils.SpringUtils;
+import org.ruoyi.common.core.utils.reflect.ReflectUtils;
+
+
+/**
+ * 修改表信息初始化方式
+ * 目前用于全局修改是否使用逻辑删除
+ *
+ * @author Lion Li
+ */
+public class PlusPostInitTableInfoHandler implements PostInitTableInfoHandler {
+
+ @Override
+ public void postTableInfo(TableInfo tableInfo, Configuration configuration) {
+ String flag = SpringUtils.getProperty("mybatis-plus.enableLogicDelete", "true");
+ // 只有关闭时 统一设置false 为true时mp自动判断不处理
+ if (!Convert.toBool(flag)) {
+ ReflectUtils.setFieldValue(tableInfo, "withLogicDelete", false);
+ }
+ }
+
+}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/helper/DataBaseHelper.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/helper/DataBaseHelper.java
similarity index 91%
rename from ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/helper/DataBaseHelper.java
rename to ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/helper/DataBaseHelper.java
index f060e17a..16a16375 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/helper/DataBaseHelper.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/helper/DataBaseHelper.java
@@ -1,12 +1,13 @@
-package org.ruoyi.common.mybatis.helper;
+package org.ruoyi.helper;
import cn.hutool.core.convert.Convert;
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
+
import org.ruoyi.common.core.exception.ServiceException;
import org.ruoyi.common.core.utils.SpringUtils;
-import org.ruoyi.common.mybatis.enums.DataBaseType;
+import org.ruoyi.enums.DataBaseType;
import javax.sql.DataSource;
import java.sql.Connection;
@@ -62,8 +63,8 @@ public class DataBaseHelper {
// charindex(',100,' , ',0,100,101,') <> 0
return "charindex(',%s,' , ','+%s+',') <> 0".formatted(var, var2);
} else if (dataBasyType == DataBaseType.POSTGRE_SQL) {
- // (select position(',100,' in ',0,100,101,')) <> 0
- return "(select position(',%s,' in ','||%s||',')) <> 0".formatted(var, var2);
+ // (select strpos(',0,100,101,' , ',100,')) <> 0
+ return "(select strpos(','||%s||',' , ',%s,')) <> 0".formatted(var2, var);
} else if (dataBasyType == DataBaseType.ORACLE) {
// instr(',0,100,101,' , ',100,') <> 0
return "instr(','||%s||',' , ',%s,') <> 0".formatted(var2, var);
@@ -71,6 +72,7 @@ public class DataBaseHelper {
// find_in_set(100 , '0,100,101')
return "find_in_set('%s' , %s) <> 0".formatted(var, var2);
}
+
/**
* 获取当前加载的数据库名
*/
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/helper/DataPermissionHelper.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/helper/DataPermissionHelper.java
new file mode 100644
index 00000000..3d8f99c8
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/helper/DataPermissionHelper.java
@@ -0,0 +1,176 @@
+package org.ruoyi.helper;
+
+import cn.dev33.satoken.context.SaHolder;
+import cn.dev33.satoken.context.model.SaStorage;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.plugins.IgnoreStrategy;
+import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import org.ruoyi.annotation.DataPermission;
+import org.ruoyi.common.core.utils.reflect.ReflectUtils;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Stack;
+import java.util.function.Supplier;
+
+/**
+ * 数据权限助手
+ *
+ * @author Lion Li
+ * @version 3.5.0
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+@SuppressWarnings("unchecked cast")
+public class DataPermissionHelper {
+
+ private static final String DATA_PERMISSION_KEY = "data:permission";
+
+ private static final ThreadLocal> REENTRANT_IGNORE = ThreadLocal.withInitial(Stack::new);
+
+ private static final ThreadLocal PERMISSION_CACHE = new ThreadLocal<>();
+
+ /**
+ * 获取当前执行mapper权限注解
+ *
+ * @return 返回当前执行mapper权限注解
+ */
+ public static DataPermission getPermission() {
+ return PERMISSION_CACHE.get();
+ }
+
+ /**
+ * 设置当前执行mapper权限注解
+ *
+ * @param dataPermission 数据权限注解
+ */
+ public static void setPermission(DataPermission dataPermission) {
+ PERMISSION_CACHE.set(dataPermission);
+ }
+
+ /**
+ * 删除当前执行mapper权限注解
+ */
+ public static void removePermission() {
+ PERMISSION_CACHE.remove();
+ }
+
+ /**
+ * 从上下文中获取指定键的变量值,并将其转换为指定的类型
+ *
+ * @param key 变量的键
+ * @param 变量值的类型
+ * @return 指定键的变量值,如果不存在则返回 null
+ */
+ public static T getVariable(String key) {
+ Map context = getContext();
+ return (T) context.get(key);
+ }
+
+ /**
+ * 向上下文中设置指定键的变量值
+ *
+ * @param key 要设置的变量的键
+ * @param value 要设置的变量值
+ */
+ public static void setVariable(String key, Object value) {
+ Map context = getContext();
+ context.put(key, value);
+ }
+
+ /**
+ * 获取数据权限上下文
+ *
+ * @return 存储在SaStorage中的Map对象,用于存储数据权限相关的上下文信息
+ * @throws NullPointerException 如果数据权限上下文类型异常,则抛出NullPointerException
+ */
+ public static Map getContext() {
+ SaStorage saStorage = SaHolder.getStorage();
+ Object attribute = saStorage.get(DATA_PERMISSION_KEY);
+ if (ObjectUtil.isNull(attribute)) {
+ saStorage.set(DATA_PERMISSION_KEY, new HashMap<>());
+ attribute = saStorage.get(DATA_PERMISSION_KEY);
+ }
+ if (attribute instanceof Map map) {
+ return map;
+ }
+ throw new NullPointerException("data permission context type exception");
+ }
+
+ private static IgnoreStrategy getIgnoreStrategy() {
+ Object ignoreStrategyLocal = ReflectUtils.getStaticFieldValue(ReflectUtils.getField(InterceptorIgnoreHelper.class, "IGNORE_STRATEGY_LOCAL"));
+ if (ignoreStrategyLocal instanceof ThreadLocal> IGNORE_STRATEGY_LOCAL) {
+ if (IGNORE_STRATEGY_LOCAL.get() instanceof IgnoreStrategy ignoreStrategy) {
+ return ignoreStrategy;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 开启忽略数据权限(开启后需手动调用 {@link #disableIgnore()} 关闭)
+ */
+ public static void enableIgnore() {
+ IgnoreStrategy ignoreStrategy = getIgnoreStrategy();
+ if (ObjectUtil.isNull(ignoreStrategy)) {
+ InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().dataPermission(true).build());
+ } else {
+ ignoreStrategy.setDataPermission(true);
+ }
+ Stack reentrantStack = REENTRANT_IGNORE.get();
+ reentrantStack.push(reentrantStack.size() + 1);
+ }
+
+ /**
+ * 关闭忽略数据权限
+ */
+ public static void disableIgnore() {
+ IgnoreStrategy ignoreStrategy = getIgnoreStrategy();
+ if (ObjectUtil.isNotNull(ignoreStrategy)) {
+ boolean noOtherIgnoreStrategy = !Boolean.TRUE.equals(ignoreStrategy.getDynamicTableName())
+ && !Boolean.TRUE.equals(ignoreStrategy.getBlockAttack())
+ && !Boolean.TRUE.equals(ignoreStrategy.getIllegalSql())
+ && !Boolean.TRUE.equals(ignoreStrategy.getTenantLine())
+ && CollectionUtil.isEmpty(ignoreStrategy.getOthers());
+ Stack reentrantStack = REENTRANT_IGNORE.get();
+ boolean empty = reentrantStack.isEmpty() || reentrantStack.pop() == 1;
+ if (noOtherIgnoreStrategy && empty) {
+ InterceptorIgnoreHelper.clearIgnoreStrategy();
+ } else if (empty) {
+ ignoreStrategy.setDataPermission(false);
+ }
+
+ }
+ }
+
+ /**
+ * 在忽略数据权限中执行
+ *
+ * @param handle 处理执行方法
+ */
+ public static void ignore(Runnable handle) {
+ enableIgnore();
+ try {
+ handle.run();
+ } finally {
+ disableIgnore();
+ }
+ }
+
+ /**
+ * 在忽略数据权限中执行
+ *
+ * @param handle 处理执行方法
+ */
+ public static T ignore(Supplier handle) {
+ enableIgnore();
+ try {
+ return handle.get();
+ } finally {
+ disableIgnore();
+ }
+ }
+
+}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/interceptor/PlusDataPermissionInterceptor.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/interceptor/PlusDataPermissionInterceptor.java
new file mode 100644
index 00000000..10a58e5a
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/interceptor/PlusDataPermissionInterceptor.java
@@ -0,0 +1,181 @@
+package org.ruoyi.interceptor;
+
+import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper;
+import com.baomidou.mybatisplus.core.toolkit.PluginUtils;
+import com.baomidou.mybatisplus.extension.plugins.handler.MultiDataPermissionHandler;
+import com.baomidou.mybatisplus.extension.plugins.inner.BaseMultiTableInnerInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
+import lombok.extern.slf4j.Slf4j;
+import net.sf.jsqlparser.expression.Expression;
+import net.sf.jsqlparser.schema.Table;
+import net.sf.jsqlparser.statement.delete.Delete;
+import net.sf.jsqlparser.statement.select.PlainSelect;
+import net.sf.jsqlparser.statement.select.Select;
+import net.sf.jsqlparser.statement.select.SetOperationList;
+import net.sf.jsqlparser.statement.update.Update;
+import org.apache.ibatis.executor.Executor;
+import org.apache.ibatis.executor.statement.StatementHandler;
+import org.apache.ibatis.mapping.BoundSql;
+import org.apache.ibatis.mapping.MappedStatement;
+import org.apache.ibatis.mapping.SqlCommandType;
+import org.apache.ibatis.session.ResultHandler;
+import org.apache.ibatis.session.RowBounds;
+import org.ruoyi.handler.PlusDataPermissionHandler;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.List;
+
+/**
+ * 数据权限拦截器
+ *
+ * @author Lion Li
+ * @version 3.5.0
+ */
+@Slf4j
+public class PlusDataPermissionInterceptor extends BaseMultiTableInnerInterceptor implements InnerInterceptor {
+
+ private final PlusDataPermissionHandler dataPermissionHandler;
+
+ /**
+ * 构造函数,初始化 PlusDataPermissionHandler 实例
+ *
+ * @param mapperPackage 扫描的映射器包
+ */
+ public PlusDataPermissionInterceptor(String mapperPackage) {
+ this.dataPermissionHandler = new PlusDataPermissionHandler(mapperPackage);
+ }
+
+ /**
+ * 在执行查询之前,检查并处理数据权限相关逻辑
+ *
+ * @param executor MyBatis 执行器对象
+ * @param ms 映射语句对象
+ * @param parameter 方法参数
+ * @param rowBounds 分页对象
+ * @param resultHandler 结果处理器
+ * @param boundSql 绑定的 SQL 对象
+ * @throws SQLException 如果发生 SQL 异常
+ */
+ @Override
+ public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException {
+ // 检查是否需要忽略数据权限处理
+ if (InterceptorIgnoreHelper.willIgnoreDataPermission(ms.getId())) {
+ return;
+ }
+ // 检查是否缺少有效的数据权限注解
+ if (dataPermissionHandler.invalid(ms.getId())) {
+ return;
+ }
+ // 解析 sql 分配对应方法
+ PluginUtils.MPBoundSql mpBs = PluginUtils.mpBoundSql(boundSql);
+ mpBs.sql(parserSingle(mpBs.sql(), ms.getId()));
+ }
+
+ /**
+ * 在准备 SQL 语句之前,检查并处理更新和删除操作的数据权限相关逻辑
+ *
+ * @param sh MyBatis StatementHandler 对象
+ * @param connection 数据库连接对象
+ * @param transactionTimeout 事务超时时间
+ */
+ @Override
+ public void beforePrepare(StatementHandler sh, Connection connection, Integer transactionTimeout) {
+ PluginUtils.MPStatementHandler mpSh = PluginUtils.mpStatementHandler(sh);
+ MappedStatement ms = mpSh.mappedStatement();
+ // 获取 SQL 命令类型(增、删、改、查)
+ SqlCommandType sct = ms.getSqlCommandType();
+
+ // 只处理更新和删除操作的 SQL 语句
+ if (sct == SqlCommandType.UPDATE || sct == SqlCommandType.DELETE) {
+ if (InterceptorIgnoreHelper.willIgnoreDataPermission(ms.getId())) {
+ return;
+ }
+ // 检查是否缺少有效的数据权限注解
+ if (dataPermissionHandler.invalid(ms.getId())) {
+ return;
+ }
+ PluginUtils.MPBoundSql mpBs = mpSh.mPBoundSql();
+ mpBs.sql(parserMulti(mpBs.sql(), ms.getId()));
+ }
+ }
+
+ /**
+ * 处理 SELECT 查询语句中的 WHERE 条件
+ *
+ * @param select SELECT 查询对象
+ * @param index 查询语句的索引
+ * @param sql 查询语句
+ * @param obj WHERE 条件参数
+ */
+ @Override
+ protected void processSelect(Select select, int index, String sql, Object obj) {
+ if (select instanceof PlainSelect) {
+ this.setWhere((PlainSelect) select, (String) obj);
+ } else if (select instanceof SetOperationList setOperationList) {
+ List
diff --git a/ruoyi-common/ruoyi-common-pay/src/main/java/org/ruoyi/common/config/PayInit.java b/ruoyi-common/ruoyi-common-pay/src/main/java/org/ruoyi/common/config/PayInit.java
index 47126cef..16b29693 100644
--- a/ruoyi-common/ruoyi-common-pay/src/main/java/org/ruoyi/common/config/PayInit.java
+++ b/ruoyi-common/ruoyi-common-pay/src/main/java/org/ruoyi/common/config/PayInit.java
@@ -23,7 +23,6 @@ public class PayInit {
private PayConfig payConfig;
@Bean
- @Scope("singleton")
public PayConfig payConfig() {
if (payConfig == null) {
payConfig = new PayConfig();
@@ -32,7 +31,6 @@ public class PayInit {
return payConfig;
}
- @Scheduled(fixedDelay = 10000) // 每10秒检查一次
public void updatePayConfig() {
payConfig.setType("wxpay");
payConfig.setDevice("pc");
diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/ruoyi/common/satoken/utils/LoginHelper.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/ruoyi/common/satoken/utils/LoginHelper.java
index 85a66984..735a79c4 100644
--- a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/ruoyi/common/satoken/utils/LoginHelper.java
+++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/ruoyi/common/satoken/utils/LoginHelper.java
@@ -166,4 +166,16 @@ public class LoginHelper {
return isTenantAdmin(getLoginUser().getRolePermission());
}
+ /**
+ * 检查当前用户是否已登录
+ *
+ * @return 结果
+ */
+ public static boolean isLogin() {
+ try {
+ return getLoginUser() != null;
+ } catch (Exception e) {
+ return false;
+ }
+ }
}
diff --git a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/ruoyi/common/tenant/config/TenantConfig.java b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/ruoyi/common/tenant/config/TenantConfig.java
index 6bf0c56c..a5f40aec 100644
--- a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/ruoyi/common/tenant/config/TenantConfig.java
+++ b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/ruoyi/common/tenant/config/TenantConfig.java
@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
import org.ruoyi.common.core.utils.reflect.ReflectUtils;
-import org.ruoyi.common.mybatis.config.MybatisPlusConfig;
+
import org.ruoyi.common.redis.config.RedisConfig;
import org.ruoyi.common.redis.config.properties.RedissonProperties;
import org.ruoyi.common.tenant.core.TenantSaTokenDao;
@@ -17,6 +17,7 @@ import org.ruoyi.common.tenant.properties.TenantProperties;
import org.redisson.config.ClusterServersConfig;
import org.redisson.config.SingleServerConfig;
import org.redisson.spring.starter.RedissonAutoConfigurationCustomizer;
+import org.ruoyi.config.MybatisPlusConfig;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
diff --git a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/ruoyi/common/tenant/core/TenantEntity.java b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/ruoyi/common/tenant/core/TenantEntity.java
index 61f5e982..89333ebf 100644
--- a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/ruoyi/common/tenant/core/TenantEntity.java
+++ b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/ruoyi/common/tenant/core/TenantEntity.java
@@ -2,7 +2,8 @@ package org.ruoyi.common.tenant.core;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import org.ruoyi.core.domain.BaseEntity;
+
/**
* 租户基类
diff --git a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/ruoyi/common/tenant/helper/TenantHelper.java b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/ruoyi/common/tenant/helper/TenantHelper.java
index 7ce74f7c..dc72b87e 100644
--- a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/ruoyi/common/tenant/helper/TenantHelper.java
+++ b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/ruoyi/common/tenant/helper/TenantHelper.java
@@ -94,6 +94,27 @@ public class TenantHelper {
SaHolder.getStorage().set(cacheKey, tenantId);
}
+ /**
+ * 设置动态租户(一直有效 需要手动清理)
+ *
+ * 如果为未登录状态下 那么只在当前线程内生效
+ *
+ * @param tenantId 租户id
+ * @param global 是否全局生效
+ */
+ public static void setDynamic(String tenantId, boolean global) {
+ if (!isEnable()) {
+ return;
+ }
+ if (!LoginHelper.isLogin() || !global) {
+ TEMP_DYNAMIC_TENANT.set(tenantId);
+ return;
+ }
+ String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
+ RedisUtils.setCacheObject(cacheKey, tenantId);
+ SaHolder.getStorage().set(cacheKey, tenantId);
+ }
+
/**
* 获取动态租户(一直有效 需要手动清理)
*
@@ -137,4 +158,18 @@ public class TenantHelper {
return tenantId;
}
+ /**
+ * 在动态租户中执行
+ *
+ * @param handle 处理执行方法
+ */
+ public static void dynamic(String tenantId, Runnable handle) {
+ setDynamic(tenantId);
+ try {
+ handle.run();
+ } finally {
+ clearDynamic();
+ }
+ }
+
}
diff --git a/ruoyi-common/ruoyi-common-web/src/main/java/org/ruoyi/common/web/interceptor/PlusWebInvokeTimeInterceptor.java b/ruoyi-common/ruoyi-common-web/src/main/java/org/ruoyi/common/web/interceptor/PlusWebInvokeTimeInterceptor.java
index f728df30..34b0ed0b 100644
--- a/ruoyi-common/ruoyi-common-web/src/main/java/org/ruoyi/common/web/interceptor/PlusWebInvokeTimeInterceptor.java
+++ b/ruoyi-common/ruoyi-common-web/src/main/java/org/ruoyi/common/web/interceptor/PlusWebInvokeTimeInterceptor.java
@@ -36,20 +36,6 @@ public class PlusWebInvokeTimeInterceptor implements HandlerInterceptor {
String url = request.getMethod() + " " + request.getRequestURI();
String domainName = request.getServerName();
log.info("域名信息:{}",domainName);
-
- String requestURI = request.getRequestURI();
- List urls = whitelistUrls();
- boolean isWhitelisted = urls.stream().anyMatch(requestURI::startsWith);
-
- if (!isWhitelisted){
- // 根据授权编号查询激活状态
-// ConfigService configService = SpringUtils.context().getBean(ConfigService.class);
-// String authNo = configService.getConfigValue("sys", "authcode");
-// if(!configService.checkAuth(authNo,domainName)){
-// throw new BaseException("系统未激活,请联系管理员授权");
-// }
- }
-
// 打印请求参数
if (isJsonRequest(request)) {
String jsonParam = "";
@@ -67,7 +53,6 @@ public class PlusWebInvokeTimeInterceptor implements HandlerInterceptor {
log.debug("[PLUS]开始请求 => URL[{}],无参数", url);
}
}
-
StopWatch stopWatch = new StopWatch();
invokeTimeTL.set(stopWatch);
stopWatch.start();
@@ -99,15 +84,4 @@ public class PlusWebInvokeTimeInterceptor implements HandlerInterceptor {
}
return false;
}
-
- // 授权白名单
- public List whitelistUrls() {
- return Arrays.asList(
- "/chat/config",
- "/pay",
- "/weixin",
- "/user/qrcode",
- "/user/login/qrcode"
- );
- }
}
diff --git a/ruoyi-common/ruoyi-common-wechat/pom.xml b/ruoyi-common/ruoyi-common-wechat/pom.xml
index 26ac86cb..885af26d 100644
--- a/ruoyi-common/ruoyi-common-wechat/pom.xml
+++ b/ruoyi-common/ruoyi-common-wechat/pom.xml
@@ -8,9 +8,11 @@
${revision}
../pom.xml
+
ruoyi-common-wechat
1.0.0
ruoyi-common-wechat 微信服务
+
UTF-8
@@ -21,6 +23,7 @@
jfinal
3.5
+
com.jfinal
cos
@@ -44,16 +47,19 @@
emoji-java
3.2.0
+
javax.activation
activation
1.1.1
+
net.mamoe
mirai-core-jvm
2.16.0
+
org.ruoyi
ruoyi-common-json
@@ -64,5 +70,6 @@
fastjson
1.2.31
+
diff --git a/ruoyi-common/ruoyi-common-wechat/src/main/java/org/ruoyi/common/wechat/web/enums/KeyMsgValueType.java b/ruoyi-common/ruoyi-common-wechat/src/main/java/org/ruoyi/common/wechat/web/enums/KeyMsgValueType.java
index c28609e0..c80f502c 100644
--- a/ruoyi-common/ruoyi-common-wechat/src/main/java/org/ruoyi/common/wechat/web/enums/KeyMsgValueType.java
+++ b/ruoyi-common/ruoyi-common-wechat/src/main/java/org/ruoyi/common/wechat/web/enums/KeyMsgValueType.java
@@ -3,7 +3,7 @@ package org.ruoyi.common.wechat.web.enums;
import com.jfinal.plugin.activerecord.Record;
import java.util.*;
-public enum KeyMsgValueType {
+public enum KeyMsgValueType {
IMG("IMG", "图片"),
FILE("FILE", "文件"),
diff --git a/ruoyi-extend/pom.xml b/ruoyi-extend/pom.xml
new file mode 100644
index 00000000..3fef2b70
--- /dev/null
+++ b/ruoyi-extend/pom.xml
@@ -0,0 +1,20 @@
+
+
+ 4.0.0
+
+ ruoyi-ai
+ org.ruoyi
+ ${revision}
+ ../pom.xml
+
+
+ ruoyi-extend
+ pom
+
+
+ ruoyi-mcp-server
+
+
+
diff --git a/ruoyi-extend/ruoyi-mcp-server/pom.xml b/ruoyi-extend/ruoyi-mcp-server/pom.xml
new file mode 100644
index 00000000..77e3da3b
--- /dev/null
+++ b/ruoyi-extend/ruoyi-mcp-server/pom.xml
@@ -0,0 +1,76 @@
+
+
+ 4.0.0
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 3.4.4
+
+
+ org.ruoyi
+ ruoyi-mcp-server
+ 0.0.1-SNAPSHOT
+ ruoyi-mcp-serve
+ ruoyi-mcp-serve
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 17
+ 1.0.0-M7
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.ai
+ spring-ai-starter-mcp-server-webmvc
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+
+
+
+
+
+ org.springframework.ai
+ spring-ai-bom
+ ${spring-ai.version}
+ pom
+ import
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
diff --git a/ruoyi-extend/ruoyi-mcp-server/src/main/java/org/ruoyi/mcpserve/RuoyiMcpServeApplication.java b/ruoyi-extend/ruoyi-mcp-server/src/main/java/org/ruoyi/mcpserve/RuoyiMcpServeApplication.java
new file mode 100644
index 00000000..54a01deb
--- /dev/null
+++ b/ruoyi-extend/ruoyi-mcp-server/src/main/java/org/ruoyi/mcpserve/RuoyiMcpServeApplication.java
@@ -0,0 +1,25 @@
+package org.ruoyi.mcpserve;
+
+import org.ruoyi.mcpserve.service.ToolService;
+import org.springframework.ai.tool.ToolCallbackProvider;
+import org.springframework.ai.tool.method.MethodToolCallbackProvider;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
+
+/**
+ * @author ageer
+ */
+@SpringBootApplication
+public class RuoyiMcpServeApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(RuoyiMcpServeApplication.class, args);
+ }
+
+ @Bean
+ public ToolCallbackProvider systemTools(ToolService toolService) {
+ return MethodToolCallbackProvider.builder().toolObjects(toolService).build();
+ }
+
+}
diff --git a/ruoyi-extend/ruoyi-mcp-server/src/main/java/org/ruoyi/mcpserve/service/ToolService.java b/ruoyi-extend/ruoyi-mcp-server/src/main/java/org/ruoyi/mcpserve/service/ToolService.java
new file mode 100644
index 00000000..a12b1d20
--- /dev/null
+++ b/ruoyi-extend/ruoyi-mcp-server/src/main/java/org/ruoyi/mcpserve/service/ToolService.java
@@ -0,0 +1,34 @@
+package org.ruoyi.mcpserve.service;
+
+import org.springframework.ai.tool.annotation.Tool;
+import org.springframework.ai.tool.annotation.ToolParam;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.UUID;
+
+
+/**
+ * @author ageer
+ */
+@Service
+public class ToolService {
+
+ @Tool(description = "获取一个指定前缀的随机数")
+ public String add(@ToolParam(description = "字符前缀") String prefix) {
+ // 定义日期格式
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyMMdd");
+ //根据当前时间获取yyMMdd格式的时间字符串
+ String format = LocalDate.now().format(formatter);
+ //生成随机数
+ String replace = prefix + UUID.randomUUID().toString().replace("-", "");
+ return format + replace;
+ }
+
+ @Tool(description = "获取当前时间")
+ public LocalDateTime getCurrentTime() {
+ return LocalDateTime.now();
+ }
+}
diff --git a/ruoyi-extend/ruoyi-mcp-server/src/main/resources/application.yml b/ruoyi-extend/ruoyi-mcp-server/src/main/resources/application.yml
new file mode 100644
index 00000000..f5ced666
--- /dev/null
+++ b/ruoyi-extend/ruoyi-mcp-server/src/main/resources/application.yml
@@ -0,0 +1,10 @@
+server:
+ port: 8081
+spring:
+ ai:
+ mcp:
+ server:
+ name: ruoyi-mcp-serve
+ version: 1.0.0
+
+
diff --git a/ruoyi-modules-api/pom.xml b/ruoyi-modules-api/pom.xml
new file mode 100644
index 00000000..a3f0ef00
--- /dev/null
+++ b/ruoyi-modules-api/pom.xml
@@ -0,0 +1,85 @@
+
+
+ 4.0.0
+
+ ruoyi-ai
+ org.ruoyi
+ ${revision}
+ ../pom.xml
+
+
+ ruoyi-modules-api
+ pom
+
+
+ ruoyi-chat-api
+ ruoyi-knowledge-api
+ ruoyi-system-api
+
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+
+ org.ruoyi
+ ruoyi-common-core
+
+
+
+
+ org.ruoyi
+ ruoyi-common-mybatis
+
+
+
+
+ org.ruoyi
+ ruoyi-common-sensitive
+
+
+
+
+ org.ruoyi
+ ruoyi-common-excel
+
+
+
+
+ org.ruoyi
+ ruoyi-common-tenant
+
+
+
+
+ org.ruoyi
+ ruoyi-common-translation
+
+
+
+
+ org.ruoyi
+ ruoyi-common-log
+
+
+
+
+ org.ruoyi
+ ruoyi-common-oss
+
+
+
+ mysql
+ mysql-connector-java
+
+
+
+
+
+
diff --git a/ruoyi-modules-api/ruoyi-chat-api/pom.xml b/ruoyi-modules-api/ruoyi-chat-api/pom.xml
new file mode 100644
index 00000000..e2506bad
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/pom.xml
@@ -0,0 +1,76 @@
+
+
+ 4.0.0
+
+ org.ruoyi
+ ruoyi-modules-api
+ ${revision}
+ ../pom.xml
+
+
+ ruoyi-chat-api
+
+
+ 17
+ 17
+ UTF-8
+ 1.0.0-M7
+
+
+
+
+
+ org.springframework.ai
+ spring-ai-bom
+ ${spring-ai.version}
+ pom
+ import
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ org.ruoyi
+ ruoyi-common-chat
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.ai
+ spring-ai-starter-mcp-client
+
+
+
+ org.springframework.ai
+ spring-ai-starter-model-openai
+
+
+
+
+
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAgentManage.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAgentManage.java
new file mode 100644
index 00000000..4bc6b854
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAgentManage.java
@@ -0,0 +1,86 @@
+package org.ruoyi.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.ruoyi.core.domain.BaseEntity;
+
+import java.io.Serial;
+
+/**
+ * 智能体管理对象 chat_agent_manage
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("chat_agent_manage")
+public class ChatAgentManage extends BaseEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键id
+ */
+ @TableId(value = "id")
+ private Long id;
+
+ /**
+ * 应用名称
+ */
+ private String appName;
+
+ /**
+ * 应用类型
+ */
+ private String appType;
+
+ /**
+ * 应用头像
+ */
+ private String appIcon;
+
+ /**
+ * 应用描述
+ */
+ private String appDescription;
+
+ /**
+ * 开场介绍
+ */
+ private String introduction;
+
+ /**
+ * 模型
+ */
+ private String model;
+
+ /**
+ * 对话可选模型
+ */
+ private String conversationModel;
+
+ /**
+ * 应用设定
+ */
+ private String applicationSettings;
+
+ /**
+ * 插件id
+ */
+ private String pluginId;
+
+ /**
+ * 知识库id
+ */
+ private Long knowledgeId;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatAppStore.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAppStore.java
similarity index 67%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatAppStore.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAppStore.java
index b98cbeae..cf862d37 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatAppStore.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAppStore.java
@@ -1,18 +1,17 @@
-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 com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import org.ruoyi.core.domain.BaseEntity;
import java.io.Serial;
/**
- * 应用市场
+ * 应用商店对象 chat_app_store
*
- * @author Lion Li
- * @date 2024-03-19
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@@ -23,7 +22,7 @@ public class ChatAppStore extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
- * 主键
+ * id
*/
@TableId(value = "id")
private Long id;
@@ -39,16 +38,15 @@ public class ChatAppStore extends BaseEntity {
private String description;
/**
- * 头像
+ * logo
*/
private String avatar;
/**
- * 应用地址
+ * 地址
*/
private String appUrl;
-
/**
* 备注
*/
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatGpts.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatGpts.java
similarity index 67%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatGpts.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatGpts.java
index 8734eaa0..f1cadc72 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatGpts.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatGpts.java
@@ -1,20 +1,17 @@
-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 com.baomidou.mybatisplus.annotation.Version;
+import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import org.ruoyi.core.domain.BaseEntity;
import java.io.Serial;
/**
- * gpts管理对象 chat_gpts
+ * 应用管理对象 chat_gpts
*
- * @author Lion Li
- * @date 2024-07-09
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@@ -63,12 +60,12 @@ public class ChatGpts extends BaseEntity {
/**
* 点赞
*/
- private String useCnt;
+ private Long useCnt;
/**
* 差评
*/
- private String bad;
+ private Long bad;
/**
* 类型
@@ -97,15 +94,5 @@ public class ChatGpts extends BaseEntity {
*/
private String updateIp;
- /**
- * 模型名称
- */
- private String modelName;
-
-
- /**
- * 模型system
- */
- private String systemPrompt;
}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatMessage.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatMessage.java
new file mode 100644
index 00000000..691f98f0
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatMessage.java
@@ -0,0 +1,68 @@
+package org.ruoyi.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.ruoyi.core.domain.BaseEntity;
+
+import java.math.BigDecimal;
+
+import java.io.Serial;
+
+/**
+ * 聊天消息对象 chat_message
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("chat_message")
+public class ChatMessage extends BaseEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+
+ /**
+ * 用户id
+ */
+ private Long userId;
+
+ /**
+ * 消息内容
+ */
+ private String content;
+
+ /**
+ * 对话角色
+ */
+ private String role;
+
+ /**
+ * 扣除金额
+ */
+ private BigDecimal deductCost;
+
+ /**
+ * 累计 Tokens
+ */
+ private Long totalTokens;
+
+ /**
+ * 模型名称
+ */
+ private String modelName;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysModel.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatModel.java
similarity index 68%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysModel.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatModel.java
index 789bca26..f67e7657 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysModel.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatModel.java
@@ -1,24 +1,23 @@
-package org.ruoyi.system.domain;
+package org.ruoyi.domain;
-import com.alibaba.excel.annotation.ExcelProperty;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+
+import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import org.ruoyi.core.domain.BaseEntity;
import java.io.Serial;
/**
- * 系统模型对象 sys_model
+ * 聊天模型对象 chat_model
*
- * @author Lion Li
- * @date 2024-04-04
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("chat_model")
-public class SysModel extends BaseEntity {
+public class ChatModel extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
@@ -32,7 +31,6 @@ public class SysModel extends BaseEntity {
/**
* 模型分类
*/
- @ExcelProperty(value = "模型分类")
private String category;
/**
@@ -48,7 +46,7 @@ public class SysModel extends BaseEntity {
/**
* 模型价格
*/
- private double modelPrice;
+ private Long modelPrice;
/**
* 计费类型
@@ -60,7 +58,6 @@ public class SysModel extends BaseEntity {
*/
private String modelShow;
-
/**
* 系统提示词
*/
@@ -81,4 +78,5 @@ public class SysModel extends BaseEntity {
*/
private String remark;
+
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysPackagePlan.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPackagePlan.java
similarity index 67%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysPackagePlan.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPackagePlan.java
index 5bfbe80f..ddba6c0f 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysPackagePlan.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPackagePlan.java
@@ -1,24 +1,24 @@
-package org.ruoyi.system.domain;
+package org.ruoyi.domain;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import org.ruoyi.core.domain.BaseEntity;
-import java.io.Serial;
import java.math.BigDecimal;
+import java.io.Serial;
+
/**
- * 套餐管理对象 sys_package_plan
+ * 套餐管理对象 chat_package_plan
*
- * @author Lion Li
- * @date 2024-05-05
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("chat_package_plan")
-public class SysPackagePlan extends BaseEntity {
+public class ChatPackagePlan extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/PaymentOrder.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPayOrder.java
similarity index 79%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/PaymentOrder.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPayOrder.java
index 6f50b36e..13a22da1 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/PaymentOrder.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPayOrder.java
@@ -1,23 +1,24 @@
-package org.ruoyi.system.domain;
+package org.ruoyi.domain;
import com.baomidou.mybatisplus.annotation.*;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import org.ruoyi.core.domain.BaseEntity;
+
import java.math.BigDecimal;
import java.io.Serial;
/**
- * 支付订单对象 payment_orders
+ * 支付订单对象 chat_pay_order
*
- * @author Lion Li
- * @date 2024-04-16
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("chat_pay_order")
-public class PaymentOrder extends BaseEntity {
+public class ChatPayOrder extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatPlugin.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPlugin.java
similarity index 85%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatPlugin.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPlugin.java
index 768c6678..c2bf55fb 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatPlugin.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPlugin.java
@@ -1,9 +1,9 @@
-package org.ruoyi.system.domain;
+package org.ruoyi.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import org.ruoyi.core.domain.BaseEntity;
import java.io.Serial;
@@ -11,7 +11,7 @@ import java.io.Serial;
* 插件管理对象 chat_plugin
*
* @author ageerle
- * @date 2025-03-30
+ * @date 2025-04-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/WxRobConfig.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatRobConfig.java
similarity index 73%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/WxRobConfig.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatRobConfig.java
index 490a3e51..b32f0ab0 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/WxRobConfig.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatRobConfig.java
@@ -1,22 +1,22 @@
-package org.ruoyi.system.domain;
+package org.ruoyi.domain;
import com.baomidou.mybatisplus.annotation.*;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import org.ruoyi.core.domain.BaseEntity;
import java.io.Serial;
/**
- * 微信机器人对象 wx_rob_config
+ * 聊天机器人配置对象 chat_rob_config
*
- * @author Lion Li
- * @date 2024-05-01
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("chat_rob_config")
-public class WxRobConfig extends BaseEntity {
+public class ChatRobConfig extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
@@ -28,7 +28,7 @@ public class WxRobConfig extends BaseEntity {
private Long id;
/**
- * 用户id
+ * 所属用户
*/
private Long userId;
@@ -42,11 +42,6 @@ public class WxRobConfig extends BaseEntity {
*/
private String uniqueKey;
- /**
- * 备注(微信号)
- */
- private String remark;
-
/**
* 默认好友回复开关
*/
@@ -57,10 +52,15 @@ public class WxRobConfig extends BaseEntity {
*/
private String defaultGroup;
-
/**
- * 机器启用1禁用0
+ * 机器人状态 0正常 1启用
*/
private String enable;
+ /**
+ * 备注
+ */
+ private String remark;
+
+
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatToken.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatToken.java
similarity index 96%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatToken.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatToken.java
index 865762f7..e1d04ead 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatToken.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatToken.java
@@ -1,11 +1,11 @@
-package org.ruoyi.system.domain;
+package org.ruoyi.domain;
import com.baomidou.mybatisplus.annotation.TableName;
-import org.ruoyi.common.core.validate.AddGroup;
-import org.ruoyi.common.core.validate.EditGroup;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
+import org.ruoyi.common.core.validate.AddGroup;
+import org.ruoyi.common.core.validate.EditGroup;
import java.io.Serial;
import java.io.Serializable;
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatUsageToken.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatUsageToken.java
new file mode 100644
index 00000000..0d66b692
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatUsageToken.java
@@ -0,0 +1,51 @@
+package org.ruoyi.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.ruoyi.core.domain.BaseEntity;
+
+import java.io.Serial;
+
+/**
+ * 用户token使用详情对象 chat_usage_token
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("chat_usage_token")
+public class ChatUsageToken extends BaseEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+
+ /**
+ * 用户
+ */
+ private Long userId;
+
+ /**
+ * 待结算token
+ */
+ private Integer token;
+
+ /**
+ * 模型名称
+ */
+ private String modelName;
+
+ /**
+ * 累计使用token
+ */
+ private String totalToken;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatVisitorUsage.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVisitorUsage.java
similarity index 93%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatVisitorUsage.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVisitorUsage.java
index 3b203811..8598030e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatVisitorUsage.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVisitorUsage.java
@@ -1,4 +1,4 @@
-package org.ruoyi.system.domain;
+package org.ruoyi.domain;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.Version;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import org.ruoyi.core.domain.BaseEntity;
import java.io.Serial;
import java.io.Serializable;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatVoucher.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVoucher.java
similarity index 87%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatVoucher.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVoucher.java
index ec4b6313..11548317 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatVoucher.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVoucher.java
@@ -1,9 +1,10 @@
-package org.ruoyi.system.domain;
+package org.ruoyi.domain;
import com.baomidou.mybatisplus.annotation.*;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import org.ruoyi.core.domain.BaseEntity;
+
import java.math.BigDecimal;
import java.io.Serial;
@@ -11,8 +12,8 @@ import java.io.Serial;
/**
* 用户兑换记录对象 chat_voucher
*
- * @author Lion Li
- * @date 2024-05-03
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@@ -28,11 +29,6 @@ public class ChatVoucher extends BaseEntity {
@TableId(value = "id")
private Long id;
- /**
- * 用户id
- */
- private Long userId;
-
/**
* 兑换码
*/
@@ -43,6 +39,11 @@ public class ChatVoucher extends BaseEntity {
*/
private BigDecimal amount;
+ /**
+ * 用户id
+ */
+ private Long userId;
+
/**
* 兑换状态
*/
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAgentManageBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAgentManageBo.java
new file mode 100644
index 00000000..e12c77c0
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAgentManageBo.java
@@ -0,0 +1,96 @@
+package org.ruoyi.domain.bo;
+
+import org.ruoyi.common.core.validate.AddGroup;
+import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.domain.ChatAgentManage;
+import org.ruoyi.core.domain.BaseEntity;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 智能体管理业务对象 chat_agent_manage
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ChatAgentManage.class, reverseConvertGenerate = false)
+public class ChatAgentManageBo extends BaseEntity {
+
+ /**
+ * 主键id
+ */
+ @NotNull(message = "主键id不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 应用名称
+ */
+ @NotBlank(message = "应用名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String appName;
+
+ /**
+ * 应用类型
+ */
+ @NotBlank(message = "应用类型不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String appType;
+
+ /**
+ * 应用头像
+ */
+ @NotBlank(message = "应用头像不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String appIcon;
+
+ /**
+ * 应用描述
+ */
+ @NotBlank(message = "应用描述不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String appDescription;
+
+ /**
+ * 开场介绍
+ */
+ @NotBlank(message = "开场介绍不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String introduction;
+
+ /**
+ * 模型
+ */
+ @NotBlank(message = "模型不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String model;
+
+ /**
+ * 对话可选模型
+ */
+ @NotBlank(message = "对话可选模型不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String conversationModel;
+
+ /**
+ * 应用设定
+ */
+ @NotBlank(message = "应用设定不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String applicationSettings;
+
+ /**
+ * 插件id
+ */
+ @NotBlank(message = "插件id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String pluginId;
+
+ /**
+ * 知识库id
+ */
+ @NotNull(message = "知识库id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long knowledgeId;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAppStoreBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAppStoreBo.java
new file mode 100644
index 00000000..31413305
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAppStoreBo.java
@@ -0,0 +1,60 @@
+package org.ruoyi.domain.bo;
+
+import org.ruoyi.common.core.validate.AddGroup;
+import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.domain.ChatAppStore;
+import org.ruoyi.core.domain.BaseEntity;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 应用商店业务对象 chat_app_store
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ChatAppStore.class, reverseConvertGenerate = false)
+public class ChatAppStoreBo extends BaseEntity {
+
+ /**
+ * id
+ */
+ @NotNull(message = "id不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 名称
+ */
+ @NotBlank(message = "名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String name;
+
+ /**
+ * 描述
+ */
+ @NotBlank(message = "描述不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String description;
+
+ /**
+ * logo
+ */
+ @NotBlank(message = "logo不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String avatar;
+
+ /**
+ * 地址
+ */
+ @NotBlank(message = "地址不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String appUrl;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatGptsBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatGptsBo.java
similarity index 54%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatGptsBo.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatGptsBo.java
index dd08528f..219fae3f 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatGptsBo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatGptsBo.java
@@ -1,20 +1,19 @@
-package org.ruoyi.system.domain.bo;
+package org.ruoyi.domain.bo;
-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.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;
+import org.ruoyi.core.domain.BaseEntity;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
/**
- * gpts管理业务对象 chat_gpts
+ * 应用管理业务对象 chat_gpts
*
- * @author Lion Li
- * @date 2024-07-09
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@@ -42,56 +41,56 @@ public class ChatGptsBo extends BaseEntity {
/**
* gpts图标
*/
+ @NotBlank(message = "gpts图标不能为空", groups = { AddGroup.class, EditGroup.class })
private String logo;
/**
* gpts描述
*/
+ @NotBlank(message = "gpts描述不能为空", groups = { AddGroup.class, EditGroup.class })
private String info;
/**
* 作者id
*/
+ @NotBlank(message = "作者id不能为空", groups = { AddGroup.class, EditGroup.class })
private String authorId;
/**
* 作者名称
*/
+ @NotBlank(message = "作者名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String authorName;
/**
* 点赞
*/
- private String useCnt;
+ @NotNull(message = "点赞不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long useCnt;
/**
* 差评
*/
- private String bad;
+ @NotNull(message = "差评不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long bad;
/**
* 类型
*/
+ @NotBlank(message = "类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String type;
/**
* 备注
*/
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String remark;
/**
* 更新IP
*/
+ @NotBlank(message = "更新IP不能为空", groups = { AddGroup.class, EditGroup.class })
private String updateIp;
- /**
- * 模型名称
- */
- private String modelName;
-
- /**
- * 模型system
- */
- private String systemPrompt;
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatMessage.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatMessageBo.java
similarity index 58%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatMessage.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatMessageBo.java
index b60a0870..484d0415 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatMessage.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatMessageBo.java
@@ -1,29 +1,26 @@
-package org.ruoyi.system.domain;
+package org.ruoyi.domain.bo;
-import com.baomidou.mybatisplus.annotation.TableName;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
import org.ruoyi.common.core.validate.AddGroup;
import org.ruoyi.common.core.validate.EditGroup;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import org.ruoyi.core.domain.BaseEntity;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import org.ruoyi.domain.ChatMessage;
-import java.io.Serial;
+import java.math.BigDecimal;
/**
- * 聊天消息对象 chat_message
+ * 聊天消息业务对象 chat_message
*
- * @author Lion Li
- * @date 2023-11-26
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
-@TableName("chat_message")
-public class ChatMessage extends BaseEntity {
-
- @Serial
- private static final long serialVersionUID = 1L;
+@AutoMapper(target = ChatMessage.class, reverseConvertGenerate = false)
+public class ChatMessageBo extends BaseEntity {
/**
* 主键
@@ -32,16 +29,10 @@ public class ChatMessage extends BaseEntity {
private Long id;
/**
- * 用户ID
+ * 用户id
*/
- @NotBlank(message = "用户ID", groups = { AddGroup.class, EditGroup.class })
- private Long UserId;
-
- /**
- * 对话角色
- */
- private String role;
-
+ @NotNull(message = "用户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long userId;
/**
* 消息内容
@@ -49,10 +40,16 @@ public class ChatMessage extends BaseEntity {
@NotBlank(message = "消息内容不能为空", groups = { AddGroup.class, EditGroup.class })
private String content;
+ /**
+ * 对话角色
+ */
+ @NotBlank(message = "对话角色不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String role;
/**
- * 扣除费用
+ * 扣除金额
*/
+ @NotNull(message = "扣除金额不能为空", groups = { AddGroup.class, EditGroup.class })
private Double deductCost;
/**
@@ -73,4 +70,5 @@ public class ChatMessage extends BaseEntity {
@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String remark;
+
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysModelBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatModelBo.java
similarity index 61%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysModelBo.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatModelBo.java
index 6b0a160c..9bd61752 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysModelBo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatModelBo.java
@@ -1,26 +1,24 @@
-package org.ruoyi.system.domain.bo;
+package org.ruoyi.domain.bo;
-import com.alibaba.excel.annotation.ExcelProperty;
-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.core.validate.AddGroup;
import org.ruoyi.common.core.validate.EditGroup;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
-import org.ruoyi.system.domain.SysModel;
+import org.ruoyi.domain.ChatModel;
+import org.ruoyi.core.domain.BaseEntity;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
/**
- * 系统模型业务对象 sys_model
+ * 聊天模型业务对象 chat_model
*
- * @author Lion Li
- * @date 2024-04-04
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
-@AutoMapper(target = SysModel.class, reverseConvertGenerate = false)
-public class SysModelBo extends BaseEntity {
+@AutoMapper(target = ChatModel.class, reverseConvertGenerate = false)
+public class ChatModelBo extends BaseEntity {
/**
* 主键
@@ -31,7 +29,7 @@ public class SysModelBo extends BaseEntity {
/**
* 模型分类
*/
- @ExcelProperty(value = "模型分类")
+ @NotBlank(message = "模型分类不能为空", groups = { AddGroup.class, EditGroup.class })
private String category;
/**
@@ -40,7 +38,6 @@ public class SysModelBo extends BaseEntity {
@NotBlank(message = "模型名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String modelName;
-
/**
* 模型描述
*/
@@ -51,34 +48,38 @@ public class SysModelBo extends BaseEntity {
* 模型价格
*/
@NotNull(message = "模型价格不能为空", groups = { AddGroup.class, EditGroup.class })
- private double modelPrice;
+ private Long modelPrice;
/**
- * 计费类型 (1 token扣费; 2 次数扣费 )
+ * 计费类型
*/
@NotBlank(message = "计费类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String modelType;
/**
- * 模型状态 (0 显示; 1 隐藏 )
+ * 是否显示
*/
+ @NotBlank(message = "是否显示不能为空", groups = { AddGroup.class, EditGroup.class })
private String modelShow;
-
/**
* 系统提示词
*/
+ @NotBlank(message = "系统提示词不能为空", groups = { AddGroup.class, EditGroup.class })
private String systemPrompt;
/**
* 请求地址
*/
+ @NotBlank(message = "请求地址不能为空", groups = { AddGroup.class, EditGroup.class })
private String apiHost;
/**
- * 请求密钥
+ * 密钥
*/
+ @NotBlank(message = "密钥不能为空", groups = { AddGroup.class, EditGroup.class })
private String apiKey;
+
/**
* 备注
*/
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysPackagePlanBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPackagePlanBo.java
similarity index 78%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysPackagePlanBo.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPackagePlanBo.java
index 44f182b2..3a21f0f7 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysPackagePlanBo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPackagePlanBo.java
@@ -1,9 +1,9 @@
-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.SysPackagePlan;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import org.ruoyi.domain.ChatPackagePlan;
+import org.ruoyi.core.domain.BaseEntity;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,15 +11,15 @@ import jakarta.validation.constraints.*;
import java.math.BigDecimal;
/**
- * 套餐管理业务对象 sys_package_plan
+ * 套餐管理业务对象 chat_package_plan
*
- * @author Lion Li
- * @date 2024-05-05
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
-@AutoMapper(target = SysPackagePlan.class, reverseConvertGenerate = false)
-public class SysPackagePlanBo extends BaseEntity {
+@AutoMapper(target = ChatPackagePlan.class, reverseConvertGenerate = false)
+public class ChatPackagePlanBo extends BaseEntity {
/**
* 主键
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/PaymentOrdersBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPayOrderBo.java
similarity index 78%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/PaymentOrdersBo.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPayOrderBo.java
index e49de79a..e24cba38 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/PaymentOrdersBo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPayOrderBo.java
@@ -1,27 +1,25 @@
-package org.ruoyi.system.domain.bo;
+package org.ruoyi.domain.bo;
-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.core.validate.AddGroup;
import org.ruoyi.common.core.validate.EditGroup;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
-import org.ruoyi.system.domain.PaymentOrder;
-
+import org.ruoyi.domain.ChatPayOrder;
+import org.ruoyi.core.domain.BaseEntity;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
import java.math.BigDecimal;
/**
- * 支付订单业务对象 payment_orders
+ * 支付订单业务对象 chat_pay_order
*
- * @author Lion Li
- * @date 2024-04-16
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
-@AutoMapper(target = PaymentOrder.class, reverseConvertGenerate = false)
-public class PaymentOrdersBo extends BaseEntity {
+@AutoMapper(target = ChatPayOrder.class, reverseConvertGenerate = false)
+public class ChatPayOrderBo extends BaseEntity {
/**
* 主键
@@ -72,5 +70,4 @@ public class PaymentOrdersBo extends BaseEntity {
private String remark;
-
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatPluginBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPluginBo.java
similarity index 87%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatPluginBo.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPluginBo.java
index 141215e6..7c36ddcc 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatPluginBo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPluginBo.java
@@ -1,9 +1,9 @@
-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 org.ruoyi.domain.ChatPlugin;
+import org.ruoyi.core.domain.BaseEntity;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,7 +13,7 @@ import jakarta.validation.constraints.*;
* 插件管理业务对象 chat_plugin
*
* @author ageerle
- * @date 2025-03-30
+ * @date 2025-04-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatRobConfigBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatRobConfigBo.java
new file mode 100644
index 00000000..9e873dde
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatRobConfigBo.java
@@ -0,0 +1,72 @@
+package org.ruoyi.domain.bo;
+
+import org.ruoyi.common.core.validate.AddGroup;
+import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.domain.ChatRobConfig;
+import org.ruoyi.core.domain.BaseEntity;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 聊天机器人配置业务对象 chat_rob_config
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ChatRobConfig.class, reverseConvertGenerate = false)
+public class ChatRobConfigBo extends BaseEntity {
+
+ /**
+ * 主键
+ */
+ @NotNull(message = "主键不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 所属用户
+ */
+ @NotNull(message = "所属用户不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long userId;
+
+ /**
+ * 机器人名称
+ */
+ @NotBlank(message = "机器人名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String botName;
+
+ /**
+ * 机器唯一码
+ */
+ @NotBlank(message = "机器唯一码不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String uniqueKey;
+
+ /**
+ * 默认好友回复开关
+ */
+ @NotBlank(message = "默认好友回复开关不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String defaultFriend;
+
+ /**
+ * 默认群回复开关
+ */
+ @NotBlank(message = "默认群回复开关不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String defaultGroup;
+
+ /**
+ * 机器人状态 0正常 1启用
+ */
+ @NotBlank(message = "机器人状态 0正常 1启用不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String enable;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatUsageTokenBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatUsageTokenBo.java
new file mode 100644
index 00000000..f0fbe4cc
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatUsageTokenBo.java
@@ -0,0 +1,54 @@
+package org.ruoyi.domain.bo;
+
+import org.ruoyi.common.core.validate.AddGroup;
+import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.domain.ChatUsageToken;
+import org.ruoyi.core.domain.BaseEntity;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 用户token使用详情业务对象 chat_usage_token
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ChatUsageToken.class, reverseConvertGenerate = false)
+public class ChatUsageTokenBo extends BaseEntity {
+
+ /**
+ * 主键
+ */
+ @NotNull(message = "主键不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 用户
+ */
+ @NotNull(message = "用户不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long userId;
+
+ /**
+ * 待结算token
+ */
+ @NotNull(message = "待结算token不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Integer token;
+
+ /**
+ * 模型名称
+ */
+ @NotBlank(message = "模型名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String modelName;
+
+ /**
+ * 累计使用token
+ */
+ @NotBlank(message = "累计使用token不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String totalToken;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatVisitorUsageBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVisitorUsageBo.java
similarity index 91%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatVisitorUsageBo.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVisitorUsageBo.java
index 6518350d..38e836fc 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatVisitorUsageBo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVisitorUsageBo.java
@@ -1,4 +1,4 @@
-package org.ruoyi.system.domain.bo;
+package org.ruoyi.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
@@ -7,8 +7,9 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import org.ruoyi.common.core.validate.AddGroup;
import org.ruoyi.common.core.validate.EditGroup;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
-import org.ruoyi.system.domain.ChatVisitorUsage;
+import org.ruoyi.core.domain.BaseEntity;
+import org.ruoyi.domain.ChatVisitorUsage;
+
/**
* 访客管理业务对象 chat_visitor_usage
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatVoucherBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVoucherBo.java
similarity index 55%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatVoucherBo.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVoucherBo.java
index 98ff3c72..ce2c4656 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatVoucherBo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVoucherBo.java
@@ -1,21 +1,20 @@
-package org.ruoyi.system.domain.bo;
+package org.ruoyi.domain.bo;
-import io.github.linpeilie.annotations.AutoMapper;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
import org.ruoyi.common.core.validate.AddGroup;
import org.ruoyi.common.core.validate.EditGroup;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
-import org.ruoyi.system.domain.ChatVoucher;
-
+import org.ruoyi.domain.ChatVoucher;
+import org.ruoyi.core.domain.BaseEntity;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
import java.math.BigDecimal;
/**
* 用户兑换记录业务对象 chat_voucher
*
- * @author Lion Li
- * @date 2024-05-03
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@@ -28,14 +27,10 @@ public class ChatVoucherBo extends BaseEntity {
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
private Long id;
- /**
- * 用户id
- */
- private Long userId;
-
/**
* 兑换码
*/
+ @NotBlank(message = "兑换码不能为空", groups = { AddGroup.class, EditGroup.class })
private String code;
/**
@@ -44,24 +39,34 @@ public class ChatVoucherBo extends BaseEntity {
@NotNull(message = "兑换金额不能为空", groups = { AddGroup.class, EditGroup.class })
private BigDecimal amount;
+ /**
+ * 用户id
+ */
+ @NotNull(message = "用户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long userId;
+
/**
* 兑换状态
*/
+ @NotBlank(message = "兑换状态不能为空", groups = { AddGroup.class, EditGroup.class })
private String status;
/**
* 兑换前余额
*/
- private Double balanceBefore;
+ @NotNull(message = "兑换前余额不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal balanceBefore;
/**
* 兑换后余额
*/
- private Double balanceAfter;
+ @NotNull(message = "兑换后余额不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal balanceAfter;
/**
* 备注
*/
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String remark;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/request/translation/TranslationRequest.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/request/TranslationRequest.java
similarity index 86%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/request/translation/TranslationRequest.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/request/TranslationRequest.java
index 04fa785a..c8121e7e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/request/translation/TranslationRequest.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/request/TranslationRequest.java
@@ -1,4 +1,4 @@
-package org.ruoyi.system.domain.request.translation;
+package org.ruoyi.domain.request;
import lombok.Data;
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAgentManageVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAgentManageVo.java
new file mode 100644
index 00000000..3ccc1760
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAgentManageVo.java
@@ -0,0 +1,104 @@
+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.domain.ChatAgentManage;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+
+
+
+/**
+ * 智能体管理视图对象 chat_agent_manage
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ChatAgentManage.class)
+public class ChatAgentManageVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键id
+ */
+ @ExcelProperty(value = "主键id")
+ private Long id;
+
+ /**
+ * 应用名称
+ */
+ @ExcelProperty(value = "应用名称")
+ private String appName;
+
+ /**
+ * 应用类型
+ */
+ @ExcelProperty(value = "应用类型")
+ private String appType;
+
+ /**
+ * 应用头像
+ */
+ @ExcelProperty(value = "应用头像")
+ private String appIcon;
+
+ /**
+ * 应用描述
+ */
+ @ExcelProperty(value = "应用描述")
+ private String appDescription;
+
+ /**
+ * 开场介绍
+ */
+ @ExcelProperty(value = "开场介绍")
+ private String introduction;
+
+ /**
+ * 模型
+ */
+ @ExcelProperty(value = "模型")
+ private String model;
+
+ /**
+ * 对话可选模型
+ */
+ @ExcelProperty(value = "对话可选模型")
+ private String conversationModel;
+
+ /**
+ * 应用设定
+ */
+ @ExcelProperty(value = "应用设定")
+ private String applicationSettings;
+
+ /**
+ * 插件id
+ */
+ @ExcelProperty(value = "插件id")
+ private String pluginId;
+
+ /**
+ * 知识库id
+ */
+ @ExcelProperty(value = "知识库id")
+ private Long knowledgeId;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatAppStoreVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAppStoreVo.java
similarity index 74%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatAppStoreVo.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAppStoreVo.java
index ff46912a..94840abb 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatAppStoreVo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAppStoreVo.java
@@ -1,21 +1,24 @@
-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;
+
/**
- * 应用市场视图对象
+ * 应用商店视图对象 chat_app_store
*
- * @author Lion Li
- * @date 2024-03-19
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@ExcelIgnoreUnannotated
@@ -32,27 +35,27 @@ public class ChatAppStoreVo implements Serializable {
private Long id;
/**
- * 角色名称
+ * 名称
*/
@ExcelProperty(value = "名称")
private String name;
/**
- * 角色描述
+ * 描述
*/
@ExcelProperty(value = "描述")
private String description;
/**
- * 头像
+ * logo
*/
- @ExcelProperty(value = "头像")
+ @ExcelProperty(value = "logo")
private String avatar;
/**
- * 音频地址
+ * 地址
*/
- @ExcelProperty(value = "应用地址")
+ @ExcelProperty(value = "地址")
private String appUrl;
/**
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatGptsVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatGptsVo.java
similarity index 80%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatGptsVo.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatGptsVo.java
index b6331798..9d515d40 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatGptsVo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatGptsVo.java
@@ -1,20 +1,24 @@
-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;
+
+
/**
- * gpts管理视图对象 chat_gpts
+ * 应用管理视图对象 chat_gpts
*
- * @author Lion Li
- * @date 2024-07-09
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@ExcelIgnoreUnannotated
@@ -70,13 +74,13 @@ public class ChatGptsVo implements Serializable {
* 点赞
*/
@ExcelProperty(value = "点赞")
- private String useCnt;
+ private Long useCnt;
/**
* 差评
*/
@ExcelProperty(value = "差评")
- private String bad;
+ private Long bad;
/**
* 类型
@@ -96,16 +100,5 @@ public class ChatGptsVo implements Serializable {
@ExcelProperty(value = "更新IP")
private String updateIp;
- /**
- * 模型名称
- */
- @ExcelProperty(value = "模型名称")
- private String modelName;
-
- /**
- * 模型system
- */
- private String systemPrompt;
-
}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatMessageVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatMessageVo.java
new file mode 100644
index 00000000..501a1b6d
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatMessageVo.java
@@ -0,0 +1,81 @@
+package org.ruoyi.domain.vo;
+
+import java.math.BigDecimal;
+
+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.ChatMessage;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+
+
+
+/**
+ * 聊天消息视图对象 chat_message
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ChatMessage.class)
+public class ChatMessageVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @ExcelProperty(value = "主键")
+ private Long id;
+
+ /**
+ * 用户id
+ */
+ @ExcelProperty(value = "用户id")
+ private Long userId;
+
+ /**
+ * 消息内容
+ */
+ @ExcelProperty(value = "消息内容")
+ private String content;
+
+ /**
+ * 对话角色
+ */
+ @ExcelProperty(value = "对话角色")
+ private String role;
+
+ /**
+ * 扣除金额
+ */
+ @ExcelProperty(value = "扣除金额")
+ private BigDecimal deductCost;
+
+ /**
+ * 累计 Tokens
+ */
+ @ExcelProperty(value = "累计 Tokens")
+ private Long totalTokens;
+
+ /**
+ * 模型名称
+ */
+ @ExcelProperty(value = "模型名称")
+ private String modelName;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysModelVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatModelVo.java
similarity index 73%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysModelVo.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatModelVo.java
index 630fce08..56efb598 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysModelVo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatModelVo.java
@@ -1,27 +1,29 @@
-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.common.sensitive.annotation.Sensitive;
-import org.ruoyi.common.sensitive.core.SensitiveStrategy;
-import org.ruoyi.system.domain.SysModel;
+import org.ruoyi.domain.ChatModel;
import java.io.Serial;
import java.io.Serializable;
+
+
/**
- * 系统模型视图对象 sys_model
+ * 聊天模型视图对象 chat_model
*
- * @author Lion Li
- * @date 2024-04-04
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@ExcelIgnoreUnannotated
-@AutoMapper(target = SysModel.class)
-public class SysModelVo implements Serializable {
+@AutoMapper(target = ChatModel.class)
+public class ChatModelVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@@ -44,7 +46,6 @@ public class SysModelVo implements Serializable {
@ExcelProperty(value = "模型名称")
private String modelName;
-
/**
* 模型描述
*/
@@ -55,7 +56,7 @@ public class SysModelVo implements Serializable {
* 模型价格
*/
@ExcelProperty(value = "模型价格")
- private double modelPrice;
+ private Long modelPrice;
/**
* 计费类型
@@ -66,23 +67,25 @@ public class SysModelVo implements Serializable {
/**
* 是否显示
*/
+ @ExcelProperty(value = "是否显示")
private String modelShow;
-
/**
* 系统提示词
*/
+ @ExcelProperty(value = "系统提示词")
private String systemPrompt;
/**
* 请求地址
*/
+ @ExcelProperty(value = "请求地址")
private String apiHost;
/**
- * 模型名称
+ * 密钥
*/
- @Sensitive(strategy = SensitiveStrategy.ID_CARD)
+ @ExcelProperty(value = "密钥")
private String apiKey;
/**
@@ -91,4 +94,5 @@ public class SysModelVo implements Serializable {
@ExcelProperty(value = "备注")
private String remark;
+
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysPackagePlanVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPackagePlanVo.java
similarity index 78%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysPackagePlanVo.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPackagePlanVo.java
index 5ae53f6b..39236aee 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysPackagePlanVo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPackagePlanVo.java
@@ -1,26 +1,30 @@
-package org.ruoyi.system.domain.vo;
+package org.ruoyi.domain.vo;
import java.math.BigDecimal;
-import org.ruoyi.system.domain.SysPackagePlan;
+
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.ChatPackagePlan;
import java.io.Serial;
import java.io.Serializable;
+
+
/**
- * 套餐管理视图对象 sys_package_plan
+ * 套餐管理视图对象 chat_package_plan
*
- * @author Lion Li
- * @date 2024-05-05
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@ExcelIgnoreUnannotated
-@AutoMapper(target = SysPackagePlan.class)
-public class SysPackagePlanVo implements Serializable {
+@AutoMapper(target = ChatPackagePlan.class)
+public class ChatPackagePlanVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/PaymentOrdersVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPayOrderVo.java
similarity index 69%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/PaymentOrdersVo.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPayOrderVo.java
index ae4a4beb..cfe47330 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/PaymentOrdersVo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPayOrderVo.java
@@ -1,27 +1,29 @@
-package org.ruoyi.system.domain.vo;
+package org.ruoyi.domain.vo;
+import java.math.BigDecimal;
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.PaymentOrder;
+import org.ruoyi.domain.ChatPayOrder;
import java.io.Serial;
import java.io.Serializable;
-import java.math.BigDecimal;
-import java.util.Date;
+
+
/**
- * 支付订单视图对象 payment_orders
+ * 支付订单视图对象 chat_pay_order
*
- * @author Lion Li
- * @date 2024-04-16
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@ExcelIgnoreUnannotated
-@AutoMapper(target = PaymentOrder.class)
-public class PaymentOrdersVo implements Serializable {
+@AutoMapper(target = ChatPayOrder.class)
+public class ChatPayOrderVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@@ -68,26 +70,11 @@ public class PaymentOrdersVo implements Serializable {
@ExcelProperty(value = "用户ID")
private Long userId;
- /**
- * 用户ID
- */
- @ExcelProperty(value = "用户名称")
- private String userName;
-
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
- /**
- * 二维码网络地址
- */
- private String url;
-
- /**
- * 创建时间
- */
- private Date createTime;
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatPluginVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPluginVo.java
similarity index 88%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatPluginVo.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPluginVo.java
index 4e4b0968..3e900e6f 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatPluginVo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPluginVo.java
@@ -1,6 +1,6 @@
-package org.ruoyi.system.domain.vo;
+package org.ruoyi.domain.vo;
-import org.ruoyi.system.domain.ChatPlugin;
+import org.ruoyi.domain.ChatPlugin;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
@@ -9,7 +9,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
-import java.util.Date;
+
@@ -17,7 +17,7 @@ import java.util.Date;
* 插件管理视图对象 chat_plugin
*
* @author ageerle
- * @date 2025-03-30
+ * @date 2025-04-08
*/
@Data
@ExcelIgnoreUnannotated
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/WxRobConfigVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatRobConfigVo.java
similarity index 61%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/WxRobConfigVo.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatRobConfigVo.java
index a3102f47..247ebe2c 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/WxRobConfigVo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatRobConfigVo.java
@@ -1,10 +1,9 @@
-package org.ruoyi.system.domain.vo;
+package org.ruoyi.domain.vo;
+import org.ruoyi.domain.ChatRobConfig;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
-import org.ruoyi.common.excel.annotation.ExcelDictFormat;
-import org.ruoyi.common.excel.convert.ExcelDictConvert;
-import org.ruoyi.system.domain.WxRobConfig;
+
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
@@ -14,15 +13,15 @@ import java.io.Serializable;
/**
- * 微信机器人视图对象 wx_rob_config
+ * 聊天机器人配置视图对象 chat_rob_config
*
- * @author Lion Li
- * @date 2024-05-01
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@ExcelIgnoreUnannotated
-@AutoMapper(target = WxRobConfig.class)
-public class WxRobConfigVo implements Serializable {
+@AutoMapper(target = ChatRobConfig.class)
+public class ChatRobConfigVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@@ -34,18 +33,15 @@ public class WxRobConfigVo implements Serializable {
private Long id;
/**
- * 用户id
+ * 所属用户
*/
+ @ExcelProperty(value = "所属用户")
private Long userId;
- /**
- * 用户名称
- */
- private String userName;
-
/**
* 机器人名称
*/
+ @ExcelProperty(value = "机器人名称")
private String botName;
/**
@@ -54,13 +50,6 @@ public class WxRobConfigVo implements Serializable {
@ExcelProperty(value = "机器唯一码")
private String uniqueKey;
- /**
- * 备注
- */
- @ExcelProperty(value = "备注", converter = ExcelDictConvert.class)
- @ExcelDictFormat(readConverterExp = "备注")
- private String remark;
-
/**
* 默认好友回复开关
*/
@@ -73,12 +62,17 @@ public class WxRobConfigVo implements Serializable {
@ExcelProperty(value = "默认群回复开关")
private String defaultGroup;
+ /**
+ * 机器人状态 0正常 1启用
+ */
+ @ExcelProperty(value = "机器人状态 0正常 1启用")
+ private String enable;
/**
- * 机器启用1禁用0
+ * 备注
*/
- @ExcelProperty(value = "机器启用1禁用0")
- private String enable;
+ @ExcelProperty(value = "备注")
+ private String remark;
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatTokenVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatTokenVo.java
similarity index 96%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatTokenVo.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatTokenVo.java
index ce7eff4a..60a3c20d 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatTokenVo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatTokenVo.java
@@ -1,10 +1,10 @@
-package org.ruoyi.system.domain.vo;
+package org.ruoyi.domain.vo;
-import org.ruoyi.common.core.validate.AddGroup;
-import org.ruoyi.common.core.validate.EditGroup;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
+import org.ruoyi.common.core.validate.AddGroup;
+import org.ruoyi.common.core.validate.EditGroup;
import java.io.Serializable;
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatUsageTokenVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatUsageTokenVo.java
new file mode 100644
index 00000000..e8f279d2
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatUsageTokenVo.java
@@ -0,0 +1,61 @@
+package org.ruoyi.domain.vo;
+
+import org.ruoyi.domain.ChatUsageToken;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+
+
+
+/**
+ * 用户token使用详情视图对象 chat_usage_token
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ChatUsageToken.class)
+public class ChatUsageTokenVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @ExcelProperty(value = "主键")
+ private Long id;
+
+ /**
+ * 用户
+ */
+ @ExcelProperty(value = "用户")
+ private Long userId;
+
+ /**
+ * 待结算token
+ */
+ @ExcelProperty(value = "待结算token")
+ private Integer token;
+
+ /**
+ * 模型名称
+ */
+ @ExcelProperty(value = "模型名称")
+ private String modelName;
+
+ /**
+ * 累计使用token
+ */
+ @ExcelProperty(value = "累计使用token")
+ private String totalToken;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatVisitorUsageVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVisitorUsageVo.java
similarity index 93%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatVisitorUsageVo.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVisitorUsageVo.java
index 217ae449..d85963de 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatVisitorUsageVo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVisitorUsageVo.java
@@ -1,10 +1,10 @@
-package org.ruoyi.system.domain.vo;
+package org.ruoyi.domain.vo;
-import org.ruoyi.system.domain.ChatVisitorUsage;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
+import org.ruoyi.domain.ChatVisitorUsage;
import java.io.Serial;
import java.io.Serializable;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatVoucherVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVoucherVo.java
similarity index 75%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatVoucherVo.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVoucherVo.java
index 0b13b59c..8b7092da 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatVoucherVo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVoucherVo.java
@@ -1,11 +1,13 @@
-package org.ruoyi.system.domain.vo;
+package org.ruoyi.domain.vo;
+
+import java.math.BigDecimal;
-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;
@@ -15,8 +17,8 @@ import java.io.Serializable;
/**
* 用户兑换记录视图对象 chat_voucher
*
- * @author Lion Li
- * @date 2024-05-03
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@ExcelIgnoreUnannotated
@@ -32,18 +34,6 @@ public class ChatVoucherVo implements Serializable {
@ExcelProperty(value = "主键")
private Long id;
- /**
- * 用户id
- */
- @ExcelProperty(value = "用户id")
- private Long userId;
-
- /**
- * 用户名称
- */
- @ExcelProperty(value = "用户名称")
- private String userName;
-
/**
* 兑换码
*/
@@ -54,7 +44,13 @@ public class ChatVoucherVo implements Serializable {
* 兑换金额
*/
@ExcelProperty(value = "兑换金额")
- private Double amount;
+ private BigDecimal amount;
+
+ /**
+ * 用户id
+ */
+ @ExcelProperty(value = "用户id")
+ private Long userId;
/**
* 兑换状态
@@ -66,13 +62,13 @@ public class ChatVoucherVo implements Serializable {
* 兑换前余额
*/
@ExcelProperty(value = "兑换前余额")
- private Double balanceBefore;
+ private BigDecimal balanceBefore;
/**
* 兑换后余额
*/
@ExcelProperty(value = "兑换后余额")
- private Double balanceAfter;
+ private BigDecimal balanceAfter;
/**
* 备注
@@ -80,8 +76,5 @@ public class ChatVoucherVo implements Serializable {
@ExcelProperty(value = "备注")
private String remark;
- @ExcelProperty(value = "创建时间")
- private String createTime;
-
}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatAgentManageMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatAgentManageMapper.java
new file mode 100644
index 00000000..7188dde9
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatAgentManageMapper.java
@@ -0,0 +1,16 @@
+package org.ruoyi.mapper;
+
+
+import org.ruoyi.domain.ChatAgentManage;
+import org.ruoyi.domain.vo.ChatAgentManageVo;
+import org.ruoyi.core.mapper.BaseMapperPlus;
+
+/**
+ * 智能体管理Mapper接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface ChatAgentManageMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatAppStoreMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatAppStoreMapper.java
new file mode 100644
index 00000000..f659d564
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatAppStoreMapper.java
@@ -0,0 +1,16 @@
+package org.ruoyi.mapper;
+
+
+import org.ruoyi.domain.ChatAppStore;
+import org.ruoyi.domain.vo.ChatAppStoreVo;
+import org.ruoyi.core.mapper.BaseMapperPlus;
+
+/**
+ * 应用商店Mapper接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface ChatAppStoreMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatGptsMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatGptsMapper.java
new file mode 100644
index 00000000..4bd28c32
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatGptsMapper.java
@@ -0,0 +1,15 @@
+package org.ruoyi.mapper;
+
+import org.ruoyi.core.mapper.BaseMapperPlus;
+import org.ruoyi.domain.ChatGpts;
+import org.ruoyi.domain.vo.ChatGptsVo;
+
+/**
+ * 应用管理Mapper接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface ChatGptsMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatMessageMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatMessageMapper.java
new file mode 100644
index 00000000..f6f09c4d
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatMessageMapper.java
@@ -0,0 +1,16 @@
+package org.ruoyi.mapper;
+
+
+import org.ruoyi.core.mapper.BaseMapperPlus;
+import org.ruoyi.domain.ChatMessage;
+import org.ruoyi.domain.vo.ChatMessageVo;
+
+/**
+ * 聊天消息Mapper接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface ChatMessageMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatModelMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatModelMapper.java
new file mode 100644
index 00000000..0c7a8a42
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatModelMapper.java
@@ -0,0 +1,15 @@
+package org.ruoyi.mapper;
+
+import org.ruoyi.core.mapper.BaseMapperPlus;
+import org.ruoyi.domain.ChatModel;
+import org.ruoyi.domain.vo.ChatModelVo;
+
+/**
+ * 聊天模型Mapper接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface ChatModelMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPackagePlanMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPackagePlanMapper.java
new file mode 100644
index 00000000..87e157d2
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPackagePlanMapper.java
@@ -0,0 +1,16 @@
+package org.ruoyi.mapper;
+
+
+import org.ruoyi.core.mapper.BaseMapperPlus;
+import org.ruoyi.domain.ChatPackagePlan;
+import org.ruoyi.domain.vo.ChatPackagePlanVo;
+
+/**
+ * 套餐管理Mapper接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface ChatPackagePlanMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPayOrderMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPayOrderMapper.java
new file mode 100644
index 00000000..1e35c4be
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPayOrderMapper.java
@@ -0,0 +1,16 @@
+package org.ruoyi.mapper;
+
+
+import org.ruoyi.core.mapper.BaseMapperPlus;
+import org.ruoyi.domain.ChatPayOrder;
+import org.ruoyi.domain.vo.ChatPayOrderVo;
+
+/**
+ * 支付订单Mapper接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface ChatPayOrderMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPluginMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPluginMapper.java
new file mode 100644
index 00000000..323591b3
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPluginMapper.java
@@ -0,0 +1,16 @@
+package org.ruoyi.mapper;
+
+
+import org.ruoyi.core.mapper.BaseMapperPlus;
+import org.ruoyi.domain.ChatPlugin;
+import org.ruoyi.domain.vo.ChatPluginVo;
+
+/**
+ * 插件管理Mapper接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface ChatPluginMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatRobConfigMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatRobConfigMapper.java
new file mode 100644
index 00000000..03096210
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatRobConfigMapper.java
@@ -0,0 +1,16 @@
+package org.ruoyi.mapper;
+
+
+import org.ruoyi.core.mapper.BaseMapperPlus;
+import org.ruoyi.domain.ChatRobConfig;
+import org.ruoyi.domain.vo.ChatRobConfigVo;
+
+/**
+ * 聊天机器人配置Mapper接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface ChatRobConfigMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatTokenMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatTokenMapper.java
new file mode 100644
index 00000000..47418783
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatTokenMapper.java
@@ -0,0 +1,16 @@
+package org.ruoyi.mapper;
+
+import org.ruoyi.core.mapper.BaseMapperPlus;
+import org.ruoyi.domain.ChatToken;
+import org.ruoyi.domain.vo.ChatTokenVo;
+
+
+/**
+ * 聊天消息Mapper接口
+ *
+ * @author Lion Li
+ * @date 2023-11-26
+ */
+public interface ChatTokenMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatUsageTokenMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatUsageTokenMapper.java
new file mode 100644
index 00000000..ecd50dac
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatUsageTokenMapper.java
@@ -0,0 +1,16 @@
+package org.ruoyi.mapper;
+
+
+import org.ruoyi.core.mapper.BaseMapperPlus;
+import org.ruoyi.domain.ChatUsageToken;
+import org.ruoyi.domain.vo.ChatUsageTokenVo;
+
+/**
+ * 用户token使用详情Mapper接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface ChatUsageTokenMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatVisitorUsageMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatVisitorUsageMapper.java
new file mode 100644
index 00000000..851084c9
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatVisitorUsageMapper.java
@@ -0,0 +1,16 @@
+package org.ruoyi.mapper;
+
+import org.ruoyi.core.mapper.BaseMapperPlus;
+import org.ruoyi.domain.ChatVisitorUsage;
+import org.ruoyi.domain.vo.ChatVisitorUsageVo;
+
+
+/**
+ * 访客管理Mapper接口
+ *
+ * @author Lion Li
+ * @date 2024-07-14
+ */
+public interface ChatVisitorUsageMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatVoucherMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatVoucherMapper.java
new file mode 100644
index 00000000..71117897
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatVoucherMapper.java
@@ -0,0 +1,15 @@
+package org.ruoyi.mapper;
+
+import org.ruoyi.core.mapper.BaseMapperPlus;
+import org.ruoyi.domain.ChatVoucher;
+import org.ruoyi.domain.vo.ChatVoucherVo;
+
+/**
+ * 用户兑换记录Mapper接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface ChatVoucherMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAgentManageService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAgentManageService.java
new file mode 100644
index 00000000..85761ed1
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAgentManageService.java
@@ -0,0 +1,49 @@
+package org.ruoyi.service;
+
+
+import org.ruoyi.domain.bo.ChatAgentManageBo;
+import org.ruoyi.domain.vo.ChatAgentManageVo;
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 智能体管理Service接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface IChatAgentManageService {
+
+ /**
+ * 查询智能体管理
+ */
+ ChatAgentManageVo queryById(Long id);
+
+ /**
+ * 查询智能体管理列表
+ */
+ TableDataInfo queryPageList(ChatAgentManageBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询智能体管理列表
+ */
+ List queryList(ChatAgentManageBo bo);
+
+ /**
+ * 新增智能体管理
+ */
+ Boolean insertByBo(ChatAgentManageBo bo);
+
+ /**
+ * 修改智能体管理
+ */
+ Boolean updateByBo(ChatAgentManageBo bo);
+
+ /**
+ * 校验并批量删除智能体管理信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAppStoreService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAppStoreService.java
new file mode 100644
index 00000000..59f92bde
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAppStoreService.java
@@ -0,0 +1,49 @@
+package org.ruoyi.service;
+
+
+import org.ruoyi.domain.bo.ChatAppStoreBo;
+import org.ruoyi.domain.vo.ChatAppStoreVo;
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 应用商店Service接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface IChatAppStoreService {
+
+ /**
+ * 查询应用商店
+ */
+ ChatAppStoreVo queryById(Long id);
+
+ /**
+ * 查询应用商店列表
+ */
+ TableDataInfo queryPageList(ChatAppStoreBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询应用商店列表
+ */
+ List queryList(ChatAppStoreBo bo);
+
+ /**
+ * 新增应用商店
+ */
+ Boolean insertByBo(ChatAppStoreBo bo);
+
+ /**
+ * 修改应用商店
+ */
+ Boolean updateByBo(ChatAppStoreBo bo);
+
+ /**
+ * 校验并批量删除应用商店信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatGptsService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatGptsService.java
similarity index 52%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatGptsService.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatGptsService.java
index 7f4bb365..efdc7f85 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatGptsService.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatGptsService.java
@@ -1,48 +1,49 @@
-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.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.domain.bo.ChatGptsBo;
+import org.ruoyi.domain.vo.ChatGptsVo;
import java.util.Collection;
import java.util.List;
/**
- * gpts管理Service接口
+ * 应用管理Service接口
*
- * @author Lion Li
- * @date 2024-07-09
+ * @author ageerle
+ * @date 2025-04-08
*/
public interface IChatGptsService {
/**
- * 查询gpts管理
+ * 查询应用管理
*/
ChatGptsVo queryById(Long id);
/**
- * 查询gpts管理列表
+ * 查询应用管理列表
*/
TableDataInfo queryPageList(ChatGptsBo bo, PageQuery pageQuery);
/**
- * 查询gpts管理列表
+ * 查询应用管理列表
*/
List queryList(ChatGptsBo bo);
/**
- * 新增gpts管理
+ * 新增应用管理
*/
Boolean insertByBo(ChatGptsBo bo);
/**
- * 修改gpts管理
+ * 修改应用管理
*/
Boolean updateByBo(ChatGptsBo bo);
/**
- * 校验并批量删除gpts管理信息
+ * 校验并批量删除应用管理信息
*/
Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatMessageService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatMessageService.java
similarity index 73%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatMessageService.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatMessageService.java
index 671cdc04..6dcf07d1 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatMessageService.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatMessageService.java
@@ -1,9 +1,10 @@
-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.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.domain.bo.ChatMessageBo;
+import org.ruoyi.domain.vo.ChatMessageVo;
import java.util.Collection;
import java.util.List;
@@ -11,8 +12,8 @@ import java.util.List;
/**
* 聊天消息Service接口
*
- * @author Lion Li
- * @date 2023-11-26
+ * @author ageerle
+ * @date 2025-04-08
*/
public interface IChatMessageService {
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatModelService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatModelService.java
new file mode 100644
index 00000000..4b1d9bd8
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatModelService.java
@@ -0,0 +1,56 @@
+package org.ruoyi.service;
+
+
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.domain.bo.ChatModelBo;
+import org.ruoyi.domain.vo.ChatModelVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 聊天模型Service接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface IChatModelService {
+
+ /**
+ * 查询聊天模型
+ */
+ ChatModelVo queryById(Long id);
+
+ /**
+ * 查询聊天模型列表
+ */
+ TableDataInfo queryPageList(ChatModelBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询聊天模型列表
+ */
+ List queryList(ChatModelBo bo);
+
+ /**
+ * 新增聊天模型
+ */
+ Boolean insertByBo(ChatModelBo bo);
+
+ /**
+ * 修改聊天模型
+ */
+ Boolean updateByBo(ChatModelBo bo);
+
+ /**
+ * 校验并批量删除聊天模型信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+
+
+ /**
+ * 通过模型名称获取模型信息
+ */
+ ChatModelVo selectModelByName(String modelName);
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPackagePlanService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPackagePlanService.java
new file mode 100644
index 00000000..043b6ced
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPackagePlanService.java
@@ -0,0 +1,49 @@
+package org.ruoyi.service;
+
+
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.domain.bo.ChatPackagePlanBo;
+import org.ruoyi.domain.vo.ChatPackagePlanVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 套餐管理Service接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface IChatPackagePlanService {
+
+ /**
+ * 查询套餐管理
+ */
+ ChatPackagePlanVo queryById(Long id);
+
+ /**
+ * 查询套餐管理列表
+ */
+ TableDataInfo queryPageList(ChatPackagePlanBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询套餐管理列表
+ */
+ List queryList(ChatPackagePlanBo bo);
+
+ /**
+ * 新增套餐管理
+ */
+ Boolean insertByBo(ChatPackagePlanBo bo);
+
+ /**
+ * 修改套餐管理
+ */
+ Boolean updateByBo(ChatPackagePlanBo bo);
+
+ /**
+ * 校验并批量删除套餐管理信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPayOrderService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPayOrderService.java
new file mode 100644
index 00000000..c845a74c
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPayOrderService.java
@@ -0,0 +1,48 @@
+package org.ruoyi.service;
+
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.domain.bo.ChatPayOrderBo;
+import org.ruoyi.domain.vo.ChatPayOrderVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 支付订单Service接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface IChatPayOrderService {
+
+ /**
+ * 查询支付订单
+ */
+ ChatPayOrderVo queryById(Long id);
+
+ /**
+ * 查询支付订单列表
+ */
+ TableDataInfo queryPageList(ChatPayOrderBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询支付订单列表
+ */
+ List queryList(ChatPayOrderBo bo);
+
+ /**
+ * 新增支付订单
+ */
+ Boolean insertByBo(ChatPayOrderBo bo);
+
+ /**
+ * 修改支付订单
+ */
+ Boolean updateByBo(ChatPayOrderBo bo);
+
+ /**
+ * 校验并批量删除支付订单信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatPluginService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPluginService.java
similarity index 71%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatPluginService.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPluginService.java
index d1981444..13f9ac3d 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatPluginService.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPluginService.java
@@ -1,10 +1,10 @@
-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.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.domain.bo.ChatPluginBo;
+import org.ruoyi.domain.vo.ChatPluginVo;
import java.util.Collection;
import java.util.List;
@@ -13,7 +13,7 @@ import java.util.List;
* 插件管理Service接口
*
* @author ageerle
- * @date 2025-03-30
+ * @date 2025-04-08
*/
public interface IChatPluginService {
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatTokenService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatTokenService.java
similarity index 56%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatTokenService.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatTokenService.java
index c758a0d8..d2aca244 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatTokenService.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatTokenService.java
@@ -1,25 +1,28 @@
-package org.ruoyi.system.service;
+package org.ruoyi.service;
-import org.ruoyi.system.domain.ChatToken;
+import org.ruoyi.domain.ChatToken;
/**
* 聊天消息Service接口
*
- * @author Lion Li
- * @date 2023-11-26
+ * @author ageerle
+ * @date 2025-04-08
*/
public interface IChatTokenService {
/**
* 查询用户token
*/
- ChatToken queryByUserId(Long userId,String modelName);
+ ChatToken queryByUserId(Long userId, String modelName);
/**
* 清空用户token
*/
void resetToken(Long userId,String modelName);
+ /**
+ * 修改用户token
+ */
void editToken(ChatToken chatToken);
}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatUsageTokenService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatUsageTokenService.java
new file mode 100644
index 00000000..115e2168
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatUsageTokenService.java
@@ -0,0 +1,49 @@
+package org.ruoyi.service;
+
+
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.domain.bo.ChatUsageTokenBo;
+import org.ruoyi.domain.vo.ChatUsageTokenVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 用户token使用详情Service接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface IChatUsageTokenService {
+
+ /**
+ * 查询用户token使用详情
+ */
+ ChatUsageTokenVo queryById(Long id);
+
+ /**
+ * 查询用户token使用详情列表
+ */
+ TableDataInfo queryPageList(ChatUsageTokenBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询用户token使用详情列表
+ */
+ List queryList(ChatUsageTokenBo bo);
+
+ /**
+ * 新增用户token使用详情
+ */
+ Boolean insertByBo(ChatUsageTokenBo bo);
+
+ /**
+ * 修改用户token使用详情
+ */
+ Boolean updateByBo(ChatUsageTokenBo bo);
+
+ /**
+ * 校验并批量删除用户token使用详情信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatVisitorUsageService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVisitorUsageService.java
similarity index 73%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatVisitorUsageService.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVisitorUsageService.java
index 87ab91ce..bd3d0aa2 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatVisitorUsageService.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVisitorUsageService.java
@@ -1,9 +1,9 @@
-package org.ruoyi.system.service;
+package org.ruoyi.service;
-import org.ruoyi.system.domain.vo.ChatVisitorUsageVo;
-import org.ruoyi.system.domain.bo.ChatVisitorUsageBo;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.domain.bo.ChatVisitorUsageBo;
+import org.ruoyi.domain.vo.ChatVisitorUsageVo;
import java.util.Collection;
import java.util.List;
@@ -11,8 +11,8 @@ import java.util.List;
/**
* 访客管理Service接口
*
- * @author Lion Li
- * @date 2024-07-14
+ * @author ageerle
+ * @date 2025-04-08
*/
public interface IChatVisitorUsageService {
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatVoucherService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVoucherService.java
similarity index 69%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatVoucherService.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVoucherService.java
index 4dfb6843..eb62b541 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatVoucherService.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVoucherService.java
@@ -1,9 +1,10 @@
-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.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.domain.bo.ChatVoucherBo;
+import org.ruoyi.domain.vo.ChatVoucherVo;
import java.util.Collection;
import java.util.List;
@@ -11,8 +12,8 @@ import java.util.List;
/**
* 用户兑换记录Service接口
*
- * @author Lion Li
- * @date 2024-05-03
+ * @author ageerle
+ * @date 2025-04-08
*/
public interface IChatVoucherService {
@@ -45,9 +46,4 @@ public interface IChatVoucherService {
* 校验并批量删除用户兑换记录信息
*/
Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
-
- /**
- * 兑换卡密
- */
- Boolean redeem(ChatVoucherBo bo);
}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatAgentManageServiceImpl.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatAgentManageServiceImpl.java
new file mode 100644
index 00000000..2cd92a3f
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatAgentManageServiceImpl.java
@@ -0,0 +1,120 @@
+package org.ruoyi.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.ruoyi.common.core.utils.MapstructUtils;
+import org.ruoyi.common.core.utils.StringUtils;
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.ruoyi.domain.ChatAgentManage;
+import org.ruoyi.domain.bo.ChatAgentManageBo;
+import org.ruoyi.mapper.ChatAgentManageMapper;
+import org.ruoyi.service.IChatAgentManageService;
+import org.springframework.stereotype.Service;
+
+import org.ruoyi.domain.vo.ChatAgentManageVo;
+
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 智能体管理Service业务层处理
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@RequiredArgsConstructor
+@Service
+public class ChatAgentManageServiceImpl implements IChatAgentManageService {
+
+ private final ChatAgentManageMapper baseMapper;
+
+ /**
+ * 查询智能体管理
+ */
+ @Override
+ public ChatAgentManageVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 查询智能体管理列表
+ */
+ @Override
+ public TableDataInfo queryPageList(ChatAgentManageBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询智能体管理列表
+ */
+ @Override
+ public List queryList(ChatAgentManageBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(ChatAgentManageBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.like(StringUtils.isNotBlank(bo.getAppName()), ChatAgentManage::getAppName, bo.getAppName());
+ lqw.eq(StringUtils.isNotBlank(bo.getAppType()), ChatAgentManage::getAppType, bo.getAppType());
+ lqw.eq(StringUtils.isNotBlank(bo.getAppIcon()), ChatAgentManage::getAppIcon, bo.getAppIcon());
+ lqw.eq(StringUtils.isNotBlank(bo.getAppDescription()), ChatAgentManage::getAppDescription, bo.getAppDescription());
+ lqw.eq(StringUtils.isNotBlank(bo.getIntroduction()), ChatAgentManage::getIntroduction, bo.getIntroduction());
+ lqw.eq(StringUtils.isNotBlank(bo.getModel()), ChatAgentManage::getModel, bo.getModel());
+ lqw.eq(StringUtils.isNotBlank(bo.getConversationModel()), ChatAgentManage::getConversationModel, bo.getConversationModel());
+ lqw.eq(StringUtils.isNotBlank(bo.getApplicationSettings()), ChatAgentManage::getApplicationSettings, bo.getApplicationSettings());
+ lqw.eq(StringUtils.isNotBlank(bo.getPluginId()), ChatAgentManage::getPluginId, bo.getPluginId());
+ lqw.eq(bo.getKnowledgeId() != null, ChatAgentManage::getKnowledgeId, bo.getKnowledgeId());
+ return lqw;
+ }
+
+ /**
+ * 新增智能体管理
+ */
+ @Override
+ public Boolean insertByBo(ChatAgentManageBo bo) {
+ ChatAgentManage add = MapstructUtils.convert(bo, ChatAgentManage.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改智能体管理
+ */
+ @Override
+ public Boolean updateByBo(ChatAgentManageBo bo) {
+ ChatAgentManage update = MapstructUtils.convert(bo, ChatAgentManage.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(ChatAgentManage entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 批量删除智能体管理
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteBatchIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatAppStoreServiceImpl.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatAppStoreServiceImpl.java
new file mode 100644
index 00000000..e29e5b2c
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatAppStoreServiceImpl.java
@@ -0,0 +1,111 @@
+package org.ruoyi.service.impl;
+
+import org.ruoyi.common.core.utils.MapstructUtils;
+import org.ruoyi.common.core.utils.StringUtils;
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.ruoyi.domain.ChatAppStore;
+import org.ruoyi.domain.bo.ChatAppStoreBo;
+import org.ruoyi.mapper.ChatAppStoreMapper;
+import org.ruoyi.service.IChatAppStoreService;
+import org.springframework.stereotype.Service;
+import org.ruoyi.domain.vo.ChatAppStoreVo;
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 应用商店Service业务层处理
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@RequiredArgsConstructor
+@Service
+public class ChatAppStoreServiceImpl implements IChatAppStoreService {
+
+ private final ChatAppStoreMapper baseMapper;
+
+ /**
+ * 查询应用商店
+ */
+ @Override
+ public ChatAppStoreVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 查询应用商店列表
+ */
+ @Override
+ public TableDataInfo queryPageList(ChatAppStoreBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询应用商店列表
+ */
+ @Override
+ public List queryList(ChatAppStoreBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(ChatAppStoreBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.like(StringUtils.isNotBlank(bo.getName()), ChatAppStore::getName, bo.getName());
+ lqw.eq(StringUtils.isNotBlank(bo.getDescription()), ChatAppStore::getDescription, bo.getDescription());
+ lqw.eq(StringUtils.isNotBlank(bo.getAvatar()), ChatAppStore::getAvatar, bo.getAvatar());
+ lqw.eq(StringUtils.isNotBlank(bo.getAppUrl()), ChatAppStore::getAppUrl, bo.getAppUrl());
+ return lqw;
+ }
+
+ /**
+ * 新增应用商店
+ */
+ @Override
+ public Boolean insertByBo(ChatAppStoreBo bo) {
+ ChatAppStore add = MapstructUtils.convert(bo, ChatAppStore.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改应用商店
+ */
+ @Override
+ public Boolean updateByBo(ChatAppStoreBo bo) {
+ ChatAppStore update = MapstructUtils.convert(bo, ChatAppStore.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(ChatAppStore entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 批量删除应用商店
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteBatchIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatGptsServiceImpl.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatGptsServiceImpl.java
similarity index 80%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatGptsServiceImpl.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatGptsServiceImpl.java
index 38ca74a5..0b7bb1b9 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatGptsServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatGptsServiceImpl.java
@@ -1,29 +1,30 @@
-package org.ruoyi.system.service.impl;
+package org.ruoyi.service.impl;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import lombok.RequiredArgsConstructor;
import org.ruoyi.common.core.utils.MapstructUtils;
import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
-import org.ruoyi.system.domain.ChatGpts;
-import org.ruoyi.system.domain.bo.ChatGptsBo;
-import org.ruoyi.system.domain.vo.ChatGptsVo;
-import org.ruoyi.system.mapper.ChatGptsMapper;
-import org.ruoyi.system.service.IChatGptsService;
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.ruoyi.domain.ChatGpts;
+import org.ruoyi.domain.bo.ChatGptsBo;
+import org.ruoyi.domain.vo.ChatGptsVo;
+import org.ruoyi.mapper.ChatGptsMapper;
+import org.ruoyi.service.IChatGptsService;
import org.springframework.stereotype.Service;
-import java.util.Collection;
+
import java.util.List;
import java.util.Map;
+import java.util.Collection;
/**
- * gpts管理Service业务层处理
+ * 应用管理Service业务层处理
*
- * @author Lion Li
- * @date 2024-07-09
+ * @author ageerle
+ * @date 2025-04-08
*/
@RequiredArgsConstructor
@Service
@@ -32,7 +33,7 @@ public class ChatGptsServiceImpl implements IChatGptsService {
private final ChatGptsMapper baseMapper;
/**
- * 查询gpts管理
+ * 查询应用管理
*/
@Override
public ChatGptsVo queryById(Long id){
@@ -40,7 +41,7 @@ public class ChatGptsServiceImpl implements IChatGptsService {
}
/**
- * 查询gpts管理列表
+ * 查询应用管理列表
*/
@Override
public TableDataInfo queryPageList(ChatGptsBo bo, PageQuery pageQuery) {
@@ -50,7 +51,7 @@ public class ChatGptsServiceImpl implements IChatGptsService {
}
/**
- * 查询gpts管理列表
+ * 查询应用管理列表
*/
@Override
public List queryList(ChatGptsBo bo) {
@@ -67,15 +68,15 @@ public class ChatGptsServiceImpl implements IChatGptsService {
lqw.eq(StringUtils.isNotBlank(bo.getInfo()), ChatGpts::getInfo, bo.getInfo());
lqw.eq(StringUtils.isNotBlank(bo.getAuthorId()), ChatGpts::getAuthorId, bo.getAuthorId());
lqw.like(StringUtils.isNotBlank(bo.getAuthorName()), ChatGpts::getAuthorName, bo.getAuthorName());
- lqw.eq(StringUtils.isNotBlank(bo.getUseCnt()), ChatGpts::getUseCnt, bo.getUseCnt());
- lqw.eq(StringUtils.isNotBlank(bo.getBad()), ChatGpts::getBad, bo.getBad());
+ lqw.eq(bo.getUseCnt() != null, ChatGpts::getUseCnt, bo.getUseCnt());
+ lqw.eq(bo.getBad() != null, ChatGpts::getBad, bo.getBad());
lqw.eq(StringUtils.isNotBlank(bo.getType()), ChatGpts::getType, bo.getType());
lqw.eq(StringUtils.isNotBlank(bo.getUpdateIp()), ChatGpts::getUpdateIp, bo.getUpdateIp());
return lqw;
}
/**
- * 新增gpts管理
+ * 新增应用管理
*/
@Override
public Boolean insertByBo(ChatGptsBo bo) {
@@ -89,7 +90,7 @@ public class ChatGptsServiceImpl implements IChatGptsService {
}
/**
- * 修改gpts管理
+ * 修改应用管理
*/
@Override
public Boolean updateByBo(ChatGptsBo bo) {
@@ -106,7 +107,7 @@ public class ChatGptsServiceImpl implements IChatGptsService {
}
/**
- * 批量删除gpts管理
+ * 批量删除应用管理
*/
@Override
public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatMessageServiceImpl.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatMessageServiceImpl.java
similarity index 63%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatMessageServiceImpl.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatMessageServiceImpl.java
index 421c6cfc..32c473d0 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatMessageServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatMessageServiceImpl.java
@@ -1,34 +1,30 @@
-package org.ruoyi.system.service.impl;
+package org.ruoyi.service.impl;
-import cn.hutool.core.collection.CollectionUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import lombok.RequiredArgsConstructor;
import org.ruoyi.common.core.utils.MapstructUtils;
import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
-import org.ruoyi.system.domain.ChatMessage;
-import org.ruoyi.system.domain.SysUser;
-import org.ruoyi.system.domain.bo.ChatMessageBo;
-import org.ruoyi.system.domain.vo.ChatMessageVo;
-import org.ruoyi.system.domain.vo.SysUserVo;
-import org.ruoyi.system.mapper.ChatMessageMapper;
-import org.ruoyi.system.mapper.SysUserMapper;
-import org.ruoyi.system.service.IChatMessageService;
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.ruoyi.domain.ChatMessage;
+import org.ruoyi.domain.bo.ChatMessageBo;
+import org.ruoyi.domain.vo.ChatMessageVo;
+import org.ruoyi.mapper.ChatMessageMapper;
+import org.ruoyi.service.IChatMessageService;
import org.springframework.stereotype.Service;
-import java.util.Collection;
+
import java.util.List;
import java.util.Map;
-import java.util.stream.Collectors;
+import java.util.Collection;
/**
* 聊天消息Service业务层处理
*
- * @author Lion Li
- * @date 2023-11-26
+ * @author ageerle
+ * @date 2025-04-08
*/
@RequiredArgsConstructor
@Service
@@ -36,7 +32,6 @@ public class ChatMessageServiceImpl implements IChatMessageService {
private final ChatMessageMapper baseMapper;
- private final SysUserMapper sysUserMapper;
/**
* 查询聊天消息
*/
@@ -50,36 +45,11 @@ public class ChatMessageServiceImpl implements IChatMessageService {
*/
@Override
public TableDataInfo queryPageList(ChatMessageBo bo, PageQuery pageQuery) {
- // 根据用户名称查询用户
- if(StringUtils.isNotEmpty(bo.getUserName())){
- SysUserVo sysUserVo = sysUserMapper.selectUserByUserName(bo.getUserName());
- bo.setUserId(sysUserVo.getUserId());
- }
-
LambdaQueryWrapper lqw = buildQueryWrapper(bo);
Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
- if(CollectionUtil.isEmpty(result.getRecords())){
- return TableDataInfo.build(result);
- }
- List userIds = result.getRecords().stream()
- .map(ChatMessageVo::getUserId)
- .collect(Collectors.toList());
- // 一次性查询所有userName
- Map userIdToUserNameMap = getUserNamesByUserIds(userIds);
- // 设置userName
- result.getRecords().forEach(chatMessageVo -> {
- chatMessageVo.setUserName(userIdToUserNameMap.get(chatMessageVo.getUserId()));
- });
return TableDataInfo.build(result);
}
- private Map getUserNamesByUserIds(List userIds) {
- // 实现批量查询userName的逻辑,例如通过sysUserMapper查询sys_user表
- List sysUsers = sysUserMapper.selectBatchIds(userIds);
- return sysUsers.stream()
- .collect(Collectors.toMap(SysUser::getUserId, SysUser::getUserName));
- }
-
/**
* 查询聊天消息列表
*/
@@ -94,6 +64,7 @@ public class ChatMessageServiceImpl implements IChatMessageService {
LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getUserId() != null, ChatMessage::getUserId, bo.getUserId());
lqw.eq(StringUtils.isNotBlank(bo.getContent()), ChatMessage::getContent, bo.getContent());
+ lqw.eq(StringUtils.isNotBlank(bo.getRole()), ChatMessage::getRole, bo.getRole());
lqw.eq(bo.getDeductCost() != null, ChatMessage::getDeductCost, bo.getDeductCost());
lqw.eq(bo.getTotalTokens() != null, ChatMessage::getTotalTokens, bo.getTotalTokens());
lqw.like(StringUtils.isNotBlank(bo.getModelName()), ChatMessage::getModelName, bo.getModelName());
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatModelServiceImpl.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatModelServiceImpl.java
new file mode 100644
index 00000000..553032ef
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatModelServiceImpl.java
@@ -0,0 +1,127 @@
+package org.ruoyi.service.impl;
+
+import org.ruoyi.common.core.utils.MapstructUtils;
+import org.ruoyi.common.core.utils.StringUtils;
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.ruoyi.domain.ChatModel;
+import org.ruoyi.domain.bo.ChatModelBo;
+import org.ruoyi.domain.vo.ChatModelVo;
+import org.ruoyi.mapper.ChatModelMapper;
+import org.ruoyi.service.IChatModelService;
+import org.springframework.stereotype.Service;
+
+
+import java.util.*;
+
+/**
+ * 聊天模型Service业务层处理
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@RequiredArgsConstructor
+@Service
+public class ChatModelServiceImpl implements IChatModelService {
+
+ private final ChatModelMapper baseMapper;
+
+
+ /**
+ * 查询聊天模型
+ */
+ @Override
+ public ChatModelVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 查询聊天模型列表
+ */
+ @Override
+ public TableDataInfo queryPageList(ChatModelBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询聊天模型列表
+ */
+ @Override
+ public List queryList(ChatModelBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(ChatModelBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(StringUtils.isNotBlank(bo.getCategory()), ChatModel::getCategory, bo.getCategory());
+ lqw.like(StringUtils.isNotBlank(bo.getModelName()), ChatModel::getModelName, bo.getModelName());
+ lqw.eq(StringUtils.isNotBlank(bo.getModelDescribe()), ChatModel::getModelDescribe, bo.getModelDescribe());
+ lqw.eq(bo.getModelPrice() != null, ChatModel::getModelPrice, bo.getModelPrice());
+ lqw.eq(StringUtils.isNotBlank(bo.getModelType()), ChatModel::getModelType, bo.getModelType());
+ lqw.eq(StringUtils.isNotBlank(bo.getModelShow()), ChatModel::getModelShow, bo.getModelShow());
+ lqw.eq(StringUtils.isNotBlank(bo.getSystemPrompt()), ChatModel::getSystemPrompt, bo.getSystemPrompt());
+ lqw.eq(StringUtils.isNotBlank(bo.getApiHost()), ChatModel::getApiHost, bo.getApiHost());
+ lqw.eq(StringUtils.isNotBlank(bo.getApiKey()), ChatModel::getApiKey, bo.getApiKey());
+ return lqw;
+ }
+
+ /**
+ * 新增聊天模型
+ */
+ @Override
+ public Boolean insertByBo(ChatModelBo bo) {
+ ChatModel add = MapstructUtils.convert(bo, ChatModel.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改聊天模型
+ */
+ @Override
+ public Boolean updateByBo(ChatModelBo bo) {
+ ChatModel update = MapstructUtils.convert(bo, ChatModel.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(ChatModel entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 批量删除聊天模型
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteBatchIds(ids) > 0;
+ }
+
+ /**
+ * 通过模型名称获取模型信息
+ */
+ @Override
+ public ChatModelVo selectModelByName(String modelName) {
+ return baseMapper.selectVoOne(Wrappers.lambdaQuery().eq(ChatModel::getModelName, modelName));
+ }
+
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPackagePlanServiceImpl.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPackagePlanServiceImpl.java
new file mode 100644
index 00000000..bbf5f162
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPackagePlanServiceImpl.java
@@ -0,0 +1,113 @@
+package org.ruoyi.service.impl;
+
+import org.ruoyi.common.core.utils.MapstructUtils;
+import org.ruoyi.common.core.utils.StringUtils;
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.ruoyi.domain.ChatPackagePlan;
+import org.ruoyi.domain.bo.ChatPackagePlanBo;
+import org.ruoyi.domain.vo.ChatPackagePlanVo;
+import org.ruoyi.mapper.ChatPackagePlanMapper;
+import org.ruoyi.service.IChatPackagePlanService;
+import org.springframework.stereotype.Service;
+
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 套餐管理Service业务层处理
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@RequiredArgsConstructor
+@Service
+public class ChatPackagePlanServiceImpl implements IChatPackagePlanService {
+
+ private final ChatPackagePlanMapper baseMapper;
+
+ /**
+ * 查询套餐管理
+ */
+ @Override
+ public ChatPackagePlanVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 查询套餐管理列表
+ */
+ @Override
+ public TableDataInfo queryPageList(ChatPackagePlanBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询套餐管理列表
+ */
+ @Override
+ public List queryList(ChatPackagePlanBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(ChatPackagePlanBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.like(StringUtils.isNotBlank(bo.getName()), ChatPackagePlan::getName, bo.getName());
+ lqw.eq(bo.getPrice() != null, ChatPackagePlan::getPrice, bo.getPrice());
+ lqw.eq(bo.getDuration() != null, ChatPackagePlan::getDuration, bo.getDuration());
+ lqw.eq(StringUtils.isNotBlank(bo.getPlanDetail()), ChatPackagePlan::getPlanDetail, bo.getPlanDetail());
+ return lqw;
+ }
+
+ /**
+ * 新增套餐管理
+ */
+ @Override
+ public Boolean insertByBo(ChatPackagePlanBo bo) {
+ ChatPackagePlan add = MapstructUtils.convert(bo, ChatPackagePlan.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改套餐管理
+ */
+ @Override
+ public Boolean updateByBo(ChatPackagePlanBo bo) {
+ ChatPackagePlan update = MapstructUtils.convert(bo, ChatPackagePlan.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(ChatPackagePlan entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 批量删除套餐管理
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteBatchIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPayOrderServiceImpl.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPayOrderServiceImpl.java
new file mode 100644
index 00000000..6dab93a3
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPayOrderServiceImpl.java
@@ -0,0 +1,115 @@
+package org.ruoyi.service.impl;
+
+import org.ruoyi.common.core.utils.MapstructUtils;
+import org.ruoyi.common.core.utils.StringUtils;
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.ruoyi.domain.ChatPayOrder;
+import org.ruoyi.domain.bo.ChatPayOrderBo;
+import org.ruoyi.domain.vo.ChatPayOrderVo;
+import org.ruoyi.mapper.ChatPayOrderMapper;
+import org.ruoyi.service.IChatPayOrderService;
+import org.springframework.stereotype.Service;
+
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 支付订单Service业务层处理
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@RequiredArgsConstructor
+@Service
+public class ChatPayOrderServiceImpl implements IChatPayOrderService {
+
+ private final ChatPayOrderMapper baseMapper;
+
+ /**
+ * 查询支付订单
+ */
+ @Override
+ public ChatPayOrderVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 查询支付订单列表
+ */
+ @Override
+ public TableDataInfo queryPageList(ChatPayOrderBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询支付订单列表
+ */
+ @Override
+ public List queryList(ChatPayOrderBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(ChatPayOrderBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(StringUtils.isNotBlank(bo.getOrderNo()), ChatPayOrder::getOrderNo, bo.getOrderNo());
+ lqw.like(StringUtils.isNotBlank(bo.getOrderName()), ChatPayOrder::getOrderName, bo.getOrderName());
+ lqw.eq(bo.getAmount() != null, ChatPayOrder::getAmount, bo.getAmount());
+ lqw.eq(StringUtils.isNotBlank(bo.getPaymentStatus()), ChatPayOrder::getPaymentStatus, bo.getPaymentStatus());
+ lqw.eq(StringUtils.isNotBlank(bo.getPaymentMethod()), ChatPayOrder::getPaymentMethod, bo.getPaymentMethod());
+ lqw.eq(bo.getUserId() != null, ChatPayOrder::getUserId, bo.getUserId());
+ return lqw;
+ }
+
+ /**
+ * 新增支付订单
+ */
+ @Override
+ public Boolean insertByBo(ChatPayOrderBo bo) {
+ ChatPayOrder add = MapstructUtils.convert(bo, ChatPayOrder.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改支付订单
+ */
+ @Override
+ public Boolean updateByBo(ChatPayOrderBo bo) {
+ ChatPayOrder update = MapstructUtils.convert(bo, ChatPayOrder.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(ChatPayOrder entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 批量删除支付订单
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteBatchIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatPluginServiceImpl.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPluginServiceImpl.java
similarity index 87%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatPluginServiceImpl.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPluginServiceImpl.java
index 6b84e0cc..02c6c69e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatPluginServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPluginServiceImpl.java
@@ -1,19 +1,19 @@
-package org.ruoyi.system.service.impl;
+package org.ruoyi.service.impl;
import org.ruoyi.common.core.utils.MapstructUtils;
import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
+import org.ruoyi.domain.ChatPlugin;
+import org.ruoyi.domain.bo.ChatPluginBo;
+import org.ruoyi.domain.vo.ChatPluginVo;
+import org.ruoyi.mapper.ChatPluginMapper;
+import org.ruoyi.service.IChatPluginService;
import org.springframework.stereotype.Service;
-import org.ruoyi.system.domain.bo.ChatPluginBo;
-import org.ruoyi.system.domain.vo.ChatPluginVo;
-import org.ruoyi.system.domain.ChatPlugin;
-import org.ruoyi.system.mapper.ChatPluginMapper;
-import org.ruoyi.system.service.IChatPluginService;
import java.util.List;
import java.util.Map;
@@ -23,7 +23,7 @@ import java.util.Collection;
* 插件管理Service业务层处理
*
* @author ageerle
- * @date 2025-03-30
+ * @date 2025-04-08
*/
@RequiredArgsConstructor
@Service
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatTokenServiceImpl.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatTokenServiceImpl.java
similarity index 82%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatTokenServiceImpl.java
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatTokenServiceImpl.java
index f5e69bc3..85d931d2 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatTokenServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatTokenServiceImpl.java
@@ -1,10 +1,11 @@
-package org.ruoyi.system.service.impl;
+package org.ruoyi.service.impl;
+
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import org.ruoyi.system.domain.ChatToken;
-import org.ruoyi.system.mapper.ChatTokenMapper;
-import org.ruoyi.system.service.IChatTokenService;
import lombok.RequiredArgsConstructor;
+import org.ruoyi.domain.ChatToken;
+import org.ruoyi.mapper.ChatTokenMapper;
+import org.ruoyi.service.IChatTokenService;
import org.springframework.stereotype.Service;
/**
@@ -20,7 +21,7 @@ public class ChatTokenServiceImpl implements IChatTokenService {
private final ChatTokenMapper baseMapper;
@Override
- public ChatToken queryByUserId(Long userId,String modelName) {
+ public ChatToken queryByUserId(Long userId, String modelName) {
return baseMapper.selectOne(
new LambdaQueryWrapper()
.eq(ChatToken::getUserId, userId)
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatUsageTokenServiceImpl.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatUsageTokenServiceImpl.java
new file mode 100644
index 00000000..54afd665
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatUsageTokenServiceImpl.java
@@ -0,0 +1,112 @@
+package org.ruoyi.service.impl;
+
+import org.ruoyi.common.core.utils.MapstructUtils;
+import org.ruoyi.common.core.utils.StringUtils;
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.ruoyi.domain.ChatUsageToken;
+import org.ruoyi.domain.bo.ChatUsageTokenBo;
+import org.ruoyi.domain.vo.ChatUsageTokenVo;
+import org.ruoyi.mapper.ChatUsageTokenMapper;
+import org.ruoyi.service.IChatUsageTokenService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 用户token使用详情Service业务层处理
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@RequiredArgsConstructor
+@Service
+public class ChatUsageTokenServiceImpl implements IChatUsageTokenService {
+
+ private final ChatUsageTokenMapper baseMapper;
+
+ /**
+ * 查询用户token使用详情
+ */
+ @Override
+ public ChatUsageTokenVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 查询用户token使用详情列表
+ */
+ @Override
+ public TableDataInfo queryPageList(ChatUsageTokenBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询用户token使用详情列表
+ */
+ @Override
+ public List queryList(ChatUsageTokenBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(ChatUsageTokenBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(bo.getUserId() != null, ChatUsageToken::getUserId, bo.getUserId());
+ lqw.eq(bo.getToken() != null, ChatUsageToken::getToken, bo.getToken());
+ lqw.like(StringUtils.isNotBlank(bo.getModelName()), ChatUsageToken::getModelName, bo.getModelName());
+ lqw.eq(StringUtils.isNotBlank(bo.getTotalToken()), ChatUsageToken::getTotalToken, bo.getTotalToken());
+ return lqw;
+ }
+
+ /**
+ * 新增用户token使用详情
+ */
+ @Override
+ public Boolean insertByBo(ChatUsageTokenBo bo) {
+ ChatUsageToken add = MapstructUtils.convert(bo, ChatUsageToken.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改用户token使用详情
+ */
+ @Override
+ public Boolean updateByBo(ChatUsageTokenBo bo) {
+ ChatUsageToken update = MapstructUtils.convert(bo, ChatUsageToken.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(ChatUsageToken entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 批量删除用户token使用详情
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteBatchIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatVoucherServiceImpl.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatVoucherServiceImpl.java
new file mode 100644
index 00000000..0b2e777b
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatVoucherServiceImpl.java
@@ -0,0 +1,114 @@
+package org.ruoyi.service.impl;
+
+import org.ruoyi.common.core.utils.MapstructUtils;
+import org.ruoyi.common.core.utils.StringUtils;
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.ruoyi.domain.ChatVoucher;
+import org.ruoyi.domain.bo.ChatVoucherBo;
+import org.ruoyi.domain.vo.ChatVoucherVo;
+import org.ruoyi.mapper.ChatVoucherMapper;
+import org.ruoyi.service.IChatVoucherService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 用户兑换记录Service业务层处理
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@RequiredArgsConstructor
+@Service
+public class ChatVoucherServiceImpl implements IChatVoucherService {
+
+ private final ChatVoucherMapper baseMapper;
+
+ /**
+ * 查询用户兑换记录
+ */
+ @Override
+ public ChatVoucherVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 查询用户兑换记录列表
+ */
+ @Override
+ public TableDataInfo queryPageList(ChatVoucherBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询用户兑换记录列表
+ */
+ @Override
+ public List queryList(ChatVoucherBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(ChatVoucherBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(StringUtils.isNotBlank(bo.getCode()), ChatVoucher::getCode, bo.getCode());
+ lqw.eq(bo.getAmount() != null, ChatVoucher::getAmount, bo.getAmount());
+ lqw.eq(bo.getUserId() != null, ChatVoucher::getUserId, bo.getUserId());
+ lqw.eq(StringUtils.isNotBlank(bo.getStatus()), ChatVoucher::getStatus, bo.getStatus());
+ lqw.eq(bo.getBalanceBefore() != null, ChatVoucher::getBalanceBefore, bo.getBalanceBefore());
+ lqw.eq(bo.getBalanceAfter() != null, ChatVoucher::getBalanceAfter, bo.getBalanceAfter());
+ return lqw;
+ }
+
+ /**
+ * 新增用户兑换记录
+ */
+ @Override
+ public Boolean insertByBo(ChatVoucherBo bo) {
+ ChatVoucher add = MapstructUtils.convert(bo, ChatVoucher.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改用户兑换记录
+ */
+ @Override
+ public Boolean updateByBo(ChatVoucherBo bo) {
+ ChatVoucher update = MapstructUtils.convert(bo, ChatVoucher.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(ChatVoucher entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 批量删除用户兑换记录
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteBatchIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysModelMapper.xml b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatAgentManageMapper.xml
similarity index 72%
rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysModelMapper.xml
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatAgentManageMapper.xml
index a2ace81e..cfa640db 100644
--- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysModelMapper.xml
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatAgentManageMapper.xml
@@ -2,6 +2,6 @@
-
+
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/CoverMapper.xml b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatAppStoreMapper.xml
similarity index 73%
rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/CoverMapper.xml
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatAppStoreMapper.xml
index b5745320..53b29af4 100644
--- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/CoverMapper.xml
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatAppStoreMapper.xml
@@ -2,6 +2,6 @@
-
+
diff --git a/ruoyi-modules/ruoyi-demo/src/main/resources/mapper/demo/TestTreeMapper.xml b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatGptsMapper.xml
similarity index 73%
rename from ruoyi-modules/ruoyi-demo/src/main/resources/mapper/demo/TestTreeMapper.xml
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatGptsMapper.xml
index 46b0e366..cc22a8f6 100644
--- a/ruoyi-modules/ruoyi-demo/src/main/resources/mapper/demo/TestTreeMapper.xml
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatGptsMapper.xml
@@ -2,6 +2,6 @@
-
+
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatMessageMapper.xml b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatMessageMapper.xml
new file mode 100644
index 00000000..000a091c
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatMessageMapper.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatModelMapper.xml b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatModelMapper.xml
new file mode 100644
index 00000000..4e5a30e4
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatModelMapper.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPackagePlanMapper.xml b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPackagePlanMapper.xml
new file mode 100644
index 00000000..9875672a
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPackagePlanMapper.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPayOrderMapper.xml b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPayOrderMapper.xml
new file mode 100644
index 00000000..ca5ab53c
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPayOrderMapper.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatPluginMapper.xml b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPluginMapper.xml
similarity index 71%
rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatPluginMapper.xml
rename to ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPluginMapper.xml
index 3a678fba..f1dacfb8 100644
--- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ChatPluginMapper.xml
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPluginMapper.xml
@@ -2,6 +2,6 @@
-
+
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatVoucherMapper.xml b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatVoucherMapper.xml
new file mode 100644
index 00000000..9ef2787c
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatVoucherMapper.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/pom.xml b/ruoyi-modules-api/ruoyi-knowledge-api/pom.xml
new file mode 100644
index 00000000..27e20736
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/pom.xml
@@ -0,0 +1,52 @@
+
+
+ 4.0.0
+
+ org.ruoyi
+ ruoyi-modules-api
+ ${revision}
+ ../pom.xml
+
+
+ ruoyi-knowledge-api
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+
+
+ org.apache.pdfbox
+ pdfbox
+ 2.0.27
+
+
+
+
+ io.github.ollama4j
+ ollama4j
+ 1.0.79
+
+
+
+
+ io.milvus
+ milvus-sdk-java
+ 2.3.2
+
+
+
+ io.weaviate
+ client
+ 4.0.0
+
+
+
+
+
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/CodeFileLoader.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/CodeFileLoader.java
similarity index 87%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/CodeFileLoader.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/CodeFileLoader.java
index 5a74978d..93231412 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/CodeFileLoader.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/CodeFileLoader.java
@@ -1,8 +1,8 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.ruoyi.knowledge.chain.split.TextSplitter;
+import org.ruoyi.chain.split.TextSplitter;
import org.springframework.stereotype.Component;
import java.io.BufferedReader;
@@ -14,7 +14,7 @@ import java.util.List;
@Component
@AllArgsConstructor
@Slf4j
-public class CodeFileLoader implements ResourceLoader{
+public class CodeFileLoader implements ResourceLoader {
private final TextSplitter textSplitter;
@Override
public String getContent(InputStream inputStream) {
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/CsvFileLoader.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/CsvFileLoader.java
similarity index 66%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/CsvFileLoader.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/CsvFileLoader.java
index cec04fe2..37d99031 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/CsvFileLoader.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/CsvFileLoader.java
@@ -1,9 +1,11 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
+
+import org.ruoyi.chain.loader.ResourceLoader;
import java.io.InputStream;
import java.util.List;
-public class CsvFileLoader implements ResourceLoader{
+public class CsvFileLoader implements ResourceLoader {
@Override
public String getContent(InputStream inputStream) {
return null;
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/FolderLoader.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/FolderLoader.java
similarity index 88%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/FolderLoader.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/FolderLoader.java
index 1bbbc7c8..7422d31e 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/FolderLoader.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/FolderLoader.java
@@ -1,4 +1,4 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
import java.io.InputStream;
import java.util.List;
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/GithubLoader.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/GithubLoader.java
similarity index 66%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/GithubLoader.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/GithubLoader.java
index dd6b4496..55446efe 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/GithubLoader.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/GithubLoader.java
@@ -1,9 +1,11 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
+
+import org.ruoyi.chain.loader.ResourceLoader;
import java.io.InputStream;
import java.util.List;
-public class GithubLoader implements ResourceLoader{
+public class GithubLoader implements ResourceLoader {
@Override
public String getContent(InputStream inputStream) {
return null;
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/JsonFileLoader.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/JsonFileLoader.java
similarity index 65%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/JsonFileLoader.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/JsonFileLoader.java
index 5c69389c..35f3fd44 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/JsonFileLoader.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/JsonFileLoader.java
@@ -1,9 +1,11 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
+
+import org.ruoyi.chain.loader.ResourceLoader;
import java.io.InputStream;
import java.util.List;
-public class JsonFileLoader implements ResourceLoader{
+public class JsonFileLoader implements ResourceLoader {
@Override
public String getContent(InputStream inputStream) {
return null;
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/MarkDownFileLoader.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/MarkDownFileLoader.java
similarity index 85%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/MarkDownFileLoader.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/MarkDownFileLoader.java
index 24d43ff2..182d0a7c 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/MarkDownFileLoader.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/MarkDownFileLoader.java
@@ -1,8 +1,9 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.ruoyi.knowledge.chain.split.TextSplitter;
+import org.ruoyi.chain.loader.ResourceLoader;
+import org.ruoyi.chain.split.TextSplitter;
import org.springframework.stereotype.Component;
import java.io.BufferedReader;
@@ -14,7 +15,7 @@ import java.util.List;
@Component
@AllArgsConstructor
@Slf4j
-public class MarkDownFileLoader implements ResourceLoader{
+public class MarkDownFileLoader implements ResourceLoader {
private final TextSplitter textSplitter;
@Override
public String getContent(InputStream inputStream) {
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/PdfFileLoader.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/PdfFileLoader.java
similarity index 83%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/PdfFileLoader.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/PdfFileLoader.java
index 0acf355e..06e74b87 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/PdfFileLoader.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/PdfFileLoader.java
@@ -1,9 +1,10 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
import lombok.AllArgsConstructor;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
-import org.ruoyi.knowledge.chain.split.TextSplitter;
+import org.ruoyi.chain.loader.ResourceLoader;
+import org.ruoyi.chain.split.TextSplitter;
import org.springframework.stereotype.Component;
import java.io.IOException;
@@ -12,7 +13,7 @@ import java.util.List;
@Component
@AllArgsConstructor
-public class PdfFileLoader implements ResourceLoader{
+public class PdfFileLoader implements ResourceLoader {
private final TextSplitter characterTextSplitter;
@Override
public String getContent(InputStream inputStream) {
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/ResourceLoader.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/ResourceLoader.java
similarity index 84%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/ResourceLoader.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/ResourceLoader.java
index 9ef4b11d..9a91cdd0 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/ResourceLoader.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/ResourceLoader.java
@@ -1,4 +1,4 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
import java.io.InputStream;
import java.util.List;
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/ResourceLoaderFactory.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/ResourceLoaderFactory.java
similarity index 76%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/ResourceLoaderFactory.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/ResourceLoaderFactory.java
index 6a29b25c..aa72d761 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/ResourceLoaderFactory.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/ResourceLoaderFactory.java
@@ -1,11 +1,12 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
import lombok.AllArgsConstructor;
-import org.ruoyi.knowledge.chain.split.CharacterTextSplitter;
-import org.ruoyi.knowledge.chain.split.CodeTextSplitter;
-import org.ruoyi.knowledge.chain.split.MarkdownTextSplitter;
-import org.ruoyi.knowledge.chain.split.TokenTextSplitter;
-import org.ruoyi.knowledge.constant.FileType;
+import org.ruoyi.chain.split.CharacterTextSplitter;
+import org.ruoyi.chain.split.CodeTextSplitter;
+import org.ruoyi.chain.split.MarkdownTextSplitter;
+import org.ruoyi.chain.split.TokenTextSplitter;
+
+import org.ruoyi.constant.FileType;
import org.springframework.stereotype.Component;
@AllArgsConstructor
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/TextFileLoader.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/TextFileLoader.java
similarity index 92%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/TextFileLoader.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/TextFileLoader.java
index 95b8929a..da3051e9 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/TextFileLoader.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/TextFileLoader.java
@@ -1,8 +1,8 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.ruoyi.knowledge.chain.split.TextSplitter;
+import org.ruoyi.chain.split.TextSplitter;
import org.springframework.stereotype.Component;
import java.io.BufferedReader;
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/WordLoader.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/WordLoader.java
similarity index 84%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/WordLoader.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/WordLoader.java
index c31b9e6c..624f01b8 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/WordLoader.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/WordLoader.java
@@ -1,10 +1,11 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
-import org.ruoyi.knowledge.chain.split.TextSplitter;
+import org.ruoyi.chain.loader.ResourceLoader;
+import org.ruoyi.chain.split.TextSplitter;
import org.springframework.stereotype.Component;
import java.io.IOException;
@@ -14,7 +15,7 @@ import java.util.List;
@Component
@AllArgsConstructor
@Slf4j
-public class WordLoader implements ResourceLoader{
+public class WordLoader implements ResourceLoader {
private final TextSplitter textSplitter;
@Override
public String getContent(InputStream inputStream) {
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/CharacterTextSplitter.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/CharacterTextSplitter.java
similarity index 92%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/CharacterTextSplitter.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/CharacterTextSplitter.java
index 4b8f4af1..83ca3342 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/CharacterTextSplitter.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/CharacterTextSplitter.java
@@ -1,10 +1,11 @@
-package org.ruoyi.knowledge.chain.split;
+package org.ruoyi.chain.split;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.knowledge.domain.vo.KnowledgeInfoVo;
-import org.ruoyi.knowledge.service.IKnowledgeInfoService;
+import org.ruoyi.chain.split.TextSplitter;
+import org.ruoyi.domain.vo.KnowledgeInfoVo;
+import org.ruoyi.service.IKnowledgeInfoService;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/CodeTextSplitter.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/CodeTextSplitter.java
similarity index 68%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/CodeTextSplitter.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/CodeTextSplitter.java
index 209f5de6..f082ec8a 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/CodeTextSplitter.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/CodeTextSplitter.java
@@ -1,7 +1,8 @@
-package org.ruoyi.knowledge.chain.split;
+package org.ruoyi.chain.split;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.ruoyi.chain.split.TextSplitter;
import org.springframework.stereotype.Component;
import java.util.List;
@@ -9,7 +10,7 @@ import java.util.List;
@Component
@AllArgsConstructor
@Slf4j
-public class CodeTextSplitter implements TextSplitter{
+public class CodeTextSplitter implements TextSplitter {
@Override
public List split(String content, String kid) {
return null;
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/MarkdownTextSplitter.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/MarkdownTextSplitter.java
similarity index 89%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/MarkdownTextSplitter.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/MarkdownTextSplitter.java
index 89ea6536..299cc435 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/MarkdownTextSplitter.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/MarkdownTextSplitter.java
@@ -1,4 +1,4 @@
-package org.ruoyi.knowledge.chain.split;
+package org.ruoyi.chain.split;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/TextSplitter.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/TextSplitter.java
similarity index 87%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/TextSplitter.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/TextSplitter.java
index 86b3aafd..93b5d57f 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/TextSplitter.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/TextSplitter.java
@@ -1,4 +1,4 @@
-package org.ruoyi.knowledge.chain.split;
+package org.ruoyi.chain.split;
import java.util.List;
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/TokenTextSplitter.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/TokenTextSplitter.java
similarity index 68%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/TokenTextSplitter.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/TokenTextSplitter.java
index 696f2610..823014a9 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/TokenTextSplitter.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/TokenTextSplitter.java
@@ -1,7 +1,8 @@
-package org.ruoyi.knowledge.chain.split;
+package org.ruoyi.chain.split;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.ruoyi.chain.split.TextSplitter;
import org.springframework.stereotype.Component;
import java.util.List;
@@ -9,7 +10,7 @@ import java.util.List;
@Component
@AllArgsConstructor
@Slf4j
-public class TokenTextSplitter implements TextSplitter{
+public class TokenTextSplitter implements TextSplitter {
@Override
public List split(String content, String kid) {
return null;
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/constant/FileType.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/constant/FileType.java
similarity index 98%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/constant/FileType.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/constant/FileType.java
index 6a9451a6..aa141679 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/constant/FileType.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/constant/FileType.java
@@ -1,4 +1,4 @@
-package org.ruoyi.knowledge.constant;
+package org.ruoyi.constant;
public class FileType {
public static final String TXT = "txt";
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/KnowledgeAttach.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeAttach.java
similarity index 52%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/KnowledgeAttach.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeAttach.java
index 694018da..5935ddc8 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/KnowledgeAttach.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeAttach.java
@@ -1,25 +1,29 @@
-package org.ruoyi.knowledge.domain;
+package org.ruoyi.domain;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import lombok.EqualsAndHashCode;
+import org.ruoyi.core.domain.BaseEntity;
-import java.io.Serializable;
-import java.util.Date;
+import java.io.Serial;
/**
* 知识库附件对象 knowledge_attach
*
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
-
+@EqualsAndHashCode(callSuper = true)
@TableName("knowledge_attach")
-public class KnowledgeAttach extends BaseEntity {
+public class KnowledgeAttach extends BaseEntity {
+ @Serial
+ private static final long serialVersionUID = 1L;
+ /**
+ *
+ */
@TableId(value = "id")
private Long id;
@@ -48,4 +52,10 @@ public class KnowledgeAttach extends BaseEntity {
*/
private String content;
+ /**
+ * 备注
+ */
+ private String remark;
+
+
}
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/KnowledgeFragment.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeFragment.java
similarity index 64%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/KnowledgeFragment.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeFragment.java
index f733f067..c5c4052c 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/KnowledgeFragment.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeFragment.java
@@ -1,27 +1,29 @@
-package org.ruoyi.knowledge.domain;
+package org.ruoyi.domain;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import lombok.EqualsAndHashCode;
+import org.ruoyi.core.domain.BaseEntity;
import java.io.Serial;
-import java.io.Serializable;
-import java.util.Date;
/**
* 知识片段对象 knowledge_fragment
*
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
+@EqualsAndHashCode(callSuper = true)
@TableName("knowledge_fragment")
public class KnowledgeFragment extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
+ /**
+ *
+ */
@TableId(value = "id")
private Long id;
@@ -43,12 +45,17 @@ public class KnowledgeFragment extends BaseEntity {
/**
* 片段索引下标
*/
- private Integer idx;
+ private Long idx;
/**
* 文档内容
*/
private String content;
+ /**
+ * 备注
+ */
+ private String remark;
+
}
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/KnowledgeInfo.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeInfo.java
similarity index 65%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/KnowledgeInfo.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeInfo.java
index 4f1c4821..230a1d65 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/KnowledgeInfo.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeInfo.java
@@ -1,25 +1,22 @@
-package org.ruoyi.knowledge.domain;
+package org.ruoyi.domain;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import jakarta.validation.constraints.NotBlank;
+import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import lombok.EqualsAndHashCode;
+import org.ruoyi.core.domain.BaseEntity;
import java.io.Serial;
-import java.io.Serializable;
-import java.util.Date;
-
/**
* 知识库对象 knowledge_info
*
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
+@EqualsAndHashCode(callSuper = true)
@TableName("knowledge_info")
-public class KnowledgeInfo extends BaseEntity {
+public class KnowledgeInfo extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
@@ -48,7 +45,7 @@ public class KnowledgeInfo extends BaseEntity {
/**
* 是否公开知识库(0 否 1是)
*/
- private String share;
+ private Integer share;
/**
* 描述
@@ -68,17 +65,17 @@ public class KnowledgeInfo extends BaseEntity {
/**
* 重叠字符数
*/
- private Integer overlapChar;
+ private Long overlapChar;
/**
* 知识库中检索的条数
*/
- private Integer retrieveLimit;
+ private Long retrieveLimit;
/**
* 文本块大小
*/
- private Integer textBlockSize;
+ private Long textBlockSize;
/**
* 向量库
@@ -89,4 +86,11 @@ public class KnowledgeInfo extends BaseEntity {
* 向量模型
*/
private String vectorModel;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
}
diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeAttachBo.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeAttachBo.java
new file mode 100644
index 00000000..3851a22e
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeAttachBo.java
@@ -0,0 +1,66 @@
+package org.ruoyi.domain.bo;
+
+import org.ruoyi.common.core.validate.AddGroup;
+import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.domain.KnowledgeAttach;
+import org.ruoyi.core.domain.BaseEntity;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 知识库附件业务对象 knowledge_attach
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = KnowledgeAttach.class, reverseConvertGenerate = false)
+public class KnowledgeAttachBo extends BaseEntity {
+
+ /**
+ *
+ */
+ @NotNull(message = "不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 知识库ID
+ */
+ @NotBlank(message = "知识库ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String kid;
+
+ /**
+ * 文档ID
+ */
+ @NotBlank(message = "文档ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String docId;
+
+ /**
+ * 文档名称
+ */
+ @NotBlank(message = "文档名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String docName;
+
+ /**
+ * 文档类型
+ */
+ @NotBlank(message = "文档类型不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String docType;
+
+ /**
+ * 文档内容
+ */
+ @NotBlank(message = "文档内容不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String content;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeFragmentBo.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeFragmentBo.java
new file mode 100644
index 00000000..6d4ed6fe
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeFragmentBo.java
@@ -0,0 +1,66 @@
+package org.ruoyi.domain.bo;
+
+import org.ruoyi.common.core.validate.AddGroup;
+import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.domain.KnowledgeFragment;
+import org.ruoyi.core.domain.BaseEntity;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 知识片段业务对象 knowledge_fragment
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = KnowledgeFragment.class, reverseConvertGenerate = false)
+public class KnowledgeFragmentBo extends BaseEntity {
+
+ /**
+ *
+ */
+ @NotNull(message = "不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 知识库ID
+ */
+ @NotBlank(message = "知识库ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String kid;
+
+ /**
+ * 文档ID
+ */
+ @NotBlank(message = "文档ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String docId;
+
+ /**
+ * 知识片段ID
+ */
+ @NotBlank(message = "知识片段ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String fid;
+
+ /**
+ * 片段索引下标
+ */
+ @NotNull(message = "片段索引下标不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long idx;
+
+ /**
+ * 文档内容
+ */
+ @NotBlank(message = "文档内容不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String content;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeInfoBo.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeInfoBo.java
new file mode 100644
index 00000000..0d8e3eea
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeInfoBo.java
@@ -0,0 +1,108 @@
+package org.ruoyi.domain.bo;
+
+import org.ruoyi.common.core.validate.AddGroup;
+import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.domain.KnowledgeInfo;
+import org.ruoyi.core.domain.BaseEntity;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 知识库业务对象 knowledge_info
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = KnowledgeInfo.class, reverseConvertGenerate = false)
+public class KnowledgeInfoBo extends BaseEntity {
+
+ /**
+ *
+ */
+ @NotNull(message = "不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 知识库ID
+ */
+ @NotBlank(message = "知识库ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String kid;
+
+ /**
+ * 用户ID
+ */
+ @NotNull(message = "用户ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long uid;
+
+ /**
+ * 知识库名称
+ */
+ @NotBlank(message = "知识库名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String kname;
+
+ /**
+ * 是否公开知识库(0 否 1是)
+ */
+ @NotNull(message = "是否公开知识库(0 否 1是)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Integer share;
+
+ /**
+ * 描述
+ */
+ @NotBlank(message = "描述不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String description;
+
+ /**
+ * 知识分隔符
+ */
+ @NotBlank(message = "知识分隔符不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String knowledgeSeparator;
+
+ /**
+ * 提问分隔符
+ */
+ @NotBlank(message = "提问分隔符不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String questionSeparator;
+
+ /**
+ * 重叠字符数
+ */
+ @NotNull(message = "重叠字符数不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long overlapChar;
+
+ /**
+ * 知识库中检索的条数
+ */
+ @NotNull(message = "知识库中检索的条数不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long retrieveLimit;
+
+ /**
+ * 文本块大小
+ */
+ @NotNull(message = "文本块大小不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long textBlockSize;
+
+ /**
+ * 向量库
+ */
+ @NotBlank(message = "向量库不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String vector;
+
+ /**
+ * 向量模型
+ */
+ @NotBlank(message = "向量模型不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String vectorModel;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/vo/KnowledgeAttachVo.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeAttachVo.java
similarity index 84%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/vo/KnowledgeAttachVo.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeAttachVo.java
index bd0b141f..fb463d4b 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/vo/KnowledgeAttachVo.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeAttachVo.java
@@ -1,19 +1,22 @@
-package org.ruoyi.knowledge.domain.vo;
+package org.ruoyi.domain.vo;
+import org.ruoyi.domain.KnowledgeAttach;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
-import org.ruoyi.knowledge.domain.KnowledgeAttach;
import java.io.Serial;
import java.io.Serializable;
+
+
+
/**
* 知识库附件视图对象 knowledge_attach
*
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@ExcelIgnoreUnannotated
@@ -59,5 +62,11 @@ public class KnowledgeAttachVo implements Serializable {
@ExcelProperty(value = "文档内容")
private String content;
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
}
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/vo/KnowledgeFragmentVo.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeFragmentVo.java
similarity index 83%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/vo/KnowledgeFragmentVo.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeFragmentVo.java
index 630bbe06..fcda4580 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/vo/KnowledgeFragmentVo.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeFragmentVo.java
@@ -1,19 +1,24 @@
-package org.ruoyi.knowledge.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.knowledge.domain.KnowledgeFragment;
+import org.ruoyi.domain.KnowledgeFragment;
import java.io.Serial;
import java.io.Serializable;
+
+
+
/**
* 知识片段视图对象 knowledge_fragment
*
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@ExcelIgnoreUnannotated
@@ -59,4 +64,11 @@ public class KnowledgeFragmentVo implements Serializable {
@ExcelProperty(value = "文档内容")
private String content;
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
}
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/vo/KnowledgeInfoVo.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeInfoVo.java
similarity index 77%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/vo/KnowledgeInfoVo.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeInfoVo.java
index a47b5d60..6a5fdbf8 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/vo/KnowledgeInfoVo.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeInfoVo.java
@@ -1,19 +1,26 @@
-package org.ruoyi.knowledge.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.knowledge.domain.KnowledgeInfo;
+import org.ruoyi.common.excel.annotation.ExcelDictFormat;
+import org.ruoyi.common.excel.convert.ExcelDictConvert;
+import org.ruoyi.domain.KnowledgeInfo;
import java.io.Serial;
import java.io.Serializable;
+
+
+
/**
* 知识库视图对象 knowledge_info
*
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@ExcelIgnoreUnannotated
@@ -48,9 +55,11 @@ public class KnowledgeInfoVo implements Serializable {
private String kname;
/**
- * 知识库名称
+ * 是否公开知识库(0 否 1是)
*/
- private String share;
+ @ExcelProperty(value = "是否公开知识库", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "0=,否=,1=是")
+ private Integer share;
/**
* 描述
@@ -99,4 +108,12 @@ public class KnowledgeInfoVo implements Serializable {
*/
@ExcelProperty(value = "向量模型")
private String vectorModel;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
}
diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeAttachMapper.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeAttachMapper.java
new file mode 100644
index 00000000..aef5bf25
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeAttachMapper.java
@@ -0,0 +1,16 @@
+package org.ruoyi.mapper;
+
+
+import org.ruoyi.domain.KnowledgeAttach;
+import org.ruoyi.domain.vo.KnowledgeAttachVo;
+import org.ruoyi.core.mapper.BaseMapperPlus;
+
+/**
+ * 知识库附件Mapper接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface KnowledgeAttachMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeFragmentMapper.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeFragmentMapper.java
new file mode 100644
index 00000000..472d3896
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeFragmentMapper.java
@@ -0,0 +1,16 @@
+package org.ruoyi.mapper;
+
+
+import org.ruoyi.domain.KnowledgeFragment;
+import org.ruoyi.domain.vo.KnowledgeFragmentVo;
+import org.ruoyi.core.mapper.BaseMapperPlus;
+
+/**
+ * 知识片段Mapper接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface KnowledgeFragmentMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeInfoMapper.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeInfoMapper.java
new file mode 100644
index 00000000..08077719
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeInfoMapper.java
@@ -0,0 +1,16 @@
+package org.ruoyi.mapper;
+
+
+import org.ruoyi.domain.KnowledgeInfo;
+import org.ruoyi.domain.vo.KnowledgeInfoVo;
+import org.ruoyi.core.mapper.BaseMapperPlus;
+
+/**
+ * 知识库Mapper接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface KnowledgeInfoMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/EmbeddingService.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/EmbeddingService.java
similarity index 92%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/EmbeddingService.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/EmbeddingService.java
index a4dd30d5..98841189 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/EmbeddingService.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/EmbeddingService.java
@@ -1,4 +1,4 @@
-package org.ruoyi.knowledge.service;
+package org.ruoyi.service;
import java.util.List;
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/IKnowledgeAttachService.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeAttachService.java
similarity index 67%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/IKnowledgeAttachService.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeAttachService.java
index 6ed856ee..ee3640b5 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/IKnowledgeAttachService.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeAttachService.java
@@ -1,9 +1,10 @@
-package org.ruoyi.knowledge.service;
+package org.ruoyi.service;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
-import org.ruoyi.knowledge.domain.bo.KnowledgeAttachBo;
-import org.ruoyi.knowledge.domain.vo.KnowledgeAttachVo;
+
+import org.ruoyi.domain.bo.KnowledgeAttachBo;
+import org.ruoyi.domain.vo.KnowledgeAttachVo;
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
@@ -11,8 +12,8 @@ import java.util.List;
/**
* 知识库附件Service接口
*
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
*/
public interface IKnowledgeAttachService {
@@ -45,10 +46,4 @@ public interface IKnowledgeAttachService {
* 校验并批量删除知识库附件信息
*/
Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
-
-
- /**
- * 删除知识附件
- */
- void removeKnowledgeAttach(String docId);
}
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/IKnowledgeFragmentService.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeFragmentService.java
similarity index 72%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/IKnowledgeFragmentService.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeFragmentService.java
index 7546a1d5..ad141f7d 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/IKnowledgeFragmentService.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeFragmentService.java
@@ -1,9 +1,10 @@
-package org.ruoyi.knowledge.service;
+package org.ruoyi.service;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
-import org.ruoyi.knowledge.domain.bo.KnowledgeFragmentBo;
-import org.ruoyi.knowledge.domain.vo.KnowledgeFragmentVo;
+
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.domain.bo.KnowledgeFragmentBo;
+import org.ruoyi.domain.vo.KnowledgeFragmentVo;
import java.util.Collection;
import java.util.List;
@@ -11,8 +12,8 @@ import java.util.List;
/**
* 知识片段Service接口
*
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
*/
public interface IKnowledgeFragmentService {
diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeInfoService.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeInfoService.java
new file mode 100644
index 00000000..4619d1d9
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeInfoService.java
@@ -0,0 +1,49 @@
+package org.ruoyi.service;
+
+
+import org.ruoyi.domain.bo.KnowledgeInfoBo;
+import org.ruoyi.domain.vo.KnowledgeInfoVo;
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 知识库Service接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface IKnowledgeInfoService {
+
+ /**
+ * 查询知识库
+ */
+ KnowledgeInfoVo queryById(Long id);
+
+ /**
+ * 查询知识库列表
+ */
+ TableDataInfo queryPageList(KnowledgeInfoBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询知识库列表
+ */
+ List queryList(KnowledgeInfoBo bo);
+
+ /**
+ * 新增知识库
+ */
+ Boolean insertByBo(KnowledgeInfoBo bo);
+
+ /**
+ * 修改知识库
+ */
+ Boolean updateByBo(KnowledgeInfoBo bo);
+
+ /**
+ * 校验并批量删除知识库信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/VectorStore.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/VectorStoreService.java
similarity index 85%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/VectorStore.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/VectorStoreService.java
index 6be022d4..d3294bb3 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/VectorStore.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/VectorStoreService.java
@@ -1,11 +1,11 @@
-package org.ruoyi.knowledge.chain.vectorstore;
+package org.ruoyi.service;
import java.util.List;
/**
* 向量存储
*/
-public interface VectorStore {
+public interface VectorStoreService {
void storeEmbeddings(List chunkList, List> vectorList, String kid, String docId, List fidList);
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/Vectorization.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/VectorizationService.java
similarity index 66%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/Vectorization.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/VectorizationService.java
index 1c25ddeb..81888810 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/Vectorization.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/VectorizationService.java
@@ -1,11 +1,12 @@
-package org.ruoyi.knowledge.chain.vectorizer;
+package org.ruoyi.service;
import java.util.List;
/**
- * 向量化
+ * 文本向量化
*/
-public interface Vectorization {
+public interface VectorizationService {
+
List> batchVectorization(List chunkList, String kid);
List singleVectorization(String chunk, String kid);
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/EmbeddingServiceImpl.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/EmbeddingServiceImpl.java
similarity index 84%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/EmbeddingServiceImpl.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/EmbeddingServiceImpl.java
index 96e568a2..00657399 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/EmbeddingServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/EmbeddingServiceImpl.java
@@ -1,9 +1,9 @@
-package org.ruoyi.knowledge.service.impl;
+package org.ruoyi.service.impl;
import lombok.AllArgsConstructor;
-import org.ruoyi.knowledge.chain.vectorizer.Vectorization;
-import org.ruoyi.knowledge.chain.vectorstore.VectorStore;
-import org.ruoyi.knowledge.service.EmbeddingService;
+import org.ruoyi.service.EmbeddingService;
+import org.ruoyi.service.VectorStoreService;
+import org.ruoyi.service.VectorizationService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@@ -13,8 +13,8 @@ import java.util.List;
@AllArgsConstructor
public class EmbeddingServiceImpl implements EmbeddingService {
- private final VectorStore vectorStore;
- private final Vectorization vectorization;
+ private final VectorStoreService vectorStore;
+ private final VectorizationService vectorization;
/**
* 保存向量数据库
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/KnowledgeAttachServiceImpl.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeAttachServiceImpl.java
similarity index 72%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/KnowledgeAttachServiceImpl.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeAttachServiceImpl.java
index 8ae5340b..a2194625 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/KnowledgeAttachServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeAttachServiceImpl.java
@@ -1,36 +1,30 @@
-package org.ruoyi.knowledge.service.impl;
+package org.ruoyi.service.impl;
+import org.ruoyi.common.core.utils.MapstructUtils;
+import org.ruoyi.common.core.utils.StringUtils;
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
-import org.ruoyi.common.core.domain.model.LoginUser;
-import org.ruoyi.common.core.utils.MapstructUtils;
-import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
-import org.ruoyi.common.satoken.utils.LoginHelper;
-import org.ruoyi.knowledge.domain.KnowledgeAttach;
-import org.ruoyi.knowledge.domain.bo.KnowledgeAttachBo;
-import org.ruoyi.knowledge.domain.vo.KnowledgeAttachVo;
-import org.ruoyi.knowledge.domain.vo.KnowledgeInfoVo;
-import org.ruoyi.knowledge.mapper.KnowledgeAttachMapper;
-import org.ruoyi.knowledge.mapper.KnowledgeFragmentMapper;
-import org.ruoyi.knowledge.mapper.KnowledgeInfoMapper;
-import org.ruoyi.knowledge.service.IKnowledgeAttachService;
-import org.ruoyi.knowledge.service.IKnowledgeInfoService;
+import org.ruoyi.domain.vo.KnowledgeAttachVo;
import org.springframework.stereotype.Service;
+import org.ruoyi.domain.bo.KnowledgeAttachBo;
+
+import org.ruoyi.domain.KnowledgeAttach;
+import org.ruoyi.mapper.KnowledgeAttachMapper;
+import org.ruoyi.service.IKnowledgeAttachService;
-import java.util.Collection;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Collection;
/**
* 知识库附件Service业务层处理
*
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
*/
@RequiredArgsConstructor
@Service
@@ -38,13 +32,6 @@ public class KnowledgeAttachServiceImpl implements IKnowledgeAttachService {
private final KnowledgeAttachMapper baseMapper;
- private final KnowledgeFragmentMapper fragmentMapper;
-
- private final KnowledgeInfoMapper knowledgeInfoMapper;
-
- private final IKnowledgeInfoService knowledgeInfoService;
-
-
/**
* 查询知识库附件
*/
@@ -124,12 +111,4 @@ public class KnowledgeAttachServiceImpl implements IKnowledgeAttachService {
}
return baseMapper.deleteBatchIds(ids) > 0;
}
-
- @Override
- public void removeKnowledgeAttach(String docId) {
- Map map = new HashMap<>();
- map.put("doc_id",docId);
- baseMapper.deleteByMap(map);
- fragmentMapper.deleteByMap(map);
- }
}
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/KnowledgeFragmentServiceImpl.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeFragmentServiceImpl.java
similarity index 86%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/KnowledgeFragmentServiceImpl.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeFragmentServiceImpl.java
index ff6efcc7..0271d4db 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/KnowledgeFragmentServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeFragmentServiceImpl.java
@@ -1,28 +1,29 @@
-package org.ruoyi.knowledge.service.impl;
+package org.ruoyi.service.impl;
+import org.ruoyi.common.core.utils.MapstructUtils;
+import org.ruoyi.common.core.utils.StringUtils;
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
-import org.ruoyi.common.core.utils.MapstructUtils;
-import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
-import org.ruoyi.knowledge.domain.KnowledgeFragment;
-import org.ruoyi.knowledge.domain.bo.KnowledgeFragmentBo;
-import org.ruoyi.knowledge.domain.vo.KnowledgeFragmentVo;
-import org.ruoyi.knowledge.mapper.KnowledgeFragmentMapper;
-import org.ruoyi.knowledge.service.IKnowledgeFragmentService;
+import org.ruoyi.domain.vo.KnowledgeFragmentVo;
import org.springframework.stereotype.Service;
+import org.ruoyi.domain.bo.KnowledgeFragmentBo;
+import org.ruoyi.domain.KnowledgeFragment;
+import org.ruoyi.mapper.KnowledgeFragmentMapper;
+import org.ruoyi.service.IKnowledgeFragmentService;
-import java.util.Collection;
import java.util.List;
import java.util.Map;
+import java.util.Collection;
+
/**
* 知识片段Service业务层处理
*
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
*/
@RequiredArgsConstructor
@Service
@@ -44,7 +45,6 @@ public class KnowledgeFragmentServiceImpl implements IKnowledgeFragmentService {
@Override
public TableDataInfo queryPageList(KnowledgeFragmentBo bo, PageQuery pageQuery) {
LambdaQueryWrapper lqw = buildQueryWrapper(bo);
- lqw.eq(KnowledgeFragment::getDocId, bo.getDocId());
Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeInfoServiceImpl.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeInfoServiceImpl.java
new file mode 100644
index 00000000..254085a1
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeInfoServiceImpl.java
@@ -0,0 +1,120 @@
+package org.ruoyi.service.impl;
+
+import org.ruoyi.common.core.utils.MapstructUtils;
+import org.ruoyi.common.core.utils.StringUtils;
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.ruoyi.domain.vo.KnowledgeInfoVo;
+import org.springframework.stereotype.Service;
+import org.ruoyi.domain.bo.KnowledgeInfoBo;
+import org.ruoyi.domain.KnowledgeInfo;
+import org.ruoyi.mapper.KnowledgeInfoMapper;
+import org.ruoyi.service.IKnowledgeInfoService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 知识库Service业务层处理
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@RequiredArgsConstructor
+@Service
+public class KnowledgeInfoServiceImpl implements IKnowledgeInfoService {
+
+ private final KnowledgeInfoMapper baseMapper;
+
+ /**
+ * 查询知识库
+ */
+ @Override
+ public KnowledgeInfoVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 查询知识库列表
+ */
+ @Override
+ public TableDataInfo queryPageList(KnowledgeInfoBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询知识库列表
+ */
+ @Override
+ public List queryList(KnowledgeInfoBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(KnowledgeInfoBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(StringUtils.isNotBlank(bo.getKid()), KnowledgeInfo::getKid, bo.getKid());
+ lqw.eq(bo.getUid() != null, KnowledgeInfo::getUid, bo.getUid());
+ lqw.like(StringUtils.isNotBlank(bo.getKname()), KnowledgeInfo::getKname, bo.getKname());
+ lqw.eq(bo.getShare() != null, KnowledgeInfo::getShare, bo.getShare());
+ lqw.eq(StringUtils.isNotBlank(bo.getDescription()), KnowledgeInfo::getDescription, bo.getDescription());
+ lqw.eq(StringUtils.isNotBlank(bo.getKnowledgeSeparator()), KnowledgeInfo::getKnowledgeSeparator, bo.getKnowledgeSeparator());
+ lqw.eq(StringUtils.isNotBlank(bo.getQuestionSeparator()), KnowledgeInfo::getQuestionSeparator, bo.getQuestionSeparator());
+ lqw.eq(bo.getOverlapChar() != null, KnowledgeInfo::getOverlapChar, bo.getOverlapChar());
+ lqw.eq(bo.getRetrieveLimit() != null, KnowledgeInfo::getRetrieveLimit, bo.getRetrieveLimit());
+ lqw.eq(bo.getTextBlockSize() != null, KnowledgeInfo::getTextBlockSize, bo.getTextBlockSize());
+ lqw.eq(StringUtils.isNotBlank(bo.getVector()), KnowledgeInfo::getVector, bo.getVector());
+ lqw.eq(StringUtils.isNotBlank(bo.getVectorModel()), KnowledgeInfo::getVectorModel, bo.getVectorModel());
+ return lqw;
+ }
+
+ /**
+ * 新增知识库
+ */
+ @Override
+ public Boolean insertByBo(KnowledgeInfoBo bo) {
+ KnowledgeInfo add = MapstructUtils.convert(bo, KnowledgeInfo.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改知识库
+ */
+ @Override
+ public Boolean updateByBo(KnowledgeInfoBo bo) {
+ KnowledgeInfo update = MapstructUtils.convert(bo, KnowledgeInfo.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(KnowledgeInfo entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 批量删除知识库
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteBatchIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/WeaviateVectorStore.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/WeaviateVectorStoreImpl.java
similarity index 98%
rename from ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/WeaviateVectorStore.java
rename to ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/WeaviateVectorStoreImpl.java
index 785054d0..994bc727 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/WeaviateVectorStore.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/WeaviateVectorStoreImpl.java
@@ -1,7 +1,7 @@
-package org.ruoyi.knowledge.chain.vectorstore;
+package org.ruoyi.service.impl;
import cn.hutool.core.lang.UUID;
-import com.alibaba.fastjson2.JSONObject;
+import cn.hutool.json.JSONObject;
import com.google.gson.internal.LinkedTreeMap;
import io.weaviate.client.Config;
import io.weaviate.client.WeaviateClient;
@@ -27,9 +27,9 @@ import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.ruoyi.common.core.service.ConfigService;
-import org.ruoyi.knowledge.domain.vo.KnowledgeInfoVo;
-import org.ruoyi.knowledge.service.IKnowledgeInfoService;
-import org.springframework.beans.factory.annotation.Value;
+import org.ruoyi.domain.vo.KnowledgeInfoVo;
+import org.ruoyi.service.IKnowledgeInfoService;
+import org.ruoyi.service.VectorStoreService;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@@ -40,7 +40,7 @@ import java.util.Map;
@Service
@Slf4j
-public class WeaviateVectorStore implements VectorStore {
+public class WeaviateVectorStoreImpl implements VectorStoreService {
private volatile String protocol;
private volatile String host;
diff --git a/ruoyi-modules-api/ruoyi-system-api/pom.xml b/ruoyi-modules-api/ruoyi-system-api/pom.xml
new file mode 100644
index 00000000..69fe0cc6
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-system-api/pom.xml
@@ -0,0 +1,21 @@
+
+
+ 4.0.0
+
+ org.ruoyi
+ ruoyi-modules-api
+ ${revision}
+ ../pom.xml
+
+
+ ruoyi-system-api
+
+
+ 17
+ 17
+ UTF-8
+
+
+
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatConfig.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/ChatConfig.java
similarity index 74%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatConfig.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/ChatConfig.java
index a38b2f0a..6da4e266 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatConfig.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/ChatConfig.java
@@ -1,26 +1,26 @@
package org.ruoyi.system.domain;
+
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.Version;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import org.ruoyi.common.sensitive.annotation.Sensitive;
-import org.ruoyi.common.sensitive.core.SensitiveStrategy;
-import org.ruoyi.common.tenant.core.TenantEntity;
+import org.ruoyi.core.domain.BaseEntity;
import java.io.Serial;
/**
- * 对话配置信息对象 chat_config
+ * 配置信息对象 chat_config
*
- * @author Lion Li
- * @date 2024-04-13
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("chat_config")
-public class ChatConfig extends TenantEntity {
+public class ChatConfig extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
@@ -44,7 +44,6 @@ public class ChatConfig extends TenantEntity {
/**
* 配置值
*/
- @Sensitive(strategy = SensitiveStrategy.SKY)
private String configValue;
/**
@@ -57,6 +56,12 @@ public class ChatConfig extends TenantEntity {
*/
private String remark;
+ /**
+ * 版本
+ */
+ @Version
+ private Long version;
+
/**
* 删除标志(0代表存在 1代表删除)
*/
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysCache.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysCache.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysCache.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysCache.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysConfig.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysConfig.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysConfig.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysConfig.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysDept.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysDept.java
similarity index 97%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysDept.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysDept.java
index ea00915d..5be5f44b 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysDept.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysDept.java
@@ -47,7 +47,7 @@ public class SysDept extends TenantEntity {
/**
* 负责人
*/
- private String leader;
+ private Long leader;
/**
* 联系电话
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysDictData.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysDictData.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysDictData.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysDictData.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysDictType.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysDictType.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysDictType.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysDictType.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysLogininfor.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysLogininfor.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysLogininfor.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysLogininfor.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysMenu.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysMenu.java
similarity index 98%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysMenu.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysMenu.java
index 10fedb5d..11c1357f 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysMenu.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysMenu.java
@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import org.ruoyi.common.core.constant.Constants;
import org.ruoyi.common.core.constant.UserConstants;
import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import org.ruoyi.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysNotice.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysNotice.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysNotice.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysNotice.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysNoticeState.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysNoticeState.java
similarity index 93%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysNoticeState.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysNoticeState.java
index e0b7f945..a74f3cc9 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysNoticeState.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysNoticeState.java
@@ -4,7 +4,7 @@ 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;
+import org.ruoyi.core.domain.BaseEntity;
import java.io.Serial;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysOperLog.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysOperLog.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysOperLog.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysOperLog.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysOss.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysOss.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysOss.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysOss.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysOssConfig.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysOssConfig.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysOssConfig.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysOssConfig.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysPost.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysPost.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysPost.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysPost.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysRole.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysRole.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysRole.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysRole.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysRoleDept.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysRoleDept.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysRoleDept.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysRoleDept.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysRoleMenu.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysRoleMenu.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysRoleMenu.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysRoleMenu.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysTenant.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysTenant.java
similarity index 96%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysTenant.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysTenant.java
index d0596f1e..064eebe7 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysTenant.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysTenant.java
@@ -5,7 +5,7 @@ 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.core.domain.BaseEntity;
import java.io.Serial;
import java.util.Date;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysTenantPackage.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysTenantPackage.java
similarity index 95%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysTenantPackage.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysTenantPackage.java
index f7ce8cac..be360083 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysTenantPackage.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysTenantPackage.java
@@ -3,7 +3,7 @@ package org.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import org.ruoyi.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysUser.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysUser.java
similarity index 99%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysUser.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysUser.java
index 96e80db1..f451e982 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysUser.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysUser.java
@@ -37,7 +37,6 @@ public class SysUser extends TenantEntity {
*/
private String userName;
-
/**
* 用户套餐
*/
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysUserOnline.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysUserOnline.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysUserOnline.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysUserOnline.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysUserPost.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysUserPost.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysUserPost.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysUserPost.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysUserRole.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysUserRole.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysUserRole.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysUserRole.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatConfigBo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/ChatConfigBo.java
similarity index 79%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatConfigBo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/ChatConfigBo.java
index fbada8b9..8b8cad00 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatConfigBo.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/ChatConfigBo.java
@@ -7,17 +7,15 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import org.ruoyi.common.core.validate.AddGroup;
import org.ruoyi.common.core.validate.EditGroup;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
-import org.ruoyi.common.sensitive.annotation.Sensitive;
-import org.ruoyi.common.sensitive.core.SensitiveStrategy;
+
+import org.ruoyi.core.domain.BaseEntity;
import org.ruoyi.system.domain.ChatConfig;
/**
- * 对话配置信息
-业务对象 chat_config
+ * 配置信息业务对象 chat_config
*
- * @author Lion Li
- * @date 2024-04-13
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@@ -45,14 +43,13 @@ public class ChatConfigBo extends BaseEntity {
/**
* 配置值
*/
- @Sensitive(strategy = SensitiveStrategy.SKY)
@NotBlank(message = "配置值不能为空", groups = { AddGroup.class, EditGroup.class })
private String configValue;
/**
* 说明
*/
- @NotBlank(message = "参数说明不能为空", groups = { AddGroup.class, EditGroup.class })
+ @NotBlank(message = "说明不能为空", groups = { AddGroup.class, EditGroup.class })
private String configDict;
/**
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysConfigBo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysConfigBo.java
similarity index 95%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysConfigBo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysConfigBo.java
index 271a96b6..7915ad6f 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysConfigBo.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysConfigBo.java
@@ -8,7 +8,8 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import org.ruoyi.common.core.validate.AddGroup;
import org.ruoyi.common.core.validate.EditGroup;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+//import org.ruoyi.core.domain.BaseEntity;
+import org.ruoyi.core.domain.BaseEntity;
import org.ruoyi.system.domain.SysConfig;
/**
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysDeptBo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysDeptBo.java
similarity index 96%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysDeptBo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysDeptBo.java
index 0d188423..d25a48b0 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysDeptBo.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysDeptBo.java
@@ -9,7 +9,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import org.ruoyi.common.core.validate.AddGroup;
import org.ruoyi.common.core.validate.EditGroup;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import org.ruoyi.core.domain.BaseEntity;
import org.ruoyi.system.domain.SysDept;
/**
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysDictDataBo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysDictDataBo.java
similarity index 97%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysDictDataBo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysDictDataBo.java
index 78341e0b..eeb3793e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysDictDataBo.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysDictDataBo.java
@@ -2,7 +2,7 @@ package org.ruoyi.system.domain.bo;
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.core.domain.BaseEntity;
import org.ruoyi.system.domain.SysDictData;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysDictTypeBo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysDictTypeBo.java
similarity index 96%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysDictTypeBo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysDictTypeBo.java
index 4cdd1f65..b3b961c5 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysDictTypeBo.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysDictTypeBo.java
@@ -9,7 +9,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import org.ruoyi.common.core.validate.AddGroup;
import org.ruoyi.common.core.validate.EditGroup;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import org.ruoyi.core.domain.BaseEntity;
import org.ruoyi.system.domain.SysDictType;
/**
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysLogininforBo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysLogininforBo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysLogininforBo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysLogininforBo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysMenuBo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysMenuBo.java
similarity index 97%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysMenuBo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysMenuBo.java
index 3bd07b35..a9e0abb9 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysMenuBo.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysMenuBo.java
@@ -3,7 +3,7 @@ package org.ruoyi.system.domain.bo;
import com.fasterxml.jackson.annotation.JsonInclude;
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.core.domain.BaseEntity;
import org.ruoyi.system.domain.SysMenu;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysNoticeBo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysNoticeBo.java
similarity index 96%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysNoticeBo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysNoticeBo.java
index fae20993..db5afd66 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysNoticeBo.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysNoticeBo.java
@@ -9,7 +9,7 @@ import lombok.EqualsAndHashCode;
import org.ruoyi.common.core.validate.AddGroup;
import org.ruoyi.common.core.validate.EditGroup;
import org.ruoyi.common.core.xss.Xss;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import org.ruoyi.core.domain.BaseEntity;
import org.ruoyi.system.domain.SysNotice;
/**
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysNoticeStateBo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysNoticeStateBo.java
similarity index 96%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysNoticeStateBo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysNoticeStateBo.java
index f7a3a355..1381e26f 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysNoticeStateBo.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysNoticeStateBo.java
@@ -3,7 +3,7 @@ package org.ruoyi.system.domain.bo;
import org.ruoyi.common.core.validate.AddGroup;
import org.ruoyi.common.core.validate.EditGroup;
import org.ruoyi.system.domain.SysNoticeState;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import org.ruoyi.core.domain.BaseEntity;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysOperLogBo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysOperLogBo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysOperLogBo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysOperLogBo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysOssBo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysOssBo.java
similarity index 93%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysOssBo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysOssBo.java
index c12e1838..656c1154 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysOssBo.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysOssBo.java
@@ -1,6 +1,6 @@
package org.ruoyi.system.domain.bo;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import org.ruoyi.core.domain.BaseEntity;
import org.ruoyi.system.domain.SysOss;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysOssConfigBo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysOssConfigBo.java
similarity index 98%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysOssConfigBo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysOssConfigBo.java
index 79872266..eccae00c 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysOssConfigBo.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysOssConfigBo.java
@@ -2,7 +2,7 @@ package org.ruoyi.system.domain.bo;
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.core.domain.BaseEntity;
import org.ruoyi.system.domain.SysOssConfig;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysPostBo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysPostBo.java
similarity index 96%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysPostBo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysPostBo.java
index 96270744..43042d38 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysPostBo.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysPostBo.java
@@ -8,7 +8,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import org.ruoyi.common.core.validate.AddGroup;
import org.ruoyi.common.core.validate.EditGroup;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import org.ruoyi.core.domain.BaseEntity;
import org.ruoyi.system.domain.SysPost;
/**
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysRoleBo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysRoleBo.java
similarity index 97%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysRoleBo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysRoleBo.java
index cccaf7e9..c5698ee1 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysRoleBo.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysRoleBo.java
@@ -3,7 +3,7 @@ package org.ruoyi.system.domain.bo;
import org.ruoyi.common.core.constant.UserConstants;
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.core.domain.BaseEntity;
import org.ruoyi.system.domain.SysRole;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysTenantBo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysTenantBo.java
similarity index 97%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysTenantBo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysTenantBo.java
index d4919c84..aff7db58 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysTenantBo.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysTenantBo.java
@@ -2,7 +2,7 @@ package org.ruoyi.system.domain.bo;
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.core.domain.BaseEntity;
import org.ruoyi.system.domain.SysTenant;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysTenantPackageBo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysTenantPackageBo.java
similarity index 96%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysTenantPackageBo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysTenantPackageBo.java
index bb52240d..e9b340db 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysTenantPackageBo.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysTenantPackageBo.java
@@ -8,7 +8,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import org.ruoyi.common.core.validate.AddGroup;
import org.ruoyi.common.core.validate.EditGroup;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import org.ruoyi.core.domain.BaseEntity;
import org.ruoyi.system.domain.SysTenantPackage;
/**
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysUserBo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysUserBo.java
similarity index 98%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysUserBo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysUserBo.java
index d91838a2..c37a745b 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysUserBo.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysUserBo.java
@@ -9,7 +9,7 @@ import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.ruoyi.common.core.constant.UserConstants;
import org.ruoyi.common.core.xss.Xss;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import org.ruoyi.core.domain.BaseEntity;
import org.ruoyi.common.sensitive.annotation.Sensitive;
import org.ruoyi.common.sensitive.core.SensitiveStrategy;
import org.ruoyi.system.domain.SysUser;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysUserPasswordBo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysUserPasswordBo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysUserPasswordBo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysUserPasswordBo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysUserProfileBo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysUserProfileBo.java
similarity index 95%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysUserProfileBo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysUserProfileBo.java
index 27b0b979..b87f785f 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysUserProfileBo.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysUserProfileBo.java
@@ -1,7 +1,7 @@
package org.ruoyi.system.domain.bo;
import org.ruoyi.common.core.xss.Xss;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import org.ruoyi.core.domain.BaseEntity;
import org.ruoyi.common.sensitive.annotation.Sensitive;
import org.ruoyi.common.sensitive.core.SensitiveStrategy;
import jakarta.validation.constraints.Email;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/request/EmailRequest.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/request/EmailRequest.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/request/EmailRequest.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/request/EmailRequest.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/request/OrderRequest.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/request/OrderRequest.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/request/OrderRequest.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/request/OrderRequest.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/request/UserRequest.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/request/UserRequest.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/request/UserRequest.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/request/UserRequest.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/AvatarVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/AvatarVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/AvatarVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/AvatarVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/CacheListInfoVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/CacheListInfoVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/CacheListInfoVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/CacheListInfoVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/CaptchaVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/CaptchaVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/CaptchaVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/CaptchaVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatConfigVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/ChatConfigVo.java
similarity index 83%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatConfigVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/ChatConfigVo.java
index 3444ed35..148d2dc8 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatConfigVo.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/ChatConfigVo.java
@@ -4,21 +4,17 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
-import org.ruoyi.common.sensitive.annotation.Sensitive;
-import org.ruoyi.common.sensitive.core.SensitiveStrategy;
import org.ruoyi.system.domain.ChatConfig;
import java.io.Serial;
import java.io.Serializable;
-
/**
- * 对话配置信息
-视图对象 chat_config
+ * 配置信息视图对象 chat_config
*
- * @author Lion Li
- * @date 2024-04-13
+ * @author ageerle
+ * @date 2025-04-08
*/
@Data
@ExcelIgnoreUnannotated
@@ -50,7 +46,6 @@ public class ChatConfigVo implements Serializable {
* 配置值
*/
@ExcelProperty(value = "配置值")
- @Sensitive(strategy = SensitiveStrategy.SKY)
private String configValue;
/**
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/DeptTreeSelectVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/DeptTreeSelectVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/DeptTreeSelectVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/DeptTreeSelectVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/LoginTenantVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/LoginTenantVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/LoginTenantVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/LoginTenantVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/LoginVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/LoginVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/LoginVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/LoginVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/MenuTreeSelectVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/MenuTreeSelectVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/MenuTreeSelectVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/MenuTreeSelectVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/MetaVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/MetaVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/MetaVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/MetaVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ProfileVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/ProfileVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ProfileVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/ProfileVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/RouterVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/RouterVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/RouterVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/RouterVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysConfigVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysConfigVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysConfigVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysConfigVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysDeptVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysDeptVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysDeptVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysDeptVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysDictDataVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysDictDataVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysDictDataVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysDictDataVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysDictTypeVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysDictTypeVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysDictTypeVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysDictTypeVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysLogininforVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysLogininforVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysLogininforVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysLogininforVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysMenuVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysMenuVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysMenuVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysMenuVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysNoticeStateVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysNoticeStateVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysNoticeStateVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysNoticeStateVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysNoticeVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysNoticeVo.java
similarity index 67%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysNoticeVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysNoticeVo.java
index d9c82294..fa279d98 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysNoticeVo.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysNoticeVo.java
@@ -2,13 +2,11 @@ package org.ruoyi.system.domain.vo;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
-import org.ruoyi.common.translation.annotation.Translation;
-import org.ruoyi.common.translation.constant.TransConstant;
import org.ruoyi.system.domain.SysNotice;
import java.io.Serial;
import java.io.Serializable;
-import java.util.Date;
+
@@ -54,20 +52,4 @@ public class SysNoticeVo implements Serializable {
*/
private String remark;
- /**
- * 创建者
- */
- private Long createBy;
-
- /**
- * 创建人名称
- */
- @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "createBy")
- private String createByName;
-
- /**
- * 创建时间
- */
- private Date createTime;
-
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysOperLogVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysOperLogVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysOperLogVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysOperLogVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysOssConfigVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysOssConfigVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysOssConfigVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysOssConfigVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysOssUploadVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysOssUploadVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysOssUploadVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysOssUploadVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysOssVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysOssVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysOssVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysOssVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysPostVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysPostVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysPostVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysPostVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysRoleVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysRoleVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysRoleVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysRoleVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysTenantPackageVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysTenantPackageVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysTenantPackageVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysTenantPackageVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysTenantVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysTenantVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysTenantVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysTenantVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysUserExportVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysUserExportVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysUserExportVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysUserExportVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysUserImportVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysUserImportVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysUserImportVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysUserImportVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysUserInfoVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysUserInfoVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysUserInfoVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysUserInfoVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysUserOptionVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysUserOptionVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysUserOptionVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysUserOptionVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysUserVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysUserVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/SysUserVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysUserVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/TenantListVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/TenantListVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/TenantListVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/TenantListVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/UserInfoVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/UserInfoVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/UserInfoVo.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/UserInfoVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatConfigMapper.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/ChatConfigMapper.java
similarity index 62%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatConfigMapper.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/ChatConfigMapper.java
index d230e9a4..4f4f49d4 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/ChatConfigMapper.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/ChatConfigMapper.java
@@ -1,17 +1,16 @@
package org.ruoyi.system.mapper;
+
+import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.system.domain.ChatConfig;
import org.ruoyi.system.domain.vo.ChatConfigVo;
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
/**
- * 对话配置信息
-Mapper接口
+ * 配置信息Mapper接口
*
- * @author Lion Li
- * @date 2024-04-13
+ * @author ageerle
+ * @date 2025-04-08
*/
public interface ChatConfigMapper extends BaseMapperPlus {
-
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysConfigMapper.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysConfigMapper.java
similarity index 81%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysConfigMapper.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysConfigMapper.java
index 615b558a..e5d1ecfb 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysConfigMapper.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysConfigMapper.java
@@ -1,6 +1,6 @@
package org.ruoyi.system.mapper;
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.system.domain.SysConfig;
import org.ruoyi.system.domain.vo.SysConfigVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysDeptMapper.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysDeptMapper.java
similarity index 87%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysDeptMapper.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysDeptMapper.java
index 14b22d48..d1c7aa02 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysDeptMapper.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysDeptMapper.java
@@ -3,9 +3,9 @@ package org.ruoyi.system.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;
-import org.ruoyi.common.mybatis.annotation.DataColumn;
-import org.ruoyi.common.mybatis.annotation.DataPermission;
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.annotation.DataColumn;
+import org.ruoyi.annotation.DataPermission;
+import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.system.domain.SysDept;
import org.ruoyi.system.domain.vo.SysDeptVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysDictDataMapper.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysDictDataMapper.java
similarity index 92%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysDictDataMapper.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysDictDataMapper.java
index de80b697..5341379c 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysDictDataMapper.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysDictDataMapper.java
@@ -2,7 +2,7 @@ package org.ruoyi.system.mapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.ruoyi.common.core.constant.UserConstants;
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.system.domain.SysDictData;
import org.ruoyi.system.domain.vo.SysDictDataVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysDictTypeMapper.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysDictTypeMapper.java
similarity index 81%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysDictTypeMapper.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysDictTypeMapper.java
index 733f408e..dcbce188 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysDictTypeMapper.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysDictTypeMapper.java
@@ -1,6 +1,6 @@
package org.ruoyi.system.mapper;
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.system.domain.SysDictType;
import org.ruoyi.system.domain.vo.SysDictTypeVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysLogininforMapper.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysLogininforMapper.java
similarity index 83%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysLogininforMapper.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysLogininforMapper.java
index f01332b8..11f8021a 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysLogininforMapper.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysLogininforMapper.java
@@ -1,6 +1,6 @@
package org.ruoyi.system.mapper;
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.system.domain.SysLogininfor;
import org.ruoyi.system.domain.vo.SysLogininforVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysMenuMapper.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysMenuMapper.java
similarity index 97%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysMenuMapper.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysMenuMapper.java
index c3ed8a29..c1555d23 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysMenuMapper.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysMenuMapper.java
@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;
import org.ruoyi.common.core.constant.UserConstants;
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.system.domain.SysMenu;
import org.ruoyi.system.domain.vo.SysMenuVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysNoticeMapper.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysNoticeMapper.java
similarity index 81%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysNoticeMapper.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysNoticeMapper.java
index 17f2df5a..6f805101 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysNoticeMapper.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysNoticeMapper.java
@@ -1,6 +1,6 @@
package org.ruoyi.system.mapper;
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.system.domain.SysNotice;
import org.ruoyi.system.domain.vo.SysNoticeVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysNoticeStateMapper.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysNoticeStateMapper.java
similarity index 86%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysNoticeStateMapper.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysNoticeStateMapper.java
index f09c47dc..09111eab 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysNoticeStateMapper.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysNoticeStateMapper.java
@@ -2,7 +2,7 @@ package org.ruoyi.system.mapper;
import org.ruoyi.system.domain.SysNoticeState;
import org.ruoyi.system.domain.vo.SysNoticeStateVo;
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.core.mapper.BaseMapperPlus;
/**
* 用户阅读状态Mapper接口
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysOperLogMapper.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysOperLogMapper.java
similarity index 81%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysOperLogMapper.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysOperLogMapper.java
index 5e0fecfc..a5fa4c42 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysOperLogMapper.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysOperLogMapper.java
@@ -1,6 +1,6 @@
package org.ruoyi.system.mapper;
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.system.domain.SysOperLog;
import org.ruoyi.system.domain.vo.SysOperLogVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysOssConfigMapper.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysOssConfigMapper.java
similarity index 84%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysOssConfigMapper.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysOssConfigMapper.java
index 6da1a3b7..230ed10b 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysOssConfigMapper.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysOssConfigMapper.java
@@ -1,6 +1,6 @@
package org.ruoyi.system.mapper;
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.system.domain.SysOssConfig;
import org.ruoyi.system.domain.vo.SysOssConfigVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysOssMapper.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysOssMapper.java
similarity index 80%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysOssMapper.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysOssMapper.java
index 714f4473..0a0bc22e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysOssMapper.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysOssMapper.java
@@ -1,6 +1,6 @@
package org.ruoyi.system.mapper;
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.system.domain.SysOss;
import org.ruoyi.system.domain.vo.SysOssVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysPostMapper.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysPostMapper.java
similarity index 91%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysPostMapper.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysPostMapper.java
index a7faa8b4..e01846d4 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysPostMapper.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysPostMapper.java
@@ -1,6 +1,6 @@
package org.ruoyi.system.mapper;
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.system.domain.SysPost;
import org.ruoyi.system.domain.vo.SysPostVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysRoleDeptMapper.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysRoleDeptMapper.java
similarity index 79%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysRoleDeptMapper.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysRoleDeptMapper.java
index 230d9c05..0fb9784e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysRoleDeptMapper.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysRoleDeptMapper.java
@@ -1,6 +1,6 @@
package org.ruoyi.system.mapper;
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.system.domain.SysRoleDept;
/**
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysRoleMapper.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysRoleMapper.java
similarity index 90%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysRoleMapper.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysRoleMapper.java
index dfe71ca4..da0ed618 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysRoleMapper.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysRoleMapper.java
@@ -4,9 +4,9 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
-import org.ruoyi.common.mybatis.annotation.DataColumn;
-import org.ruoyi.common.mybatis.annotation.DataPermission;
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.annotation.DataColumn;
+import org.ruoyi.annotation.DataPermission;
+import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.system.domain.SysRole;
import org.ruoyi.system.domain.vo.SysRoleVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysRoleMenuMapper.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysRoleMenuMapper.java
similarity index 79%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysRoleMenuMapper.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysRoleMenuMapper.java
index 7a6b273b..985e5580 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysRoleMenuMapper.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysRoleMenuMapper.java
@@ -1,6 +1,6 @@
package org.ruoyi.system.mapper;
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.system.domain.SysRoleMenu;
/**
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysTenantMapper.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysTenantMapper.java
similarity index 81%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysTenantMapper.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysTenantMapper.java
index 40263d61..39d85648 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysTenantMapper.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysTenantMapper.java
@@ -1,6 +1,6 @@
package org.ruoyi.system.mapper;
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.system.domain.SysTenant;
import org.ruoyi.system.domain.vo.SysTenantVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysTenantPackageMapper.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysTenantPackageMapper.java
similarity index 83%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysTenantPackageMapper.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysTenantPackageMapper.java
index 1fbc9a2f..e4df368a 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysTenantPackageMapper.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysTenantPackageMapper.java
@@ -1,6 +1,6 @@
package org.ruoyi.system.mapper;
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.system.domain.SysTenantPackage;
import org.ruoyi.system.domain.vo.SysTenantPackageVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysUserMapper.java
similarity index 96%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysUserMapper.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysUserMapper.java
index 66fd0dc6..5b98e36b 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysUserMapper.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysUserMapper.java
@@ -4,9 +4,9 @@ import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.ruoyi.common.mybatis.annotation.DataColumn;
-import org.ruoyi.common.mybatis.annotation.DataPermission;
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.annotation.DataColumn;
+import org.ruoyi.annotation.DataPermission;
+import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.system.domain.SysUser;
import org.ruoyi.system.domain.bo.SysUserBo;
import org.ruoyi.system.domain.vo.SysUserVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysUserPostMapper.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysUserPostMapper.java
similarity index 79%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysUserPostMapper.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysUserPostMapper.java
index 60665ccb..4d461c2f 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysUserPostMapper.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysUserPostMapper.java
@@ -1,6 +1,6 @@
package org.ruoyi.system.mapper;
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.system.domain.SysUserPost;
/**
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysUserRoleMapper.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysUserRoleMapper.java
similarity index 83%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysUserRoleMapper.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysUserRoleMapper.java
index 9e81b611..44af3591 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/mapper/SysUserRoleMapper.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/mapper/SysUserRoleMapper.java
@@ -1,6 +1,6 @@
package org.ruoyi.system.mapper;
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.core.mapper.BaseMapperPlus;
import org.ruoyi.system.domain.SysUserRole;
import java.util.List;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatConfigService.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/IChatConfigService.java
similarity index 76%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatConfigService.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/IChatConfigService.java
index 45e0067a..e99c77a3 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/IChatConfigService.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/IChatConfigService.java
@@ -1,7 +1,8 @@
package org.ruoyi.system.service;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.system.domain.bo.ChatConfigBo;
import org.ruoyi.system.domain.vo.ChatConfigVo;
@@ -9,14 +10,15 @@ import java.util.Collection;
import java.util.List;
/**
- * 对话配置信息Service接口
- * @date 2024-04-13
+ * 配置信息Service接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
*/
public interface IChatConfigService {
/**
* 查询配置信息
-
*/
ChatConfigVo queryById(Long id);
@@ -32,7 +34,6 @@ public interface IChatConfigService {
/**
* 新增配置信息
-
*/
Boolean insertByBo(ChatConfigBo bo);
@@ -45,9 +46,4 @@ public interface IChatConfigService {
* 校验并批量删除配置信息信息
*/
Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
-
- /**
- * 查询系统参数
- */
- List getSysConfigValue(String category);
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysConfigService.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysConfigService.java
similarity index 94%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysConfigService.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysConfigService.java
index 17a86814..b1f91ee3 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysConfigService.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysConfigService.java
@@ -1,7 +1,7 @@
package org.ruoyi.system.service;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.system.domain.bo.SysConfigBo;
import org.ruoyi.system.domain.vo.SysConfigVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysDataScopeService.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysDataScopeService.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysDataScopeService.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysDataScopeService.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysDeptService.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysDeptService.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysDeptService.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysDeptService.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysDictDataService.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysDictDataService.java
similarity index 93%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysDictDataService.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysDictDataService.java
index bf68174e..86ed0be9 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysDictDataService.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysDictDataService.java
@@ -1,7 +1,7 @@
package org.ruoyi.system.service;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.system.domain.bo.SysDictDataBo;
import org.ruoyi.system.domain.vo.SysDictDataVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysDictTypeService.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysDictTypeService.java
similarity index 95%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysDictTypeService.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysDictTypeService.java
index 34b1ca67..fb94c017 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysDictTypeService.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysDictTypeService.java
@@ -1,7 +1,7 @@
package org.ruoyi.system.service;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.system.domain.bo.SysDictTypeBo;
import org.ruoyi.system.domain.vo.SysDictDataVo;
import org.ruoyi.system.domain.vo.SysDictTypeVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysLogininforService.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysLogininforService.java
similarity index 90%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysLogininforService.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysLogininforService.java
index 4e5561dc..2b2d0556 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysLogininforService.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysLogininforService.java
@@ -1,7 +1,7 @@
package org.ruoyi.system.service;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.system.domain.bo.SysLogininforBo;
import org.ruoyi.system.domain.vo.SysLogininforVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysMenuService.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysMenuService.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysMenuService.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysMenuService.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysNoticeService.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysNoticeService.java
similarity index 91%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysNoticeService.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysNoticeService.java
index e7dbcd52..2a5364c5 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysNoticeService.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysNoticeService.java
@@ -1,7 +1,7 @@
package org.ruoyi.system.service;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.system.domain.SysNotice;
import org.ruoyi.system.domain.bo.SysNoticeBo;
import org.ruoyi.system.domain.vo.SysNoticeVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysNoticeStateService.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysNoticeStateService.java
similarity index 90%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysNoticeStateService.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysNoticeStateService.java
index 14363ef7..4b3ef13b 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysNoticeStateService.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysNoticeStateService.java
@@ -1,7 +1,7 @@
package org.ruoyi.system.service;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.system.domain.bo.SysNoticeStateBo;
import org.ruoyi.system.domain.vo.SysNoticeStateVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysOperLogService.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysOperLogService.java
similarity index 90%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysOperLogService.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysOperLogService.java
index 8c5f4bbf..65fae975 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysOperLogService.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysOperLogService.java
@@ -1,7 +1,7 @@
package org.ruoyi.system.service;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.system.domain.bo.SysOperLogBo;
import org.ruoyi.system.domain.vo.SysOperLogVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysOssConfigService.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysOssConfigService.java
similarity index 92%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysOssConfigService.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysOssConfigService.java
index e4e09da8..c624ef97 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysOssConfigService.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysOssConfigService.java
@@ -1,7 +1,7 @@
package org.ruoyi.system.service;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.system.domain.bo.SysOssConfigBo;
import org.ruoyi.system.domain.vo.SysOssConfigVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysOssService.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysOssService.java
similarity index 87%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysOssService.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysOssService.java
index 14f00c35..1461f0c5 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysOssService.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysOssService.java
@@ -1,8 +1,8 @@
package org.ruoyi.system.service;
import jakarta.servlet.http.HttpServletResponse;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.system.domain.bo.SysOssBo;
import org.ruoyi.system.domain.vo.SysOssVo;
import org.springframework.web.multipart.MultipartFile;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysPermissionService.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysPermissionService.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysPermissionService.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysPermissionService.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysPostService.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysPostService.java
similarity index 94%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysPostService.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysPostService.java
index 4e54405c..3cbd3bdc 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysPostService.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysPostService.java
@@ -1,7 +1,7 @@
package org.ruoyi.system.service;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.system.domain.bo.SysPostBo;
import org.ruoyi.system.domain.vo.SysPostVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysRoleService.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysRoleService.java
similarity index 97%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysRoleService.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysRoleService.java
index d16cdc7b..f296332c 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysRoleService.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysRoleService.java
@@ -1,7 +1,7 @@
package org.ruoyi.system.service;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.system.domain.SysUserRole;
import org.ruoyi.system.domain.bo.SysRoleBo;
import org.ruoyi.system.domain.vo.SysRoleVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysTenantPackageService.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysTenantPackageService.java
similarity index 91%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysTenantPackageService.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysTenantPackageService.java
index 20a9b8d4..95567ef2 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysTenantPackageService.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysTenantPackageService.java
@@ -1,7 +1,7 @@
package org.ruoyi.system.service;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.system.domain.bo.SysTenantPackageBo;
import org.ruoyi.system.domain.vo.SysTenantPackageVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysTenantService.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysTenantService.java
similarity index 87%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysTenantService.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysTenantService.java
index 914c44c9..10049354 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysTenantService.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysTenantService.java
@@ -1,7 +1,9 @@
package org.ruoyi.system.service;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+
+
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.system.domain.bo.SysTenantBo;
import org.ruoyi.system.domain.vo.SysTenantVo;
@@ -78,5 +80,10 @@ public interface ISysTenantService {
/**
* 同步租户套餐
*/
- Boolean syncTenantPackage(String tenantId, String packageId);
+ Boolean syncTenantPackage(String tenantId, Long packageId);
+
+ /**
+ * 同步租户字典
+ */
+ void syncTenantDict();
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysUserService.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysUserService.java
similarity index 97%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysUserService.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysUserService.java
index 1597f9b0..63bec166 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/ISysUserService.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/ISysUserService.java
@@ -1,7 +1,7 @@
package org.ruoyi.system.service;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.system.domain.SysUser;
import org.ruoyi.system.domain.bo.SysUserBo;
import org.ruoyi.system.domain.vo.SysUserVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatConfigServiceImpl.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/ChatConfigServiceImpl.java
similarity index 71%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatConfigServiceImpl.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/ChatConfigServiceImpl.java
index 7d2c99f6..b03a288e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/ChatConfigServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/ChatConfigServiceImpl.java
@@ -4,43 +4,54 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.ruoyi.common.core.event.ConfigChangeEvent;
import org.ruoyi.common.core.service.ConfigService;
import org.ruoyi.common.core.utils.MapstructUtils;
import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.system.domain.ChatConfig;
import org.ruoyi.system.domain.bo.ChatConfigBo;
import org.ruoyi.system.domain.vo.ChatConfigVo;
import org.ruoyi.system.mapper.ChatConfigMapper;
import org.ruoyi.system.service.IChatConfigService;
-import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
+
/**
- * 对话配置信息
-Service业务层处理
+ * 配置信息Service业务层处理
*
- * @author Lion Li
- * @date 2024-04-13
+ * @author ageerle
+ * @date 2025-04-08
*/
@RequiredArgsConstructor
@Service
-@Slf4j
-public class ChatConfigServiceImpl implements IChatConfigService, ConfigService {
+public class ChatConfigServiceImpl implements ConfigService, IChatConfigService {
private final ChatConfigMapper baseMapper;
- private final ApplicationEventPublisher eventPublisher;
+ /**
+ * 根据配置类型和配置key获取值
+ *
+ * @param category 分类
+ * @param configKey key名称
+ * @return
+ */
+ @Override
+ public String getConfigValue(String category,String configKey) {
+ ChatConfigBo bo = new ChatConfigBo();
+ bo.setCategory(category);
+ bo.setConfigName(configKey);
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ ChatConfigVo chatConfigVo = baseMapper.selectVoOne(lqw);
+ return chatConfigVo.getConfigValue();
+ }
/**
- * 查询对话配置信息
-
+ * 查询配置信息
*/
@Override
public ChatConfigVo queryById(Long id){
@@ -48,7 +59,7 @@ public class ChatConfigServiceImpl implements IChatConfigService, ConfigService
}
/**
- * 查询对话配置信息列表
+ * 查询配置信息列表
*/
@Override
public TableDataInfo queryPageList(ChatConfigBo bo, PageQuery pageQuery) {
@@ -58,7 +69,7 @@ public class ChatConfigServiceImpl implements IChatConfigService, ConfigService
}
/**
- * 查询对话配置信息列表
+ * 查询配置信息列表
*/
@Override
public List queryList(ChatConfigBo bo) {
@@ -67,16 +78,17 @@ public class ChatConfigServiceImpl implements IChatConfigService, ConfigService
}
private LambdaQueryWrapper buildQueryWrapper(ChatConfigBo bo) {
+ Map params = bo.getParams();
LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getCategory()), ChatConfig::getCategory, bo.getCategory());
lqw.like(StringUtils.isNotBlank(bo.getConfigName()), ChatConfig::getConfigName, bo.getConfigName());
lqw.eq(StringUtils.isNotBlank(bo.getConfigValue()), ChatConfig::getConfigValue, bo.getConfigValue());
+ lqw.eq(StringUtils.isNotBlank(bo.getConfigDict()), ChatConfig::getConfigDict, bo.getConfigDict());
return lqw;
}
/**
- * 新增对话配置信息
-
+ * 新增配置信息
*/
@Override
public Boolean insertByBo(ChatConfigBo bo) {
@@ -90,15 +102,12 @@ public class ChatConfigServiceImpl implements IChatConfigService, ConfigService
}
/**
- * 修改对话配置信息
-
+ * 修改配置信息
*/
@Override
public Boolean updateByBo(ChatConfigBo bo) {
ChatConfig update = MapstructUtils.convert(bo, ChatConfig.class);
validEntityBeforeSave(update);
- // 更新配置信息(类型区分)
- eventPublisher.publishEvent(new ConfigChangeEvent(this));
return baseMapper.updateById(update) > 0;
}
@@ -110,8 +119,7 @@ public class ChatConfigServiceImpl implements IChatConfigService, ConfigService
}
/**
- * 批量删除对话配置信息
-
+ * 批量删除配置信息
*/
@Override
public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
@@ -121,39 +129,4 @@ public class ChatConfigServiceImpl implements IChatConfigService, ConfigService
return baseMapper.deleteBatchIds(ids) > 0;
}
- /**
- * 根据配置类型和配置key获取值
- *
- * @param category
- * @param configKey
- * @return
- */
- @Override
- public String getConfigValue(String category,String configKey) {
- ChatConfigBo bo = new ChatConfigBo();
- bo.setCategory(category);
- bo.setConfigName(configKey);
- LambdaQueryWrapper lqw = buildQueryWrapper(bo);
- ChatConfigVo chatConfigVo = baseMapper.selectVoOne(lqw);
- if(chatConfigVo != null){
- return chatConfigVo.getConfigValue();
- }else {
- return "";
- }
- }
-
- /**
- * 根据配置类型和配置key获取值
- *
- * @param category
- * @return
- */
- @Override
- public List getSysConfigValue(String category) {
- ChatConfigBo bo = new ChatConfigBo();
- bo.setCategory(category);
- LambdaQueryWrapper lqw = buildQueryWrapper(bo);
- return baseMapper.selectVoList(lqw);
- }
-
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysConfigServiceImpl.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysConfigServiceImpl.java
similarity index 98%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysConfigServiceImpl.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysConfigServiceImpl.java
index fbefa717..e26ae397 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysConfigServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysConfigServiceImpl.java
@@ -12,8 +12,8 @@ import org.ruoyi.common.core.constant.UserConstants;
import org.ruoyi.common.core.exception.ServiceException;
import org.ruoyi.common.core.utils.MapstructUtils;
import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.common.redis.utils.CacheUtils;
import org.ruoyi.common.tenant.helper.TenantHelper;
import org.ruoyi.system.domain.SysConfig;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysDataScopeServiceImpl.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysDataScopeServiceImpl.java
similarity index 97%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysDataScopeServiceImpl.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysDataScopeServiceImpl.java
index 4e1df984..a8279249 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysDataScopeServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysDataScopeServiceImpl.java
@@ -4,7 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.ruoyi.common.core.utils.StreamUtils;
-import org.ruoyi.common.mybatis.helper.DataBaseHelper;
+import org.ruoyi.helper.DataBaseHelper;
import org.ruoyi.system.domain.SysDept;
import org.ruoyi.system.domain.SysRoleDept;
import org.ruoyi.system.mapper.SysDeptMapper;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysDeptServiceImpl.java
similarity index 99%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysDeptServiceImpl.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysDeptServiceImpl.java
index d7995f95..4dc4f8f5 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysDeptServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysDeptServiceImpl.java
@@ -16,7 +16,7 @@ import org.ruoyi.common.core.utils.MapstructUtils;
import org.ruoyi.common.core.utils.SpringUtils;
import org.ruoyi.common.core.utils.StringUtils;
import org.ruoyi.common.core.utils.TreeBuildUtils;
-import org.ruoyi.common.mybatis.helper.DataBaseHelper;
+import org.ruoyi.helper.DataBaseHelper;
import org.ruoyi.common.redis.utils.CacheUtils;
import org.ruoyi.common.satoken.utils.LoginHelper;
import org.ruoyi.system.domain.SysDept;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysDictDataServiceImpl.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysDictDataServiceImpl.java
similarity index 97%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysDictDataServiceImpl.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysDictDataServiceImpl.java
index 7bfdf9dc..5e0793f5 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysDictDataServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysDictDataServiceImpl.java
@@ -8,8 +8,8 @@ import org.ruoyi.common.core.constant.CacheNames;
import org.ruoyi.common.core.exception.ServiceException;
import org.ruoyi.common.core.utils.MapstructUtils;
import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.common.redis.utils.CacheUtils;
import org.ruoyi.system.domain.SysDictData;
import org.ruoyi.system.domain.bo.SysDictDataBo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysDictTypeServiceImpl.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
similarity index 98%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
index b429edff..cd86a1c0 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
@@ -15,8 +15,8 @@ import org.ruoyi.common.core.utils.MapstructUtils;
import org.ruoyi.common.core.utils.SpringUtils;
import org.ruoyi.common.core.utils.StreamUtils;
import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.common.redis.utils.CacheUtils;
import org.ruoyi.system.domain.SysDictData;
import org.ruoyi.system.domain.SysDictType;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysLogininforServiceImpl.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysLogininforServiceImpl.java
similarity index 98%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysLogininforServiceImpl.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysLogininforServiceImpl.java
index a6b35300..82bc36f1 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysLogininforServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysLogininforServiceImpl.java
@@ -10,8 +10,8 @@ import org.ruoyi.common.core.utils.ServletUtils;
import org.ruoyi.common.core.utils.StringUtils;
import org.ruoyi.common.core.utils.ip.AddressUtils;
import org.ruoyi.common.log.event.LogininforEvent;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.system.domain.SysLogininfor;
import org.ruoyi.system.domain.bo.SysLogininforBo;
import org.ruoyi.system.domain.vo.SysLogininforVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysMenuServiceImpl.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysMenuServiceImpl.java
similarity index 97%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysMenuServiceImpl.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysMenuServiceImpl.java
index 706ebf98..719e3ca4 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysMenuServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysMenuServiceImpl.java
@@ -168,12 +168,12 @@ public class SysMenuServiceImpl implements ISysMenuService {
List parentIds = null;
if (tenantPackage.getMenuCheckStrictly()) {
parentIds = baseMapper.selectObjs(new LambdaQueryWrapper()
- .select(SysMenu::getParentId)
- .in(SysMenu::getMenuId, menuIds), Convert::toLong);
+ .select(SysMenu::getParentId)
+ .in(SysMenu::getMenuId, menuIds), x -> {return Convert.toLong(x);});
}
return baseMapper.selectObjs(new LambdaQueryWrapper()
- .in(SysMenu::getMenuId, menuIds)
- .notIn(CollUtil.isNotEmpty(parentIds), SysMenu::getMenuId, parentIds), Convert::toLong);
+ .in(SysMenu::getMenuId, menuIds)
+ .notIn(CollUtil.isNotEmpty(parentIds), SysMenu::getMenuId, parentIds), x -> {return Convert.toLong(x);});
}
/**
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysNoticeServiceImpl.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysNoticeServiceImpl.java
similarity index 98%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysNoticeServiceImpl.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysNoticeServiceImpl.java
index 453d2559..f90dec61 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysNoticeServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysNoticeServiceImpl.java
@@ -8,8 +8,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import org.ruoyi.common.core.utils.MapstructUtils;
import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.common.satoken.utils.LoginHelper;
import org.ruoyi.system.domain.SysNotice;
import org.ruoyi.system.domain.SysNoticeState;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysNoticeStateServiceImpl.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysNoticeStateServiceImpl.java
similarity index 96%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysNoticeStateServiceImpl.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysNoticeStateServiceImpl.java
index f107cda6..3dc1f906 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysNoticeStateServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysNoticeStateServiceImpl.java
@@ -2,8 +2,8 @@ package org.ruoyi.system.service.impl;
import org.ruoyi.common.core.utils.MapstructUtils;
import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysOperLogServiceImpl.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysOperLogServiceImpl.java
similarity index 97%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysOperLogServiceImpl.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysOperLogServiceImpl.java
index bdbbe8ec..668af836 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysOperLogServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysOperLogServiceImpl.java
@@ -8,8 +8,8 @@ import org.ruoyi.common.core.utils.MapstructUtils;
import org.ruoyi.common.core.utils.StringUtils;
import org.ruoyi.common.core.utils.ip.AddressUtils;
import org.ruoyi.common.log.event.OperLogEvent;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.system.domain.SysOperLog;
import org.ruoyi.system.domain.bo.SysOperLogBo;
import org.ruoyi.system.domain.vo.SysOperLogVo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysOssConfigServiceImpl.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysOssConfigServiceImpl.java
similarity index 98%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysOssConfigServiceImpl.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysOssConfigServiceImpl.java
index bd1f8f3c..a4579b93 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysOssConfigServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysOssConfigServiceImpl.java
@@ -12,8 +12,8 @@ import org.ruoyi.common.core.utils.MapstructUtils;
import org.ruoyi.common.core.utils.StreamUtils;
import org.ruoyi.common.core.utils.StringUtils;
import org.ruoyi.common.json.utils.JsonUtils;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.common.oss.constant.OssConstant;
import org.ruoyi.common.redis.utils.CacheUtils;
import org.ruoyi.common.redis.utils.RedisUtils;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysOssServiceImpl.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysOssServiceImpl.java
similarity index 98%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysOssServiceImpl.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysOssServiceImpl.java
index 717ecf1c..f997f5f9 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysOssServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysOssServiceImpl.java
@@ -16,8 +16,8 @@ import org.ruoyi.common.core.utils.SpringUtils;
import org.ruoyi.common.core.utils.StreamUtils;
import org.ruoyi.common.core.utils.StringUtils;
import org.ruoyi.common.core.utils.file.FileUtils;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.common.oss.core.OssClient;
import org.ruoyi.common.oss.entity.UploadResult;
import org.ruoyi.common.oss.enumd.AccessPolicyType;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysPermissionServiceImpl.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysPermissionServiceImpl.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysPermissionServiceImpl.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysPermissionServiceImpl.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysPostServiceImpl.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysPostServiceImpl.java
similarity index 98%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysPostServiceImpl.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysPostServiceImpl.java
index 8f68553a..227521fb 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysPostServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysPostServiceImpl.java
@@ -9,8 +9,8 @@ import lombok.RequiredArgsConstructor;
import org.ruoyi.common.core.exception.ServiceException;
import org.ruoyi.common.core.utils.MapstructUtils;
import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.system.domain.SysPost;
import org.ruoyi.system.domain.SysUserPost;
import org.ruoyi.system.domain.bo.SysPostBo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysRoleServiceImpl.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysRoleServiceImpl.java
similarity index 99%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysRoleServiceImpl.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysRoleServiceImpl.java
index ee4bfa91..002ede77 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysRoleServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysRoleServiceImpl.java
@@ -17,8 +17,8 @@ import org.ruoyi.common.core.exception.ServiceException;
import org.ruoyi.common.core.utils.MapstructUtils;
import org.ruoyi.common.core.utils.StreamUtils;
import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.common.satoken.utils.LoginHelper;
import org.ruoyi.system.domain.SysRole;
import org.ruoyi.system.domain.SysRoleDept;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysSensitiveServiceImpl.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysSensitiveServiceImpl.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysSensitiveServiceImpl.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysSensitiveServiceImpl.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysTenantPackageServiceImpl.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysTenantPackageServiceImpl.java
similarity index 97%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysTenantPackageServiceImpl.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysTenantPackageServiceImpl.java
index afb724ea..c03a99fc 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysTenantPackageServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysTenantPackageServiceImpl.java
@@ -9,8 +9,8 @@ import org.ruoyi.common.core.constant.TenantConstants;
import org.ruoyi.common.core.exception.ServiceException;
import org.ruoyi.common.core.utils.MapstructUtils;
import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.system.domain.SysTenant;
import org.ruoyi.system.domain.SysTenantPackage;
import org.ruoyi.system.domain.bo.SysTenantPackageBo;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysTenantServiceImpl.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysTenantServiceImpl.java
similarity index 63%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysTenantServiceImpl.java
rename to ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysTenantServiceImpl.java
index 8fa25a36..d9414e7c 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysTenantServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysTenantServiceImpl.java
@@ -1,36 +1,42 @@
package org.ruoyi.system.service.impl;
import cn.dev33.satoken.secure.BCrypt;
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+
import org.ruoyi.common.core.constant.CacheNames;
import org.ruoyi.common.core.constant.Constants;
+import org.ruoyi.common.core.constant.SystemConstants;
import org.ruoyi.common.core.constant.TenantConstants;
import org.ruoyi.common.core.exception.ServiceException;
import org.ruoyi.common.core.utils.MapstructUtils;
-import org.ruoyi.common.core.utils.SpringUtils;
+import org.ruoyi.common.core.utils.StreamUtils;
import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.common.redis.utils.CacheUtils;
+import org.ruoyi.common.tenant.helper.TenantHelper;
+import org.ruoyi.core.page.PageQuery;
+import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.system.domain.*;
import org.ruoyi.system.domain.bo.SysTenantBo;
import org.ruoyi.system.domain.vo.SysTenantVo;
import org.ruoyi.system.mapper.*;
import org.ruoyi.system.service.ISysTenantService;
-import lombok.RequiredArgsConstructor;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.ruoyi.common.core.utils.SpringUtils;
+import org.ruoyi.common.tenant.core.TenantEntity;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
/**
* 租户Service业务层处理
@@ -103,6 +109,7 @@ public class SysTenantServiceImpl implements ISysTenantService {
lqw.eq(bo.getExpireTime() != null, SysTenant::getExpireTime, bo.getExpireTime());
lqw.eq(bo.getAccountCount() != null, SysTenant::getAccountCount, bo.getAccountCount());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SysTenant::getStatus, bo.getStatus());
+ lqw.orderByAsc(SysTenant::getId);
return lqw;
}
@@ -116,7 +123,9 @@ public class SysTenantServiceImpl implements ISysTenantService {
// 获取所有租户编号
List tenantIds = baseMapper.selectObjs(
- new LambdaQueryWrapper().select(SysTenant::getTenantId), Convert::toStr);
+ new LambdaQueryWrapper().select(SysTenant::getTenantId), x -> {
+ return Convert.toStr(x);
+ });
String tenantId = generateTenantId(tenantIds);
add.setTenantId(tenantId);
boolean flag = baseMapper.insert(add) > 0;
@@ -132,7 +141,6 @@ public class SysTenantServiceImpl implements ISysTenantService {
SysDept dept = new SysDept();
dept.setTenantId(tenantId);
dept.setDeptName(bo.getCompanyName());
- dept.setLeader(bo.getUsername());
dept.setParentId(Constants.TOP_PARENT_ID);
dept.setAncestors(Constants.TOP_PARENT_ID.toString());
deptMapper.insert(dept);
@@ -152,6 +160,11 @@ public class SysTenantServiceImpl implements ISysTenantService {
user.setPassword(BCrypt.hashpw(bo.getPassword()));
user.setDeptId(deptId);
userMapper.insert(user);
+ //新增系统用户后,默认当前用户为部门的负责人
+ SysDept sd = new SysDept();
+ sd.setLeader(user.getUserId());
+ sd.setDeptId(deptId);
+ deptMapper.updateById(sd);
// 用户和角色关联表
SysUserRole userRole = new SysUserRole();
@@ -161,27 +174,43 @@ public class SysTenantServiceImpl implements ISysTenantService {
String defaultTenantId = TenantConstants.DEFAULT_TENANT_ID;
List dictTypeList = dictTypeMapper.selectList(
- new LambdaQueryWrapper().eq(SysDictType::getTenantId, defaultTenantId));
+ new LambdaQueryWrapper().eq(SysDictType::getTenantId, defaultTenantId));
List dictDataList = dictDataMapper.selectList(
- new LambdaQueryWrapper().eq(SysDictData::getTenantId, defaultTenantId));
+ new LambdaQueryWrapper().eq(SysDictData::getTenantId, defaultTenantId));
for (SysDictType dictType : dictTypeList) {
dictType.setDictId(null);
dictType.setTenantId(tenantId);
+ dictType.setCreateDept(null);
+ dictType.setCreateBy(null);
+ dictType.setCreateTime(null);
+ dictType.setUpdateBy(null);
+ dictType.setUpdateTime(null);
}
for (SysDictData dictData : dictDataList) {
dictData.setDictCode(null);
dictData.setTenantId(tenantId);
+ dictData.setCreateDept(null);
+ dictData.setCreateBy(null);
+ dictData.setCreateTime(null);
+ dictData.setUpdateBy(null);
+ dictData.setUpdateTime(null);
}
dictTypeMapper.insertBatch(dictTypeList);
dictDataMapper.insertBatch(dictDataList);
List sysConfigList = configMapper.selectList(
- new LambdaQueryWrapper().eq(SysConfig::getTenantId, defaultTenantId));
+ new LambdaQueryWrapper().eq(SysConfig::getTenantId, defaultTenantId));
for (SysConfig config : sysConfigList) {
config.setConfigId(null);
config.setTenantId(tenantId);
+ config.setCreateDept(null);
+ config.setCreateBy(null);
+ config.setCreateTime(null);
+ config.setUpdateBy(null);
+ config.setUpdateTime(null);
}
configMapper.insertBatch(sysConfigList);
+
return true;
}
@@ -196,7 +225,7 @@ public class SysTenantServiceImpl implements ISysTenantService {
String numbers = RandomUtil.randomNumbers(6);
// 判断是否存在,如果存在则重新生成
if (tenantIds.contains(numbers)) {
- generateTenantId(tenantIds);
+ return generateTenantId(tenantIds);
}
return numbers;
}
@@ -223,7 +252,7 @@ public class SysTenantServiceImpl implements ISysTenantService {
role.setRoleName(TenantConstants.TENANT_ADMIN_ROLE_NAME);
role.setRoleKey(TenantConstants.TENANT_ADMIN_ROLE_KEY);
role.setRoleSort(1);
- role.setStatus(TenantConstants.NORMAL);
+ role.setStatus("0");
roleMapper.insert(role);
Long roleId = role.getRoleId();
@@ -261,7 +290,9 @@ public class SysTenantServiceImpl implements ISysTenantService {
@CacheEvict(cacheNames = CacheNames.SYS_TENANT, key = "#bo.tenantId")
@Override
public int updateTenantStatus(SysTenantBo bo) {
- SysTenant tenant = MapstructUtils.convert(bo, SysTenant.class);
+ SysTenant tenant = new SysTenant();
+ tenant.setId(bo.getId());
+ tenant.setStatus(bo.getStatus());
return baseMapper.updateById(tenant);
}
@@ -289,7 +320,7 @@ public class SysTenantServiceImpl implements ISysTenantService {
throw new ServiceException("超管租户不能删除");
}
}
- return baseMapper.deleteBatchIds(ids) > 0;
+ return baseMapper.deleteByIds(ids) > 0;
}
/**
@@ -298,8 +329,8 @@ public class SysTenantServiceImpl implements ISysTenantService {
@Override
public boolean checkCompanyNameUnique(SysTenantBo bo) {
boolean exist = baseMapper.exists(new LambdaQueryWrapper()
- .eq(SysTenant::getCompanyName, bo.getCompanyName())
- .ne(ObjectUtil.isNotNull(bo.getTenantId()), SysTenant::getTenantId, bo.getTenantId()));
+ .eq(SysTenant::getCompanyName, bo.getCompanyName())
+ .ne(ObjectUtil.isNotNull(bo.getTenantId()), SysTenant::getTenantId, bo.getTenantId()));
return !exist;
}
@@ -337,10 +368,10 @@ public class SysTenantServiceImpl implements ISysTenantService {
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public Boolean syncTenantPackage(String tenantId, String packageId) {
+ public Boolean syncTenantPackage(String tenantId, Long packageId) {
SysTenantPackage tenantPackage = tenantPackageMapper.selectById(packageId);
List roles = roleMapper.selectList(
- new LambdaQueryWrapper().eq(SysRole::getTenantId, tenantId));
+ new LambdaQueryWrapper().eq(SysRole::getTenantId, tenantId));
List roleIds = new ArrayList<>(roles.size() - 1);
List menuIds = StringUtils.splitTo(tenantPackage.getMenuIds(), Convert::toLong);
roles.forEach(item -> {
@@ -360,8 +391,103 @@ public class SysTenantServiceImpl implements ISysTenantService {
});
if (!roleIds.isEmpty()) {
roleMenuMapper.delete(
- new LambdaQueryWrapper().in(SysRoleMenu::getRoleId, roleIds).notIn(!menuIds.isEmpty(), SysRoleMenu::getMenuId, menuIds));
+ new LambdaQueryWrapper().in(SysRoleMenu::getRoleId, roleIds).notIn(!menuIds.isEmpty(), SysRoleMenu::getMenuId, menuIds));
}
return true;
}
+
+ /**
+ * 同步租户字典
+ */
+ @Transactional(rollbackFor = Exception.class)
+ @Override
+ public void syncTenantDict() {
+ // 查询超管 所有字典数据
+ List dictTypeList = new ArrayList<>();
+ List dictDataList = new ArrayList<>();
+ TenantHelper.ignore(() -> {
+ dictTypeList.addAll(dictTypeMapper.selectList());
+ dictDataList.addAll(dictDataMapper.selectList());
+ });
+ Map> typeMap = StreamUtils.groupByKey(dictTypeList, TenantEntity::getTenantId);
+ Map>> typeDataMap = StreamUtils.groupBy2Key(
+ dictDataList, TenantEntity::getTenantId, SysDictData::getDictType);
+ // 管理租户字典数据
+ List