diff --git a/pom.xml b/pom.xml
index 5ca94ea..2512fcd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,6 +15,8 @@
yudao-core-service
yudao-module-member
yudao-module-bpm
+ yudao-module-system
+ yudao-module-system-api
${artifactId}
diff --git a/yudao-admin-server/pom.xml b/yudao-admin-server/pom.xml
index 4cb8d93..09a39f2 100644
--- a/yudao-admin-server/pom.xml
+++ b/yudao-admin-server/pom.xml
@@ -27,6 +27,11 @@
yudao-module-member-impl
${revision}
+
+ cn.iocoder.boot
+ yudao-module-system-impl
+ ${revision}
+
@@ -50,10 +55,6 @@
cn.iocoder.boot
yudao-spring-boot-starter-biz-tenant
-
- cn.iocoder.boot
- yudao-spring-boot-starter-biz-data-permission
-
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/AdminServerApplication.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/AdminServerApplication.java
index 35f6a1d..a37d220 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/AdminServerApplication.java
+++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/AdminServerApplication.java
@@ -5,7 +5,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
@SuppressWarnings("SpringComponentScan") // 忽略 IDEA 无法识别 ${yudao.info.base-package} 和 ${yudao.core-service.base-package}
@SpringBootApplication(scanBasePackages = {"${yudao.info.base-package}", "${yudao.core-service.base-package}",
- "${yudao.info.member-package}"}) // TODO 芋艿:重构
+ "${yudao.info.member-package}", "${yudao.info.system-package}"}) // TODO 芋艿:重构
public class AdminServerApplication {
public static void main(String[] args) {
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/captcha/config/CaptchaProperties.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/captcha/config/CaptchaProperties.java
deleted file mode 100644
index 73939df..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/captcha/config/CaptchaProperties.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.framework.captcha.config;
-
-import lombok.Data;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.validation.annotation.Validated;
-
-import javax.validation.constraints.NotNull;
-import java.time.Duration;
-
-@ConfigurationProperties(prefix = "yudao.captcha")
-@Validated
-@Data
-public class CaptchaProperties {
-
- private static final Boolean ENABLE_DEFAULT = true;
-
- /**
- * 是否开启
- * 注意,这里仅仅是后端 Server 是否校验,暂时不控制前端的逻辑
- */
- private Boolean enable = ENABLE_DEFAULT;
- /**
- * 验证码的过期时间
- */
- @NotNull(message = "验证码的过期时间不为空")
- private Duration timeout;
- /**
- * 验证码的高度
- */
- @NotNull(message = "验证码的高度不能为空")
- private Integer height;
- /**
- * 验证码的宽度
- */
- @NotNull(message = "验证码的宽度不能为空")
- private Integer width;
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/captcha/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/captcha/package-info.java
deleted file mode 100644
index 039431d..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/captcha/package-info.java
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * 基于 Hutool captcha 库,实现验证码功能
- */
-package cn.iocoder.yudao.adminserver.modules.system.framework.captcha;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/codegen/config/CodegenProperties.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/codegen/config/CodegenProperties.java
deleted file mode 100644
index b0f0846..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/codegen/config/CodegenProperties.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.framework.codegen.config;
-
-import lombok.Data;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.validation.annotation.Validated;
-
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
-import java.util.Collection;
-
-@ConfigurationProperties(prefix = "yudao.codegen")
-@Validated
-@Data
-public class CodegenProperties {
-
- /**
- * 生成的 Java 代码的基础包
- */
- @NotNull(message = "Java 代码的基础包不能为空")
- private String basePackage;
-
- /**
- * 数据库名数组
- */
- @NotEmpty(message = "数据库不能为空")
- private Collection dbSchemas;
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/codegen/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/codegen/package-info.java
deleted file mode 100644
index e700260..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/codegen/package-info.java
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * 代码生成器
- */
-package cn.iocoder.yudao.adminserver.modules.system.framework.codegen;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/datapermission/config/SysDataPermissionConfiguration.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/datapermission/config/SysDataPermissionConfiguration.java
deleted file mode 100644
index 984d854..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/datapermission/config/SysDataPermissionConfiguration.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.framework.datapermission.config;
-
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
-import cn.iocoder.yudao.framework.datapermission.core.dept.rule.DeptDataPermissionRuleCustomizer;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * system 模块的数据权限 Configuration
- *
- * @author 芋道源码
- */
-@Configuration
-public class SysDataPermissionConfiguration {
-
- @Bean
- public DeptDataPermissionRuleCustomizer sysDeptDataPermissionRuleCustomizer() {
- return rule -> {
- rule.addDeptColumn(SysUserDO.class);
- rule.addDeptColumn(SysDeptDO.class, "id");
- };
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/datapermission/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/datapermission/package-info.java
deleted file mode 100644
index cdd6173..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/datapermission/package-info.java
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * system 模块的数据权限配置
- */
-package cn.iocoder.yudao.adminserver.modules.system.framework.datapermission;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/job/auth/SysUserSessionTimeoutJob.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/job/auth/SysUserSessionTimeoutJob.java
deleted file mode 100644
index 57588fa..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/job/auth/SysUserSessionTimeoutJob.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.job.auth;
-
-import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
-import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysUserSessionService;
-import cn.iocoder.yudao.framework.tenant.core.job.TenantJob;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-
-/**
- * 用户 Session 超时 Job
- *
- * @author 願
- */
-@Component
-@TenantJob
-@Slf4j
-public class SysUserSessionTimeoutJob implements JobHandler {
-
- @Resource
- private SysUserSessionService sysUserSessionService;
-
- @Override
- public String execute(String param) throws Exception {
- // 执行过期
- Long timeoutCount = sysUserSessionService.clearSessionTimeout();
- // 返回结果,记录每次的超时数量
- return String.format("移除在线会话数量为 %s 个", timeoutCount);
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/job/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/job/package-info.java
deleted file mode 100644
index b5c66a5..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/job/package-info.java
+++ /dev/null
@@ -1 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.job;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/dept/SysDeptRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/dept/SysDeptRefreshConsumer.java
deleted file mode 100644
index 81bed50..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/dept/SysDeptRefreshConsumer.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.consumer.dept;
-
-import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener;
-import cn.iocoder.yudao.adminserver.modules.system.mq.message.dept.SysDeptRefreshMessage;
-import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-
-/**
- * 针对 {@link SysDeptRefreshMessage} 的消费者
- *
- * @author 芋道源码
- */
-@Component
-@Slf4j
-public class SysDeptRefreshConsumer extends AbstractChannelMessageListener {
-
- @Resource
- private SysDeptService deptService;
-
- @Override
- public void onMessage(SysDeptRefreshMessage message) {
- log.info("[onMessage][收到 Dept 刷新消息]");
- deptService.initLocalCache();
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/dict/SysDictDataRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/dict/SysDictDataRefreshConsumer.java
deleted file mode 100644
index 33f00e0..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/dict/SysDictDataRefreshConsumer.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.consumer.dict;
-
-import cn.iocoder.yudao.coreservice.modules.system.service.dict.SysDictDataCoreService;
-import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener;
-import cn.iocoder.yudao.adminserver.modules.system.mq.message.dict.SysDictDataRefreshMessage;
-import cn.iocoder.yudao.adminserver.modules.system.service.dict.SysDictDataService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-
-/**
- * 针对 {@link SysDictDataRefreshMessage} 的消费者
- *
- * @author 芋道源码
- */
-@Component
-@Slf4j
-public class SysDictDataRefreshConsumer extends AbstractChannelMessageListener {
-
- @Resource
- private SysDictDataCoreService dictDataCoreService;
-
- @Override
- public void onMessage(SysDictDataRefreshMessage message) {
- log.info("[onMessage][收到 DictData 刷新消息]");
- dictDataCoreService.initLocalCache();
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/mail/SysMailSendConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/mail/SysMailSendConsumer.java
deleted file mode 100644
index ff3b017..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/mail/SysMailSendConsumer.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.consumer.mail;
-
-import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessageListener;
-import cn.iocoder.yudao.adminserver.modules.system.mq.message.mail.SysMailSendMessage;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-@Component
-@Slf4j
-public class SysMailSendConsumer extends AbstractStreamMessageListener {
-
- @Override
- public void onMessage(SysMailSendMessage message) {
- log.info("[onMessage][消息内容({})]", message);
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/permission/SysMenuRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/permission/SysMenuRefreshConsumer.java
deleted file mode 100644
index 9048e3c..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/permission/SysMenuRefreshConsumer.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.consumer.permission;
-
-import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener;
-import cn.iocoder.yudao.adminserver.modules.system.mq.message.permission.SysMenuRefreshMessage;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysMenuService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-
-/**
- * 针对 {@link SysMenuRefreshMessage} 的消费者
- *
- * @author 芋道源码
- */
-@Component
-@Slf4j
-public class SysMenuRefreshConsumer extends AbstractChannelMessageListener {
-
- @Resource
- private SysMenuService menuService;
-
- @Override
- public void onMessage(SysMenuRefreshMessage message) {
- log.info("[onMessage][收到 Menu 刷新消息]");
- menuService.initLocalCache();
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/permission/SysRoleMenuRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/permission/SysRoleMenuRefreshConsumer.java
deleted file mode 100644
index 5cdaeef..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/permission/SysRoleMenuRefreshConsumer.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.consumer.permission;
-
-import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener;
-import cn.iocoder.yudao.adminserver.modules.system.mq.message.permission.SysRoleMenuRefreshMessage;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-
-/**
- * 针对 {@link SysRoleMenuRefreshMessage} 的消费者
- *
- * @author 芋道源码
- */
-@Component
-@Slf4j
-public class SysRoleMenuRefreshConsumer extends AbstractChannelMessageListener {
-
- @Resource
- private SysPermissionService permissionService;
-
- @Override
- public void onMessage(SysRoleMenuRefreshMessage message) {
- log.info("[onMessage][收到 Role 与 Menu 的关联刷新消息]");
- permissionService.initLocalCache();
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/permission/SysRoleRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/permission/SysRoleRefreshConsumer.java
deleted file mode 100644
index a2f4cc5..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/permission/SysRoleRefreshConsumer.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.consumer.permission;
-
-import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener;
-import cn.iocoder.yudao.adminserver.modules.system.mq.message.permission.SysRoleRefreshMessage;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-
-/**
- * 针对 {@link SysRoleRefreshMessage} 的消费者
- *
- * @author 芋道源码
- */
-@Component
-@Slf4j
-public class SysRoleRefreshConsumer extends AbstractChannelMessageListener {
-
- @Resource
- private SysRoleService roleService;
-
- @Override
- public void onMessage(SysRoleRefreshMessage message) {
- log.info("[onMessage][收到 Role 刷新消息]");
- roleService.initLocalCache();
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/sms/SysSmsChannelRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/sms/SysSmsChannelRefreshConsumer.java
deleted file mode 100644
index 540ff17..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/sms/SysSmsChannelRefreshConsumer.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.consumer.sms;
-
-import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener;
-import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsChannelRefreshMessage;
-import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsChannelService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-
-/**
- * 针对 {@link SysSmsChannelRefreshMessage} 的消费者
- *
- * @author 芋道源码
- */
-@Component
-@Slf4j
-public class SysSmsChannelRefreshConsumer extends AbstractChannelMessageListener {
-
- @Resource
- private SysSmsChannelService smsChannelService;
-
- @Override
- public void onMessage(SysSmsChannelRefreshMessage message) {
- log.info("[onMessage][收到 SmsChannel 刷新消息]");
- smsChannelService.initSmsClients();
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/sms/SysSmsSendConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/sms/SysSmsSendConsumer.java
deleted file mode 100644
index b8ad6ad..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/sms/SysSmsSendConsumer.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.consumer.sms;
-
-import cn.iocoder.yudao.coreservice.modules.system.mq.message.sms.SysSmsSendMessage;
-import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsCoreService;
-import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessageListener;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-
-/**
- * 针对 {@link SysSmsSendMessage} 的消费者
- *
- * @author zzf
- * @date 2021/3/9 16:35
- */
-@Component
-@Slf4j
-public class SysSmsSendConsumer extends AbstractStreamMessageListener {
-
- @Resource
- private SysSmsCoreService smsCoreService;
-
- @Override
- public void onMessage(SysSmsSendMessage message) {
- log.info("[onMessage][消息内容({})]", message);
- smsCoreService.doSendSms(message);
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/sms/SysSmsTemplateRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/sms/SysSmsTemplateRefreshConsumer.java
deleted file mode 100644
index 305672b..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/sms/SysSmsTemplateRefreshConsumer.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.consumer.sms;
-
-import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsTemplateRefreshMessage;
-import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsTemplateCoreService;
-import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-
-/**
- * 针对 {@link SysSmsTemplateRefreshMessage} 的消费者
- *
- * @author 芋道源码
- */
-@Component
-@Slf4j
-public class SysSmsTemplateRefreshConsumer extends AbstractChannelMessageListener {
-
- @Resource
- private SysSmsTemplateCoreService smsTemplateCoreService;
-
- @Override
- public void onMessage(SysSmsTemplateRefreshMessage message) {
- log.info("[onMessage][收到 SmsTemplate 刷新消息]");
- smsTemplateCoreService.initLocalCache();
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/dept/SysDeptRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/dept/SysDeptRefreshMessage.java
deleted file mode 100644
index 96362a8..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/dept/SysDeptRefreshMessage.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.message.dept;
-
-import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 部门数据刷新 Message
- *
- * @author 芋道源码
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class SysDeptRefreshMessage extends AbstractChannelMessage {
-
- @Override
- public String getChannel() {
- return "system.dept.refresh";
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/dict/SysDictDataRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/dict/SysDictDataRefreshMessage.java
deleted file mode 100644
index 4415d60..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/dict/SysDictDataRefreshMessage.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.message.dict;
-
-import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 字典数据数据刷新 Message
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class SysDictDataRefreshMessage extends AbstractChannelMessage {
-
- @Override
- public String getChannel() {
- return "system.dict-data.refresh";
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/mail/SysMailSendMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/mail/SysMailSendMessage.java
deleted file mode 100644
index a0e2587..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/mail/SysMailSendMessage.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.message.mail;
-
-import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessage;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import javax.validation.constraints.NotNull;
-import java.util.Map;
-
-/**
- * 邮箱发送消息
- *
- * @author 芋道源码
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class SysMailSendMessage extends AbstractStreamMessage {
-
- /**
- * 邮箱地址
- */
- @NotNull(message = "邮箱地址不能为空")
- private String address;
- /**
- * 短信模板编号
- */
- @NotNull(message = "短信模板编号不能为空")
- private String templateCode;
- /**
- * 短信模板参数
- */
- private Map templateParams;
-
- /**
- * 用户编号,允许空
- */
- private Integer userId;
- /**
- * 用户类型,允许空
- */
- private Integer userType;
-
- @Override
- public String getStreamKey() {
- return "system.mail.send";
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/permission/SysMenuRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/permission/SysMenuRefreshMessage.java
deleted file mode 100644
index 3f0ef3d..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/permission/SysMenuRefreshMessage.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.message.permission;
-
-import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 菜单数据刷新 Message
- *
- * @author 芋道源码
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class SysMenuRefreshMessage extends AbstractChannelMessage {
-
- @Override
- public String getChannel() {
- return "system.menu.refresh";
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/permission/SysRoleMenuRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/permission/SysRoleMenuRefreshMessage.java
deleted file mode 100644
index 8ddcb17..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/permission/SysRoleMenuRefreshMessage.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.message.permission;
-
-import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 角色与菜单数据刷新 Message
- *
- * @author 芋道源码
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class SysRoleMenuRefreshMessage extends AbstractChannelMessage {
-
- @Override
- public String getChannel() {
- return "system.role-menu.refresh";
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/permission/SysRoleRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/permission/SysRoleRefreshMessage.java
deleted file mode 100644
index 9e89fa1..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/permission/SysRoleRefreshMessage.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.message.permission;
-
-import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 角色数据刷新 Message
- *
- * @author 芋道源码
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class SysRoleRefreshMessage extends AbstractChannelMessage {
-
- @Override
- public String getChannel() {
- return "system.role.refresh";
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/sms/SysSmsChannelRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/sms/SysSmsChannelRefreshMessage.java
deleted file mode 100644
index 22c9341..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/sms/SysSmsChannelRefreshMessage.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.message.sms;
-
-import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 短信渠道的数据刷新 Message
- *
- * @author 芋道源码
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class SysSmsChannelRefreshMessage extends AbstractChannelMessage {
-
- @Override
- public String getChannel() {
- return "system.sms-channel.refresh";
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/sms/SysSmsTemplateRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/sms/SysSmsTemplateRefreshMessage.java
deleted file mode 100644
index 8401829..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/sms/SysSmsTemplateRefreshMessage.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.message.sms;
-
-import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 短信模板的数据刷新 Message
- *
- * @author 芋道源码
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class SysSmsTemplateRefreshMessage extends AbstractChannelMessage {
-
- @Override
- public String getChannel() {
- return "system.sms-template.refresh";
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/dept/SysDeptProducer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/dept/SysDeptProducer.java
deleted file mode 100644
index c4bbb74..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/dept/SysDeptProducer.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.producer.dept;
-
-import cn.iocoder.yudao.adminserver.modules.system.mq.message.dept.SysDeptRefreshMessage;
-import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-
-/**
- * Dept 部门相关消息的 Producer
- */
-@Component
-public class SysDeptProducer {
-
- @Resource
- private RedisMQTemplate redisMQTemplate;
-
- /**
- * 发送 {@link SysDeptRefreshMessage} 消息
- */
- public void sendDeptRefreshMessage() {
- SysDeptRefreshMessage message = new SysDeptRefreshMessage();
- redisMQTemplate.send(message);
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/dict/SysDictDataProducer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/dict/SysDictDataProducer.java
deleted file mode 100644
index 4bce9db..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/dict/SysDictDataProducer.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.producer.dict;
-
-import cn.iocoder.yudao.adminserver.modules.system.mq.message.dict.SysDictDataRefreshMessage;
-import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-
-/**
- * DictData 字典数据相关消息的 Producer
- */
-@Component
-public class SysDictDataProducer {
-
- @Resource
- private RedisMQTemplate redisMQTemplate;
-
- /**
- * 发送 {@link SysDictDataRefreshMessage} 消息
- */
- public void sendDictDataRefreshMessage() {
- SysDictDataRefreshMessage message = new SysDictDataRefreshMessage();
- redisMQTemplate.send(message);
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/permission/SysMenuProducer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/permission/SysMenuProducer.java
deleted file mode 100644
index 1f42965..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/permission/SysMenuProducer.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission;
-
-import cn.iocoder.yudao.adminserver.modules.system.mq.message.permission.SysMenuRefreshMessage;
-import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-
-/**
- * Menu 菜单相关消息的 Producer
- */
-@Component
-public class SysMenuProducer {
-
- @Resource
- private RedisMQTemplate redisMQTemplate;
-
- /**
- * 发送 {@link SysMenuRefreshMessage} 消息
- */
- public void sendMenuRefreshMessage() {
- SysMenuRefreshMessage message = new SysMenuRefreshMessage();
- redisMQTemplate.send(message);
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/permission/SysPermissionProducer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/permission/SysPermissionProducer.java
deleted file mode 100644
index def2019..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/permission/SysPermissionProducer.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission;
-
-import cn.iocoder.yudao.adminserver.modules.system.mq.message.permission.SysRoleMenuRefreshMessage;
-import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-
-/**
- * Permission 权限相关消息的 Producer
- */
-@Component
-public class SysPermissionProducer {
-
- @Resource
- private RedisMQTemplate redisMQTemplate;
-
- /**
- * 发送 {@link SysRoleMenuRefreshMessage} 消息
- */
- public void sendRoleMenuRefreshMessage() {
- SysRoleMenuRefreshMessage message = new SysRoleMenuRefreshMessage();
- redisMQTemplate.send(message);
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/permission/SysRoleProducer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/permission/SysRoleProducer.java
deleted file mode 100644
index c3ab839..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/permission/SysRoleProducer.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission;
-
-import cn.iocoder.yudao.adminserver.modules.system.mq.message.permission.SysRoleRefreshMessage;
-import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-
-/**
- * Role 角色相关消息的 Producer
- *
- * @author 芋道源码
- */
-@Component
-public class SysRoleProducer {
-
- @Resource
- private RedisMQTemplate redisMQTemplate;
-
- /**
- * 发送 {@link SysRoleRefreshMessage} 消息
- */
- public void sendRoleRefreshMessage() {
- SysRoleRefreshMessage message = new SysRoleRefreshMessage();
- redisMQTemplate.send(message);
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/sms/SysSmsProducer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/sms/SysSmsProducer.java
deleted file mode 100644
index acc4fee..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/sms/SysSmsProducer.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.mq.producer.sms;
-
-import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsChannelRefreshMessage;
-import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsTemplateRefreshMessage;
-import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-
-/**
- * Sms 短信相关消息的 Producer
- *
- * @author zzf
- * @date 2021/3/9 16:35
- */
-@Slf4j
-@Component
-public class SysSmsProducer {
-
- @Resource
- private RedisMQTemplate redisMQTemplate;
-
- /**
- * 发送 {@link SysSmsChannelRefreshMessage} 消息
- */
- public void sendSmsChannelRefreshMessage() {
- SysSmsChannelRefreshMessage message = new SysSmsChannelRefreshMessage();
- redisMQTemplate.send(message);
- }
-
- /**
- * 发送 {@link SysSmsTemplateRefreshMessage} 消息
- */
- public void sendSmsTemplateRefreshMessage() {
- SysSmsTemplateRefreshMessage message = new SysSmsTemplateRefreshMessage();
- redisMQTemplate.send(message);
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/package-info.java
deleted file mode 100644
index f043c0f..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/package-info.java
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * system 包下,我们放通用业务,支撑上层的核心业务。
- * 例如说:用户、部门、权限、数据字典等等
- *
- * 缩写:sys
- */
-package cn.iocoder.yudao.adminserver.modules.system;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthService.java
deleted file mode 100644
index 2d5fe8c..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthService.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.auth;
-
-import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.*;
-import cn.iocoder.yudao.framework.security.core.service.SecurityAuthFrameworkService;
-
-import javax.validation.Valid;
-
-/**
- * 管理后台的认证 Service 接口
- *
- * 提供用户的账号密码登录、token 的校验等认证相关的功能
- *
- * @author 芋道源码
- */
-public interface SysAuthService extends SecurityAuthFrameworkService {
-
- /**
- * 账号登录
- *
- * @param reqVO 登录信息
- * @param userIp 用户 IP
- * @param userAgent 用户 UA
- * @return 身份令牌,使用 JWT 方式
- */
- String login(@Valid SysAuthLoginReqVO reqVO, String userIp, String userAgent);
-
- /**
- * 社交登录,使用 code 授权码
- *
- * @param reqVO 登录信息
- * @param userIp 用户 IP
- * @param userAgent 用户 UA
- * @return 身份令牌,使用 JWT 方式
- */
- String socialLogin(@Valid SysAuthSocialLoginReqVO reqVO, String userIp, String userAgent);
-
- /**
- * 社交登录,使用 code 授权码 + 账号密码
- *
- * @param reqVO 登录信息
- * @param userIp 用户 IP
- * @param userAgent 用户 UA
- * @return 身份令牌,使用 JWT 方式
- */
- String socialLogin2(@Valid SysAuthSocialLogin2ReqVO reqVO, String userIp, String userAgent);
-
- /**
- * 社交绑定,使用 code 授权码
- *
- * @param userId 用户编号
- * @param reqVO 绑定信息
- */
- void socialBind(Long userId, @Valid SysAuthSocialBindReqVO reqVO);
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysUserSessionService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysUserSessionService.java
deleted file mode 100644
index ebfa660..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysUserSessionService.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.auth;
-
-import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-
-/**
- * 在线用户 Session Service 接口
- *
- * @author 芋道源码
- */
-public interface SysUserSessionService {
-
- /**
- * 获得在线用户分页列表
- *
- * @param reqVO 分页条件
- * @return 份额与列表
- */
- PageResult getUserSessionPage(SysUserSessionPageReqVO reqVO);
-
- /**
- * 移除超时的在线用户
- *
- * @return {@link Long } 移出的超时用户数量
- **/
- long clearSessionTimeout();
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysUserSessionServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysUserSessionServiceImpl.java
deleted file mode 100644
index 6e2623b..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysUserSessionServiceImpl.java
+++ /dev/null
@@ -1,97 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.auth.impl;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.auth.SysUserSessionMapper;
-import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginLogTypeEnum;
-import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum;
-import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysUserSessionService;
-import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
-import cn.iocoder.yudao.coreservice.modules.system.dal.redis.auth.SysLoginUserCoreRedisDAO;
-import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService;
-import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
-import com.google.common.collect.Lists;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-
-/**
- * 在线用户 Session Service 实现类
- *
- * @author 芋道源码
- */
-@Slf4j
-@Service
-public class SysUserSessionServiceImpl implements SysUserSessionService {
-
- @Resource
- private SysUserSessionMapper userSessionMapper;
- @Resource
- private SysUserService userService;
- @Resource
- private SysLoginLogCoreService loginLogCoreService;
-
- @Resource
- private SysLoginUserCoreRedisDAO loginUserCoreRedisDAO;
-
- @Override
- public PageResult getUserSessionPage(SysUserSessionPageReqVO reqVO) {
- // 处理基于用户昵称的查询
- Collection userIds = null;
- if (StrUtil.isNotEmpty(reqVO.getUsername())) {
- userIds = convertSet(userService.getUsersByUsername(reqVO.getUsername()), SysUserDO::getId);
- if (CollUtil.isEmpty(userIds)) {
- return PageResult.empty();
- }
- }
- return userSessionMapper.selectPage(reqVO, userIds);
- }
-
- // TODO @芋艿:优化下该方法
- @Override
- public long clearSessionTimeout() {
- // 获取db里已经超时的用户列表
- List sessionTimeoutDOS = userSessionMapper.selectListBySessionTimoutLt();
- Map timeoutSessionDOMap = sessionTimeoutDOS
- .stream()
- .filter(sessionDO -> loginUserCoreRedisDAO.get(sessionDO.getId()) == null)
- .collect(Collectors.toMap(SysUserSessionDO::getId, o -> o));
- // 确认已经超时,按批次移出在线用户列表
- if (CollUtil.isNotEmpty(timeoutSessionDOMap)) {
- Lists.partition(new ArrayList<>(timeoutSessionDOMap.keySet()), 100)
- .forEach(userSessionMapper::deleteBatchIds);
- // 记录用户超时退出日志
- createTimeoutLogoutLog(timeoutSessionDOMap.values());
- }
- return timeoutSessionDOMap.size();
- }
-
- private void createTimeoutLogoutLog(Collection timeoutSessionDOS) {
- for (SysUserSessionDO timeoutSessionDO : timeoutSessionDOS) {
- SysLoginLogCreateReqDTO reqDTO = new SysLoginLogCreateReqDTO();
- reqDTO.setLogType(SysLoginLogTypeEnum.LOGOUT_TIMEOUT.getType());
- reqDTO.setTraceId(TracerUtils.getTraceId());
- reqDTO.setUserId(timeoutSessionDO.getUserId());
- reqDTO.setUserType(timeoutSessionDO.getUserType());
- reqDTO.setUsername(timeoutSessionDO.getUsername());
- reqDTO.setUserAgent(timeoutSessionDO.getUserAgent());
- reqDTO.setUserIp(timeoutSessionDO.getUserIp());
- reqDTO.setResult(SysLoginResultEnum.SUCCESS.getResult());
- loginLogCoreService.createLoginLog(reqDTO);
- }
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/common/SysCaptchaService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/common/SysCaptchaService.java
deleted file mode 100644
index 32aff5b..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/common/SysCaptchaService.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.common;
-
-import cn.iocoder.yudao.adminserver.modules.system.controller.common.vo.SysCaptchaImageRespVO;
-
-/**
- * 验证码 Service 接口
- */
-public interface SysCaptchaService {
-
- /**
- * 获得验证码图片
- *
- * @return 验证码图片
- */
- SysCaptchaImageRespVO getCaptchaImage();
-
- /**
- * 是否开启图片验证码
- *
- * @return 是否
- */
- Boolean isCaptchaEnable();
-
- /**
- * 获得 uuid 对应的验证码
- *
- * @param uuid 验证码编号
- * @return 验证码
- */
- String getCaptchaCode(String uuid);
-
- /**
- * 删除 uuid 对应的验证码
- *
- * @param uuid 验证码编号
- */
- void deleteCaptchaCode(String uuid);
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/common/impl/SysCaptchaServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/common/impl/SysCaptchaServiceImpl.java
deleted file mode 100644
index daefc00..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/common/impl/SysCaptchaServiceImpl.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.common.impl;
-
-import cn.hutool.captcha.CaptchaUtil;
-import cn.hutool.captcha.CircleCaptcha;
-import cn.hutool.core.util.IdUtil;
-import cn.iocoder.yudao.adminserver.modules.system.framework.captcha.config.CaptchaProperties;
-import cn.iocoder.yudao.adminserver.modules.system.controller.common.vo.SysCaptchaImageRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.convert.common.SysCaptchaConvert;
-import cn.iocoder.yudao.adminserver.modules.system.dal.redis.common.SysCaptchaRedisDAO;
-import cn.iocoder.yudao.adminserver.modules.system.service.common.SysCaptchaService;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-
-/**
- * 验证码 Service 实现类
- */
-@Service
-public class SysCaptchaServiceImpl implements SysCaptchaService {
-
- @Resource
- private CaptchaProperties captchaProperties;
-
- @Resource
- private SysCaptchaRedisDAO captchaRedisDAO;
-
- @Override
- public SysCaptchaImageRespVO getCaptchaImage() {
- // 生成验证码
- CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(captchaProperties.getWidth(), captchaProperties.getHeight());
- // 缓存到 Redis 中
- String uuid = IdUtil.fastSimpleUUID();
- captchaRedisDAO.set(uuid, captcha.getCode(), captchaProperties.getTimeout());
- // 返回
- return SysCaptchaConvert.INSTANCE.convert(uuid, captcha);
- }
-
- @Override
- public Boolean isCaptchaEnable() {
- return captchaProperties.getEnable();
- }
-
- @Override
- public String getCaptchaCode(String uuid) {
- return captchaRedisDAO.get(uuid);
- }
-
- @Override
- public void deleteCaptchaCode(String uuid) {
- captchaRedisDAO.delete(uuid);
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysDeptService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysDeptService.java
deleted file mode 100644
index a7f9208..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysDeptService.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.dept;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptListReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptUpdateReqVO;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
-import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 部门 Service 接口
- *
- * @author 芋道源码
- */
-public interface SysDeptService {
-
- /**
- * 初始化部门的本地缓存
- */
- void initLocalCache();
-
- /**
- * 创建部门
- *
- * @param reqVO 部门信息
- * @return 部门编号
- */
- Long createDept(SysDeptCreateReqVO reqVO);
-
- /**
- * 更新部门
- *
- * @param reqVO 部门信息
- */
- void updateDept(SysDeptUpdateReqVO reqVO);
-
- /**
- * 删除部门
- *
- * @param id 部门编号
- */
- void deleteDept(Long id);
-
-
- /**
- * 筛选部门列表
- *
- * @param reqVO 筛选条件请求 VO
- * @return 部门列表
- */
- List getSimpleDepts(SysDeptListReqVO reqVO);
-
- /**
- * 获得所有子部门,从缓存中
- *
- * @param parentId 部门编号
- * @param recursive 是否递归获取所有
- * @return 子部门列表
- */
- List getDeptsByParentIdFromCache(Long parentId, boolean recursive);
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysPostService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysPostService.java
deleted file mode 100644
index 4a1e7a7..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysPostService.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.dept;
-
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostUpdateReqVO;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
-import org.springframework.lang.Nullable;
-
-import java.util.Collection;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.util.collection.SetUtils.asSet;
-
-/**
- * 岗位 Service 接口
- *
- * @author 芋道源码
- */
-public interface SysPostService {
-
- /**
- * 创建岗位
- *
- * @param reqVO 岗位信息
- * @return 岗位编号
- */
- Long createPost(SysPostCreateReqVO reqVO);
-
- /**
- * 更新岗位
- *
- * @param reqVO 岗位信息
- */
- void updatePost(SysPostUpdateReqVO reqVO);
-
- /**
- * 删除岗位信息
- *
- * @param id 岗位编号
- */
- void deletePost(Long id);
-
- /**
- * 获得岗位列表
- *
- * @param ids 岗位编号数组。如果为空,不进行筛选
- * @return 部门列表
- */
- default List getPosts(@Nullable Collection ids) {
- return getPosts(ids, asSet(CommonStatusEnum.ENABLE.getStatus(), CommonStatusEnum.DISABLE.getStatus()));
- }
-
- /**
- * 获得符合条件的岗位列表
- *
- * @param ids 岗位编号数组。如果为空,不进行筛选
- * @param statuses 状态数组。如果为空,不进行筛选
- * @return 部门列表
- */
- List getPosts(@Nullable Collection ids, @Nullable Collection statuses);
-
- /**
- * 获得岗位分页列表
- *
- * @param reqVO 分页条件
- * @return 部门分页列表
- */
- PageResult getPostPage(SysPostPageReqVO reqVO);
-
- /**
- * 获得岗位列表
- *
- * @param reqVO 查询条件
- * @return 部门列表
- */
- List getPosts(SysPostExportReqVO reqVO);
-
- /**
- * 获得岗位信息
- *
- * @param id 岗位编号
- * @return 岗位信息
- */
- SysPostDO getPost(Long id);
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/impl/SysPostServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/impl/SysPostServiceImpl.java
deleted file mode 100644
index 8531fb1..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/impl/SysPostServiceImpl.java
+++ /dev/null
@@ -1,129 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.dept.impl;
-
-import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.convert.dept.SysPostConvert;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dept.SysPostMapper;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
-import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import javax.annotation.Resource;
-import java.util.Collection;
-import java.util.List;
-
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-
-/**
- * 岗位 Service 实现类
- *
- * @author 芋道源码
- */
-@Service
-@Validated
-public class SysPostServiceImpl implements SysPostService {
-
- @Resource
- private SysPostMapper postMapper;
-
- @Override
- public Long createPost(SysPostCreateReqVO reqVO) {
- // 校验正确性
- this.checkCreateOrUpdate(null, reqVO.getName(), reqVO.getCode());
- // 插入岗位
- SysPostDO post = SysPostConvert.INSTANCE.convert(reqVO);
- postMapper.insert(post);
- return post.getId();
- }
-
- @Override
- public void updatePost(SysPostUpdateReqVO reqVO) {
- // 校验正确性
- this.checkCreateOrUpdate(reqVO.getId(), reqVO.getName(), reqVO.getCode());
- // 更新岗位
- SysPostDO updateObj = SysPostConvert.INSTANCE.convert(reqVO);
- postMapper.updateById(updateObj);
- }
-
- @Override
- public void deletePost(Long id) {
- // 校验是否存在
- this.checkPostExists(id);
- // 删除部门
- postMapper.deleteById(id);
- }
-
- @Override
- public List getPosts(Collection ids, Collection statuses) {
- return postMapper.selectList(ids, statuses);
- }
-
- @Override
- public PageResult getPostPage(SysPostPageReqVO reqVO) {
- return postMapper.selectPage(reqVO);
- }
-
- @Override
- public List getPosts(SysPostExportReqVO reqVO) {
- return postMapper.selectList(reqVO);
- }
-
- @Override
- public SysPostDO getPost(Long id) {
- return postMapper.selectById(id);
- }
-
- private void checkCreateOrUpdate(Long id, String name, String code) {
- // 校验自己存在
- checkPostExists(id);
- // 校验岗位名的唯一性
- checkPostNameUnique(id, name);
- // 校验岗位编码的唯一性
- checkPostCodeUnique(id, code);
- }
-
- private void checkPostNameUnique(Long id, String name) {
- SysPostDO post = postMapper.selectByName(name);
- if (post == null) {
- return;
- }
- // 如果 id 为空,说明不用比较是否为相同 id 的岗位
- if (id == null) {
- throw ServiceExceptionUtil.exception(POST_NAME_DUPLICATE);
- }
- if (!post.getId().equals(id)) {
- throw ServiceExceptionUtil.exception(POST_NAME_DUPLICATE);
- }
- }
-
- private void checkPostCodeUnique(Long id, String code) {
- SysPostDO post = postMapper.selectByCode(code);
- if (post == null) {
- return;
- }
- // 如果 id 为空,说明不用比较是否为相同 id 的岗位
- if (id == null) {
- throw ServiceExceptionUtil.exception(POST_CODE_DUPLICATE);
- }
- if (!post.getId().equals(id)) {
- throw ServiceExceptionUtil.exception(POST_CODE_DUPLICATE);
- }
- }
-
- private void checkPostExists(Long id) {
- if (id == null) {
- return;
- }
- SysPostDO post = postMapper.selectById(id);
- if (post == null) {
- throw ServiceExceptionUtil.exception(POST_NOT_FOUND);
- }
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictDataService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictDataService.java
deleted file mode 100644
index 974b02f..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictDataService.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.dict;
-
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.dict.core.service.DictDataFrameworkService;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataUpdateReqVO;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * 字典数据 Service 接口
- *
- * @author ruoyi
- */
-public interface SysDictDataService {
-
- /**
- * 创建字典数据
- *
- * @param reqVO 字典数据信息
- * @return 字典数据编号
- */
- Long createDictData(SysDictDataCreateReqVO reqVO);
-
- /**
- * 更新字典数据
- *
- * @param reqVO 字典数据信息
- */
- void updateDictData(SysDictDataUpdateReqVO reqVO);
-
- /**
- * 删除字典数据
- *
- * @param id 字典数据编号
- */
- void deleteDictData(Long id);
-
- /**
- * 获得字典数据列表
- *
- * @return 字典数据全列表
- */
- List getDictDatas();
-
- /**
- * 获得字典数据分页列表
- *
- * @param reqVO 分页请求
- * @return 字典数据分页列表
- */
- PageResult getDictDataPage(SysDictDataPageReqVO reqVO);
-
- /**
- * 获得字典数据列表
- *
- * @param reqVO 列表请求
- * @return 字典数据列表
- */
- List getDictDatas(SysDictDataExportReqVO reqVO);
-
- /**
- * 获得字典数据详情
- *
- * @param id 字典数据编号
- * @return 字典数据
- */
- SysDictDataDO getDictData(Long id);
-
- /**
- * 获得指定字典类型的数据数量
- *
- * @param dictType 字典类型
- * @return 数据数量
- */
- int countByDictType(String dictType);
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictTypeService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictTypeService.java
deleted file mode 100644
index 6c3324f..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictTypeService.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.dict;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypeCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypeExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypeUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictTypeDO;
-
-import java.util.List;
-
-/**
- * 字典类型 Service 接口
- *
- * @author 芋道源码
- */
-public interface SysDictTypeService {
-
- /**
- * 创建字典类型
- *
- * @param reqVO 字典类型信息
- * @return 字典类型编号
- */
- Long createDictType(SysDictTypeCreateReqVO reqVO);
-
- /**
- * 更新字典类型
- *
- * @param reqVO 字典类型信息
- */
- void updateDictType(SysDictTypeUpdateReqVO reqVO);
-
- /**
- * 删除字典类型
- *
- * @param id 字典类型编号
- */
- void deleteDictType(Long id);
-
- /**
- * 获得字典类型分页列表
- *
- * @param reqVO 分页请求
- * @return 字典类型分页列表
- */
- PageResult getDictTypePage(SysDictTypePageReqVO reqVO);
-
- /**
- * 获得字典类型列表
- *
- * @param reqVO 列表请求
- * @return 字典类型列表
- */
- List getDictTypeList(SysDictTypeExportReqVO reqVO);
-
- /**
- * 获得字典类型详情
- *
- * @param id 字典类型编号
- * @return 字典类型
- */
- SysDictTypeDO getDictType(Long id);
-
- /**
- * 获得字典类型详情
- *
- * @param type 字典类型
- * @return 字典类型详情
- */
- SysDictTypeDO getDictType(String type);
-
- /**
- * 获得全部字典类型列表
- *
- * @return 字典类型列表
- */
- List getDictTypeList();
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/impl/SysDictTypeServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/impl/SysDictTypeServiceImpl.java
deleted file mode 100644
index b054764..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/impl/SysDictTypeServiceImpl.java
+++ /dev/null
@@ -1,143 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.dict.impl;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypeCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypeExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypeUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.convert.dict.SysDictTypeConvert;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictTypeDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dict.SysDictTypeMapper;
-import cn.iocoder.yudao.adminserver.modules.system.service.dict.SysDictDataService;
-import cn.iocoder.yudao.adminserver.modules.system.service.dict.SysDictTypeService;
-import com.google.common.annotations.VisibleForTesting;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
-
-/**
- * 字典类型 Service 实现类
- *
- * @author 芋道源码
- */
-@Service
-public class SysDictTypeServiceImpl implements SysDictTypeService {
-
- @Resource
- private SysDictDataService dictDataService;
-
- @Resource
- private SysDictTypeMapper dictTypeMapper;
-
- @Override
- public PageResult getDictTypePage(SysDictTypePageReqVO reqVO) {
- return dictTypeMapper.selectPage(reqVO);
- }
-
- @Override
- public List getDictTypeList(SysDictTypeExportReqVO reqVO) {
- return dictTypeMapper.selectList(reqVO);
- }
-
- @Override
- public SysDictTypeDO getDictType(Long id) {
- return dictTypeMapper.selectById(id);
- }
-
- @Override
- public SysDictTypeDO getDictType(String type) {
- return dictTypeMapper.selectByType(type);
- }
-
- @Override
- public Long createDictType(SysDictTypeCreateReqVO reqVO) {
- // 校验正确性
- this.checkCreateOrUpdate(null, reqVO.getName(), reqVO.getType());
- // 插入字典类型
- SysDictTypeDO dictType = SysDictTypeConvert.INSTANCE.convert(reqVO);
- dictTypeMapper.insert(dictType);
- return dictType.getId();
- }
-
- @Override
- public void updateDictType(SysDictTypeUpdateReqVO reqVO) {
- // 校验正确性
- this.checkCreateOrUpdate(reqVO.getId(), reqVO.getName(), null);
- // 更新字典类型
- SysDictTypeDO updateObj = SysDictTypeConvert.INSTANCE.convert(reqVO);
- dictTypeMapper.updateById(updateObj);
- }
-
- @Override
- public void deleteDictType(Long id) {
- // 校验是否存在
- SysDictTypeDO dictType = this.checkDictTypeExists(id);
- // 校验是否有字典数据
- if (dictDataService.countByDictType(dictType.getType()) > 0) {
- throw exception(DICT_TYPE_HAS_CHILDREN);
- }
- // 删除字典类型
- dictTypeMapper.deleteById(id);
- }
-
- @Override
- public List getDictTypeList() {
- return dictTypeMapper.selectList();
- }
-
- private void checkCreateOrUpdate(Long id, String name, String type) {
- // 校验自己存在
- checkDictTypeExists(id);
- // 校验字典类型的名字的唯一性
- checkDictTypeNameUnique(id, name);
- // 校验字典类型的类型的唯一性
- checkDictTypeUnique(id, type);
- }
-
- @VisibleForTesting
- public void checkDictTypeNameUnique(Long id, String name) {
- SysDictTypeDO dictType = dictTypeMapper.selectByName(name);
- if (dictType == null) {
- return;
- }
- // 如果 id 为空,说明不用比较是否为相同 id 的字典类型
- if (id == null) {
- throw exception(DICT_TYPE_NAME_DUPLICATE);
- }
- if (!dictType.getId().equals(id)) {
- throw exception(DICT_TYPE_NAME_DUPLICATE);
- }
- }
-
- @VisibleForTesting
- public void checkDictTypeUnique(Long id, String type) {
- SysDictTypeDO dictType = dictTypeMapper.selectByType(type);
- if (dictType == null) {
- return;
- }
- // 如果 id 为空,说明不用比较是否为相同 id 的字典类型
- if (id == null) {
- throw exception(DICT_TYPE_TYPE_DUPLICATE);
- }
- if (!dictType.getId().equals(id)) {
- throw exception(DICT_TYPE_TYPE_DUPLICATE);
- }
- }
-
- @VisibleForTesting
- public SysDictTypeDO checkDictTypeExists(Long id) {
- if (id == null) {
- return null;
- }
- SysDictTypeDO dictType = dictTypeMapper.selectById(id);
- if (dictType == null) {
- throw exception(DICT_TYPE_NOT_EXISTS);
- }
- return dictType;
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/errorcode/SysErrorCodeService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/errorcode/SysErrorCodeService.java
deleted file mode 100644
index 4bcfb97..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/errorcode/SysErrorCodeService.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.errorcode;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.service.ErrorCodeFrameworkService;
-import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.errorcode.SysErrorCodeDO;
-
-import javax.validation.Valid;
-import java.util.List;
-
-/**
- * 错误码 Service 接口
- *
- * @author 芋道源码
- */
-public interface SysErrorCodeService extends ErrorCodeFrameworkService {
-
- /**
- * 创建错误码
- *
- * @param createReqVO 创建信息
- * @return 编号
- */
- Long createErrorCode(@Valid SysErrorCodeCreateReqVO createReqVO);
-
- /**
- * 更新错误码
- *
- * @param updateReqVO 更新信息
- */
- void updateErrorCode(@Valid SysErrorCodeUpdateReqVO updateReqVO);
-
- /**
- * 删除错误码
- *
- * @param id 编号
- */
- void deleteErrorCode(Long id);
-
- /**
- * 获得错误码
- *
- * @param id 编号
- * @return 错误码
- */
- SysErrorCodeDO getErrorCode(Long id);
-
- /**
- * 获得错误码分页
- *
- * @param pageReqVO 分页查询
- * @return 错误码分页
- */
- PageResult getErrorCodePage(SysErrorCodePageReqVO pageReqVO);
-
- /**
- * 获得错误码列表, 用于 Excel 导出
- *
- * @param exportReqVO 查询条件
- * @return 错误码列表
- */
- List getErrorCodeList(SysErrorCodeExportReqVO exportReqVO);
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysLoginLogService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysLoginLogService.java
deleted file mode 100644
index b7b30e1..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysLoginLogService.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.logger;
-
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-
-import java.util.List;
-
-/**
- * 登录日志 Service 接口
- */
-public interface SysLoginLogService {
-
- /**
- * 获得登录日志分页
- *
- * @param reqVO 分页条件
- * @return 登录日志分页
- */
- PageResult getLoginLogPage(SysLoginLogPageReqVO reqVO);
-
- /**
- * 获得登录日志列表
- *
- * @param reqVO 列表条件
- * @return 登录日志列表
- */
- List getLoginLogList(SysLoginLogExportReqVO reqVO);
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysOperateLogService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysOperateLogService.java
deleted file mode 100644
index cf3379b..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysOperateLogService.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.logger;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.operatelog.core.service.OperateLogFrameworkService;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysOperateLogDO;
-
-import java.util.List;
-
-/**
- * 操作日志 Service 接口
- */
-public interface SysOperateLogService extends OperateLogFrameworkService {
-
- /**
- * 获得操作日志分页列表
- *
- * @param reqVO 分页条件
- * @return 操作日志分页列表
- */
- PageResult getOperateLogPage(SysOperateLogPageReqVO reqVO);
-
- /**
- * 获得操作日志列表
- *
- * @param reqVO 列表条件
- * @return 日志列表
- */
- List getOperateLogs(SysOperateLogExportReqVO reqVO);
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/impl/SysLoginLogServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/impl/SysLoginLogServiceImpl.java
deleted file mode 100644
index fc65146..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/impl/SysLoginLogServiceImpl.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.logger.impl;
-
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.logger.SysLoginLogMapper;
-import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysLoginLogService;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-/**
- * 登录日志 Service 实现
- */
-@Service
-public class SysLoginLogServiceImpl implements SysLoginLogService {
-
- @Resource
- private SysLoginLogMapper loginLogMapper;
-
- @Override
- public PageResult getLoginLogPage(SysLoginLogPageReqVO reqVO) {
- return loginLogMapper.selectPage(reqVO);
- }
-
- @Override
- public List getLoginLogList(SysLoginLogExportReqVO reqVO) {
- return loginLogMapper.selectList(reqVO);
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/impl/SysOperateLogServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/impl/SysOperateLogServiceImpl.java
deleted file mode 100644
index 811710e..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/impl/SysOperateLogServiceImpl.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.logger.impl;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.convert.logger.SysOperateLogConvert;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysOperateLogDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.logger.SysOperateLogMapper;
-import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysOperateLogService;
-import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.string.StrUtils;
-import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.scheduling.annotation.AsyncResult;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.Future;
-
-import static cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysOperateLogDO.JAVA_METHOD_ARGS_MAX_LENGTH;
-import static cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysOperateLogDO.RESULT_MAX_LENGTH;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-
-@Service
-@Slf4j
-public class SysOperateLogServiceImpl implements SysOperateLogService {
-
- @Resource
- private SysOperateLogMapper operateLogMapper;
-
- @Resource
- private SysUserService userService;
-
- @Override
- @Async
- public Future createOperateLogAsync(OperateLogCreateReqDTO reqVO) {
- boolean success = false;
- try {
- SysOperateLogDO logDO = SysOperateLogConvert.INSTANCE.convert(reqVO);
- logDO.setJavaMethodArgs(StrUtils.maxLength(logDO.getJavaMethodArgs(), JAVA_METHOD_ARGS_MAX_LENGTH));
- logDO.setResultData(StrUtils.maxLength(logDO.getResultData(), RESULT_MAX_LENGTH));
- success = operateLogMapper.insert(logDO) == 1;
- } catch (Throwable throwable) {
- // 仅仅打印日志,不对外抛出。原因是,还是要保留现场数据。
- log.error("[createOperateLogAsync][记录操作日志异常,日志为 ({})]", reqVO, throwable);
- }
- return new AsyncResult<>(success);
- }
-
- @Override
- public PageResult getOperateLogPage(SysOperateLogPageReqVO reqVO) {
- // 处理基于用户昵称的查询
- Collection userIds = null;
- if (StrUtil.isNotEmpty(reqVO.getUserNickname())) {
- userIds = convertSet(userService.getUsersByNickname(reqVO.getUserNickname()), SysUserDO::getId);
- if (CollUtil.isEmpty(userIds)) {
- return PageResult.empty();
- }
- }
- // 查询分页
- return operateLogMapper.selectPage(reqVO, userIds);
- }
-
- @Override
- public List getOperateLogs(SysOperateLogExportReqVO reqVO) {
- // 处理基于用户昵称的查询
- Collection userIds = null;
- if (StrUtil.isNotEmpty(reqVO.getUserNickname())) {
- userIds = convertSet(userService.getUsersByNickname(reqVO.getUserNickname()), SysUserDO::getId);
- if (CollUtil.isEmpty(userIds)) {
- return Collections.emptyList();
- }
- }
- // 查询列表
- return operateLogMapper.selectList(reqVO, userIds);
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/notice/SysNoticeService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/notice/SysNoticeService.java
deleted file mode 100644
index ee4ecdd..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/notice/SysNoticeService.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.notice;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.notice.SysNoticeDO;
-
-/**
- * 通知公告 Service 接口
- */
-public interface SysNoticeService {
-
- /**
- * 创建岗位公告公告
- *
- * @param reqVO 岗位公告公告信息
- * @return 岗位公告公告编号
- */
- Long createNotice(SysNoticeCreateReqVO reqVO);
-
- /**
- * 更新岗位公告公告
- *
- * @param reqVO 岗位公告公告信息
- */
- void updateNotice(SysNoticeUpdateReqVO reqVO);
-
- /**
- * 删除岗位公告公告信息
- *
- * @param id 岗位公告公告编号
- */
- void deleteNotice(Long id);
-
- /**
- * 获得岗位公告公告分页列表
- *
- * @param reqVO 分页条件
- * @return 部门分页列表
- */
- PageResult pageNotices(SysNoticePageReqVO reqVO);
-
- /**
- * 获得岗位公告公告信息
- *
- * @param id 岗位公告公告编号
- * @return 岗位公告公告信息
- */
- SysNoticeDO getNotice(Long id);
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/notice/impl/SysNoticeServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/notice/impl/SysNoticeServiceImpl.java
deleted file mode 100644
index 2cb770b..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/notice/impl/SysNoticeServiceImpl.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.notice.impl;
-
-import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.convert.notice.SysNoticeConvert;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.notice.SysNoticeMapper;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.notice.SysNoticeDO;
-import cn.iocoder.yudao.adminserver.modules.system.service.notice.SysNoticeService;
-import com.google.common.annotations.VisibleForTesting;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.NOTICE_NOT_FOUND;
-
-/**
- * 通知公告 Service 实现类
- *
- * @author 芋道源码
- */
-@Service
-public class SysNoticeServiceImpl implements SysNoticeService {
-
- @Resource
- private SysNoticeMapper noticeMapper;
-
- @Override
- public Long createNotice(SysNoticeCreateReqVO reqVO) {
- SysNoticeDO notice = SysNoticeConvert.INSTANCE.convert(reqVO);
- noticeMapper.insert(notice);
- return notice.getId();
- }
-
- @Override
- public void updateNotice(SysNoticeUpdateReqVO reqVO) {
- // 校验是否存在
- this.checkNoticeExists(reqVO.getId());
- // 更新通知公告
- SysNoticeDO updateObj = SysNoticeConvert.INSTANCE.convert(reqVO);
- noticeMapper.updateById(updateObj);
- }
-
- @Override
- public void deleteNotice(Long id) {
- // 校验是否存在
- this.checkNoticeExists(id);
- // 删除通知公告
- noticeMapper.deleteById(id);
- }
-
- @Override
- public PageResult pageNotices(SysNoticePageReqVO reqVO) {
- return noticeMapper.selectPage(reqVO);
- }
-
- @Override
- public SysNoticeDO getNotice(Long id) {
- return noticeMapper.selectById(id);
- }
-
- @VisibleForTesting
- public void checkNoticeExists(Long id) {
- if (id == null) {
- return;
- }
- SysNoticeDO notice = noticeMapper.selectById(id);
- if (notice == null) {
- throw ServiceExceptionUtil.exception(NOTICE_NOT_FOUND);
- }
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysMenuService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysMenuService.java
deleted file mode 100644
index 5979f16..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysMenuService.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.permission;
-
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuListReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * 菜单 Service 接口
- *
- * @author 芋道源码
- */
-public interface SysMenuService {
-
- /**
- * 初始化菜单的本地缓存
- */
- void initLocalCache();
-
- /**
- * 创建菜单
- *
- * @param reqVO 菜单信息
- * @return 创建出来的菜单编号
- */
- Long createMenu(SysMenuCreateReqVO reqVO);
-
- /**
- * 更新菜单
- *
- * @param reqVO 菜单信息
- */
- void updateMenu(SysMenuUpdateReqVO reqVO);
-
- /**
- * 删除菜单
- *
- * @param id 菜单编号
- */
- void deleteMenu(Long id);
-
- /**
- * 获得所有菜单列表
- *
- * @return 菜单列表
- */
- List getMenus();
-
- /**
- * 筛选菜单列表
- *
- * @param reqVO 筛选条件请求 VO
- * @return 菜单列表
- */
- List getMenus(SysMenuListReqVO reqVO);
-
- /**
- * 获得所有菜单,从缓存中
- *
- * 任一参数为空时,则返回为空
- *
- * @param menuTypes 菜单类型数组
- * @param menusStatuses 菜单状态数组
- * @return 菜单列表
- */
- List listMenusFromCache(Collection menuTypes, Collection menusStatuses);
-
- /**
- * 获得指定编号的菜单数组,从缓存中
- *
- * 任一参数为空时,则返回为空
- *
- * @param menuIds 菜单编号数组
- * @param menuTypes 菜单类型数组
- * @param menusStatuses 菜单状态数组
- * @return 菜单数组
- */
- List listMenusFromCache(Collection menuIds, Collection menuTypes,
- Collection menusStatuses);
-
- /**
- * 获得权限对应的菜单数组
- *
- * @param permission 权限标识
- * @return 数组
- */
- List getMenuListByPermissionFromCache(String permission);
-
- /**
- * 获得菜单
- *
- * @param id 菜单编号
- * @return 菜单
- */
- SysMenuDO getMenu(Long id);
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysPermissionService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysPermissionService.java
deleted file mode 100644
index 627e61b..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysPermissionService.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.permission;
-
-import cn.iocoder.yudao.framework.datapermission.core.dept.service.DeptDataPermissionFrameworkService;
-import cn.iocoder.yudao.framework.security.core.service.SecurityPermissionFrameworkService;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO;
-import org.springframework.lang.Nullable;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-
-/**
- * 权限 Service 接口
- *
- * 提供用户-角色、角色-菜单、角色-部门的关联权限处理
- *
- * @author 芋道源码
- */
-public interface SysPermissionService extends SecurityPermissionFrameworkService, DeptDataPermissionFrameworkService {
-
- /**
- * 初始化权限的本地缓存
- */
- void initLocalCache();
-
- /**
- * 获得角色们拥有的菜单列表,从缓存中获取
- *
- * 任一参数为空时,则返回为空
- *
- * @param roleIds 角色编号数组
- * @param menuTypes 菜单类型数组
- * @param menusStatuses 菜单状态数组
- * @return 菜单列表
- */
- List getRoleMenusFromCache(Collection roleIds, Collection menuTypes,
- Collection menusStatuses);
-
- /**
- * 获得用户拥有的角色编号集合
- *
- * @param userId 用户编号
- * @param roleStatuses 角色状态集合. 允许为空,为空时不过滤
- * @return 角色编号集合
- */
- Set getUserRoleIds(Long userId, @Nullable Collection roleStatuses);
-
- /**
- * 获得角色拥有的菜单编号集合
- *
- * @param roleId 角色编号
- * @return 菜单编号集合
- */
- Set listRoleMenuIds(Long roleId);
-
- /**
- * 设置角色菜单
- *
- * @param roleId 角色编号
- * @param menuIds 菜单编号集合
- */
- void assignRoleMenu(Long roleId, Set menuIds);
-
- /**
- * 获得用户拥有的角色编号集合
- *
- * @param userId 用户编号
- * @return 角色编号集合
- */
- Set getUserRoleIdListByUserId(Long userId);
-
- /**
- * 获得拥有某个角色的用户编号集合
- *
- * @param roleId 角色编号
- * @return 用户编号集合
- */
- Set getUserRoleIdListByRoleId(Long roleId);
-
- /**
- * 设置用户角色
- *
- * @param userId 角色编号
- * @param roleIds 角色编号集合
- */
- void assignUserRole(Long userId, Set roleIds);
-
- /**
- * 设置角色的数据权限
- *
- * @param roleId 角色编号
- * @param dataScope 数据范围
- * @param dataScopeDeptIds 部门编号数组
- */
- void assignRoleDataScope(Long roleId, Integer dataScope, Set dataScopeDeptIds);
-
- /**
- * 处理角色删除时,删除关联授权数据
- *
- * @param roleId 角色编号
- */
- void processRoleDeleted(Long roleId);
-
- /**
- * 处理菜单删除时,删除关联授权数据
- *
- * @param menuId 菜单编号
- */
- void processMenuDeleted(Long menuId);
-
- /**
- * 处理用户删除是,删除关联授权数据
- *
- * @param userId 用户编号
- */
- void processUserDeleted(Long userId);
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysRoleService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysRoleService.java
deleted file mode 100644
index 7412566..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysRoleService.java
+++ /dev/null
@@ -1,134 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.permission;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRolePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleUpdateReqVO;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
-import org.springframework.lang.Nullable;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-
-/**
- * 角色 Service 接口
- *
- * @author 芋道源码
- */
-public interface SysRoleService {
-
- /**
- * 初始化角色的本地缓存
- */
- void initLocalCache();
-
- /**
- * 创建角色
- *
- * @param reqVO 创建角色信息
- * @return 角色编号
- */
- Long createRole(SysRoleCreateReqVO reqVO);
-
- /**
- * 更新角色
- *
- * @param reqVO 更新角色信息
- */
- void updateRole(SysRoleUpdateReqVO reqVO);
-
- /**
- * 删除角色
- *
- * @param id 角色编号
- */
- void deleteRole(Long id);
-
- /**
- * 更新角色状态
- *
- * @param id 角色编号
- * @param status 状态
- */
- void updateRoleStatus(Long id, Integer status);
-
- /**
- * 设置角色的数据权限
- *
- * @param id 角色编号
- * @param dataScope 数据范围
- * @param dataScopeDeptIds 部门编号数组
- */
- void updateRoleDataScope(Long id, Integer dataScope, Set dataScopeDeptIds);
-
- /**
- * 获得角色,从缓存中
- *
- * @param id 角色编号
- * @return 角色
- */
- SysRoleDO getRoleFromCache(Long id);
-
- /**
- * 获得角色列表
- *
- * @param statuses 筛选的状态。允许空,空时不筛选
- * @return 角色列表
- */
- List getRoles(@Nullable Collection statuses);
-
- /**
- * 获得角色数组,从缓存中
- *
- * @param ids 角色编号数组
- * @return 角色数组
- */
- List getRolesFromCache(Collection ids);
-
- /**
- * 判断角色数组中,是否有管理员
- *
- * @param roleList 角色数组
- * @return 是否有管理员
- */
- boolean hasAnyAdmin(Collection roleList);
-
- /**
- * 判断角色编号数组中,是否有管理员
- *
- * @param ids 角色编号数组
- * @return 是否有管理员
- */
- default boolean hasAnyAdmin(Set ids) {
- return hasAnyAdmin(getRolesFromCache(ids));
- }
-
- /**
- * 获得角色
- *
- * @param id 角色编号
- * @return 角色
- */
- SysRoleDO getRole(Long id);
-
- /**
- * 获得角色分页
- *
- * @param reqVO 角色分页查询
- * @return 角色分页结果
- */
- PageResult getRolePage(SysRolePageReqVO reqVO);
-
- /**
- * 获得角色列表
- *
- * @param reqVO 列表查询
- * @return 角色列表
- */
- List getRoleList(SysRoleExportReqVO reqVO);
-
-
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsChannelService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsChannelService.java
deleted file mode 100644
index 0a7220a..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsChannelService.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.sms;
-
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO;
-
-import javax.validation.Valid;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * 短信渠道 Service 接口
- *
- * @author zzf
- * @date 2021/1/25 9:24
- */
-public interface SysSmsChannelService {
-
- /**
- * 初始化短信客户端
- */
- void initSmsClients();
-
- /**
- * 创建短信渠道
- *
- * @param createReqVO 创建信息
- * @return 编号
- */
- Long createSmsChannel(@Valid SysSmsChannelCreateReqVO createReqVO);
-
- /**
- * 更新短信渠道
- *
- * @param updateReqVO 更新信息
- */
- void updateSmsChannel(@Valid SysSmsChannelUpdateReqVO updateReqVO);
-
- /**
- * 删除短信渠道
- *
- * @param id 编号
- */
- void deleteSmsChannel(Long id);
-
- /**
- * 获得短信渠道
- *
- * @param id 编号
- * @return 短信渠道
- */
- SysSmsChannelDO getSmsChannel(Long id);
-
- /**
- * 获得短信渠道列表
- *
- * @param ids 编号
- * @return 短信渠道列表
- */
- List getSmsChannelList(Collection ids);
-
- /**
- * 获得所有短信渠道列表
- *
- * @return 短信渠道列表
- */
- List getSmsChannelList();
-
- /**
- * 获得短信渠道分页
- *
- * @param pageReqVO 分页查询
- * @return 短信渠道分页
- */
- PageResult getSmsChannelPage(SysSmsChannelPageReqVO pageReqVO);
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsLogService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsLogService.java
deleted file mode 100644
index 75bc3a6..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsLogService.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.sms;
-
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-
-import java.util.List;
-
-/**
- * 短信日志 Service 接口
- *
- * @author zzf
- * @date 13:48 2021/3/2
- */
-public interface SysSmsLogService {
-
- /**
- * 获得短信日志分页
- *
- * @param pageReqVO 分页查询
- * @return 短信日志分页
- */
- PageResult getSmsLogPage(SysSmsLogPageReqVO pageReqVO);
-
- /**
- * 获得短信日志列表, 用于 Excel 导出
- *
- * @param exportReqVO 查询条件
- * @return 短信日志列表
- */
- List getSmsLogList(SysSmsLogExportReqVO exportReqVO);
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsTemplateService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsTemplateService.java
deleted file mode 100644
index 723eef1..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsTemplateService.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.sms;
-
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplatePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateUpdateReqVO;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-
-import javax.validation.Valid;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * 短信模板 Service 接口
- *
- * @author zzf
- * @date 2021/1/25 9:24
- */
-public interface SysSmsTemplateService {
-
- /**
- * 获得短信模板
- *
- * @param code 模板编码
- * @return 短信模板
- */
- SysSmsTemplateDO getSmsTemplateByCode(String code);
-
- /**
- * 创建短信模板
- *
- * @param createReqVO 创建信息
- * @return 编号
- */
- Long createSmsTemplate(@Valid SysSmsTemplateCreateReqVO createReqVO);
-
- /**
- * 更新短信模板
- *
- * @param updateReqVO 更新信息
- */
- void updateSmsTemplate(@Valid SysSmsTemplateUpdateReqVO updateReqVO);
-
- /**
- * 删除短信模板
- *
- * @param id 编号
- */
- void deleteSmsTemplate(Long id);
-
- /**
- * 获得短信模板
- *
- * @param id 编号
- * @return 短信模板
- */
- SysSmsTemplateDO getSmsTemplate(Long id);
-
- /**
- * 获得短信模板列表
- *
- * @param ids 编号
- * @return 短信模板列表
- */
- List getSmsTemplateList(Collection ids);
-
- /**
- * 获得短信模板分页
- *
- * @param pageReqVO 分页查询
- * @return 短信模板分页
- */
- PageResult getSmsTemplatePage(SysSmsTemplatePageReqVO pageReqVO);
-
- /**
- * 获得短信模板列表, 用于 Excel 导出
- *
- * @param exportReqVO 查询条件
- * @return 短信模板分页
- */
- List getSmsTemplateList(SysSmsTemplateExportReqVO exportReqVO);
-
- /**
- * 获得指定短信渠道下的短信模板数量
- *
- * @param channelId 短信渠道编号
- * @return 数量
- */
- Integer countByChannelId(Long channelId);
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsLogServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsLogServiceImpl.java
deleted file mode 100644
index 866e607..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsLogServiceImpl.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.sms.impl;
-
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms.SysSmsLogMapper;
-import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsLogService;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-/**
- * 短信日志 Service 实现类
- *
- * @author zzf
- * @date 2021/1/25 9:25
- */
-@Slf4j
-@Service
-public class SysSmsLogServiceImpl implements SysSmsLogService {
-
- @Resource
- private SysSmsLogMapper smsLogMapper;
-
- @Override
- public PageResult getSmsLogPage(SysSmsLogPageReqVO pageReqVO) {
- return smsLogMapper.selectPage(pageReqVO);
- }
-
- @Override
- public List getSmsLogList(SysSmsLogExportReqVO exportReqVO) {
- return smsLogMapper.selectList(exportReqVO);
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/tenant/SysTenantService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/tenant/SysTenantService.java
deleted file mode 100755
index b32e81f..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/tenant/SysTenantService.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.tenant;
-
-import cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo.SysTenantCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo.SysTenantExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo.SysTenantPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo.SysTenantUpdateReqVO;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.tenant.SysTenantDO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-
-import javax.validation.Valid;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * 租户 Service 接口
- *
- * @author 芋道源码
- */
-public interface SysTenantService {
-
- /**
- * 创建租户
- *
- * @param createReqVO 创建信息
- * @return 编号
- */
- Long createTenant(@Valid SysTenantCreateReqVO createReqVO);
-
- /**
- * 更新租户
- *
- * @param updateReqVO 更新信息
- */
- void updateTenant(@Valid SysTenantUpdateReqVO updateReqVO);
-
- /**
- * 删除租户
- *
- * @param id 编号
- */
- void deleteTenant(Long id);
-
- /**
- * 获得租户
- *
- * @param id 编号
- * @return 租户
- */
- SysTenantDO getTenant(Long id);
-
- /**
- * 获得租户列表
- *
- * @param ids 编号
- * @return 租户列表
- */
- List getTenantList(Collection ids);
-
- /**
- * 获得租户分页
- *
- * @param pageReqVO 分页查询
- * @return 租户分页
- */
- PageResult getTenantPage(SysTenantPageReqVO pageReqVO);
-
- /**
- * 获得租户列表, 用于 Excel 导出
- *
- * @param exportReqVO 查询条件
- * @return 租户列表
- */
- List getTenantList(SysTenantExportReqVO exportReqVO);
-
- /**
- * 获得名字对应的租户
- *
- * @param name 组户名
- * @return 租户
- */
- SysTenantDO getTenantByName(String name);
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/tenant/impl/SysTenantServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/tenant/impl/SysTenantServiceImpl.java
deleted file mode 100755
index 80701af..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/tenant/impl/SysTenantServiceImpl.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.tenant.impl;
-
-import cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo.SysTenantCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo.SysTenantExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo.SysTenantPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo.SysTenantUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.convert.tenant.SysTenantConvert;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.tenant.SysTenantMapper;
-import cn.iocoder.yudao.adminserver.modules.system.service.tenant.SysTenantService;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.tenant.SysTenantDO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import javax.annotation.Resource;
-import java.util.Collection;
-import java.util.List;
-
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.TENANT_NOT_EXISTS;
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-
-/**
- * 租户 Service 实现类
- *
- * @author 芋道源码
- */
-@Service
-@Validated
-public class SysTenantServiceImpl implements SysTenantService {
-
- @Resource
- private SysTenantMapper tenantMapper;
-
- @Override
- public Long createTenant(SysTenantCreateReqVO createReqVO) {
- // 插入
- SysTenantDO tenant = SysTenantConvert.INSTANCE.convert(createReqVO);
- tenantMapper.insert(tenant);
- // 返回
- return tenant.getId();
- }
-
- @Override
- public void updateTenant(SysTenantUpdateReqVO updateReqVO) {
- // 校验存在
- this.validateTenantExists(updateReqVO.getId());
- // 更新
- SysTenantDO updateObj = SysTenantConvert.INSTANCE.convert(updateReqVO);
- tenantMapper.updateById(updateObj);
- }
-
- @Override
- public void deleteTenant(Long id) {
- // 校验存在
- this.validateTenantExists(id);
- // 删除
- tenantMapper.deleteById(id);
- }
-
- private void validateTenantExists(Long id) {
- if (tenantMapper.selectById(id) == null) {
- throw exception(TENANT_NOT_EXISTS);
- }
- }
-
- @Override
- public SysTenantDO getTenant(Long id) {
- return tenantMapper.selectById(id);
- }
-
- @Override
- public List getTenantList(Collection ids) {
- return tenantMapper.selectBatchIds(ids);
- }
-
- @Override
- public PageResult getTenantPage(SysTenantPageReqVO pageReqVO) {
- return tenantMapper.selectPage(pageReqVO);
- }
-
- @Override
- public List getTenantList(SysTenantExportReqVO exportReqVO) {
- return tenantMapper.selectList(exportReqVO);
- }
-
- @Override
- public SysTenantDO getTenantByName(String name) {
- return tenantMapper.selectByName(name);
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/user/SysUserService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/user/SysUserService.java
deleted file mode 100644
index da4695e..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/user/SysUserService.java
+++ /dev/null
@@ -1,158 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.user;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.*;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
-
-import java.io.InputStream;
-import java.util.*;
-
-/**
- * 后台用户 Service 接口
- *
- * @author 芋道源码
- */
-public interface SysUserService {
-
- /**
- * 创建用户
- *
- * @param reqVO 用户信息
- * @return 用户编号
- */
- Long createUser(SysUserCreateReqVO reqVO);
-
- /**
- * 修改用户
- *
- * @param reqVO 用户信息
- */
- void updateUser(SysUserUpdateReqVO reqVO);
-
- /**
- * 更新用户的最后登陆信息
- *
- * @param id 用户编号
- * @param loginIp 登陆 IP
- */
- void updateUserLogin(Long id, String loginIp);
-
- /**
- * 修改用户个人信息
- *
- * @param id 用户编号
- * @param reqVO 用户个人信息
- */
- void updateUserProfile(Long id, SysUserProfileUpdateReqVO reqVO);
-
- /**
- * 修改用户个人密码
- *
- * @param id 用户编号
- * @param reqVO 更新用户个人密码
- */
- void updateUserPassword(Long id, SysUserProfileUpdatePasswordReqVO reqVO);
-
- /**
- * 更新用户头像
- *
- * @param id 用户 id
- * @param avatarFile 头像文件
- */
- String updateUserAvatar(Long id, InputStream avatarFile);
-
- /**
- * 修改密码
- *
- * @param id 用户编号
- * @param password 密码
- */
- void updateUserPassword(Long id, String password);
-
- /**
- * 修改状态
- *
- * @param id 用户编号
- * @param status 状态
- */
- void updateUserStatus(Long id, Integer status);
-
- /**
- * 删除用户
- *
- * @param id 用户编号
- */
- void deleteUser(Long id);
-
- /**
- * 通过用户名查询用户
- *
- * @param username 用户名
- * @return 用户对象信息
- */
- SysUserDO getUserByUsername(String username);
-
- /**
- * 获得用户分页列表
- *
- * @param reqVO 分页条件
- * @return 分页列表
- */
- PageResult getUserPage(SysUserPageReqVO reqVO);
-
- /**
- * 获得用户
- *
- * @param id 用户编号
- * @return 用户
- */
- SysUserDO getUser(Long id);
-
- /**
- * 获得用户列表
- *
- * @param reqVO 列表请求
- * @return 用户列表
- */
- List getUsers(SysUserExportReqVO reqVO);
-
-
-
- /**
- * 获得用户列表,基于昵称模糊匹配
- *
- * @param nickname 昵称
- * @return 用户列表
- */
- List getUsersByNickname(String nickname);
-
- /**
- * 获得用户列表,基于用户账号模糊匹配
- *
- * @param username 用户账号
- * @return 用户列表
- */
- List getUsersByUsername(String username);
-
- /**
- * 批量导入用户
- *
- * @param importUsers 导入用户列表
- * @param isUpdateSupport 是否支持更新
- * @return 导入结果
- */
- SysUserImportRespVO importUsers(List importUsers, boolean isUpdateSupport);
-
- /**
- * 获得指定状态的用户们
- *
- * @param status 状态
- * @return 用户们
- */
- List getUsersByStatus(Integer status);
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolCodegenColumnDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolCodegenColumnDO.java
index 7d0d950..73f9d5d 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolCodegenColumnDO.java
+++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolCodegenColumnDO.java
@@ -1,7 +1,6 @@
package cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictTypeDO;
import cn.iocoder.yudao.adminserver.modules.tool.enums.codegen.ToolCodegenColumnHtmlTypeEnum;
import cn.iocoder.yudao.adminserver.modules.tool.enums.codegen.ToolCodegenColumnListConditionEnum;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -80,7 +79,7 @@ public class ToolCodegenColumnDO extends BaseDO {
/**
* 字典类型
*
- * 关联 {@link SysDictTypeDO#getType()}
+ * 关联 DictTypeDO 的 type 属性
*/
private String dictType;
/**
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolCodegenTableDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolCodegenTableDO.java
index 4ed11b2..33546b6 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolCodegenTableDO.java
+++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolCodegenTableDO.java
@@ -1,7 +1,6 @@
package cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO;
import cn.iocoder.yudao.adminserver.modules.tool.enums.codegen.ToolCodegenTemplateTypeEnum;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@@ -89,7 +88,7 @@ public class ToolCodegenTableDO extends BaseDO {
/**
* 父菜单编号
*
- * 关联 {@link SysMenuDO#getId()}
+ * 关联 MenuDO 的 id 属性
*/
private Long parentMenuId;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/codegen/config/CodegenConfiguration.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/codegen/config/CodegenConfiguration.java
index 9f514ee..943638c 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/codegen/config/CodegenConfiguration.java
+++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/codegen/config/CodegenConfiguration.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.framework.codegen.config;
+package cn.iocoder.yudao.adminserver.modules.tool.framework.codegen.config;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/codegen/config/CodegenProperties.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/codegen/config/CodegenProperties.java
new file mode 100644
index 0000000..c383fc5
--- /dev/null
+++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/codegen/config/CodegenProperties.java
@@ -0,0 +1,28 @@
+package cn.iocoder.yudao.adminserver.modules.tool.framework.codegen.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.validation.annotation.Validated;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Collection;
+
+@ConfigurationProperties(prefix = "yudao.codegen")
+@Validated
+@Data
+public class CodegenProperties {
+
+ /**
+ * 生成的 Java 代码的基础包
+ */
+ @NotNull(message = "Java 代码的基础包不能为空")
+ private String basePackage;
+
+ /**
+ * 数据库名数组
+ */
+ @NotEmpty(message = "数据库不能为空")
+ private Collection dbSchemas;
+
+}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/codegen/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/codegen/package-info.java
new file mode 100644
index 0000000..bb13d52
--- /dev/null
+++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/codegen/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * 代码生成器
+ */
+package cn.iocoder.yudao.adminserver.modules.tool.framework.codegen;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/config/ErrorCodeConfiguration.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/config/ErrorCodeConfiguration.java
deleted file mode 100644
index 9a2789e..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/config/ErrorCodeConfiguration.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.config;
-
-import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.generator.ErrorCodeAutoGenerator;
-import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.loader.ErrorCodeLoader;
-import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.service.ErrorCodeFrameworkService;
-import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.loader.ErrorCodeLoaderImpl;
-import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.generator.ErrorCodeAutoGeneratorImpl;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.scheduling.annotation.EnableScheduling;
-
-/**
- * 错误码配置类
- */
-@Configuration
-@EnableConfigurationProperties(ErrorCodeProperties.class)
-@EnableScheduling // 开启调度任务的功能,因为 ErrorCodeRemoteLoader 通过定时刷新错误码
-public class ErrorCodeConfiguration {
-
- @Bean
- public ErrorCodeAutoGenerator errorCodeAutoGenerator(@Value("${spring.application.name}") String applicationName,
- ErrorCodeProperties errorCodeProperties,
- ErrorCodeFrameworkService errorCodeFrameworkService) {
- return new ErrorCodeAutoGeneratorImpl(applicationName, errorCodeProperties.getConstantsClassList(),
- errorCodeFrameworkService);
- }
-
- @Bean
- public ErrorCodeLoader errorCodeLoader(@Value("${spring.application.name}") String applicationName,
- ErrorCodeFrameworkService errorCodeFrameworkService) {
- return new ErrorCodeLoaderImpl(applicationName, errorCodeFrameworkService);
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/config/ErrorCodeProperties.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/config/ErrorCodeProperties.java
deleted file mode 100644
index f652a6a..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/config/ErrorCodeProperties.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.config;
-
-import lombok.Data;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.validation.annotation.Validated;
-
-import javax.validation.constraints.NotNull;
-import java.util.List;
-
-/**
- * 错误码的配置属性类
- *
- * @author dlyan
- */
-@ConfigurationProperties("yudao.error-code")
-@Data
-@Validated
-public class ErrorCodeProperties {
-
- /**
- * 错误码枚举类
- */
- @NotNull(message = "错误码枚举类不能为空")
- private List constantsClassList;
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/dto/ErrorCodeAutoGenerateReqDTO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/dto/ErrorCodeAutoGenerateReqDTO.java
deleted file mode 100644
index 098f043..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/dto/ErrorCodeAutoGenerateReqDTO.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto;
-
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
-
-/**
- * 错误码自动生成 DTO
- *
- * @author dylan
- */
-@Data
-@Accessors(chain = true)
-public class ErrorCodeAutoGenerateReqDTO {
-
- /**
- * 应用名
- */
- @NotNull(message = "应用名不能为空")
- private String applicationName;
- /**
- * 错误码编码
- */
- @NotNull(message = "错误码编码不能为空")
- private Integer code;
- /**
- * 错误码错误提示
- */
- @NotEmpty(message = "错误码错误提示不能为空")
- private String message;
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/dto/ErrorCodeRespDTO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/dto/ErrorCodeRespDTO.java
deleted file mode 100644
index 7e2bb2a..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/dto/ErrorCodeRespDTO.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto;
-
-import lombok.Data;
-
-import java.util.Date;
-
-/**
- * 错误码的 Response DTO
- *
- * @author 芋道源码
- */
-@Data
-public class ErrorCodeRespDTO {
-
- /**
- * 错误码编码
- */
- private Integer code;
- /**
- * 错误码错误提示
- */
- private String message;
- /**
- * 更新时间
- */
- private Date updateTime;
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/generator/ErrorCodeAutoGenerator.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/generator/ErrorCodeAutoGenerator.java
deleted file mode 100644
index 60689af..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/generator/ErrorCodeAutoGenerator.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.generator;
-
-/**
- * 错误码的自动生成器
- *
- * @author dylan
- */
-public interface ErrorCodeAutoGenerator {
-
- /**
- * 将配置类到错误码写入数据库
- */
- void execute();
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/generator/ErrorCodeAutoGeneratorImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/generator/ErrorCodeAutoGeneratorImpl.java
deleted file mode 100644
index bedbcdc..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/generator/ErrorCodeAutoGeneratorImpl.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.generator;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ClassUtil;
-import cn.hutool.core.util.ReflectUtil;
-import cn.iocoder.yudao.framework.common.exception.ErrorCode;
-import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO;
-import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.service.ErrorCodeFrameworkService;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.context.event.ApplicationReadyEvent;
-import org.springframework.context.event.EventListener;
-import org.springframework.scheduling.annotation.Async;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * ErrorCodeAutoGenerator 的实现类
- * 目的是,扫描指定的 {@link #constantsClassList} 类,写入到 system 服务中
- *
- * @author dylan
- */
-@RequiredArgsConstructor
-@Slf4j
-public class ErrorCodeAutoGeneratorImpl implements ErrorCodeAutoGenerator {
-
- /**
- * 应用分组
- */
- private final String applicationName;
- /**
- * 错误码枚举类
- */
- private final List constantsClassList;
- /**
- * 错误码 Service
- */
- private final ErrorCodeFrameworkService errorCodeService;
-
- @Override
- @EventListener(ApplicationReadyEvent.class)
- @Async // 异步,保证项目的启动过程,毕竟非关键流程
- public void execute() {
- // 第一步,解析错误码
- List autoGenerateDTOs = parseErrorCode();
- log.info("[execute][解析到错误码数量为 ({}) 个]", autoGenerateDTOs.size());
-
- // 第二步,写入到 system 服务
- errorCodeService.autoGenerateErrorCodes(autoGenerateDTOs);
- log.info("[execute][写入到 system 组件完成]");
- }
-
- /**
- * 解析 constantsClassList 变量,转换成错误码数组
- *
- * @return 错误码数组
- */
- private List parseErrorCode() {
- // 校验 errorCodeConstantsClass 参数
- if (CollUtil.isEmpty(constantsClassList)) {
- log.info("[execute][未配置 yudao.error-code.constants-class-list 配置项,不进行自动写入到 system 服务中]");
- return new ArrayList<>();
- }
-
- // 解析错误码
- List autoGenerateDTOs = new ArrayList<>();
- constantsClassList.forEach(constantsClass -> {
- // 解析错误码枚举类
- Class> errorCodeConstantsClazz = ClassUtil.loadClass(constantsClass);
- // 解析错误码
- autoGenerateDTOs.addAll(parseErrorCode(errorCodeConstantsClazz));
- });
- return autoGenerateDTOs;
- }
-
- /**
- * 解析错误码类,获得错误码数组
- *
- * @return 错误码数组
- */
- private List parseErrorCode(Class> constantsClass) {
- List autoGenerateDTOs = new ArrayList<>();
- Arrays.stream(constantsClass.getFields()).forEach(field -> {
- if (field.getType() != ErrorCode.class) {
- return;
- }
- // 转换成 ErrorCodeAutoGenerateReqDTO 对象
- ErrorCode errorCode = (ErrorCode) ReflectUtil.getFieldValue(constantsClass, field);
- autoGenerateDTOs.add(new ErrorCodeAutoGenerateReqDTO().setApplicationName(applicationName)
- .setCode(errorCode.getCode()).setMessage(errorCode.getMsg()));
- });
- return autoGenerateDTOs;
- }
-
-}
-
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/loader/ErrorCodeLoader.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/loader/ErrorCodeLoader.java
deleted file mode 100644
index d35767f..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/loader/ErrorCodeLoader.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.loader;
-
-import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
-
-/**
- * 错误码加载器
- *
- * 注意,错误码最终加载到 {@link ServiceExceptionUtil} 的 MESSAGES 变量中!
- *
- * @author dlyan
- */
-public interface ErrorCodeLoader {
-
- /**
- * 添加错误码
- *
- * @param code 错误码的编号
- * @param msg 错误码的提示
- */
- default void putErrorCode(Integer code, String msg) {
- ServiceExceptionUtil.put(code, msg);
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/loader/ErrorCodeLoaderImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/loader/ErrorCodeLoaderImpl.java
deleted file mode 100644
index 234d30d..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/loader/ErrorCodeLoaderImpl.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.loader;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto.ErrorCodeRespDTO;
-import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.service.ErrorCodeFrameworkService;
-import cn.iocoder.yudao.framework.common.util.date.DateUtils;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.context.event.ApplicationReadyEvent;
-import org.springframework.context.event.EventListener;
-import org.springframework.scheduling.annotation.Scheduled;
-
-import java.util.Date;
-import java.util.List;
-
-/**
- * ErrorCodeLoader 的实现类,从 infra 的数据库中,加载错误码。
- *
- * 考虑到错误码会刷新,所以按照 {@link #REFRESH_ERROR_CODE_PERIOD} 频率,增量加载错误码。
- *
- * @author dlyan
- */
-@RequiredArgsConstructor
-@Slf4j
-public class ErrorCodeLoaderImpl implements ErrorCodeLoader {
-
- /**
- * 刷新错误码的频率,单位:毫秒
- */
- private static final int REFRESH_ERROR_CODE_PERIOD = 60 * 1000;
-
- /**
- * 应用分组
- */
- private final String applicationName;
- /**
- * 错误码 Service
- */
- private final ErrorCodeFrameworkService errorCodeService;
-
- /**
- * 缓存错误码的最大更新时间,用于后续的增量轮询,判断是否有更新
- */
- private Date maxUpdateTime;
-
- @EventListener(ApplicationReadyEvent.class)
- public void loadErrorCodes() {
- this.loadErrorCodes0();
- }
-
- @Scheduled(fixedDelay = REFRESH_ERROR_CODE_PERIOD, initialDelay = REFRESH_ERROR_CODE_PERIOD)
- public void refreshErrorCodes() {
- this.loadErrorCodes0();
- }
-
- private void loadErrorCodes0() {
- // 加载错误码
- List errorCodeRespDTOs = errorCodeService.getErrorCodeList(applicationName, maxUpdateTime);
- if (CollUtil.isEmpty(errorCodeRespDTOs)) {
- return;
- }
- log.info("[loadErrorCodes0][加载到 ({}) 个错误码]", errorCodeRespDTOs.size());
-
- // 刷新错误码的缓存
- errorCodeRespDTOs.forEach(errorCodeRespDTO -> {
- // 写入到错误码的缓存
- putErrorCode(errorCodeRespDTO.getCode(), errorCodeRespDTO.getMessage());
- // 记录下更新时间,方便增量更新
- maxUpdateTime = DateUtils.max(maxUpdateTime, errorCodeRespDTO.getUpdateTime());
- });
- }
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/service/ErrorCodeFrameworkService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/service/ErrorCodeFrameworkService.java
deleted file mode 100644
index e3f5e91..0000000
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/service/ErrorCodeFrameworkService.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.service;
-
-import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO;
-import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto.ErrorCodeRespDTO;
-
-import javax.validation.Valid;
-import java.util.Date;
-import java.util.List;
-
-/**
- * 错误码 Framework Service 接口
- *
- * @author 芋道源码
- */
-public interface ErrorCodeFrameworkService {
-
- /**
- * 自动创建错误码
- *
- * @param autoGenerateDTOs 错误码信息
- */
- void autoGenerateErrorCodes(@Valid List autoGenerateDTOs);
-
- /**
- * 增量获得错误码数组
- *
- * 如果 minUpdateTime 为空时,则获取所有错误码
- *
- * @param applicationName 应用名
- * @param minUpdateTime 最小更新时间
- * @return 错误码数组
- */
- List getErrorCodeList(String applicationName, Date minUpdateTime);
-
-}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenEngine.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenEngine.java
index f7a1e4c..ce8f3ac 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenEngine.java
+++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenEngine.java
@@ -9,7 +9,7 @@ import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.system.framework.codegen.config.CodegenProperties;
+import cn.iocoder.yudao.adminserver.modules.tool.framework.codegen.config.CodegenProperties;
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenServiceImpl.java
index ff9cdea..f3b69fb 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenServiceImpl.java
+++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenServiceImpl.java
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.adminserver.modules.tool.service.codegen.impl;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.system.framework.codegen.config.CodegenProperties;
+import cn.iocoder.yudao.adminserver.modules.tool.framework.codegen.config.CodegenProperties;
import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.ToolCodegenUpdateReqVO;
import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table.ToolCodegenTablePageReqVO;
import cn.iocoder.yudao.adminserver.modules.tool.convert.codegen.ToolCodegenConvert;
diff --git a/yudao-admin-server/src/main/resources/application.yaml b/yudao-admin-server/src/main/resources/application.yaml
index 09bbc33..15af12d 100644
--- a/yudao-admin-server/src/main/resources/application.yaml
+++ b/yudao-admin-server/src/main/resources/application.yaml
@@ -49,6 +49,7 @@ yudao:
version: 1.0.0
base-package: cn.iocoder.yudao.adminserver
member-package: cn.iocoder.yudao.module.member
+ system-package: cn.iocoder.yudao.module.system
core-service:
base-package: cn.iocoder.yudao.coreservice
web:
@@ -74,7 +75,7 @@ yudao:
error-code: # 错误码相关配置项
constants-class-list:
- cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants
- - cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants
+ - cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants
- cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants
tenant: # 多租户相关配置项
tables: # 配置需要开启多租户的表;如果实体已经继承 TenantBaseDO 类,则无需重复配置
diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/quartz/core/SchedulerManagerTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/quartz/core/SchedulerManagerTest.java
index efa9592..72ce3cd 100644
--- a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/quartz/core/SchedulerManagerTest.java
+++ b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/quartz/core/SchedulerManagerTest.java
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.adminserver.framework.quartz.core;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
-import cn.iocoder.yudao.adminserver.modules.system.job.auth.SysUserSessionTimeoutJob;
+import cn.iocoder.yudao.module.system.job.auth.SysUserSessionTimeoutJob;
import cn.iocoder.yudao.framework.quartz.core.scheduler.SchedulerManager;
import org.junit.jupiter.api.Test;
import org.quartz.SchedulerException;
diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/redis/core/stream/RedisStreamTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/redis/core/stream/RedisStreamTest.java
index 90e25ae..3f1bb7f 100644
--- a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/redis/core/stream/RedisStreamTest.java
+++ b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/redis/core/stream/RedisStreamTest.java
@@ -2,9 +2,9 @@ package cn.iocoder.yudao.adminserver.framework.redis.core.stream;
import cn.hutool.core.thread.ThreadUtil;
import cn.iocoder.yudao.adminserver.BaseRedisIntegrationTest;
-import cn.iocoder.yudao.adminserver.modules.system.mq.consumer.mail.SysMailSendConsumer;
-import cn.iocoder.yudao.adminserver.modules.system.mq.consumer.sms.SysSmsSendConsumer;
-import cn.iocoder.yudao.adminserver.modules.system.mq.message.mail.SysMailSendMessage;
+import cn.iocoder.yudao.module.system.mq.consumer.mail.SysMailSendConsumer;
+import cn.iocoder.yudao.module.system.mq.consumer.sms.SysSmsSendConsumer;
+import cn.iocoder.yudao.module.system.mq.message.mail.SysMailSendMessage;
import cn.iocoder.yudao.coreservice.modules.system.mq.message.sms.SysSmsSendMessage;
import cn.iocoder.yudao.framework.mq.core.util.RedisMessageUtils;
import org.junit.jupiter.api.Disabled;
diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/system/service/package-info.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/system/service/package-info.java
index b6bd214..372dcac 100644
--- a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/system/service/package-info.java
+++ b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/system/service/package-info.java
@@ -1 +1 @@
-package cn.iocoder.yudao.adminserver.modules.system.service;
+package cn.iocoder.yudao.module.system.service;
diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsServiceIntegrationTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsServiceIntegrationTest.java
index dc43019..a6b4c47 100644
--- a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsServiceIntegrationTest.java
+++ b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsServiceIntegrationTest.java
@@ -1,14 +1,14 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.sms;
+package cn.iocoder.yudao.module.system.service.sms;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.thread.ThreadUtil;
import cn.iocoder.yudao.adminserver.BaseDbAndRedisIntegrationTest;
-import cn.iocoder.yudao.adminserver.modules.system.mq.consumer.sms.SysSmsSendConsumer;
-import cn.iocoder.yudao.adminserver.modules.system.mq.producer.sms.SysSmsProducer;
-import cn.iocoder.yudao.adminserver.modules.system.service.sms.impl.SysSmsChannelServiceImpl;
-import cn.iocoder.yudao.adminserver.modules.system.service.sms.impl.SysSmsLogServiceImpl;
-import cn.iocoder.yudao.adminserver.modules.system.service.sms.impl.SysSmsTemplateServiceImpl;
-import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
+import cn.iocoder.yudao.module.system.mq.consumer.sms.SysSmsSendConsumer;
+import cn.iocoder.yudao.module.system.mq.producer.sms.SysSmsProducer;
+import cn.iocoder.yudao.module.system.service.sms.impl.SysSmsChannelServiceImpl;
+import cn.iocoder.yudao.module.system.service.sms.impl.SysSmsLogServiceImpl;
+import cn.iocoder.yudao.module.system.service.sms.impl.SysSmsTemplateServiceImpl;
+import cn.iocoder.yudao.module.system.service.user.SysUserService;
import cn.iocoder.yudao.coreservice.modules.system.service.sms.impl.SysSmsCoreServiceImpl;
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
import cn.iocoder.yudao.framework.sms.config.YudaoSmsAutoConfiguration;
diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysUserSessionServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysUserSessionServiceImplTest.java
deleted file mode 100644
index 164cd90..0000000
--- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysUserSessionServiceImplTest.java
+++ /dev/null
@@ -1,129 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.auth;
-
-import cn.hutool.core.date.DateUtil;
-import cn.iocoder.yudao.adminserver.BaseDbAndRedisUnitTest;
-import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.auth.SysUserSessionMapper;
-import cn.iocoder.yudao.adminserver.modules.system.service.auth.impl.SysUserSessionServiceImpl;
-import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
-import cn.iocoder.yudao.coreservice.modules.system.dal.redis.auth.SysLoginUserCoreRedisDAO;
-import cn.iocoder.yudao.coreservice.modules.system.enums.common.SysSexEnum;
-import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService;
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
-import cn.iocoder.yudao.framework.test.core.util.AssertUtils;
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.context.annotation.Import;
-
-import javax.annotation.Resource;
-import java.util.Date;
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import static cn.hutool.core.util.RandomUtil.randomEle;
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
-import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
-import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString;
-import static java.util.Collections.singletonList;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.when;
-
-/**
- * {@link SysUserSessionServiceImpl} 的单元测试
- *
- * @author Lyon
- */
-@Import({SysUserSessionServiceImpl.class})
-public class SysUserSessionServiceImplTest extends BaseDbAndRedisUnitTest {
-
- @Resource
- private SysUserSessionServiceImpl userSessionService;
-
- @Resource
- private SysUserSessionMapper userSessionMapper;
-
- @MockBean
- private SysUserService userService;
- @MockBean
- private SysLoginLogCoreService loginLogCoreService;
- @MockBean
- private SysLoginUserCoreRedisDAO loginUserCoreRedisDAO;
-
- @Test
- public void testGetUserSessionPage_success() {
- // mock 数据
- SysUserDO dbUser = randomPojo(SysUserDO.class, o -> {
- o.setSex(randomEle(SysSexEnum.values()).getSex());
- o.setStatus(CommonStatusEnum.ENABLE.getStatus());
- });
- when(userService.getUsersByUsername(eq(dbUser.getUsername()))).thenReturn(singletonList(dbUser));
- // 插入可被查询到的数据
- String userIp = randomString();
- SysUserSessionDO dbSession = randomPojo(SysUserSessionDO.class, o -> {
- o.setUserId(dbUser.getId());
- o.setUserType(randomEle(UserTypeEnum.values()).getValue());
- o.setUserIp(userIp);
- });
- userSessionMapper.insert(dbSession);
- // 测试 username 不匹配
- userSessionMapper.insert(ObjectUtils.cloneIgnoreId(dbSession, o -> {
- o.setId(randomString());
- o.setUserId(123456L);
- }));
- // 测试 userIp 不匹配
- userSessionMapper.insert(ObjectUtils.cloneIgnoreId(dbSession, o -> {
- o.setId(randomString());
- o.setUserIp("testUserIp");
- }));
- // 准备参数
- SysUserSessionPageReqVO reqVO = new SysUserSessionPageReqVO();
- reqVO.setUsername(dbUser.getUsername());
- reqVO.setUserIp(userIp);
-
- // 调用
- PageResult pageResult = userSessionService.getUserSessionPage(reqVO);
- // 断言
- assertEquals(1, pageResult.getTotal());
- assertEquals(1, pageResult.getList().size());
- assertPojoEquals(dbSession, pageResult.getList().get(0));
- }
-
- // TODO 芋艿:单测写的有问题
- @Test
- public void testClearSessionTimeout_success() {
- // 准备超时数据 120 条, 在线用户 1 条
- int expectedTimeoutCount = 120, expectedTotal = 1;
-
- // 准备数据
- List prepareData = Stream
- .iterate(0, i -> i)
- .limit(expectedTimeoutCount)
- .map(i -> randomPojo(SysUserSessionDO.class, o -> {
- o.setUserType(randomEle(UserTypeEnum.values()).getValue());
- o.setSessionTimeout(DateUtil.offsetSecond(new Date(), -1));
- }))
- .collect(Collectors.toList());
- SysUserSessionDO sessionDO = randomPojo(SysUserSessionDO.class, o -> {
- o.setUserType(randomEle(UserTypeEnum.values()).getValue());
- o.setSessionTimeout(DateUtil.offsetMinute(new Date(), 30));
- });
- prepareData.add(sessionDO);
- prepareData.forEach(userSessionMapper::insert);
-
- // 清空超时数据
- long actualTimeoutCount = userSessionService.clearSessionTimeout();
- // 校验
- assertEquals(expectedTimeoutCount, actualTimeoutCount);
- List userSessionDOS = userSessionMapper.selectList();
- assertEquals(expectedTotal, userSessionDOS.size());
- AssertUtils.assertPojoEquals(sessionDO, userSessionDOS.get(0), "updateTime");
- }
-
-}
diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/common/SysCaptchaServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/common/SysCaptchaServiceTest.java
deleted file mode 100644
index c45ed4c..0000000
--- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/common/SysCaptchaServiceTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.common;
-
-import cn.iocoder.yudao.adminserver.BaseRedisUnitTest;
-import cn.iocoder.yudao.adminserver.modules.system.framework.captcha.config.CaptchaProperties;
-import cn.iocoder.yudao.adminserver.modules.system.controller.common.vo.SysCaptchaImageRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.redis.common.SysCaptchaRedisDAO;
-import cn.iocoder.yudao.adminserver.modules.system.service.common.impl.SysCaptchaServiceImpl;
-import org.junit.jupiter.api.Test;
-import org.springframework.context.annotation.Import;
-
-import javax.annotation.Resource;
-
-import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString;
-import static org.junit.jupiter.api.Assertions.*;
-
-@Import({SysCaptchaServiceImpl.class, CaptchaProperties.class, SysCaptchaRedisDAO.class})
-public class SysCaptchaServiceTest extends BaseRedisUnitTest {
-
- @Resource
- private SysCaptchaServiceImpl captchaService;
-
- @Resource
- private SysCaptchaRedisDAO captchaRedisDAO;
- @Resource
- private CaptchaProperties captchaProperties;
-
- @Test
- public void testGetCaptchaImage() {
- // 调用
- SysCaptchaImageRespVO respVO = captchaService.getCaptchaImage();
- // 断言
- assertNotNull(respVO.getUuid());
- assertNotNull(respVO.getImg());
- String captchaCode = captchaRedisDAO.get(respVO.getUuid());
- assertNotNull(captchaCode);
- }
-
- @Test
- public void testGetCaptchaCode() {
- // 准备参数
- String uuid = randomString();
- String code = randomString();
- // mock 数据
- captchaRedisDAO.set(uuid, code, captchaProperties.getTimeout());
-
- // 调用
- String resultCode = captchaService.getCaptchaCode(uuid);
- // 断言
- assertEquals(code, resultCode);
- }
-
- @Test
- public void testDeleteCaptchaCode() {
- // 准备参数
- String uuid = randomString();
- String code = randomString();
- // mock 数据
- captchaRedisDAO.set(uuid, code, captchaProperties.getTimeout());
-
- // 调用
- captchaService.deleteCaptchaCode(uuid);
- // 断言
- assertNull(captchaRedisDAO.get(uuid));
- }
-
-}
diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysLoginLogServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysLoginLogServiceImplTest.java
deleted file mode 100644
index 820ee51..0000000
--- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysLoginLogServiceImplTest.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.logger;
-
-import cn.hutool.core.util.RandomUtil;
-import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO;
-import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.logger.SysLoginLogMapper;
-import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginLogTypeEnum;
-import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum;
-import cn.iocoder.yudao.adminserver.modules.system.service.logger.impl.SysLoginLogServiceImpl;
-import cn.iocoder.yudao.framework.test.core.util.RandomUtils;
-import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
-import org.junit.jupiter.api.Test;
-import org.springframework.context.annotation.Import;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-@Import(SysLoginLogServiceImpl.class)
-public class SysLoginLogServiceImplTest extends BaseDbUnitTest {
-
- @Resource
- private SysLoginLogServiceImpl sysLoginLogService;
-
- @Resource
- private SysLoginLogMapper loginLogMapper;
-
- @Test
- public void testGetLoginLogPage() {
- // 构造测试数据
- // 登录成功的
- SysLoginLogDO loginLogDO = RandomUtils.randomPojo(SysLoginLogDO.class, logDO -> {
- logDO.setLogType(RandomUtil.randomEle(SysLoginLogTypeEnum.values()).getType());
- logDO.setTraceId(TracerUtils.getTraceId());
- logDO.setUserType(RandomUtil.randomEle(UserTypeEnum.values()).getValue());
-
- logDO.setUserIp("192.168.199.16");
- logDO.setUsername("wangkai");
- logDO.setCreateTime(buildTime(2021, 3, 6));
- logDO.setResult(SysLoginResultEnum.SUCCESS.getResult());
- });
- loginLogMapper.insert(loginLogDO);
-
- // 下面几个都是不匹配的数据
- // 登录失败的
- loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setResult(SysLoginResultEnum.CAPTCHA_CODE_ERROR.getResult())));
- // 不同ip段的
- loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setUserIp("192.168.128.18")));
- // 不同username
- loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setUsername("yunai")));
- // 构造一个早期时间 2021-02-06 00:00:00
- loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setCreateTime(buildTime(2021, 2, 6))));
-
-
- // 构造调用参数
- SysLoginLogPageReqVO reqVO = new SysLoginLogPageReqVO();
- reqVO.setUsername("wangkai");
- reqVO.setUserIp("192.168.199");
- reqVO.setStatus(true);
- reqVO.setBeginTime(buildTime(2021, 3, 5));
- reqVO.setEndTime(buildTime(2021, 3, 7));
-
- // 调用service方法
- PageResult pageResult = sysLoginLogService.getLoginLogPage(reqVO);
-
- // 断言,只查到了一条符合条件的
- assertEquals(1, pageResult.getTotal());
- assertEquals(1, pageResult.getList().size());
- assertPojoEquals(loginLogDO, pageResult.getList().get(0));
- }
-
- @Test
- public void testGetLoginLogList() {
- // 构造测试数据
-
- // 登录成功的
- SysLoginLogDO loginLogDO = RandomUtils.randomPojo(SysLoginLogDO.class, logDO -> {
- logDO.setLogType(RandomUtil.randomEle(SysLoginLogTypeEnum.values()).getType());
- logDO.setTraceId(TracerUtils.getTraceId());
- logDO.setUserType(RandomUtil.randomEle(UserTypeEnum.values()).getValue());
-
- logDO.setUserIp("192.168.111.16");
- logDO.setUsername("wangxiaokai");
- logDO.setCreateTime(buildTime(2021, 3, 6));
- logDO.setResult(SysLoginResultEnum.SUCCESS.getResult());
- });
- loginLogMapper.insert(loginLogDO);
-
- // 下面几个都是不匹配的数据
- // 登录失败的
- loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setResult(SysLoginResultEnum.CAPTCHA_CODE_ERROR.getResult())));
- // 不同ip段的
- loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setUserIp("192.168.128.18")));
- // 不同username
- loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setUsername("yunai")));
- // 构造一个早期时间 2021-02-06 00:00:00
- loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setCreateTime(buildTime(2021, 2, 6))));
-
-
- // 构造调用参数
- SysLoginLogExportReqVO reqVO = new SysLoginLogExportReqVO();
- reqVO.setUsername("wangxiaokai");
- reqVO.setUserIp("192.168.111");
- reqVO.setStatus(true);
- reqVO.setBeginTime(buildTime(2021, 3, 5));
- reqVO.setEndTime(buildTime(2021, 3, 7));
-
-
- // 调用service方法
- List loginLogList = sysLoginLogService.getLoginLogList(reqVO);
-
- // 断言
- assertEquals(1, loginLogList.size());
- assertPojoEquals(loginLogDO, loginLogList.get(0));
- }
-}
diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/notice/SysNoticeServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/notice/SysNoticeServiceImplTest.java
deleted file mode 100644
index 8d13255..0000000
--- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/notice/SysNoticeServiceImplTest.java
+++ /dev/null
@@ -1,164 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.notice;
-
-import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.notice.SysNoticeDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.notice.SysNoticeMapper;
-import cn.iocoder.yudao.adminserver.modules.system.enums.notice.SysNoticeTypeEnum;
-import cn.iocoder.yudao.adminserver.modules.system.service.notice.impl.SysNoticeServiceImpl;
-import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
-import org.junit.jupiter.api.Test;
-import org.springframework.context.annotation.Import;
-
-import javax.annotation.Resource;
-
-import java.util.function.Consumer;
-
-import static cn.hutool.core.util.RandomUtil.randomEle;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.NOTICE_NOT_FOUND;
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
-import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId;
-import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
-import static org.junit.jupiter.api.Assertions.*;
-
-@Import(SysNoticeServiceImpl.class)
-class SysNoticeServiceImplTest extends BaseDbUnitTest {
-
- @Resource
- private SysNoticeServiceImpl sysNoticeService;
-
- @Resource
- private SysNoticeMapper sysNoticeMapper;
-
- @Test
- public void testPageNotices_success() {
- // 插入前置数据
- SysNoticeDO dbNotice = randomPojo(SysNoticeDO.class, o -> {
- o.setTitle("尼古拉斯赵四来啦!");
- o.setStatus(CommonStatusEnum.ENABLE.getStatus());
- o.setType(randomEle(SysNoticeTypeEnum.values()).getType());
- });
- sysNoticeMapper.insert(dbNotice);
-
- // 测试 title 不匹配
- sysNoticeMapper.insert(ObjectUtils.cloneIgnoreId(dbNotice, o -> o.setTitle("尼古拉斯凯奇也来啦!")));
- // 测试 status 不匹配
- sysNoticeMapper.insert(ObjectUtils.cloneIgnoreId(dbNotice, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
-
-
- // 查询
- SysNoticePageReqVO reqVO = new SysNoticePageReqVO();
- reqVO.setTitle("尼古拉斯赵四来啦!");
- reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
- PageResult pageResult = sysNoticeService.pageNotices(reqVO);
-
- // 验证查询结果经过筛选
- assertEquals(1, pageResult.getTotal());
- assertEquals(1, pageResult.getList().size());
- assertPojoEquals(dbNotice, pageResult.getList().get(0));
-
- }
-
- @Test
- public void testGetNotice_success() {
- // 插入前置数据
- SysNoticeDO dbNotice = randomSysNoticeDO();
- sysNoticeMapper.insert(dbNotice);
-
- // 查询
- SysNoticeDO notice = sysNoticeService.getNotice(dbNotice.getId());
-
- // 验证插入与读取对象是否一致
- assertNotNull(notice);
- assertPojoEquals(dbNotice, notice);
- }
-
- @Test
- public void testCreateNotice_success() {
- // 准备参数
- SysNoticeCreateReqVO reqVO = randomSysNoticeCreateReqVO();
-
- // 校验插入是否成功
- Long noticeId = sysNoticeService.createNotice(reqVO);
- assertNotNull(noticeId);
-
- // 校验插入属性是否正确
- SysNoticeDO notice = sysNoticeMapper.selectById(noticeId);
- assertPojoEquals(reqVO, notice);
- }
-
- @Test
- public void testUpdateNotice_success() {
- // 插入前置数据
- SysNoticeDO dbNoticeDO = randomSysNoticeDO();
- sysNoticeMapper.insert(dbNoticeDO);
-
- // 准备更新参数
- SysNoticeUpdateReqVO reqVO = randomSysNoticeUpdateReqVO(o -> o.setId(dbNoticeDO.getId()));
-
- // 更新
- sysNoticeService.updateNotice(reqVO);
-
- // 检验是否更新成功
- SysNoticeDO notice = sysNoticeMapper.selectById(reqVO.getId());
- assertPojoEquals(reqVO, notice);
- }
-
- @Test
- public void testDeleteNotice_success() {
- // 插入前置数据
- SysNoticeDO dbNotice = randomSysNoticeDO();
- sysNoticeMapper.insert(dbNotice);
-
- // 删除
- sysNoticeService.deleteNotice(dbNotice.getId());
-
- // 检查是否删除成功
- assertNull(sysNoticeMapper.selectById(dbNotice.getId()));
- }
-
- @Test
- public void checkNoticeExists_success() {
- // 插入前置数据
- SysNoticeDO dbNotice = randomSysNoticeDO();
- sysNoticeMapper.insert(dbNotice);
-
- // 成功调用
- sysNoticeService.checkNoticeExists(dbNotice.getId());
- }
-
- @Test
- public void checkNoticeExists_noExists() {
- assertServiceException(() -> sysNoticeService.checkNoticeExists(randomLongId()), NOTICE_NOT_FOUND);
- }
-
- @SafeVarargs
- private static SysNoticeDO randomSysNoticeDO(Consumer... consumers) {
- SysNoticeDO notice = randomPojo(SysNoticeDO.class, consumers);
- notice.setType(randomEle(SysNoticeTypeEnum.values()).getType());
- notice.setStatus(CommonStatusEnum.ENABLE.getStatus());
- return notice;
- }
-
- @SafeVarargs
- private static SysNoticeUpdateReqVO randomSysNoticeUpdateReqVO(Consumer... consumers) {
- SysNoticeUpdateReqVO reqVO = randomPojo(SysNoticeUpdateReqVO.class, consumers);
- reqVO.setType(randomEle(SysNoticeTypeEnum.values()).getType());
- reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
- return reqVO;
- }
-
- private static SysNoticeCreateReqVO randomSysNoticeCreateReqVO() {
- SysNoticeCreateReqVO reqVO = randomPojo(SysNoticeCreateReqVO.class);
- reqVO.setType(randomEle(SysNoticeTypeEnum.values()).getType());
- reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
- return reqVO;
- }
-
-
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/config/YudaoMybatisAutoConfiguration.java b/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/config/YudaoMybatisAutoConfiguration.java
index d589ac7..9bd5202 100644
--- a/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/config/YudaoMybatisAutoConfiguration.java
+++ b/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/config/YudaoMybatisAutoConfiguration.java
@@ -15,7 +15,8 @@ import org.springframework.context.annotation.Configuration;
* @author 芋道源码
*/
@Configuration
-@MapperScan(value = {"${yudao.info.base-package}", "${yudao.core-service.base-package}", "${yudao.info.member-package}"},
+@MapperScan(value = {"${yudao.info.base-package}", "${yudao.core-service.base-package}",
+ "${yudao.info.member-package}", "${yudao.info.system-package}"},
annotationClass = Mapper.class,
lazyInitialization = "${mybatis.lazy-initialization:false}") // Mapper 懒加载,目前仅用于单元测试
public class YudaoMybatisAutoConfiguration {
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/SqlConstants.java b/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/enums/SqlConstants.java
index a33b1b8..cad1d6c 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/SqlConstants.java
+++ b/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/enums/SqlConstants.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.enums;
+package cn.iocoder.yudao.framework.mybatis.core.enums;
/**
* SQL相关常量类
diff --git a/yudao-module-member/yudao-module-member-impl/pom.xml b/yudao-module-member/yudao-module-member-impl/pom.xml
index ce7ff84..37a4e72 100644
--- a/yudao-module-member/yudao-module-member-impl/pom.xml
+++ b/yudao-module-member/yudao-module-member-impl/pom.xml
@@ -34,10 +34,7 @@
cn.iocoder.boot
yudao-spring-boot-starter-biz-operatelog
-
- cn.iocoder.boot
- yudao-spring-boot-starter-biz-sms
-
+
cn.iocoder.boot
yudao-spring-boot-starter-biz-weixin
diff --git a/yudao-module-system/pom.xml b/yudao-module-system/pom.xml
new file mode 100644
index 0000000..470f1cc
--- /dev/null
+++ b/yudao-module-system/pom.xml
@@ -0,0 +1,24 @@
+
+
+
+ cn.iocoder.boot
+ yudao
+ ${revision}
+
+ 4.0.0
+
+ yudao-module-system-api
+ yudao-module-system-impl
+
+ yudao-module-system
+ pom
+
+ ${artifactId}
+
+ system 模块下,我们放通用业务,支撑上层的核心业务。
+ 例如说:用户、部门、权限、数据字典等等
+
+
+
diff --git a/yudao-module-system/yudao-module-system-api/pom.xml b/yudao-module-system/yudao-module-system-api/pom.xml
new file mode 100644
index 0000000..39a402e
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-api/pom.xml
@@ -0,0 +1,26 @@
+
+
+
+ cn.iocoder.boot
+ yudao-module-system
+ ${revision}
+
+ 4.0.0
+ yudao-module-system-api
+ jar
+
+ ${artifactId}
+
+ system 模块 API,暴露给其它模块调用
+
+
+
+
+ cn.iocoder.boot
+ yudao-common
+
+
+
+
diff --git a/yudao-module-system/yudao-module-system-impl/pom.xml b/yudao-module-system/yudao-module-system-impl/pom.xml
new file mode 100644
index 0000000..6fc4fcf
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/pom.xml
@@ -0,0 +1,106 @@
+
+
+
+ cn.iocoder.boot
+ yudao-module-system
+ ${revision}
+
+ 4.0.0
+ yudao-module-system-impl
+ jar
+
+ ${artifactId}
+
+ system 模块下,我们放通用业务,支撑上层的核心业务。
+ 例如说:用户、部门、权限、数据字典等等
+
+
+
+
+ cn.iocoder.boot
+ yudao-module-system-api
+ ${revision}
+
+
+
+
+ cn.iocoder.boot
+ yudao-core-service
+
+
+
+ cn.iocoder.boot
+ yudao-spring-boot-starter-biz-operatelog
+
+
+ cn.iocoder.boot
+ yudao-spring-boot-starter-biz-sms
+
+
+ cn.iocoder.boot
+ yudao-spring-boot-starter-biz-data-permission
+
+
+
+
+ cn.iocoder.boot
+ yudao-spring-boot-starter-security
+
+
+
+
+ cn.iocoder.boot
+ yudao-spring-boot-starter-mybatis
+
+
+
+ cn.iocoder.boot
+ yudao-spring-boot-starter-redis
+
+
+
+
+ cn.iocoder.boot
+ yudao-spring-boot-starter-mq
+
+
+
+
+ cn.iocoder.boot
+ yudao-spring-boot-starter-test
+ test
+
+
+
+
+ cn.iocoder.boot
+ yudao-spring-boot-starter-excel
+
+
+
+
+
+
+ ${artifactId}
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+ true
+
+
+
+
+ repackage
+
+
+
+
+
+
+
+
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.http b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/SysAuthController.http
index f8e32a5..f8e32a5 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.http
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/SysAuthController.http
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/SysAuthController.java
index fc104fd..52ca73c 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/SysAuthController.java
@@ -1,13 +1,13 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.auth;
+package cn.iocoder.yudao.module.system.controller.auth;
-import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.*;
-import cn.iocoder.yudao.adminserver.modules.system.convert.auth.SysAuthConvert;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO;
+import cn.iocoder.yudao.module.system.controller.auth.vo.auth.*;
+import cn.iocoder.yudao.module.system.convert.auth.SysAuthConvert;
+import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysMenuDO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
-import cn.iocoder.yudao.adminserver.modules.system.enums.permission.MenuTypeEnum;
-import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysAuthService;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService;
+import cn.iocoder.yudao.module.system.enums.permission.MenuTypeEnum;
+import cn.iocoder.yudao.module.system.service.auth.SysAuthService;
+import cn.iocoder.yudao.module.system.service.permission.SysPermissionService;
+import cn.iocoder.yudao.module.system.service.permission.SysRoleService;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService;
import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysUserSessionController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/SysUserSessionController.java
index 116d385..f5a6868 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysUserSessionController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/SysUserSessionController.java
@@ -1,12 +1,10 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.auth;
+package cn.iocoder.yudao.module.system.controller.auth;
-import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageItemRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.convert.auth.SysUserSessionConvert;
+import cn.iocoder.yudao.module.system.controller.auth.vo.session.SysUserSessionPageItemRespVO;
+import cn.iocoder.yudao.module.system.controller.auth.vo.session.SysUserSessionPageReqVO;
+import cn.iocoder.yudao.module.system.convert.auth.SysUserSessionConvert;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
-import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysUserSessionService;
-import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService;
-import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
+import cn.iocoder.yudao.module.system.service.auth.SysUserSessionService;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthLoginReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/vo/auth/SysAuthLoginReqVO.java
index 366144e..2eac3fb 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthLoginReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/vo/auth/SysAuthLoginReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth;
+package cn.iocoder.yudao.module.system.controller.auth.vo.auth;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthLoginRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/vo/auth/SysAuthLoginRespVO.java
index 381c322..7e1bea5 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthLoginRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/vo/auth/SysAuthLoginRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth;
+package cn.iocoder.yudao.module.system.controller.auth.vo.auth;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthMenuRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/vo/auth/SysAuthMenuRespVO.java
index c39354b..762644e 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthMenuRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/vo/auth/SysAuthMenuRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth;
+package cn.iocoder.yudao.module.system.controller.auth.vo.auth;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthPermissionInfoRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/vo/auth/SysAuthPermissionInfoRespVO.java
index c3bd092..e50bb84 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthPermissionInfoRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/vo/auth/SysAuthPermissionInfoRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth;
+package cn.iocoder.yudao.module.system.controller.auth.vo.auth;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialBindReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/vo/auth/SysAuthSocialBindReqVO.java
index e92d3fc..d1a48ee 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialBindReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/vo/auth/SysAuthSocialBindReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth;
+package cn.iocoder.yudao.module.system.controller.auth.vo.auth;
import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum;
import cn.iocoder.yudao.framework.common.validation.InEnum;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialLogin2ReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/vo/auth/SysAuthSocialLogin2ReqVO.java
index 13aaa71..25e0d65 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialLogin2ReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/vo/auth/SysAuthSocialLogin2ReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth;
+package cn.iocoder.yudao.module.system.controller.auth.vo.auth;
import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum;
import cn.iocoder.yudao.framework.common.validation.InEnum;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialLoginReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/vo/auth/SysAuthSocialLoginReqVO.java
index 71d1968..930fea2 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialLoginReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/vo/auth/SysAuthSocialLoginReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth;
+package cn.iocoder.yudao.module.system.controller.auth.vo.auth;
import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum;
import cn.iocoder.yudao.framework.common.validation.InEnum;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialUnbindReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/vo/auth/SysAuthSocialUnbindReqVO.java
index 096164e..7bf6c8e 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialUnbindReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/vo/auth/SysAuthSocialUnbindReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth;
+package cn.iocoder.yudao.module.system.controller.auth.vo.auth;
import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum;
import cn.iocoder.yudao.framework.common.validation.InEnum;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/session/SysUserSessionPageItemRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/vo/session/SysUserSessionPageItemRespVO.java
index c67fa99..debdf59 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/session/SysUserSessionPageItemRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/vo/session/SysUserSessionPageItemRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session;
+package cn.iocoder.yudao.module.system.controller.auth.vo.session;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.annotations.ApiModel;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/session/SysUserSessionPageReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/vo/session/SysUserSessionPageReqVO.java
index fb8f4f2..c834f5d 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/session/SysUserSessionPageReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/auth/vo/session/SysUserSessionPageReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session;
+package cn.iocoder.yudao.module.system.controller.auth.vo.session;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.annotations.ApiModel;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/common/SysCaptchaController.http b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/common/SysCaptchaController.http
index 0b1cf85..0b1cf85 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/common/SysCaptchaController.http
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/common/SysCaptchaController.http
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/common/SysCaptchaController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/common/SysCaptchaController.java
index 94e3c9d..3178950 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/common/SysCaptchaController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/common/SysCaptchaController.java
@@ -1,8 +1,8 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.common;
+package cn.iocoder.yudao.module.system.controller.common;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.adminserver.modules.system.controller.common.vo.SysCaptchaImageRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.service.common.SysCaptchaService;
+import cn.iocoder.yudao.module.system.controller.common.vo.SysCaptchaImageRespVO;
+import cn.iocoder.yudao.module.system.service.common.SysCaptchaService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/common/vo/SysCaptchaImageRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/common/vo/SysCaptchaImageRespVO.java
index b3e9f2c..5c55b16 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/common/vo/SysCaptchaImageRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/common/vo/SysCaptchaImageRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.common.vo;
+package cn.iocoder.yudao.module.system.controller.common.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/SysDeptController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/SysDeptController.java
index 2c38462..70c3655 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/SysDeptController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/SysDeptController.java
@@ -1,12 +1,12 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dept;
+package cn.iocoder.yudao.module.system.controller.dept;
import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.*;
-import cn.iocoder.yudao.adminserver.modules.system.convert.dept.SysDeptConvert;
+import cn.iocoder.yudao.module.system.controller.dept.vo.dept.*;
+import cn.iocoder.yudao.module.system.convert.dept.SysDeptConvert;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
-import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService;
+import cn.iocoder.yudao.module.system.service.dept.SysDeptService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/SysPostController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/SysPostController.java
index fec11cb..762044d 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/SysPostController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/SysPostController.java
@@ -1,14 +1,14 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dept;
+package cn.iocoder.yudao.module.system.controller.dept;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.*;
-import cn.iocoder.yudao.adminserver.modules.system.convert.dept.SysPostConvert;
+import cn.iocoder.yudao.module.system.controller.dept.vo.post.*;
+import cn.iocoder.yudao.module.system.convert.dept.SysPostConvert;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
-import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService;
+import cn.iocoder.yudao.module.system.service.dept.SysPostService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptBaseVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/dept/SysDeptBaseVO.java
index 8296a89..5e0bc14 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptBaseVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/dept/SysDeptBaseVO.java
@@ -1,7 +1,5 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept;
+package cn.iocoder.yudao.module.system.controller.dept.vo.dept;
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.common.validation.InEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptCreateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/dept/SysDeptCreateReqVO.java
index c5c5aac..4909ef8 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptCreateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/dept/SysDeptCreateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept;
+package cn.iocoder.yudao.module.system.controller.dept.vo.dept;
import io.swagger.annotations.ApiModel;
import lombok.Data;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptListReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/dept/SysDeptListReqVO.java
index b47bc53..840fb04 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptListReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/dept/SysDeptListReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept;
+package cn.iocoder.yudao.module.system.controller.dept.vo.dept;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/dept/SysDeptRespVO.java
index 325cce6..edcc455 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/dept/SysDeptRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept;
+package cn.iocoder.yudao.module.system.controller.dept.vo.dept;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptSimpleRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/dept/SysDeptSimpleRespVO.java
index bf9c8bd..b9500ea 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptSimpleRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/dept/SysDeptSimpleRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept;
+package cn.iocoder.yudao.module.system.controller.dept.vo.dept;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptUpdateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/dept/SysDeptUpdateReqVO.java
index 5838d1d..c4cd016 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptUpdateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/dept/SysDeptUpdateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept;
+package cn.iocoder.yudao.module.system.controller.dept.vo.dept;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostBaseVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/post/SysPostBaseVO.java
index c6ed5c8..e30eede 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostBaseVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/post/SysPostBaseVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post;
+package cn.iocoder.yudao.module.system.controller.dept.vo.post;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostCreateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/post/SysPostCreateReqVO.java
index 72be88d..9570ad0 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostCreateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/post/SysPostCreateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post;
+package cn.iocoder.yudao.module.system.controller.dept.vo.post;
import io.swagger.annotations.ApiModel;
import lombok.Data;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostExcelVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/post/SysPostExcelVO.java
index 3286bd6..32042a4 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostExcelVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/post/SysPostExcelVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post;
+package cn.iocoder.yudao.module.system.controller.dept.vo.post;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostExportReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/post/SysPostExportReqVO.java
index 4656392..9b8cd5e 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostExportReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/post/SysPostExportReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post;
+package cn.iocoder.yudao.module.system.controller.dept.vo.post;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostListReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/post/SysPostListReqVO.java
index 0e700a9..a05bed0 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostListReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/post/SysPostListReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post;
+package cn.iocoder.yudao.module.system.controller.dept.vo.post;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostPageReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/post/SysPostPageReqVO.java
index 432e160..49b05c2 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostPageReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/post/SysPostPageReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post;
+package cn.iocoder.yudao.module.system.controller.dept.vo.post;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.annotations.ApiModel;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/post/SysPostRespVO.java
index cfd42a2..fd95be4 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/post/SysPostRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post;
+package cn.iocoder.yudao.module.system.controller.dept.vo.post;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostSimpleRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/post/SysPostSimpleRespVO.java
index 244667f..fdc6636 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostSimpleRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/post/SysPostSimpleRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post;
+package cn.iocoder.yudao.module.system.controller.dept.vo.post;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostUpdateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/post/SysPostUpdateReqVO.java
index cc95c9c..0868c6a 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostUpdateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dept/vo/post/SysPostUpdateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post;
+package cn.iocoder.yudao.module.system.controller.dept.vo.post;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/SysDictDataController.http b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/SysDictDataController.http
index f7890dc..f7890dc 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/SysDictDataController.http
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/SysDictDataController.http
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/SysDictDataController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/SysDictDataController.java
index 5db6ccf..d82f5cf 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/SysDictDataController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/SysDictDataController.java
@@ -1,13 +1,13 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dict;
+package cn.iocoder.yudao.module.system.controller.dict;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.*;
-import cn.iocoder.yudao.adminserver.modules.system.convert.dict.SysDictDataConvert;
-import cn.iocoder.yudao.adminserver.modules.system.service.dict.SysDictDataService;
+import cn.iocoder.yudao.module.system.controller.dict.vo.data.*;
+import cn.iocoder.yudao.module.system.convert.dict.SysDictDataConvert;
+import cn.iocoder.yudao.module.system.service.dict.SysDictDataService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/SysDictTypeController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/SysDictTypeController.java
index 4057f8a..63a4b08 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/SysDictTypeController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/SysDictTypeController.java
@@ -1,13 +1,13 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dict;
+package cn.iocoder.yudao.module.system.controller.dict;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.*;
-import cn.iocoder.yudao.adminserver.modules.system.convert.dict.SysDictTypeConvert;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictTypeDO;
-import cn.iocoder.yudao.adminserver.modules.system.service.dict.SysDictTypeService;
+import cn.iocoder.yudao.module.system.controller.dict.vo.type.*;
+import cn.iocoder.yudao.module.system.convert.dict.SysDictTypeConvert;
+import cn.iocoder.yudao.module.system.dal.dataobject.dict.SysDictTypeDO;
+import cn.iocoder.yudao.module.system.service.dict.SysDictTypeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataBaseVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/data/SysDictDataBaseVO.java
index adb4bb2..c67ceb0 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataBaseVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/data/SysDictDataBaseVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data;
+package cn.iocoder.yudao.module.system.controller.dict.vo.data;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataCreateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/data/SysDictDataCreateReqVO.java
index 5c96499..c2688b3 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataCreateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/data/SysDictDataCreateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data;
+package cn.iocoder.yudao.module.system.controller.dict.vo.data;
import io.swagger.annotations.ApiModel;
import lombok.Data;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataExcelVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/data/SysDictDataExcelVO.java
index 589735a..19cd76b 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataExcelVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/data/SysDictDataExcelVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data;
+package cn.iocoder.yudao.module.system.controller.dict.vo.data;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataExportReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/data/SysDictDataExportReqVO.java
index 43e8884..074e02c 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataExportReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/data/SysDictDataExportReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data;
+package cn.iocoder.yudao.module.system.controller.dict.vo.data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataPageReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/data/SysDictDataPageReqVO.java
index 0cd2a48..97d6d8f 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataPageReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/data/SysDictDataPageReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data;
+package cn.iocoder.yudao.module.system.controller.dict.vo.data;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.annotations.ApiModel;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/data/SysDictDataRespVO.java
index fa6f77f..e4281ca 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/data/SysDictDataRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data;
+package cn.iocoder.yudao.module.system.controller.dict.vo.data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataSimpleRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/data/SysDictDataSimpleRespVO.java
index e4a09e6..2da4779 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataSimpleRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/data/SysDictDataSimpleRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data;
+package cn.iocoder.yudao.module.system.controller.dict.vo.data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataUpdateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/data/SysDictDataUpdateReqVO.java
index ccbd455..428aa65 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataUpdateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/data/SysDictDataUpdateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data;
+package cn.iocoder.yudao.module.system.controller.dict.vo.data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeBaseVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/type/SysDictTypeBaseVO.java
index c4458cd..d9e2dfe 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeBaseVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/type/SysDictTypeBaseVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type;
+package cn.iocoder.yudao.module.system.controller.dict.vo.type;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeCreateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/type/SysDictTypeCreateReqVO.java
index 6f84ecf..ea5b046 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeCreateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/type/SysDictTypeCreateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type;
+package cn.iocoder.yudao.module.system.controller.dict.vo.type;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeExcelVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/type/SysDictTypeExcelVO.java
index 1fac9c0..25c07e6 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeExcelVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/type/SysDictTypeExcelVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type;
+package cn.iocoder.yudao.module.system.controller.dict.vo.type;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeExportReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/type/SysDictTypeExportReqVO.java
index cfe54e5..440cef8 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeExportReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/type/SysDictTypeExportReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type;
+package cn.iocoder.yudao.module.system.controller.dict.vo.type;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypePageReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/type/SysDictTypePageReqVO.java
index 434ca27..8cd2c9b 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypePageReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/type/SysDictTypePageReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type;
+package cn.iocoder.yudao.module.system.controller.dict.vo.type;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.annotations.ApiModel;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/type/SysDictTypeRespVO.java
index fd216bc..b82e16e 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/type/SysDictTypeRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type;
+package cn.iocoder.yudao.module.system.controller.dict.vo.type;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeSimpleRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/type/SysDictTypeSimpleRespVO.java
index 7d0ef04..c53154f 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeSimpleRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/type/SysDictTypeSimpleRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type;
+package cn.iocoder.yudao.module.system.controller.dict.vo.type;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeUpdateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/type/SysDictTypeUpdateReqVO.java
index 9b887bd..ed812da 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeUpdateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/dict/vo/type/SysDictTypeUpdateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type;
+package cn.iocoder.yudao.module.system.controller.dict.vo.type;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/SysErrorCodeController.http b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/errorcode/SysErrorCodeController.http
index 76226d1..76226d1 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/SysErrorCodeController.http
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/errorcode/SysErrorCodeController.http
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/SysErrorCodeController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/errorcode/SysErrorCodeController.java
index f7dd4a4..220789d 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/SysErrorCodeController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/errorcode/SysErrorCodeController.java
@@ -1,13 +1,13 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.errorcode;
+package cn.iocoder.yudao.module.system.controller.errorcode;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
-import cn.iocoder.yudao.adminserver.modules.system.convert.errorcode.SysErrorCodeConvert;
-import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.*;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.errorcode.SysErrorCodeDO;
-import cn.iocoder.yudao.adminserver.modules.system.service.errorcode.SysErrorCodeService;
+import cn.iocoder.yudao.module.system.convert.errorcode.SysErrorCodeConvert;
+import cn.iocoder.yudao.module.system.controller.errorcode.vo.*;
+import cn.iocoder.yudao.module.system.dal.dataobject.errorcode.SysErrorCodeDO;
+import cn.iocoder.yudao.module.system.service.errorcode.SysErrorCodeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeBaseVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/errorcode/vo/SysErrorCodeBaseVO.java
index 118c38b..f5d1e8d 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeBaseVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/errorcode/vo/SysErrorCodeBaseVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo;
+package cn.iocoder.yudao.module.system.controller.errorcode.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeCreateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/errorcode/vo/SysErrorCodeCreateReqVO.java
index 15190ab..3eb9b14 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeCreateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/errorcode/vo/SysErrorCodeCreateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo;
+package cn.iocoder.yudao.module.system.controller.errorcode.vo;
import io.swagger.annotations.ApiModel;
import lombok.Data;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeExcelVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/errorcode/vo/SysErrorCodeExcelVO.java
index 8e20b6e..5efbf36 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeExcelVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/errorcode/vo/SysErrorCodeExcelVO.java
@@ -1,8 +1,8 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo;
+package cn.iocoder.yudao.module.system.controller.errorcode.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
-import cn.iocoder.yudao.adminserver.modules.infra.enums.InfDictTypeConstants;
+//import cn.iocoder.yudao.adminserver.modules.infra.enums.InfDictTypeConstants;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@@ -20,7 +20,7 @@ public class SysErrorCodeExcelVO {
private Long id;
@ExcelProperty(value = "错误码类型", converter = DictConvert.class)
- @DictFormat(InfDictTypeConstants.ERROR_CODE_TYPE)
+ @DictFormat("inf_error_code_type") // TODO 芋艿:得思考下杂解决枚举值
private Integer type;
@ExcelProperty("应用名")
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeExportReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/errorcode/vo/SysErrorCodeExportReqVO.java
index 6047679..8a46b99 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeExportReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/errorcode/vo/SysErrorCodeExportReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo;
+package cn.iocoder.yudao.module.system.controller.errorcode.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodePageReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/errorcode/vo/SysErrorCodePageReqVO.java
index baf781a..6273ea1 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodePageReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/errorcode/vo/SysErrorCodePageReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo;
+package cn.iocoder.yudao.module.system.controller.errorcode.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.annotations.ApiModel;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/errorcode/vo/SysErrorCodeRespVO.java
index 69798f3..35e4f93 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/errorcode/vo/SysErrorCodeRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo;
+package cn.iocoder.yudao.module.system.controller.errorcode.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeUpdateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/errorcode/vo/SysErrorCodeUpdateReqVO.java
index 11f124a..0d6b950 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeUpdateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/errorcode/vo/SysErrorCodeUpdateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo;
+package cn.iocoder.yudao.module.system.controller.errorcode.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/SysLoginLogController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/SysLoginLogController.java
index 24260c4..29addeb 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/SysLoginLogController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/SysLoginLogController.java
@@ -1,16 +1,16 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.logger;
+package cn.iocoder.yudao.module.system.controller.logger;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExcelVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.convert.logger.SysLoginLogConvert;
-import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysLoginLogService;
+import cn.iocoder.yudao.module.system.controller.logger.vo.loginlog.SysLoginLogExcelVO;
+import cn.iocoder.yudao.module.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO;
+import cn.iocoder.yudao.module.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO;
+import cn.iocoder.yudao.module.system.controller.logger.vo.loginlog.SysLoginLogRespVO;
+import cn.iocoder.yudao.module.system.convert.logger.SysLoginLogConvert;
+import cn.iocoder.yudao.module.system.service.logger.SysLoginLogService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/SysOperateLogController.http b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/SysOperateLogController.http
index 3b88719..3b88719 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/SysOperateLogController.http
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/SysOperateLogController.http
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/SysOperateLogController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/SysOperateLogController.java
index 968ab49..f572ed5 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/SysOperateLogController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/SysOperateLogController.java
@@ -1,13 +1,12 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.logger;
+package cn.iocoder.yudao.module.system.controller.logger;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogExcelVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.convert.logger.SysOperateLogConvert;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysOperateLogDO;
-import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysOperateLogService;
-import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
+import cn.iocoder.yudao.module.system.controller.logger.vo.operatelog.SysOperateLogExcelVO;
+import cn.iocoder.yudao.module.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO;
+import cn.iocoder.yudao.module.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO;
+import cn.iocoder.yudao.module.system.controller.logger.vo.operatelog.SysOperateLogRespVO;
+import cn.iocoder.yudao.module.system.convert.logger.SysOperateLogConvert;
+import cn.iocoder.yudao.module.system.dal.dataobject.logger.SysOperateLogDO;
+import cn.iocoder.yudao.module.system.service.logger.SysOperateLogService;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogBaseVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/vo/loginlog/SysLoginLogBaseVO.java
index a346d94..6b26057 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogBaseVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/vo/loginlog/SysLoginLogBaseVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog;
+package cn.iocoder.yudao.module.system.controller.logger.vo.loginlog;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogExcelVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/vo/loginlog/SysLoginLogExcelVO.java
index 8c2693b..bda160a 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogExcelVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/vo/loginlog/SysLoginLogExcelVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog;
+package cn.iocoder.yudao.module.system.controller.logger.vo.loginlog;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogExportReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/vo/loginlog/SysLoginLogExportReqVO.java
index a85f926..8f93626 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogExportReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/vo/loginlog/SysLoginLogExportReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog;
+package cn.iocoder.yudao.module.system.controller.logger.vo.loginlog;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogPageReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/vo/loginlog/SysLoginLogPageReqVO.java
index 5207909..7c71730 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogPageReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/vo/loginlog/SysLoginLogPageReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog;
+package cn.iocoder.yudao.module.system.controller.logger.vo.loginlog;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.annotations.ApiModel;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/vo/loginlog/SysLoginLogRespVO.java
index 65aa649..3f58830 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/vo/loginlog/SysLoginLogRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog;
+package cn.iocoder.yudao.module.system.controller.logger.vo.loginlog;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/operatelog/SysOperateLogBaseVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/vo/operatelog/SysOperateLogBaseVO.java
index d29a96c..735e0b1 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/operatelog/SysOperateLogBaseVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/vo/operatelog/SysOperateLogBaseVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog;
+package cn.iocoder.yudao.module.system.controller.logger.vo.operatelog;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/operatelog/SysOperateLogExcelVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/vo/operatelog/SysOperateLogExcelVO.java
index 5233ef9..e5fc3e9 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/operatelog/SysOperateLogExcelVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/vo/operatelog/SysOperateLogExcelVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog;
+package cn.iocoder.yudao.module.system.controller.logger.vo.operatelog;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/operatelog/SysOperateLogExportReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/vo/operatelog/SysOperateLogExportReqVO.java
index 2c500e1..1c501ac 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/operatelog/SysOperateLogExportReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/vo/operatelog/SysOperateLogExportReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog;
+package cn.iocoder.yudao.module.system.controller.logger.vo.operatelog;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/operatelog/SysOperateLogPageReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/vo/operatelog/SysOperateLogPageReqVO.java
index 2a0378a..92efe97 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/operatelog/SysOperateLogPageReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/vo/operatelog/SysOperateLogPageReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog;
+package cn.iocoder.yudao.module.system.controller.logger.vo.operatelog;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.annotations.ApiModel;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/operatelog/SysOperateLogRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/vo/operatelog/SysOperateLogRespVO.java
index 1ac82a9..fc825d6 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/operatelog/SysOperateLogRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/logger/vo/operatelog/SysOperateLogRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog;
+package cn.iocoder.yudao.module.system.controller.logger.vo.operatelog;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/SysNoticeController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/notice/SysNoticeController.java
index 5ab1944..7cb255e 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/SysNoticeController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/notice/SysNoticeController.java
@@ -1,13 +1,13 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.notice;
+package cn.iocoder.yudao.module.system.controller.notice;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.convert.notice.SysNoticeConvert;
-import cn.iocoder.yudao.adminserver.modules.system.service.notice.SysNoticeService;
+import cn.iocoder.yudao.module.system.controller.notice.vo.SysNoticeCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.notice.vo.SysNoticePageReqVO;
+import cn.iocoder.yudao.module.system.controller.notice.vo.SysNoticeRespVO;
+import cn.iocoder.yudao.module.system.controller.notice.vo.SysNoticeUpdateReqVO;
+import cn.iocoder.yudao.module.system.convert.notice.SysNoticeConvert;
+import cn.iocoder.yudao.module.system.service.notice.SysNoticeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/vo/SysNoticeBaseVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/notice/vo/SysNoticeBaseVO.java
index 9bd228e..ddbb141 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/vo/SysNoticeBaseVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/notice/vo/SysNoticeBaseVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo;
+package cn.iocoder.yudao.module.system.controller.notice.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/vo/SysNoticeCreateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/notice/vo/SysNoticeCreateReqVO.java
index cf86f21..1669618 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/vo/SysNoticeCreateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/notice/vo/SysNoticeCreateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo;
+package cn.iocoder.yudao.module.system.controller.notice.vo;
import io.swagger.annotations.ApiModel;
import lombok.Data;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/vo/SysNoticePageReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/notice/vo/SysNoticePageReqVO.java
index b347ab9..6e1932a 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/vo/SysNoticePageReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/notice/vo/SysNoticePageReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo;
+package cn.iocoder.yudao.module.system.controller.notice.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.annotations.ApiModel;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/vo/SysNoticeRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/notice/vo/SysNoticeRespVO.java
index 8145e85..0cfb78b 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/vo/SysNoticeRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/notice/vo/SysNoticeRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo;
+package cn.iocoder.yudao.module.system.controller.notice.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/vo/SysNoticeUpdateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/notice/vo/SysNoticeUpdateReqVO.java
index 2c02d5a..3d6fdd5 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/vo/SysNoticeUpdateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/notice/vo/SysNoticeUpdateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo;
+package cn.iocoder.yudao.module.system.controller.notice.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/SysMenuController.http b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/SysMenuController.http
index c073f7b..c073f7b 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/SysMenuController.http
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/SysMenuController.http
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/SysMenuController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/SysMenuController.java
index ddf388d..340b3bf 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/SysMenuController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/SysMenuController.java
@@ -1,11 +1,11 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.permission;
+package cn.iocoder.yudao.module.system.controller.permission;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.*;
-import cn.iocoder.yudao.adminserver.modules.system.convert.permission.SysMenuConvert;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysMenuService;
+import cn.iocoder.yudao.module.system.controller.permission.vo.menu.*;
+import cn.iocoder.yudao.module.system.convert.permission.SysMenuConvert;
+import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysMenuDO;
+import cn.iocoder.yudao.module.system.service.permission.SysMenuService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/SysPermissionController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/SysPermissionController.java
index cbd1197..500f4ac 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/SysPermissionController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/SysPermissionController.java
@@ -1,10 +1,10 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.permission;
+package cn.iocoder.yudao.module.system.controller.permission;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.permission.SysPermissionAssignRoleDataScopeReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.permission.SysPermissionAssignRoleMenuReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.permission.SysPermissionAssignUserRoleReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService;
+import cn.iocoder.yudao.module.system.controller.permission.vo.permission.SysPermissionAssignRoleDataScopeReqVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.permission.SysPermissionAssignRoleMenuReqVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.permission.SysPermissionAssignUserRoleReqVO;
+import cn.iocoder.yudao.module.system.service.permission.SysPermissionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/SysRoleController.http b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/SysRoleController.http
index 4e150ac..4e150ac 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/SysRoleController.http
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/SysRoleController.http
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/SysRoleController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/SysRoleController.java
index 2dc6f34..7ec11bd 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/SysRoleController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/SysRoleController.java
@@ -1,14 +1,14 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.permission;
+package cn.iocoder.yudao.module.system.controller.permission;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.*;
-import cn.iocoder.yudao.adminserver.modules.system.convert.permission.SysRoleConvert;
+import cn.iocoder.yudao.module.system.controller.permission.vo.role.*;
+import cn.iocoder.yudao.module.system.convert.permission.SysRoleConvert;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService;
+import cn.iocoder.yudao.module.system.service.permission.SysRoleService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuBaseVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/menu/SysMenuBaseVO.java
index 66b62d0..87f2eb7 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuBaseVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/menu/SysMenuBaseVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu;
+package cn.iocoder.yudao.module.system.controller.permission.vo.menu;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuCreateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/menu/SysMenuCreateReqVO.java
index e50c73f..2c0357f 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuCreateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/menu/SysMenuCreateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu;
+package cn.iocoder.yudao.module.system.controller.permission.vo.menu;
import io.swagger.annotations.ApiModel;
import lombok.*;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuListReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/menu/SysMenuListReqVO.java
index 5600a13..e0b8a2d 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuListReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/menu/SysMenuListReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu;
+package cn.iocoder.yudao.module.system.controller.permission.vo.menu;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/menu/SysMenuRespVO.java
index 6175a8c..ed8512a 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/menu/SysMenuRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu;
+package cn.iocoder.yudao.module.system.controller.permission.vo.menu;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuSimpleRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/menu/SysMenuSimpleRespVO.java
index 689d705..dc160cb 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuSimpleRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/menu/SysMenuSimpleRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu;
+package cn.iocoder.yudao.module.system.controller.permission.vo.menu;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuUpdateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/menu/SysMenuUpdateReqVO.java
index 736d580..bf44bf9 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuUpdateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/menu/SysMenuUpdateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu;
+package cn.iocoder.yudao.module.system.controller.permission.vo.menu;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/permission/SysPermissionAssignRoleDataScopeReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/permission/SysPermissionAssignRoleDataScopeReqVO.java
index 8050e81..08feaae 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/permission/SysPermissionAssignRoleDataScopeReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/permission/SysPermissionAssignRoleDataScopeReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.permission;
+package cn.iocoder.yudao.module.system.controller.permission.vo.permission;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/permission/SysPermissionAssignRoleMenuReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/permission/SysPermissionAssignRoleMenuReqVO.java
index 47ffae9..664d6d8 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/permission/SysPermissionAssignRoleMenuReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/permission/SysPermissionAssignRoleMenuReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.permission;
+package cn.iocoder.yudao.module.system.controller.permission.vo.permission;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/permission/SysPermissionAssignUserRoleReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/permission/SysPermissionAssignUserRoleReqVO.java
index 1a3e034..fdbbedc 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/permission/SysPermissionAssignUserRoleReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/permission/SysPermissionAssignUserRoleReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.permission;
+package cn.iocoder.yudao.module.system.controller.permission.vo.permission;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleBaseVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/role/SysRoleBaseVO.java
index a07e20c..a2553fc 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleBaseVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/role/SysRoleBaseVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role;
+package cn.iocoder.yudao.module.system.controller.permission.vo.role;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleCreateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/role/SysRoleCreateReqVO.java
index f16c3ad..a182b26 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleCreateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/role/SysRoleCreateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role;
+package cn.iocoder.yudao.module.system.controller.permission.vo.role;
import io.swagger.annotations.ApiModel;
import lombok.Data;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleExcelVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/role/SysRoleExcelVO.java
index 01b7583..08a3781 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleExcelVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/role/SysRoleExcelVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role;
+package cn.iocoder.yudao.module.system.controller.permission.vo.role;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleExportReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/role/SysRoleExportReqVO.java
index 656f136..bc09708 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleExportReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/role/SysRoleExportReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role;
+package cn.iocoder.yudao.module.system.controller.permission.vo.role;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRolePageReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/role/SysRolePageReqVO.java
index 6983176..c6e7665 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRolePageReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/role/SysRolePageReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role;
+package cn.iocoder.yudao.module.system.controller.permission.vo.role;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.annotations.ApiModel;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/role/SysRoleRespVO.java
index f3a565d..ef11d82 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/role/SysRoleRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role;
+package cn.iocoder.yudao.module.system.controller.permission.vo.role;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleSimpleRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/role/SysRoleSimpleRespVO.java
index c1b973f..a2706f4 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleSimpleRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/role/SysRoleSimpleRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role;
+package cn.iocoder.yudao.module.system.controller.permission.vo.role;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleUpdateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/role/SysRoleUpdateReqVO.java
index dcf994f..c6f56f6 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleUpdateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/role/SysRoleUpdateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role;
+package cn.iocoder.yudao.module.system.controller.permission.vo.role;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleUpdateStatusReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/role/SysRoleUpdateStatusReqVO.java
index 1741881..ba86153 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleUpdateStatusReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/permission/vo/role/SysRoleUpdateStatusReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role;
+package cn.iocoder.yudao.module.system.controller.permission.vo.role;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SmsCallbackController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/SmsCallbackController.java
index 322b99d..0968a1d 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SmsCallbackController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/SmsCallbackController.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms;
+package cn.iocoder.yudao.module.system.controller.sms;
import cn.hutool.core.util.URLUtil;
import cn.hutool.extra.servlet.ServletUtil;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsChannelController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/SysSmsChannelController.java
index 3fbb47e..70c7d70 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsChannelController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/SysSmsChannelController.java
@@ -1,8 +1,8 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms;
+package cn.iocoder.yudao.module.system.controller.sms;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.*;
-import cn.iocoder.yudao.adminserver.modules.system.convert.sms.SysSmsChannelConvert;
-import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsChannelService;
+import cn.iocoder.yudao.module.system.controller.sms.vo.channel.*;
+import cn.iocoder.yudao.module.system.convert.sms.SysSmsChannelConvert;
+import cn.iocoder.yudao.module.system.service.sms.SysSmsChannelService;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsLogController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/SysSmsLogController.java
index aa1eec9..ee69dee 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsLogController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/SysSmsLogController.java
@@ -1,11 +1,11 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms;
-
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogExcelVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.convert.sms.SysSmsLogConvert;
-import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsLogService;
+package cn.iocoder.yudao.module.system.controller.sms;
+
+import cn.iocoder.yudao.module.system.controller.sms.vo.log.SysSmsLogExcelVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.log.SysSmsLogExportReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.log.SysSmsLogPageReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.log.SysSmsLogRespVO;
+import cn.iocoder.yudao.module.system.convert.sms.SysSmsLogConvert;
+import cn.iocoder.yudao.module.system.service.sms.SysSmsLogService;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsTemplateController.http b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/SysSmsTemplateController.http
index d5441d0..d5441d0 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsTemplateController.http
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/SysSmsTemplateController.http
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsTemplateController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/SysSmsTemplateController.java
index 5b9d8bc..9328680 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsTemplateController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/SysSmsTemplateController.java
@@ -1,8 +1,8 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms;
+package cn.iocoder.yudao.module.system.controller.sms;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.*;
-import cn.iocoder.yudao.adminserver.modules.system.convert.sms.SysSmsTemplateConvert;
-import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsTemplateService;
+import cn.iocoder.yudao.module.system.controller.sms.vo.template.*;
+import cn.iocoder.yudao.module.system.convert.sms.SysSmsTemplateConvert;
+import cn.iocoder.yudao.module.system.service.sms.SysSmsTemplateService;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsCoreService;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelBaseVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/channel/SysSmsChannelBaseVO.java
index fd475bd..04b1f69 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelBaseVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/channel/SysSmsChannelBaseVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel;
+package cn.iocoder.yudao.module.system.controller.sms.vo.channel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelCreateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/channel/SysSmsChannelCreateReqVO.java
index e9466a7..fdf3e98 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelCreateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/channel/SysSmsChannelCreateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel;
+package cn.iocoder.yudao.module.system.controller.sms.vo.channel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelPageReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/channel/SysSmsChannelPageReqVO.java
index e30bc3d..d7d90ec 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelPageReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/channel/SysSmsChannelPageReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel;
+package cn.iocoder.yudao.module.system.controller.sms.vo.channel;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.annotations.ApiModel;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/channel/SysSmsChannelRespVO.java
index 8e7d111..02654a0 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/channel/SysSmsChannelRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel;
+package cn.iocoder.yudao.module.system.controller.sms.vo.channel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelSimpleRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/channel/SysSmsChannelSimpleRespVO.java
index 451a943..1cf341f 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelSimpleRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/channel/SysSmsChannelSimpleRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel;
+package cn.iocoder.yudao.module.system.controller.sms.vo.channel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelUpdateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/channel/SysSmsChannelUpdateReqVO.java
index 816e5c2..72ffb28 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelUpdateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/channel/SysSmsChannelUpdateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel;
+package cn.iocoder.yudao.module.system.controller.sms.vo.channel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/log/SysSmsLogExcelVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/log/SysSmsLogExcelVO.java
index 69cb396..1bdc830 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/log/SysSmsLogExcelVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/log/SysSmsLogExcelVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log;
+package cn.iocoder.yudao.module.system.controller.sms.vo.log;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/log/SysSmsLogExportReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/log/SysSmsLogExportReqVO.java
index 94be2d8..3cfd6ca 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/log/SysSmsLogExportReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/log/SysSmsLogExportReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log;
+package cn.iocoder.yudao.module.system.controller.sms.vo.log;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/log/SysSmsLogPageReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/log/SysSmsLogPageReqVO.java
index 1ea8a1f..94bcc9a 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/log/SysSmsLogPageReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/log/SysSmsLogPageReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log;
+package cn.iocoder.yudao.module.system.controller.sms.vo.log;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.annotations.ApiModel;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/log/SysSmsLogRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/log/SysSmsLogRespVO.java
index 10ff01a..f2a07a0 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/log/SysSmsLogRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/log/SysSmsLogRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log;
+package cn.iocoder.yudao.module.system.controller.sms.vo.log;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateBaseVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/template/SysSmsTemplateBaseVO.java
index cc58787..622316c 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateBaseVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/template/SysSmsTemplateBaseVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template;
+package cn.iocoder.yudao.module.system.controller.sms.vo.template;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateCreateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/template/SysSmsTemplateCreateReqVO.java
index 6d59315..f048186 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateCreateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/template/SysSmsTemplateCreateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template;
+package cn.iocoder.yudao.module.system.controller.sms.vo.template;
import io.swagger.annotations.ApiModel;
import lombok.Data;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateExcelVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/template/SysSmsTemplateExcelVO.java
index d227cab..d3151e6 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateExcelVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/template/SysSmsTemplateExcelVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template;
+package cn.iocoder.yudao.module.system.controller.sms.vo.template;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateExportReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/template/SysSmsTemplateExportReqVO.java
index 66efb4d..930fff5 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateExportReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/template/SysSmsTemplateExportReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template;
+package cn.iocoder.yudao.module.system.controller.sms.vo.template;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplatePageReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/template/SysSmsTemplatePageReqVO.java
index fc8bd80..e0d711a 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplatePageReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/template/SysSmsTemplatePageReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template;
+package cn.iocoder.yudao.module.system.controller.sms.vo.template;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.annotations.ApiModel;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/template/SysSmsTemplateRespVO.java
index c26d380..24fae0c 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/template/SysSmsTemplateRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template;
+package cn.iocoder.yudao.module.system.controller.sms.vo.template;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateSendReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/template/SysSmsTemplateSendReqVO.java
index 34a773e..0b420c1 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateSendReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/template/SysSmsTemplateSendReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template;
+package cn.iocoder.yudao.module.system.controller.sms.vo.template;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateUpdateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/template/SysSmsTemplateUpdateReqVO.java
index 223aa0c..c12a826 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateUpdateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/sms/vo/template/SysSmsTemplateUpdateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template;
+package cn.iocoder.yudao.module.system.controller.sms.vo.template;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/tenant/SysTenantController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/tenant/SysTenantController.java
index 54db21e..c4a8ca1 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/tenant/SysTenantController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/tenant/SysTenantController.java
@@ -1,8 +1,8 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.tenant;
+package cn.iocoder.yudao.module.system.controller.tenant;
-import cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo.*;
-import cn.iocoder.yudao.adminserver.modules.system.convert.tenant.SysTenantConvert;
-import cn.iocoder.yudao.adminserver.modules.system.service.tenant.SysTenantService;
+import cn.iocoder.yudao.module.system.controller.tenant.vo.*;
+import cn.iocoder.yudao.module.system.convert.tenant.SysTenantConvert;
+import cn.iocoder.yudao.module.system.service.tenant.SysTenantService;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.tenant.SysTenantDO;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/tenant/vo/SysTenantBaseVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/tenant/vo/SysTenantBaseVO.java
index 1251112..593b9ac 100755
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/tenant/vo/SysTenantBaseVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/tenant/vo/SysTenantBaseVO.java
@@ -1,7 +1,6 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo;
+package cn.iocoder.yudao.module.system.controller.tenant.vo;
import lombok.*;
-import java.util.*;
import io.swagger.annotations.*;
import javax.validation.constraints.*;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/tenant/vo/SysTenantCreateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/tenant/vo/SysTenantCreateReqVO.java
index 4b90bc5..4d41fdf 100755
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/tenant/vo/SysTenantCreateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/tenant/vo/SysTenantCreateReqVO.java
@@ -1,9 +1,7 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo;
+package cn.iocoder.yudao.module.system.controller.tenant.vo;
import lombok.*;
-import java.util.*;
import io.swagger.annotations.*;
-import javax.validation.constraints.*;
@ApiModel("租户创建 Request VO")
@Data
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/tenant/vo/SysTenantExcelVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/tenant/vo/SysTenantExcelVO.java
index e98c8e6..8244486 100755
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/tenant/vo/SysTenantExcelVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/tenant/vo/SysTenantExcelVO.java
@@ -1,8 +1,7 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo;
+package cn.iocoder.yudao.module.system.controller.tenant.vo;
import lombok.*;
import java.util.*;
-import io.swagger.annotations.*;
import com.alibaba.excel.annotation.ExcelProperty;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/tenant/vo/SysTenantExportReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/tenant/vo/SysTenantExportReqVO.java
index e71e21d..e70de00 100755
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/tenant/vo/SysTenantExportReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/tenant/vo/SysTenantExportReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo;
+package cn.iocoder.yudao.module.system.controller.tenant.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/tenant/vo/SysTenantPageReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/tenant/vo/SysTenantPageReqVO.java
index b2f5227..b665ea3 100755
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/tenant/vo/SysTenantPageReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/tenant/vo/SysTenantPageReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo;
+package cn.iocoder.yudao.module.system.controller.tenant.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.annotations.ApiModel;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/tenant/vo/SysTenantRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/tenant/vo/SysTenantRespVO.java
index ab12ae5..563b509 100755
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/tenant/vo/SysTenantRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/tenant/vo/SysTenantRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo;
+package cn.iocoder.yudao.module.system.controller.tenant.vo;
import lombok.*;
import java.util.*;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/tenant/vo/SysTenantUpdateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/tenant/vo/SysTenantUpdateReqVO.java
index 0ae05af..c24edc5 100755
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/tenant/vo/SysTenantUpdateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/tenant/vo/SysTenantUpdateReqVO.java
@@ -1,7 +1,6 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo;
+package cn.iocoder.yudao.module.system.controller.tenant.vo;
import lombok.*;
-import java.util.*;
import io.swagger.annotations.*;
import javax.validation.constraints.*;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserController.http b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/SysUserController.http
index ce138af..ce138af 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserController.http
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/SysUserController.http
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/SysUserController.java
index ad0f328..9e03727 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/SysUserController.java
@@ -1,10 +1,10 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.user;
+package cn.iocoder.yudao.module.system.controller.user;
import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.*;
-import cn.iocoder.yudao.adminserver.modules.system.convert.user.SysUserConvert;
+import cn.iocoder.yudao.module.system.controller.user.vo.user.*;
+import cn.iocoder.yudao.module.system.convert.user.SysUserConvert;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
-import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
+import cn.iocoder.yudao.module.system.service.user.SysUserService;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
import cn.iocoder.yudao.coreservice.modules.system.enums.common.SysSexEnum;
import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserProfileController.http b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/SysUserProfileController.http
index c0a8177..c0a8177 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserProfileController.http
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/SysUserProfileController.http
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserProfileController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/SysUserProfileController.java
index 2dea78c..8a38f87 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserProfileController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/SysUserProfileController.java
@@ -1,14 +1,14 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.user;
+package cn.iocoder.yudao.module.system.controller.user;
import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.convert.user.SysUserConvert;
-import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService;
-import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
+import cn.iocoder.yudao.module.system.controller.user.vo.profile.SysUserProfileRespVO;
+import cn.iocoder.yudao.module.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO;
+import cn.iocoder.yudao.module.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
+import cn.iocoder.yudao.module.system.convert.user.SysUserConvert;
+import cn.iocoder.yudao.module.system.service.dept.SysPostService;
+import cn.iocoder.yudao.module.system.service.permission.SysPermissionService;
+import cn.iocoder.yudao.module.system.service.permission.SysRoleService;
+import cn.iocoder.yudao.module.system.service.user.SysUserService;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
@@ -32,7 +32,7 @@ import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.FILE_IS_EMPTY;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.FILE_IS_EMPTY;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/profile/SysUserProfileRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/profile/SysUserProfileRespVO.java
index 4269aae..0abd703 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/profile/SysUserProfileRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/profile/SysUserProfileRespVO.java
@@ -1,6 +1,6 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile;
+package cn.iocoder.yudao.module.system.controller.user.vo.profile;
-import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserBaseVO;
+import cn.iocoder.yudao.module.system.controller.user.vo.user.SysUserBaseVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/profile/SysUserProfileUpdatePasswordReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/profile/SysUserProfileUpdatePasswordReqVO.java
index 340d2e4..0578f3c 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/profile/SysUserProfileUpdatePasswordReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/profile/SysUserProfileUpdatePasswordReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile;
+package cn.iocoder.yudao.module.system.controller.user.vo.profile;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/profile/SysUserProfileUpdateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/profile/SysUserProfileUpdateReqVO.java
index e77bcd7..bcc7a20 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/profile/SysUserProfileUpdateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/profile/SysUserProfileUpdateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile;
+package cn.iocoder.yudao.module.system.controller.user.vo.profile;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserBaseVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserBaseVO.java
index 1f41be3..5fc0b42 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserBaseVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserBaseVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user;
+package cn.iocoder.yudao.module.system.controller.user.vo.user;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserCreateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserCreateReqVO.java
index 89f2e17..9b6676c 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserCreateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserCreateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user;
+package cn.iocoder.yudao.module.system.controller.user.vo.user;
import io.swagger.annotations.ApiModel;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserExcelVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserExcelVO.java
index a4c978c..04c818e 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserExcelVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserExcelVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user;
+package cn.iocoder.yudao.module.system.controller.user.vo.user;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserExportReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserExportReqVO.java
index 24d8d00..e5f33de 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserExportReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserExportReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user;
+package cn.iocoder.yudao.module.system.controller.user.vo.user;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserImportExcelVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserImportExcelVO.java
index f33acdd..43e6c9d 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserImportExcelVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserImportExcelVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user;
+package cn.iocoder.yudao.module.system.controller.user.vo.user;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserImportRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserImportRespVO.java
index bb4359e..533ec2a 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserImportRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserImportRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user;
+package cn.iocoder.yudao.module.system.controller.user.vo.user;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserPageItemRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserPageItemRespVO.java
index 58959a5..6178d6b 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserPageItemRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserPageItemRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user;
+package cn.iocoder.yudao.module.system.controller.user.vo.user;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserPageReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserPageReqVO.java
index ca1e597..a677d20 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserPageReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserPageReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user;
+package cn.iocoder.yudao.module.system.controller.user.vo.user;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.annotations.ApiModel;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserRespVO.java
index 79abf64..66d8f69 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user;
+package cn.iocoder.yudao.module.system.controller.user.vo.user;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserSimpleRespVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserSimpleRespVO.java
index cd2b65c..d9ba0eb 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserSimpleRespVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserSimpleRespVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user;
+package cn.iocoder.yudao.module.system.controller.user.vo.user;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserUpdatePasswordReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserUpdatePasswordReqVO.java
index 9364c57..71e4586 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserUpdatePasswordReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserUpdatePasswordReqVO.java
@@ -1,9 +1,8 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user;
+package cn.iocoder.yudao.module.system.controller.user.vo.user;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
-import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotEmpty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserUpdateReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserUpdateReqVO.java
index 7fc8ffb..6513490 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserUpdateReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserUpdateReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user;
+package cn.iocoder.yudao.module.system.controller.user.vo.user;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserUpdateStatusReqVO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserUpdateStatusReqVO.java
index dd1baa4..ac20eb7 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserUpdateStatusReqVO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/user/vo/user/SysUserUpdateStatusReqVO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user;
+package cn.iocoder.yudao.module.system.controller.user.vo.user;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/auth/SysAuthConvert.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/auth/SysAuthConvert.java
index cb92db1..c1f6f26 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/auth/SysAuthConvert.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/auth/SysAuthConvert.java
@@ -1,10 +1,10 @@
-package cn.iocoder.yudao.adminserver.modules.system.convert.auth;
+package cn.iocoder.yudao.module.system.convert.auth;
-import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthMenuRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthPermissionInfoRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO;
+import cn.iocoder.yudao.module.system.controller.auth.vo.auth.SysAuthMenuRespVO;
+import cn.iocoder.yudao.module.system.controller.auth.vo.auth.SysAuthPermissionInfoRespVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysMenuDO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
-import cn.iocoder.yudao.adminserver.modules.system.enums.permission.MenuIdEnum;
+import cn.iocoder.yudao.module.system.enums.permission.MenuIdEnum;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/auth/SysUserSessionConvert.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/auth/SysUserSessionConvert.java
index 0defeed..629f030 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/auth/SysUserSessionConvert.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/auth/SysUserSessionConvert.java
@@ -1,6 +1,6 @@
-package cn.iocoder.yudao.adminserver.modules.system.convert.auth;
+package cn.iocoder.yudao.module.system.convert.auth;
-import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageItemRespVO;
+import cn.iocoder.yudao.module.system.controller.auth.vo.session.SysUserSessionPageItemRespVO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/common/SysCaptchaConvert.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/common/SysCaptchaConvert.java
index 0931a54..8e5fc34 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/common/SysCaptchaConvert.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/common/SysCaptchaConvert.java
@@ -1,8 +1,7 @@
-package cn.iocoder.yudao.adminserver.modules.system.convert.common;
+package cn.iocoder.yudao.module.system.convert.common;
import cn.hutool.captcha.AbstractCaptcha;
-import cn.hutool.captcha.ICaptcha;
-import cn.iocoder.yudao.adminserver.modules.system.controller.common.vo.SysCaptchaImageRespVO;
+import cn.iocoder.yudao.module.system.controller.common.vo.SysCaptchaImageRespVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/dept/SysDeptConvert.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/dept/SysDeptConvert.java
index 693baff..40d6676 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/dept/SysDeptConvert.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/dept/SysDeptConvert.java
@@ -1,9 +1,9 @@
-package cn.iocoder.yudao.adminserver.modules.system.convert.dept;
+package cn.iocoder.yudao.module.system.convert.dept;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptSimpleRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptUpdateReqVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.dept.SysDeptCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.dept.SysDeptRespVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.dept.SysDeptSimpleRespVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.dept.SysDeptUpdateReqVO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/dept/SysPostConvert.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/dept/SysPostConvert.java
index d466a0a..023bcfa 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/dept/SysPostConvert.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/dept/SysPostConvert.java
@@ -1,7 +1,7 @@
-package cn.iocoder.yudao.adminserver.modules.system.convert.dept;
+package cn.iocoder.yudao.module.system.convert.dept;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.*;
+import cn.iocoder.yudao.module.system.controller.dept.vo.post.*;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/dict/SysDictDataConvert.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/dict/SysDictDataConvert.java
index e916def..fc38f41 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/dict/SysDictDataConvert.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/dict/SysDictDataConvert.java
@@ -1,6 +1,6 @@
-package cn.iocoder.yudao.adminserver.modules.system.convert.dict;
+package cn.iocoder.yudao.module.system.convert.dict;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.*;
+import cn.iocoder.yudao.module.system.controller.dict.vo.data.*;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.dict.core.dto.DictDataRespDTO;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/dict/SysDictTypeConvert.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/dict/SysDictTypeConvert.java
index e20451c..ce4bae4 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/dict/SysDictTypeConvert.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/dict/SysDictTypeConvert.java
@@ -1,8 +1,8 @@
-package cn.iocoder.yudao.adminserver.modules.system.convert.dict;
+package cn.iocoder.yudao.module.system.convert.dict;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.*;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictTypeDO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.type.*;
+import cn.iocoder.yudao.module.system.dal.dataobject.dict.SysDictTypeDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/errorcode/SysErrorCodeConvert.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/errorcode/SysErrorCodeConvert.java
index a7b8ead..7a571dc 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/errorcode/SysErrorCodeConvert.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/errorcode/SysErrorCodeConvert.java
@@ -1,13 +1,13 @@
-package cn.iocoder.yudao.adminserver.modules.system.convert.errorcode;
+package cn.iocoder.yudao.module.system.convert.errorcode;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO;
-import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto.ErrorCodeRespDTO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeExcelVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.errorcode.SysErrorCodeDO;
+import cn.iocoder.yudao.module.system.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO;
+import cn.iocoder.yudao.module.system.framework.errorcode.core.dto.ErrorCodeRespDTO;
+import cn.iocoder.yudao.module.system.controller.errorcode.vo.SysErrorCodeCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.errorcode.vo.SysErrorCodeExcelVO;
+import cn.iocoder.yudao.module.system.controller.errorcode.vo.SysErrorCodeRespVO;
+import cn.iocoder.yudao.module.system.controller.errorcode.vo.SysErrorCodeUpdateReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.errorcode.SysErrorCodeDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/logger/SysLoginLogConvert.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/logger/SysLoginLogConvert.java
index d622649..01b9ada 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/logger/SysLoginLogConvert.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/logger/SysLoginLogConvert.java
@@ -1,7 +1,7 @@
-package cn.iocoder.yudao.adminserver.modules.system.convert.logger;
+package cn.iocoder.yudao.module.system.convert.logger;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExcelVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogRespVO;
+import cn.iocoder.yudao.module.system.controller.logger.vo.loginlog.SysLoginLogExcelVO;
+import cn.iocoder.yudao.module.system.controller.logger.vo.loginlog.SysLoginLogRespVO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import org.mapstruct.Mapper;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/logger/SysOperateLogConvert.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/logger/SysOperateLogConvert.java
index 51e08f1..901e321 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/logger/SysOperateLogConvert.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/logger/SysOperateLogConvert.java
@@ -1,8 +1,8 @@
-package cn.iocoder.yudao.adminserver.modules.system.convert.logger;
+package cn.iocoder.yudao.module.system.convert.logger;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogExcelVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysOperateLogDO;
+import cn.iocoder.yudao.module.system.controller.logger.vo.operatelog.SysOperateLogExcelVO;
+import cn.iocoder.yudao.module.system.controller.logger.vo.operatelog.SysOperateLogRespVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.logger.SysOperateLogDO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/notice/SysNoticeConvert.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/notice/SysNoticeConvert.java
index ccba20e..bf46d69 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/notice/SysNoticeConvert.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/notice/SysNoticeConvert.java
@@ -1,10 +1,10 @@
-package cn.iocoder.yudao.adminserver.modules.system.convert.notice;
+package cn.iocoder.yudao.module.system.convert.notice;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.notice.SysNoticeDO;
+import cn.iocoder.yudao.module.system.controller.notice.vo.SysNoticeCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.notice.vo.SysNoticeRespVO;
+import cn.iocoder.yudao.module.system.controller.notice.vo.SysNoticeUpdateReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.notice.SysNoticeDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/package-info.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/package-info.java
index d4052eb..b1ce8e3 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/package-info.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/package-info.java
@@ -3,4 +3,4 @@
*
* 目前使用 MapStruct 框架
*/
-package cn.iocoder.yudao.adminserver.modules.system.convert;
+package cn.iocoder.yudao.module.system.convert;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/permission/SysMenuConvert.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/permission/SysMenuConvert.java
index c8ef149..109a53f 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/permission/SysMenuConvert.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/permission/SysMenuConvert.java
@@ -1,10 +1,10 @@
-package cn.iocoder.yudao.adminserver.modules.system.convert.permission;
+package cn.iocoder.yudao.module.system.convert.permission;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuSimpleRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.menu.SysMenuCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.menu.SysMenuRespVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.menu.SysMenuSimpleRespVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.menu.SysMenuUpdateReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysMenuDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/permission/SysRoleConvert.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/permission/SysRoleConvert.java
index b1cd0dc..bc048a7 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/permission/SysRoleConvert.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/permission/SysRoleConvert.java
@@ -1,6 +1,6 @@
-package cn.iocoder.yudao.adminserver.modules.system.convert.permission;
+package cn.iocoder.yudao.module.system.convert.permission;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.*;
+import cn.iocoder.yudao.module.system.controller.permission.vo.role.*;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/sms/SysSmsChannelConvert.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/sms/SysSmsChannelConvert.java
index cc3b27b..af0652e 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/sms/SysSmsChannelConvert.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/sms/SysSmsChannelConvert.java
@@ -1,9 +1,9 @@
-package cn.iocoder.yudao.adminserver.modules.system.convert.sms;
+package cn.iocoder.yudao.module.system.convert.sms;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelSimpleRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.channel.SysSmsChannelRespVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.channel.SysSmsChannelSimpleRespVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/sms/SysSmsLogConvert.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/sms/SysSmsLogConvert.java
index afcd944..d91f7b3 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/sms/SysSmsLogConvert.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/sms/SysSmsLogConvert.java
@@ -1,7 +1,7 @@
-package cn.iocoder.yudao.adminserver.modules.system.convert.sms;
+package cn.iocoder.yudao.module.system.convert.sms;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogExcelVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogRespVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.log.SysSmsLogExcelVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.log.SysSmsLogRespVO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import org.mapstruct.Mapper;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/sms/SysSmsTemplateConvert.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/sms/SysSmsTemplateConvert.java
index 4d1e0dc..b3a423e 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/sms/SysSmsTemplateConvert.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/sms/SysSmsTemplateConvert.java
@@ -1,9 +1,9 @@
-package cn.iocoder.yudao.adminserver.modules.system.convert.sms;
+package cn.iocoder.yudao.module.system.convert.sms;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateExcelVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateUpdateReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.template.SysSmsTemplateCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.template.SysSmsTemplateExcelVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.template.SysSmsTemplateRespVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.template.SysSmsTemplateUpdateReqVO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import org.mapstruct.Mapper;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/tenant/SysTenantConvert.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/tenant/SysTenantConvert.java
index 3df63f3..6d9d1f7 100755
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/tenant/SysTenantConvert.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/tenant/SysTenantConvert.java
@@ -1,9 +1,9 @@
-package cn.iocoder.yudao.adminserver.modules.system.convert.tenant;
+package cn.iocoder.yudao.module.system.convert.tenant;
-import cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo.SysTenantCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo.SysTenantExcelVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo.SysTenantRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo.SysTenantUpdateReqVO;
+import cn.iocoder.yudao.module.system.controller.tenant.vo.SysTenantCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.tenant.vo.SysTenantExcelVO;
+import cn.iocoder.yudao.module.system.controller.tenant.vo.SysTenantRespVO;
+import cn.iocoder.yudao.module.system.controller.tenant.vo.SysTenantUpdateReqVO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.tenant.SysTenantDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import org.mapstruct.Mapper;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/user/SysUserConvert.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/user/SysUserConvert.java
index ff2938d..b143615 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/user/SysUserConvert.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/user/SysUserConvert.java
@@ -1,9 +1,9 @@
-package cn.iocoder.yudao.adminserver.modules.system.convert.user;
+package cn.iocoder.yudao.module.system.convert.user;
-import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileRespVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.*;
+import cn.iocoder.yudao.module.system.controller.user.vo.profile.SysUserProfileRespVO;
+import cn.iocoder.yudao.module.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO;
+import cn.iocoder.yudao.module.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
+import cn.iocoder.yudao.module.system.controller.user.vo.user.*;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md
index 8153487..8153487 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/dict/SysDictTypeDO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/dict/SysDictTypeDO.java
index 548ee6f..de7a67b 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/dict/SysDictTypeDO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/dict/SysDictTypeDO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict;
+package cn.iocoder.yudao.module.system.dal.dataobject.dict;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/errorcode/SysErrorCodeDO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/errorcode/SysErrorCodeDO.java
index d2fdb18..b8cae75 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/errorcode/SysErrorCodeDO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/errorcode/SysErrorCodeDO.java
@@ -1,7 +1,7 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.errorcode;
+package cn.iocoder.yudao.module.system.dal.dataobject.errorcode;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.adminserver.modules.system.enums.errorcode.SysErrorCodeTypeEnum;
+import cn.iocoder.yudao.module.system.enums.errorcode.SysErrorCodeTypeEnum;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/logger/SysOperateLogDO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/logger/SysOperateLogDO.java
index 417c6f4..ca9483e 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/logger/SysOperateLogDO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/logger/SysOperateLogDO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger;
+package cn.iocoder.yudao.module.system.dal.dataobject.logger;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/notice/SysNoticeDO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/notice/SysNoticeDO.java
index c61398f..571b011 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/notice/SysNoticeDO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/notice/SysNoticeDO.java
@@ -1,6 +1,6 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.notice;
+package cn.iocoder.yudao.module.system.dal.dataobject.notice;
-import cn.iocoder.yudao.adminserver.modules.system.enums.notice.SysNoticeTypeEnum;
+import cn.iocoder.yudao.module.system.enums.notice.SysNoticeTypeEnum;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
import com.baomidou.mybatisplus.annotation.TableField;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/permission/SysMenuDO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/permission/SysMenuDO.java
index 043f2e9..39c0b82 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/permission/SysMenuDO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/permission/SysMenuDO.java
@@ -1,8 +1,8 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission;
+package cn.iocoder.yudao.module.system.dal.dataobject.permission;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.adminserver.modules.system.enums.permission.MenuTypeEnum;
+import cn.iocoder.yudao.module.system.enums.permission.MenuTypeEnum;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/permission/SysRoleMenuDO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/permission/SysRoleMenuDO.java
index 5cb6c1a..bfe0c3f 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/permission/SysRoleMenuDO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/permission/SysRoleMenuDO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission;
+package cn.iocoder.yudao.module.system.dal.dataobject.permission;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.TableId;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/auth/SysUserSessionMapper.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/auth/SysUserSessionMapper.java
index f5ae670..34e3ffc 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/auth/SysUserSessionMapper.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/auth/SysUserSessionMapper.java
@@ -1,6 +1,6 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.auth;
+package cn.iocoder.yudao.module.system.dal.mysql.auth;
-import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO;
+import cn.iocoder.yudao.module.system.controller.auth.vo.session.SysUserSessionPageReqVO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dept/SysDeptMapper.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/SysDeptMapper.java
index be3bede..995ee1e 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dept/SysDeptMapper.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/SysDeptMapper.java
@@ -1,9 +1,9 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dept;
+package cn.iocoder.yudao.module.system.dal.mysql.dept;
-import cn.iocoder.yudao.adminserver.modules.tool.enums.SqlConstants;
+import cn.iocoder.yudao.framework.mybatis.core.enums.SqlConstants;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptListReqVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.dept.SysDeptListReqVO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dept/SysPostMapper.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/SysPostMapper.java
index 85d9915..bf15499 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dept/SysPostMapper.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/SysPostMapper.java
@@ -1,10 +1,10 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dept;
+package cn.iocoder.yudao.module.system.dal.mysql.dept;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostPageReqVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.post.SysPostExportReqVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.post.SysPostPageReqVO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.ibatis.annotations.Mapper;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dict/SysDictDataMapper.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dict/SysDictDataMapper.java
index 5cf5a73..9fc681a 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dict/SysDictDataMapper.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dict/SysDictDataMapper.java
@@ -1,8 +1,8 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dict;
+package cn.iocoder.yudao.module.system.dal.mysql.dict;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.tool.enums.SqlConstants;
+import cn.iocoder.yudao.framework.mybatis.core.enums.SqlConstants;
+import cn.iocoder.yudao.module.system.controller.dict.vo.data.SysDictDataExportReqVO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.data.SysDictDataPageReqVO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dict/SysDictTypeMapper.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dict/SysDictTypeMapper.java
index 90b1256..ae21391 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dict/SysDictTypeMapper.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dict/SysDictTypeMapper.java
@@ -1,11 +1,11 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dict;
+package cn.iocoder.yudao.module.system.dal.mysql.dict;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypeExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictTypeDO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.type.SysDictTypeExportReqVO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.type.SysDictTypePageReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.dict.SysDictTypeDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/errorcode/SysErrorCodeMapper.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/errorcode/SysErrorCodeMapper.java
index 7760f80..b7cac6c 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/errorcode/SysErrorCodeMapper.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/errorcode/SysErrorCodeMapper.java
@@ -1,11 +1,11 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.errorcode;
+package cn.iocoder.yudao.module.system.dal.mysql.errorcode;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
-import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.errorcode.SysErrorCodeDO;
+import cn.iocoder.yudao.module.system.controller.errorcode.vo.SysErrorCodeExportReqVO;
+import cn.iocoder.yudao.module.system.controller.errorcode.vo.SysErrorCodePageReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.errorcode.SysErrorCodeDO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.ibatis.annotations.Mapper;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/logger/SysLoginLogMapper.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/logger/SysLoginLogMapper.java
index eea1812..b211210 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/logger/SysLoginLogMapper.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/logger/SysLoginLogMapper.java
@@ -1,12 +1,12 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.logger;
+package cn.iocoder.yudao.module.system.dal.mysql.logger;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum;
+import cn.iocoder.yudao.module.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO;
+import cn.iocoder.yudao.module.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO;
+import cn.iocoder.yudao.module.system.enums.logger.SysLoginResultEnum;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/logger/SysOperateLogMapper.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/logger/SysOperateLogMapper.java
index c588867..14d866a 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/logger/SysOperateLogMapper.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/logger/SysOperateLogMapper.java
@@ -1,12 +1,12 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.logger;
+package cn.iocoder.yudao.module.system.dal.mysql.logger;
import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysOperateLogDO;
+import cn.iocoder.yudao.module.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO;
+import cn.iocoder.yudao.module.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.logger.SysOperateLogDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.Collection;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/notice/SysNoticeMapper.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/notice/SysNoticeMapper.java
index 52a484a..74aee3f 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/notice/SysNoticeMapper.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/notice/SysNoticeMapper.java
@@ -1,10 +1,10 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.notice;
+package cn.iocoder.yudao.module.system.dal.mysql.notice;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
-import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.notice.SysNoticeDO;
+import cn.iocoder.yudao.module.system.controller.notice.vo.SysNoticePageReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.notice.SysNoticeDO;
import org.apache.ibatis.annotations.Mapper;
@Mapper
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/permission/SysMenuMapper.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/SysMenuMapper.java
index ea55e21..605937f 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/permission/SysMenuMapper.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/SysMenuMapper.java
@@ -1,8 +1,8 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission;
+package cn.iocoder.yudao.module.system.dal.mysql.permission;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuListReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO;
-import cn.iocoder.yudao.adminserver.modules.tool.enums.SqlConstants;
+import cn.iocoder.yudao.framework.mybatis.core.enums.SqlConstants;
+import cn.iocoder.yudao.module.system.controller.permission.vo.menu.SysMenuListReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysMenuDO;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/permission/SysRoleMapper.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/SysRoleMapper.java
index 670d504..16641f8 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/permission/SysRoleMapper.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/SysRoleMapper.java
@@ -1,10 +1,10 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission;
+package cn.iocoder.yudao.module.system.dal.mysql.permission;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRolePageReqVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.role.SysRoleExportReqVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.role.SysRolePageReqVO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.ibatis.annotations.Mapper;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/permission/SysRoleMenuMapper.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/SysRoleMenuMapper.java
index 698ca73..ac80692 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/permission/SysRoleMenuMapper.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/SysRoleMenuMapper.java
@@ -1,7 +1,7 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission;
+package cn.iocoder.yudao.module.system.dal.mysql.permission;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleMenuDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysRoleMenuDO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/permission/SysUserRoleMapper.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/SysUserRoleMapper.java
index 4704bb5..71b25f2 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/permission/SysUserRoleMapper.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/SysUserRoleMapper.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission;
+package cn.iocoder.yudao.module.system.dal.mysql.permission;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysUserRoleDO;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/sms/SysSmsChannelMapper.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/sms/SysSmsChannelMapper.java
index bd69d4f..5f6b0bb 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/sms/SysSmsChannelMapper.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/sms/SysSmsChannelMapper.java
@@ -1,6 +1,6 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms;
+package cn.iocoder.yudao.module.system.dal.mysql.sms;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelPageReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.channel.SysSmsChannelPageReqVO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/sms/SysSmsLogMapper.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/sms/SysSmsLogMapper.java
index 0269e75..e0a1039 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/sms/SysSmsLogMapper.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/sms/SysSmsLogMapper.java
@@ -1,7 +1,7 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms;
+package cn.iocoder.yudao.module.system.dal.mysql.sms;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.log.SysSmsLogExportReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.log.SysSmsLogPageReqVO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/sms/SysSmsTemplateMapper.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/sms/SysSmsTemplateMapper.java
index 60d99a0..f1deda0 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/sms/SysSmsTemplateMapper.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/sms/SysSmsTemplateMapper.java
@@ -1,7 +1,7 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms;
+package cn.iocoder.yudao.module.system.dal.mysql.sms;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplatePageReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.template.SysSmsTemplateExportReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.template.SysSmsTemplatePageReqVO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/tenant/SysTenantMapper.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/tenant/SysTenantMapper.java
index 999d5c5..dc7d27d 100755
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/tenant/SysTenantMapper.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/tenant/SysTenantMapper.java
@@ -1,7 +1,7 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.tenant;
+package cn.iocoder.yudao.module.system.dal.mysql.tenant;
-import cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo.SysTenantExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo.SysTenantPageReqVO;
+import cn.iocoder.yudao.module.system.controller.tenant.vo.SysTenantExportReqVO;
+import cn.iocoder.yudao.module.system.controller.tenant.vo.SysTenantPageReqVO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.tenant.SysTenantDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/user/SysUserMapper.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/SysUserMapper.java
index 8739301..f954cd3 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/user/SysUserMapper.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/SysUserMapper.java
@@ -1,7 +1,7 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.user;
+package cn.iocoder.yudao.module.system.dal.mysql.user;
-import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserPageReqVO;
+import cn.iocoder.yudao.module.system.controller.user.vo.user.SysUserExportReqVO;
+import cn.iocoder.yudao.module.system.controller.user.vo.user.SysUserPageReqVO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/SysRedisKeyConstants.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/redis/SysRedisKeyConstants.java
index e9d3373..33fa08e 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/SysRedisKeyConstants.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/redis/SysRedisKeyConstants.java
@@ -1,10 +1,6 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.redis;
+package cn.iocoder.yudao.module.system.dal.redis;
import cn.iocoder.yudao.framework.redis.core.RedisKeyDefine;
-import cn.iocoder.yudao.framework.security.core.LoginUser;
-import me.zhyd.oauth.model.AuthUser;
-
-import java.time.Duration;
import static cn.iocoder.yudao.framework.redis.core.RedisKeyDefine.KeyTypeEnum.STRING;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/common/SysCaptchaRedisDAO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/redis/common/SysCaptchaRedisDAO.java
index 701501c..9a26095 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/common/SysCaptchaRedisDAO.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/redis/common/SysCaptchaRedisDAO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.dal.redis.common;
+package cn.iocoder.yudao.module.system.dal.redis.common;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Repository;
@@ -6,7 +6,7 @@ import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.time.Duration;
-import static cn.iocoder.yudao.adminserver.modules.system.dal.redis.SysRedisKeyConstants.CAPTCHA_CODE;
+import static cn.iocoder.yudao.module.system.dal.redis.SysRedisKeyConstants.CAPTCHA_CODE;
/**
* 验证码的 Redis DAO
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/SysErrorCodeConstants.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/SysErrorCodeConstants.java
index 867f8e3..566f835 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/SysErrorCodeConstants.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/SysErrorCodeConstants.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.enums;
+package cn.iocoder.yudao.module.system.enums;
import cn.iocoder.yudao.framework.common.exception.ErrorCode;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/dept/DeptIdEnum.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/dept/DeptIdEnum.java
index d228a9b..2a7effe 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/dept/DeptIdEnum.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/dept/DeptIdEnum.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.enums.dept;
+package cn.iocoder.yudao.module.system.enums.dept;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/errorcode/SysErrorCodeTypeEnum.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/errorcode/SysErrorCodeTypeEnum.java
index 8c0b4c7..beb2e2b 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/errorcode/SysErrorCodeTypeEnum.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/errorcode/SysErrorCodeTypeEnum.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.enums.errorcode;
+package cn.iocoder.yudao.module.system.enums.errorcode;
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
import lombok.AllArgsConstructor;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/logger/SysLoginLogTypeEnum.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/logger/SysLoginLogTypeEnum.java
index 40f18e8..ff29ab5 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/logger/SysLoginLogTypeEnum.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/logger/SysLoginLogTypeEnum.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.enums.logger;
+package cn.iocoder.yudao.module.system.enums.logger;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/logger/SysLoginResultEnum.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/logger/SysLoginResultEnum.java
index 218b2d9..f1c8356 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/logger/SysLoginResultEnum.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/logger/SysLoginResultEnum.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.enums.logger;
+package cn.iocoder.yudao.module.system.enums.logger;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/notice/SysNoticeTypeEnum.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/notice/SysNoticeTypeEnum.java
index 0c8bff3..c543f1c 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/notice/SysNoticeTypeEnum.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/notice/SysNoticeTypeEnum.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.enums.notice;
+package cn.iocoder.yudao.module.system.enums.notice;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/permission/MenuIdEnum.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/permission/MenuIdEnum.java
index a82ab25..fc2b72a 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/permission/MenuIdEnum.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/permission/MenuIdEnum.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.enums.permission;
+package cn.iocoder.yudao.module.system.enums.permission;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/permission/MenuTypeEnum.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/permission/MenuTypeEnum.java
index 213f799..575a33c 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/permission/MenuTypeEnum.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/permission/MenuTypeEnum.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.enums.permission;
+package cn.iocoder.yudao.module.system.enums.permission;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/permission/RoleCodeEnum.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/permission/RoleCodeEnum.java
index ddfdd05..44487a4 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/permission/RoleCodeEnum.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/permission/RoleCodeEnum.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.enums.permission;
+package cn.iocoder.yudao.module.system.enums.permission;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/permission/SysRoleTypeEnum.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/permission/SysRoleTypeEnum.java
index 61b15b0..426c5cd 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/permission/SysRoleTypeEnum.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/permission/SysRoleTypeEnum.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.enums.permission;
+package cn.iocoder.yudao.module.system.enums.permission;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/captcha/config/CaptchaConfig.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/captcha/config/CaptchaConfig.java
index 174efe4..4028f6c 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/captcha/config/CaptchaConfig.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/captcha/config/CaptchaConfig.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.system.framework.captcha.config;
+package cn.iocoder.yudao.module.system.framework.captcha.config;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/captcha/config/CaptchaProperties.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/captcha/config/CaptchaProperties.java
new file mode 100644
index 0000000..0d7cd0d
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/captcha/config/CaptchaProperties.java
@@ -0,0 +1,38 @@
+package cn.iocoder.yudao.module.system.framework.captcha.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.validation.annotation.Validated;
+
+import javax.validation.constraints.NotNull;
+import java.time.Duration;
+
+@ConfigurationProperties(prefix = "yudao.captcha")
+@Validated
+@Data
+public class CaptchaProperties {
+
+ private static final Boolean ENABLE_DEFAULT = true;
+
+ /**
+ * 是否开启
+ * 注意,这里仅仅是后端 Server 是否校验,暂时不控制前端的逻辑
+ */
+ private Boolean enable = ENABLE_DEFAULT;
+ /**
+ * 验证码的过期时间
+ */
+ @NotNull(message = "验证码的过期时间不为空")
+ private Duration timeout;
+ /**
+ * 验证码的高度
+ */
+ @NotNull(message = "验证码的高度不能为空")
+ private Integer height;
+ /**
+ * 验证码的宽度
+ */
+ @NotNull(message = "验证码的宽度不能为空")
+ private Integer width;
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/captcha/package-info.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/captcha/package-info.java
new file mode 100644
index 0000000..ee406c0
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/captcha/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * 基于 Hutool captcha 库,实现验证码功能
+ */
+package cn.iocoder.yudao.module.system.framework.captcha;
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/datapermission/config/SysDataPermissionConfiguration.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/datapermission/config/SysDataPermissionConfiguration.java
new file mode 100644
index 0000000..0b04029
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/datapermission/config/SysDataPermissionConfiguration.java
@@ -0,0 +1,25 @@
+package cn.iocoder.yudao.module.system.framework.datapermission.config;
+
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
+import cn.iocoder.yudao.framework.datapermission.core.dept.rule.DeptDataPermissionRuleCustomizer;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * system 模块的数据权限 Configuration
+ *
+ * @author 芋道源码
+ */
+@Configuration
+public class SysDataPermissionConfiguration {
+
+ @Bean
+ public DeptDataPermissionRuleCustomizer sysDeptDataPermissionRuleCustomizer() {
+ return rule -> {
+ rule.addDeptColumn(SysUserDO.class);
+ rule.addDeptColumn(SysDeptDO.class, "id");
+ };
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/datapermission/package-info.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/datapermission/package-info.java
new file mode 100644
index 0000000..a666845
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/datapermission/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * system 模块的数据权限配置
+ */
+package cn.iocoder.yudao.module.system.framework.datapermission;
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/config/ErrorCodeConfiguration.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/config/ErrorCodeConfiguration.java
new file mode 100644
index 0000000..e86d40b
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/config/ErrorCodeConfiguration.java
@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.module.system.framework.errorcode.config;
+
+import cn.iocoder.yudao.module.system.framework.errorcode.core.generator.ErrorCodeAutoGenerator;
+import cn.iocoder.yudao.module.system.framework.errorcode.core.loader.ErrorCodeLoader;
+import cn.iocoder.yudao.module.system.framework.errorcode.core.service.ErrorCodeFrameworkService;
+import cn.iocoder.yudao.module.system.framework.errorcode.core.loader.ErrorCodeLoaderImpl;
+import cn.iocoder.yudao.module.system.framework.errorcode.core.generator.ErrorCodeAutoGeneratorImpl;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+/**
+ * 错误码配置类
+ */
+@Configuration
+@EnableConfigurationProperties(ErrorCodeProperties.class)
+@EnableScheduling // 开启调度任务的功能,因为 ErrorCodeRemoteLoader 通过定时刷新错误码
+public class ErrorCodeConfiguration {
+
+ @Bean
+ public ErrorCodeAutoGenerator errorCodeAutoGenerator(@Value("${spring.application.name}") String applicationName,
+ ErrorCodeProperties errorCodeProperties,
+ ErrorCodeFrameworkService errorCodeFrameworkService) {
+ return new ErrorCodeAutoGeneratorImpl(applicationName, errorCodeProperties.getConstantsClassList(),
+ errorCodeFrameworkService);
+ }
+
+ @Bean
+ public ErrorCodeLoader errorCodeLoader(@Value("${spring.application.name}") String applicationName,
+ ErrorCodeFrameworkService errorCodeFrameworkService) {
+ return new ErrorCodeLoaderImpl(applicationName, errorCodeFrameworkService);
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/config/ErrorCodeProperties.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/config/ErrorCodeProperties.java
new file mode 100644
index 0000000..686f03e
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/config/ErrorCodeProperties.java
@@ -0,0 +1,26 @@
+package cn.iocoder.yudao.module.system.framework.errorcode.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.validation.annotation.Validated;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * 错误码的配置属性类
+ *
+ * @author dlyan
+ */
+@ConfigurationProperties("yudao.error-code")
+@Data
+@Validated
+public class ErrorCodeProperties {
+
+ /**
+ * 错误码枚举类
+ */
+ @NotNull(message = "错误码枚举类不能为空")
+ private List constantsClassList;
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/dto/ErrorCodeAutoGenerateReqDTO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/dto/ErrorCodeAutoGenerateReqDTO.java
new file mode 100644
index 0000000..6f54258
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/dto/ErrorCodeAutoGenerateReqDTO.java
@@ -0,0 +1,34 @@
+package cn.iocoder.yudao.module.system.framework.errorcode.core.dto;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 错误码自动生成 DTO
+ *
+ * @author dylan
+ */
+@Data
+@Accessors(chain = true)
+public class ErrorCodeAutoGenerateReqDTO {
+
+ /**
+ * 应用名
+ */
+ @NotNull(message = "应用名不能为空")
+ private String applicationName;
+ /**
+ * 错误码编码
+ */
+ @NotNull(message = "错误码编码不能为空")
+ private Integer code;
+ /**
+ * 错误码错误提示
+ */
+ @NotEmpty(message = "错误码错误提示不能为空")
+ private String message;
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/dto/ErrorCodeRespDTO.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/dto/ErrorCodeRespDTO.java
new file mode 100644
index 0000000..c0b0cba
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/dto/ErrorCodeRespDTO.java
@@ -0,0 +1,28 @@
+package cn.iocoder.yudao.module.system.framework.errorcode.core.dto;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 错误码的 Response DTO
+ *
+ * @author 芋道源码
+ */
+@Data
+public class ErrorCodeRespDTO {
+
+ /**
+ * 错误码编码
+ */
+ private Integer code;
+ /**
+ * 错误码错误提示
+ */
+ private String message;
+ /**
+ * 更新时间
+ */
+ private Date updateTime;
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/generator/ErrorCodeAutoGenerator.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/generator/ErrorCodeAutoGenerator.java
new file mode 100644
index 0000000..6fb2abc
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/generator/ErrorCodeAutoGenerator.java
@@ -0,0 +1,15 @@
+package cn.iocoder.yudao.module.system.framework.errorcode.core.generator;
+
+/**
+ * 错误码的自动生成器
+ *
+ * @author dylan
+ */
+public interface ErrorCodeAutoGenerator {
+
+ /**
+ * 将配置类到错误码写入数据库
+ */
+ void execute();
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/generator/ErrorCodeAutoGeneratorImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/generator/ErrorCodeAutoGeneratorImpl.java
new file mode 100644
index 0000000..0551e47
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/generator/ErrorCodeAutoGeneratorImpl.java
@@ -0,0 +1,98 @@
+package cn.iocoder.yudao.module.system.framework.errorcode.core.generator;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ClassUtil;
+import cn.hutool.core.util.ReflectUtil;
+import cn.iocoder.yudao.framework.common.exception.ErrorCode;
+import cn.iocoder.yudao.module.system.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO;
+import cn.iocoder.yudao.module.system.framework.errorcode.core.service.ErrorCodeFrameworkService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.context.event.ApplicationReadyEvent;
+import org.springframework.context.event.EventListener;
+import org.springframework.scheduling.annotation.Async;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * ErrorCodeAutoGenerator 的实现类
+ * 目的是,扫描指定的 {@link #constantsClassList} 类,写入到 system 服务中
+ *
+ * @author dylan
+ */
+@RequiredArgsConstructor
+@Slf4j
+public class ErrorCodeAutoGeneratorImpl implements ErrorCodeAutoGenerator {
+
+ /**
+ * 应用分组
+ */
+ private final String applicationName;
+ /**
+ * 错误码枚举类
+ */
+ private final List constantsClassList;
+ /**
+ * 错误码 Service
+ */
+ private final ErrorCodeFrameworkService errorCodeService;
+
+ @Override
+ @EventListener(ApplicationReadyEvent.class)
+ @Async // 异步,保证项目的启动过程,毕竟非关键流程
+ public void execute() {
+ // 第一步,解析错误码
+ List autoGenerateDTOs = parseErrorCode();
+ log.info("[execute][解析到错误码数量为 ({}) 个]", autoGenerateDTOs.size());
+
+ // 第二步,写入到 system 服务
+ errorCodeService.autoGenerateErrorCodes(autoGenerateDTOs);
+ log.info("[execute][写入到 system 组件完成]");
+ }
+
+ /**
+ * 解析 constantsClassList 变量,转换成错误码数组
+ *
+ * @return 错误码数组
+ */
+ private List parseErrorCode() {
+ // 校验 errorCodeConstantsClass 参数
+ if (CollUtil.isEmpty(constantsClassList)) {
+ log.info("[execute][未配置 yudao.error-code.constants-class-list 配置项,不进行自动写入到 system 服务中]");
+ return new ArrayList<>();
+ }
+
+ // 解析错误码
+ List autoGenerateDTOs = new ArrayList<>();
+ constantsClassList.forEach(constantsClass -> {
+ // 解析错误码枚举类
+ Class> errorCodeConstantsClazz = ClassUtil.loadClass(constantsClass);
+ // 解析错误码
+ autoGenerateDTOs.addAll(parseErrorCode(errorCodeConstantsClazz));
+ });
+ return autoGenerateDTOs;
+ }
+
+ /**
+ * 解析错误码类,获得错误码数组
+ *
+ * @return 错误码数组
+ */
+ private List parseErrorCode(Class> constantsClass) {
+ List autoGenerateDTOs = new ArrayList<>();
+ Arrays.stream(constantsClass.getFields()).forEach(field -> {
+ if (field.getType() != ErrorCode.class) {
+ return;
+ }
+ // 转换成 ErrorCodeAutoGenerateReqDTO 对象
+ ErrorCode errorCode = (ErrorCode) ReflectUtil.getFieldValue(constantsClass, field);
+ autoGenerateDTOs.add(new ErrorCodeAutoGenerateReqDTO().setApplicationName(applicationName)
+ .setCode(errorCode.getCode()).setMessage(errorCode.getMsg()));
+ });
+ return autoGenerateDTOs;
+ }
+
+}
+
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/loader/ErrorCodeLoader.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/loader/ErrorCodeLoader.java
new file mode 100644
index 0000000..6712c33
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/loader/ErrorCodeLoader.java
@@ -0,0 +1,24 @@
+package cn.iocoder.yudao.module.system.framework.errorcode.core.loader;
+
+import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
+
+/**
+ * 错误码加载器
+ *
+ * 注意,错误码最终加载到 {@link ServiceExceptionUtil} 的 MESSAGES 变量中!
+ *
+ * @author dlyan
+ */
+public interface ErrorCodeLoader {
+
+ /**
+ * 添加错误码
+ *
+ * @param code 错误码的编号
+ * @param msg 错误码的提示
+ */
+ default void putErrorCode(Integer code, String msg) {
+ ServiceExceptionUtil.put(code, msg);
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/loader/ErrorCodeLoaderImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/loader/ErrorCodeLoaderImpl.java
new file mode 100644
index 0000000..1641f52
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/loader/ErrorCodeLoaderImpl.java
@@ -0,0 +1,73 @@
+package cn.iocoder.yudao.module.system.framework.errorcode.core.loader;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.iocoder.yudao.module.system.framework.errorcode.core.dto.ErrorCodeRespDTO;
+import cn.iocoder.yudao.module.system.framework.errorcode.core.service.ErrorCodeFrameworkService;
+import cn.iocoder.yudao.framework.common.util.date.DateUtils;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.context.event.ApplicationReadyEvent;
+import org.springframework.context.event.EventListener;
+import org.springframework.scheduling.annotation.Scheduled;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * ErrorCodeLoader 的实现类,从 infra 的数据库中,加载错误码。
+ *
+ * 考虑到错误码会刷新,所以按照 {@link #REFRESH_ERROR_CODE_PERIOD} 频率,增量加载错误码。
+ *
+ * @author dlyan
+ */
+@RequiredArgsConstructor
+@Slf4j
+public class ErrorCodeLoaderImpl implements ErrorCodeLoader {
+
+ /**
+ * 刷新错误码的频率,单位:毫秒
+ */
+ private static final int REFRESH_ERROR_CODE_PERIOD = 60 * 1000;
+
+ /**
+ * 应用分组
+ */
+ private final String applicationName;
+ /**
+ * 错误码 Service
+ */
+ private final ErrorCodeFrameworkService errorCodeService;
+
+ /**
+ * 缓存错误码的最大更新时间,用于后续的增量轮询,判断是否有更新
+ */
+ private Date maxUpdateTime;
+
+ @EventListener(ApplicationReadyEvent.class)
+ public void loadErrorCodes() {
+ this.loadErrorCodes0();
+ }
+
+ @Scheduled(fixedDelay = REFRESH_ERROR_CODE_PERIOD, initialDelay = REFRESH_ERROR_CODE_PERIOD)
+ public void refreshErrorCodes() {
+ this.loadErrorCodes0();
+ }
+
+ private void loadErrorCodes0() {
+ // 加载错误码
+ List errorCodeRespDTOs = errorCodeService.getErrorCodeList(applicationName, maxUpdateTime);
+ if (CollUtil.isEmpty(errorCodeRespDTOs)) {
+ return;
+ }
+ log.info("[loadErrorCodes0][加载到 ({}) 个错误码]", errorCodeRespDTOs.size());
+
+ // 刷新错误码的缓存
+ errorCodeRespDTOs.forEach(errorCodeRespDTO -> {
+ // 写入到错误码的缓存
+ putErrorCode(errorCodeRespDTO.getCode(), errorCodeRespDTO.getMessage());
+ // 记录下更新时间,方便增量更新
+ maxUpdateTime = DateUtils.max(maxUpdateTime, errorCodeRespDTO.getUpdateTime());
+ });
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/service/ErrorCodeFrameworkService.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/service/ErrorCodeFrameworkService.java
new file mode 100644
index 0000000..2d93f75
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/service/ErrorCodeFrameworkService.java
@@ -0,0 +1,35 @@
+package cn.iocoder.yudao.module.system.framework.errorcode.core.service;
+
+import cn.iocoder.yudao.module.system.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO;
+import cn.iocoder.yudao.module.system.framework.errorcode.core.dto.ErrorCodeRespDTO;
+
+import javax.validation.Valid;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 错误码 Framework Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface ErrorCodeFrameworkService {
+
+ /**
+ * 自动创建错误码
+ *
+ * @param autoGenerateDTOs 错误码信息
+ */
+ void autoGenerateErrorCodes(@Valid List autoGenerateDTOs);
+
+ /**
+ * 增量获得错误码数组
+ *
+ * 如果 minUpdateTime 为空时,则获取所有错误码
+ *
+ * @param applicationName 应用名
+ * @param minUpdateTime 最小更新时间
+ * @return 错误码数组
+ */
+ List getErrorCodeList(String applicationName, Date minUpdateTime);
+
+}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/package-info.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/package-info.java
index 343ccae..012bcb3 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/package-info.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/package-info.java
@@ -3,4 +3,4 @@
*
* 将错误码缓存在内存中,同时通过定时器每 n 分钟更新
*/
-package cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode;
+package cn.iocoder.yudao.module.system.framework.errorcode;
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/package-info.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/package-info.java
index b745ae8..4b84406 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/package-info.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/package-info.java
@@ -3,4 +3,4 @@
*
* @author 芋道源码
*/
-package cn.iocoder.yudao.adminserver.modules.system.framework;
+package cn.iocoder.yudao.module.system.framework;
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/job/auth/SysUserSessionTimeoutJob.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/job/auth/SysUserSessionTimeoutJob.java
new file mode 100644
index 0000000..c8c719f
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/job/auth/SysUserSessionTimeoutJob.java
@@ -0,0 +1,32 @@
+package cn.iocoder.yudao.module.system.job.auth;
+
+import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
+import cn.iocoder.yudao.module.system.service.auth.SysUserSessionService;
+import cn.iocoder.yudao.framework.tenant.core.job.TenantJob;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * 用户 Session 超时 Job
+ *
+ * @author 願
+ */
+@Component
+@TenantJob
+@Slf4j
+public class SysUserSessionTimeoutJob implements JobHandler {
+
+ @Resource
+ private SysUserSessionService sysUserSessionService;
+
+ @Override
+ public String execute(String param) throws Exception {
+ // 执行过期
+ Long timeoutCount = sysUserSessionService.clearSessionTimeout();
+ // 返回结果,记录每次的超时数量
+ return String.format("移除在线会话数量为 %s 个", timeoutCount);
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/job/package-info.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/job/package-info.java
new file mode 100644
index 0000000..a7f5954
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/job/package-info.java
@@ -0,0 +1 @@
+package cn.iocoder.yudao.module.system.job;
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/dept/SysDeptRefreshConsumer.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/dept/SysDeptRefreshConsumer.java
new file mode 100644
index 0000000..dd9bd64
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/dept/SysDeptRefreshConsumer.java
@@ -0,0 +1,29 @@
+package cn.iocoder.yudao.module.system.mq.consumer.dept;
+
+import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener;
+import cn.iocoder.yudao.module.system.mq.message.dept.SysDeptRefreshMessage;
+import cn.iocoder.yudao.module.system.service.dept.SysDeptService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * 针对 {@link SysDeptRefreshMessage} 的消费者
+ *
+ * @author 芋道源码
+ */
+@Component
+@Slf4j
+public class SysDeptRefreshConsumer extends AbstractChannelMessageListener {
+
+ @Resource
+ private SysDeptService deptService;
+
+ @Override
+ public void onMessage(SysDeptRefreshMessage message) {
+ log.info("[onMessage][收到 Dept 刷新消息]");
+ deptService.initLocalCache();
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/dict/SysDictDataRefreshConsumer.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/dict/SysDictDataRefreshConsumer.java
new file mode 100644
index 0000000..ad14b7b
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/dict/SysDictDataRefreshConsumer.java
@@ -0,0 +1,29 @@
+package cn.iocoder.yudao.module.system.mq.consumer.dict;
+
+import cn.iocoder.yudao.coreservice.modules.system.service.dict.SysDictDataCoreService;
+import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener;
+import cn.iocoder.yudao.module.system.mq.message.dict.SysDictDataRefreshMessage;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * 针对 {@link SysDictDataRefreshMessage} 的消费者
+ *
+ * @author 芋道源码
+ */
+@Component
+@Slf4j
+public class SysDictDataRefreshConsumer extends AbstractChannelMessageListener {
+
+ @Resource
+ private SysDictDataCoreService dictDataCoreService;
+
+ @Override
+ public void onMessage(SysDictDataRefreshMessage message) {
+ log.info("[onMessage][收到 DictData 刷新消息]");
+ dictDataCoreService.initLocalCache();
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/mail/SysMailSendConsumer.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/mail/SysMailSendConsumer.java
new file mode 100644
index 0000000..10b12ce
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/mail/SysMailSendConsumer.java
@@ -0,0 +1,17 @@
+package cn.iocoder.yudao.module.system.mq.consumer.mail;
+
+import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessageListener;
+import cn.iocoder.yudao.module.system.mq.message.mail.SysMailSendMessage;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+@Component
+@Slf4j
+public class SysMailSendConsumer extends AbstractStreamMessageListener {
+
+ @Override
+ public void onMessage(SysMailSendMessage message) {
+ log.info("[onMessage][消息内容({})]", message);
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/permission/SysMenuRefreshConsumer.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/permission/SysMenuRefreshConsumer.java
new file mode 100644
index 0000000..4630fef
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/permission/SysMenuRefreshConsumer.java
@@ -0,0 +1,29 @@
+package cn.iocoder.yudao.module.system.mq.consumer.permission;
+
+import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener;
+import cn.iocoder.yudao.module.system.mq.message.permission.SysMenuRefreshMessage;
+import cn.iocoder.yudao.module.system.service.permission.SysMenuService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * 针对 {@link SysMenuRefreshMessage} 的消费者
+ *
+ * @author 芋道源码
+ */
+@Component
+@Slf4j
+public class SysMenuRefreshConsumer extends AbstractChannelMessageListener {
+
+ @Resource
+ private SysMenuService menuService;
+
+ @Override
+ public void onMessage(SysMenuRefreshMessage message) {
+ log.info("[onMessage][收到 Menu 刷新消息]");
+ menuService.initLocalCache();
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/permission/SysRoleMenuRefreshConsumer.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/permission/SysRoleMenuRefreshConsumer.java
new file mode 100644
index 0000000..961ee83
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/permission/SysRoleMenuRefreshConsumer.java
@@ -0,0 +1,29 @@
+package cn.iocoder.yudao.module.system.mq.consumer.permission;
+
+import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener;
+import cn.iocoder.yudao.module.system.mq.message.permission.SysRoleMenuRefreshMessage;
+import cn.iocoder.yudao.module.system.service.permission.SysPermissionService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * 针对 {@link SysRoleMenuRefreshMessage} 的消费者
+ *
+ * @author 芋道源码
+ */
+@Component
+@Slf4j
+public class SysRoleMenuRefreshConsumer extends AbstractChannelMessageListener {
+
+ @Resource
+ private SysPermissionService permissionService;
+
+ @Override
+ public void onMessage(SysRoleMenuRefreshMessage message) {
+ log.info("[onMessage][收到 Role 与 Menu 的关联刷新消息]");
+ permissionService.initLocalCache();
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/permission/SysRoleRefreshConsumer.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/permission/SysRoleRefreshConsumer.java
new file mode 100644
index 0000000..2ed56fe
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/permission/SysRoleRefreshConsumer.java
@@ -0,0 +1,29 @@
+package cn.iocoder.yudao.module.system.mq.consumer.permission;
+
+import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener;
+import cn.iocoder.yudao.module.system.mq.message.permission.SysRoleRefreshMessage;
+import cn.iocoder.yudao.module.system.service.permission.SysRoleService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * 针对 {@link SysRoleRefreshMessage} 的消费者
+ *
+ * @author 芋道源码
+ */
+@Component
+@Slf4j
+public class SysRoleRefreshConsumer extends AbstractChannelMessageListener {
+
+ @Resource
+ private SysRoleService roleService;
+
+ @Override
+ public void onMessage(SysRoleRefreshMessage message) {
+ log.info("[onMessage][收到 Role 刷新消息]");
+ roleService.initLocalCache();
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/sms/SysSmsChannelRefreshConsumer.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/sms/SysSmsChannelRefreshConsumer.java
new file mode 100644
index 0000000..11cbed1
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/sms/SysSmsChannelRefreshConsumer.java
@@ -0,0 +1,29 @@
+package cn.iocoder.yudao.module.system.mq.consumer.sms;
+
+import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener;
+import cn.iocoder.yudao.module.system.mq.message.sms.SysSmsChannelRefreshMessage;
+import cn.iocoder.yudao.module.system.service.sms.SysSmsChannelService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * 针对 {@link SysSmsChannelRefreshMessage} 的消费者
+ *
+ * @author 芋道源码
+ */
+@Component
+@Slf4j
+public class SysSmsChannelRefreshConsumer extends AbstractChannelMessageListener {
+
+ @Resource
+ private SysSmsChannelService smsChannelService;
+
+ @Override
+ public void onMessage(SysSmsChannelRefreshMessage message) {
+ log.info("[onMessage][收到 SmsChannel 刷新消息]");
+ smsChannelService.initSmsClients();
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/sms/SysSmsSendConsumer.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/sms/SysSmsSendConsumer.java
new file mode 100644
index 0000000..feeeeef
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/sms/SysSmsSendConsumer.java
@@ -0,0 +1,30 @@
+package cn.iocoder.yudao.module.system.mq.consumer.sms;
+
+import cn.iocoder.yudao.coreservice.modules.system.mq.message.sms.SysSmsSendMessage;
+import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsCoreService;
+import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessageListener;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * 针对 {@link SysSmsSendMessage} 的消费者
+ *
+ * @author zzf
+ * @date 2021/3/9 16:35
+ */
+@Component
+@Slf4j
+public class SysSmsSendConsumer extends AbstractStreamMessageListener {
+
+ @Resource
+ private SysSmsCoreService smsCoreService;
+
+ @Override
+ public void onMessage(SysSmsSendMessage message) {
+ log.info("[onMessage][消息内容({})]", message);
+ smsCoreService.doSendSms(message);
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/sms/SysSmsTemplateRefreshConsumer.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/sms/SysSmsTemplateRefreshConsumer.java
new file mode 100644
index 0000000..36e2b4d
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/sms/SysSmsTemplateRefreshConsumer.java
@@ -0,0 +1,29 @@
+package cn.iocoder.yudao.module.system.mq.consumer.sms;
+
+import cn.iocoder.yudao.module.system.mq.message.sms.SysSmsTemplateRefreshMessage;
+import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsTemplateCoreService;
+import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * 针对 {@link SysSmsTemplateRefreshMessage} 的消费者
+ *
+ * @author 芋道源码
+ */
+@Component
+@Slf4j
+public class SysSmsTemplateRefreshConsumer extends AbstractChannelMessageListener {
+
+ @Resource
+ private SysSmsTemplateCoreService smsTemplateCoreService;
+
+ @Override
+ public void onMessage(SysSmsTemplateRefreshMessage message) {
+ log.info("[onMessage][收到 SmsTemplate 刷新消息]");
+ smsTemplateCoreService.initLocalCache();
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/dept/SysDeptRefreshMessage.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/dept/SysDeptRefreshMessage.java
new file mode 100644
index 0000000..4403a28
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/dept/SysDeptRefreshMessage.java
@@ -0,0 +1,21 @@
+package cn.iocoder.yudao.module.system.mq.message.dept;
+
+import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 部门数据刷新 Message
+ *
+ * @author 芋道源码
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SysDeptRefreshMessage extends AbstractChannelMessage {
+
+ @Override
+ public String getChannel() {
+ return "system.dept.refresh";
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/dict/SysDictDataRefreshMessage.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/dict/SysDictDataRefreshMessage.java
new file mode 100644
index 0000000..7d919dd
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/dict/SysDictDataRefreshMessage.java
@@ -0,0 +1,19 @@
+package cn.iocoder.yudao.module.system.mq.message.dict;
+
+import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 字典数据数据刷新 Message
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SysDictDataRefreshMessage extends AbstractChannelMessage {
+
+ @Override
+ public String getChannel() {
+ return "system.dict-data.refresh";
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/mail/SysMailSendMessage.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/mail/SysMailSendMessage.java
new file mode 100644
index 0000000..e511b32
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/mail/SysMailSendMessage.java
@@ -0,0 +1,48 @@
+package cn.iocoder.yudao.module.system.mq.message.mail;
+
+import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessage;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotNull;
+import java.util.Map;
+
+/**
+ * 邮箱发送消息
+ *
+ * @author 芋道源码
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SysMailSendMessage extends AbstractStreamMessage {
+
+ /**
+ * 邮箱地址
+ */
+ @NotNull(message = "邮箱地址不能为空")
+ private String address;
+ /**
+ * 短信模板编号
+ */
+ @NotNull(message = "短信模板编号不能为空")
+ private String templateCode;
+ /**
+ * 短信模板参数
+ */
+ private Map templateParams;
+
+ /**
+ * 用户编号,允许空
+ */
+ private Integer userId;
+ /**
+ * 用户类型,允许空
+ */
+ private Integer userType;
+
+ @Override
+ public String getStreamKey() {
+ return "system.mail.send";
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/permission/SysMenuRefreshMessage.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/permission/SysMenuRefreshMessage.java
new file mode 100644
index 0000000..d829f70
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/permission/SysMenuRefreshMessage.java
@@ -0,0 +1,21 @@
+package cn.iocoder.yudao.module.system.mq.message.permission;
+
+import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 菜单数据刷新 Message
+ *
+ * @author 芋道源码
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SysMenuRefreshMessage extends AbstractChannelMessage {
+
+ @Override
+ public String getChannel() {
+ return "system.menu.refresh";
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/permission/SysRoleMenuRefreshMessage.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/permission/SysRoleMenuRefreshMessage.java
new file mode 100644
index 0000000..1cfd0e8
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/permission/SysRoleMenuRefreshMessage.java
@@ -0,0 +1,21 @@
+package cn.iocoder.yudao.module.system.mq.message.permission;
+
+import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 角色与菜单数据刷新 Message
+ *
+ * @author 芋道源码
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SysRoleMenuRefreshMessage extends AbstractChannelMessage {
+
+ @Override
+ public String getChannel() {
+ return "system.role-menu.refresh";
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/permission/SysRoleRefreshMessage.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/permission/SysRoleRefreshMessage.java
new file mode 100644
index 0000000..9ad25c6
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/permission/SysRoleRefreshMessage.java
@@ -0,0 +1,21 @@
+package cn.iocoder.yudao.module.system.mq.message.permission;
+
+import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 角色数据刷新 Message
+ *
+ * @author 芋道源码
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SysRoleRefreshMessage extends AbstractChannelMessage {
+
+ @Override
+ public String getChannel() {
+ return "system.role.refresh";
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/sms/SysSmsChannelRefreshMessage.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/sms/SysSmsChannelRefreshMessage.java
new file mode 100644
index 0000000..296df41
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/sms/SysSmsChannelRefreshMessage.java
@@ -0,0 +1,21 @@
+package cn.iocoder.yudao.module.system.mq.message.sms;
+
+import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 短信渠道的数据刷新 Message
+ *
+ * @author 芋道源码
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SysSmsChannelRefreshMessage extends AbstractChannelMessage {
+
+ @Override
+ public String getChannel() {
+ return "system.sms-channel.refresh";
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/sms/SysSmsTemplateRefreshMessage.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/sms/SysSmsTemplateRefreshMessage.java
new file mode 100644
index 0000000..955af3e
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/sms/SysSmsTemplateRefreshMessage.java
@@ -0,0 +1,21 @@
+package cn.iocoder.yudao.module.system.mq.message.sms;
+
+import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 短信模板的数据刷新 Message
+ *
+ * @author 芋道源码
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SysSmsTemplateRefreshMessage extends AbstractChannelMessage {
+
+ @Override
+ public String getChannel() {
+ return "system.sms-template.refresh";
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/producer/dept/SysDeptProducer.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/producer/dept/SysDeptProducer.java
new file mode 100644
index 0000000..b4f9dac
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/producer/dept/SysDeptProducer.java
@@ -0,0 +1,26 @@
+package cn.iocoder.yudao.module.system.mq.producer.dept;
+
+import cn.iocoder.yudao.module.system.mq.message.dept.SysDeptRefreshMessage;
+import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * Dept 部门相关消息的 Producer
+ */
+@Component
+public class SysDeptProducer {
+
+ @Resource
+ private RedisMQTemplate redisMQTemplate;
+
+ /**
+ * 发送 {@link SysDeptRefreshMessage} 消息
+ */
+ public void sendDeptRefreshMessage() {
+ SysDeptRefreshMessage message = new SysDeptRefreshMessage();
+ redisMQTemplate.send(message);
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/producer/dict/SysDictDataProducer.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/producer/dict/SysDictDataProducer.java
new file mode 100644
index 0000000..165de33
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/producer/dict/SysDictDataProducer.java
@@ -0,0 +1,26 @@
+package cn.iocoder.yudao.module.system.mq.producer.dict;
+
+import cn.iocoder.yudao.module.system.mq.message.dict.SysDictDataRefreshMessage;
+import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * DictData 字典数据相关消息的 Producer
+ */
+@Component
+public class SysDictDataProducer {
+
+ @Resource
+ private RedisMQTemplate redisMQTemplate;
+
+ /**
+ * 发送 {@link SysDictDataRefreshMessage} 消息
+ */
+ public void sendDictDataRefreshMessage() {
+ SysDictDataRefreshMessage message = new SysDictDataRefreshMessage();
+ redisMQTemplate.send(message);
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/producer/permission/SysMenuProducer.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/producer/permission/SysMenuProducer.java
new file mode 100644
index 0000000..d035824
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/producer/permission/SysMenuProducer.java
@@ -0,0 +1,26 @@
+package cn.iocoder.yudao.module.system.mq.producer.permission;
+
+import cn.iocoder.yudao.module.system.mq.message.permission.SysMenuRefreshMessage;
+import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * Menu 菜单相关消息的 Producer
+ */
+@Component
+public class SysMenuProducer {
+
+ @Resource
+ private RedisMQTemplate redisMQTemplate;
+
+ /**
+ * 发送 {@link SysMenuRefreshMessage} 消息
+ */
+ public void sendMenuRefreshMessage() {
+ SysMenuRefreshMessage message = new SysMenuRefreshMessage();
+ redisMQTemplate.send(message);
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/producer/permission/SysPermissionProducer.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/producer/permission/SysPermissionProducer.java
new file mode 100644
index 0000000..ca5141d
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/producer/permission/SysPermissionProducer.java
@@ -0,0 +1,26 @@
+package cn.iocoder.yudao.module.system.mq.producer.permission;
+
+import cn.iocoder.yudao.module.system.mq.message.permission.SysRoleMenuRefreshMessage;
+import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * Permission 权限相关消息的 Producer
+ */
+@Component
+public class SysPermissionProducer {
+
+ @Resource
+ private RedisMQTemplate redisMQTemplate;
+
+ /**
+ * 发送 {@link SysRoleMenuRefreshMessage} 消息
+ */
+ public void sendRoleMenuRefreshMessage() {
+ SysRoleMenuRefreshMessage message = new SysRoleMenuRefreshMessage();
+ redisMQTemplate.send(message);
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/producer/permission/SysRoleProducer.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/producer/permission/SysRoleProducer.java
new file mode 100644
index 0000000..1fb1be9
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/producer/permission/SysRoleProducer.java
@@ -0,0 +1,28 @@
+package cn.iocoder.yudao.module.system.mq.producer.permission;
+
+import cn.iocoder.yudao.module.system.mq.message.permission.SysRoleRefreshMessage;
+import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * Role 角色相关消息的 Producer
+ *
+ * @author 芋道源码
+ */
+@Component
+public class SysRoleProducer {
+
+ @Resource
+ private RedisMQTemplate redisMQTemplate;
+
+ /**
+ * 发送 {@link SysRoleRefreshMessage} 消息
+ */
+ public void sendRoleRefreshMessage() {
+ SysRoleRefreshMessage message = new SysRoleRefreshMessage();
+ redisMQTemplate.send(message);
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/producer/sms/SysSmsProducer.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/producer/sms/SysSmsProducer.java
new file mode 100644
index 0000000..abd343a
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/producer/sms/SysSmsProducer.java
@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.module.system.mq.producer.sms;
+
+import cn.iocoder.yudao.module.system.mq.message.sms.SysSmsChannelRefreshMessage;
+import cn.iocoder.yudao.module.system.mq.message.sms.SysSmsTemplateRefreshMessage;
+import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * Sms 短信相关消息的 Producer
+ *
+ * @author zzf
+ * @date 2021/3/9 16:35
+ */
+@Slf4j
+@Component
+public class SysSmsProducer {
+
+ @Resource
+ private RedisMQTemplate redisMQTemplate;
+
+ /**
+ * 发送 {@link SysSmsChannelRefreshMessage} 消息
+ */
+ public void sendSmsChannelRefreshMessage() {
+ SysSmsChannelRefreshMessage message = new SysSmsChannelRefreshMessage();
+ redisMQTemplate.send(message);
+ }
+
+ /**
+ * 发送 {@link SysSmsTemplateRefreshMessage} 消息
+ */
+ public void sendSmsTemplateRefreshMessage() {
+ SysSmsTemplateRefreshMessage message = new SysSmsTemplateRefreshMessage();
+ redisMQTemplate.send(message);
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/package-info.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/package-info.java
new file mode 100644
index 0000000..df82ac7
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/package-info.java
@@ -0,0 +1,8 @@
+/**
+ * system 模块下,我们放通用业务,支撑上层的核心业务。
+ * 例如说:用户、部门、权限、数据字典等等
+ *
+ * 1. Controller URL:以 /system/ 开头,避免和其它 Module 冲突
+ * 2. DataObject 表名:以 system_ 开头,方便在数据库中区分
+ */
+package cn.iocoder.yudao.module.system;
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/auth/SysAuthService.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/auth/SysAuthService.java
new file mode 100644
index 0000000..b111147
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/auth/SysAuthService.java
@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.system.service.auth;
+
+import cn.iocoder.yudao.module.system.controller.auth.vo.auth.*;
+import cn.iocoder.yudao.framework.security.core.service.SecurityAuthFrameworkService;
+
+import javax.validation.Valid;
+
+/**
+ * 管理后台的认证 Service 接口
+ *
+ * 提供用户的账号密码登录、token 的校验等认证相关的功能
+ *
+ * @author 芋道源码
+ */
+public interface SysAuthService extends SecurityAuthFrameworkService {
+
+ /**
+ * 账号登录
+ *
+ * @param reqVO 登录信息
+ * @param userIp 用户 IP
+ * @param userAgent 用户 UA
+ * @return 身份令牌,使用 JWT 方式
+ */
+ String login(@Valid SysAuthLoginReqVO reqVO, String userIp, String userAgent);
+
+ /**
+ * 社交登录,使用 code 授权码
+ *
+ * @param reqVO 登录信息
+ * @param userIp 用户 IP
+ * @param userAgent 用户 UA
+ * @return 身份令牌,使用 JWT 方式
+ */
+ String socialLogin(@Valid SysAuthSocialLoginReqVO reqVO, String userIp, String userAgent);
+
+ /**
+ * 社交登录,使用 code 授权码 + 账号密码
+ *
+ * @param reqVO 登录信息
+ * @param userIp 用户 IP
+ * @param userAgent 用户 UA
+ * @return 身份令牌,使用 JWT 方式
+ */
+ String socialLogin2(@Valid SysAuthSocialLogin2ReqVO reqVO, String userIp, String userAgent);
+
+ /**
+ * 社交绑定,使用 code 授权码
+ *
+ * @param userId 用户编号
+ * @param reqVO 绑定信息
+ */
+ void socialBind(Long userId, @Valid SysAuthSocialBindReqVO reqVO);
+
+}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/auth/SysAuthServiceImpl.java
index cf0592e..bd7fdf2 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/auth/SysAuthServiceImpl.java
@@ -1,19 +1,19 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.auth.impl;
+package cn.iocoder.yudao.module.system.service.auth;
import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthLoginReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthSocialBindReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthSocialLogin2ReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthSocialLoginReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.convert.auth.SysAuthConvert;
+import cn.iocoder.yudao.module.system.controller.auth.vo.auth.SysAuthLoginReqVO;
+import cn.iocoder.yudao.module.system.controller.auth.vo.auth.SysAuthSocialBindReqVO;
+import cn.iocoder.yudao.module.system.controller.auth.vo.auth.SysAuthSocialLogin2ReqVO;
+import cn.iocoder.yudao.module.system.controller.auth.vo.auth.SysAuthSocialLoginReqVO;
+import cn.iocoder.yudao.module.system.convert.auth.SysAuthConvert;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
-import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginLogTypeEnum;
-import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum;
-import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysAuthService;
-import cn.iocoder.yudao.adminserver.modules.system.service.common.SysCaptchaService;
-import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService;
-import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
+import cn.iocoder.yudao.module.system.enums.logger.SysLoginLogTypeEnum;
+import cn.iocoder.yudao.module.system.enums.logger.SysLoginResultEnum;
+import cn.iocoder.yudao.module.system.service.auth.SysAuthService;
+import cn.iocoder.yudao.module.system.service.common.SysCaptchaService;
+import cn.iocoder.yudao.module.system.service.dept.SysPostService;
+import cn.iocoder.yudao.module.system.service.permission.SysPermissionService;
+import cn.iocoder.yudao.module.system.service.user.SysUserService;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService;
@@ -33,7 +33,6 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.DisabledException;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.userdetails.UserDetails;
@@ -47,7 +46,7 @@ import java.util.List;
import java.util.Objects;
import java.util.Set;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.*;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
import static java.util.Collections.singleton;
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/auth/SysUserSessionService.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/auth/SysUserSessionService.java
new file mode 100644
index 0000000..f47c04b
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/auth/SysUserSessionService.java
@@ -0,0 +1,29 @@
+package cn.iocoder.yudao.module.system.service.auth;
+
+import cn.iocoder.yudao.module.system.controller.auth.vo.session.SysUserSessionPageReqVO;
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+
+/**
+ * 在线用户 Session Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface SysUserSessionService {
+
+ /**
+ * 获得在线用户分页列表
+ *
+ * @param reqVO 分页条件
+ * @return 份额与列表
+ */
+ PageResult getUserSessionPage(SysUserSessionPageReqVO reqVO);
+
+ /**
+ * 移除超时的在线用户
+ *
+ * @return {@link Long } 移出的超时用户数量
+ **/
+ long clearSessionTimeout();
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/auth/SysUserSessionServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/auth/SysUserSessionServiceImpl.java
new file mode 100644
index 0000000..83bc371
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/auth/SysUserSessionServiceImpl.java
@@ -0,0 +1,97 @@
+package cn.iocoder.yudao.module.system.service.auth;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.iocoder.yudao.module.system.controller.auth.vo.session.SysUserSessionPageReqVO;
+import cn.iocoder.yudao.module.system.dal.mysql.auth.SysUserSessionMapper;
+import cn.iocoder.yudao.module.system.enums.logger.SysLoginLogTypeEnum;
+import cn.iocoder.yudao.module.system.enums.logger.SysLoginResultEnum;
+import cn.iocoder.yudao.module.system.service.auth.SysUserSessionService;
+import cn.iocoder.yudao.module.system.service.user.SysUserService;
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO;
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
+import cn.iocoder.yudao.coreservice.modules.system.dal.redis.auth.SysLoginUserCoreRedisDAO;
+import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService;
+import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
+import com.google.common.collect.Lists;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
+
+/**
+ * 在线用户 Session Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Slf4j
+@Service
+public class SysUserSessionServiceImpl implements SysUserSessionService {
+
+ @Resource
+ private SysUserSessionMapper userSessionMapper;
+ @Resource
+ private SysUserService userService;
+ @Resource
+ private SysLoginLogCoreService loginLogCoreService;
+
+ @Resource
+ private SysLoginUserCoreRedisDAO loginUserCoreRedisDAO;
+
+ @Override
+ public PageResult getUserSessionPage(SysUserSessionPageReqVO reqVO) {
+ // 处理基于用户昵称的查询
+ Collection userIds = null;
+ if (StrUtil.isNotEmpty(reqVO.getUsername())) {
+ userIds = convertSet(userService.getUsersByUsername(reqVO.getUsername()), SysUserDO::getId);
+ if (CollUtil.isEmpty(userIds)) {
+ return PageResult.empty();
+ }
+ }
+ return userSessionMapper.selectPage(reqVO, userIds);
+ }
+
+ // TODO @芋艿:优化下该方法
+ @Override
+ public long clearSessionTimeout() {
+ // 获取db里已经超时的用户列表
+ List sessionTimeoutDOS = userSessionMapper.selectListBySessionTimoutLt();
+ Map timeoutSessionDOMap = sessionTimeoutDOS
+ .stream()
+ .filter(sessionDO -> loginUserCoreRedisDAO.get(sessionDO.getId()) == null)
+ .collect(Collectors.toMap(SysUserSessionDO::getId, o -> o));
+ // 确认已经超时,按批次移出在线用户列表
+ if (CollUtil.isNotEmpty(timeoutSessionDOMap)) {
+ Lists.partition(new ArrayList<>(timeoutSessionDOMap.keySet()), 100)
+ .forEach(userSessionMapper::deleteBatchIds);
+ // 记录用户超时退出日志
+ createTimeoutLogoutLog(timeoutSessionDOMap.values());
+ }
+ return timeoutSessionDOMap.size();
+ }
+
+ private void createTimeoutLogoutLog(Collection timeoutSessionDOS) {
+ for (SysUserSessionDO timeoutSessionDO : timeoutSessionDOS) {
+ SysLoginLogCreateReqDTO reqDTO = new SysLoginLogCreateReqDTO();
+ reqDTO.setLogType(SysLoginLogTypeEnum.LOGOUT_TIMEOUT.getType());
+ reqDTO.setTraceId(TracerUtils.getTraceId());
+ reqDTO.setUserId(timeoutSessionDO.getUserId());
+ reqDTO.setUserType(timeoutSessionDO.getUserType());
+ reqDTO.setUsername(timeoutSessionDO.getUsername());
+ reqDTO.setUserAgent(timeoutSessionDO.getUserAgent());
+ reqDTO.setUserIp(timeoutSessionDO.getUserIp());
+ reqDTO.setResult(SysLoginResultEnum.SUCCESS.getResult());
+ loginLogCoreService.createLoginLog(reqDTO);
+ }
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/common/SysCaptchaService.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/common/SysCaptchaService.java
new file mode 100644
index 0000000..c6a20b9
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/common/SysCaptchaService.java
@@ -0,0 +1,39 @@
+package cn.iocoder.yudao.module.system.service.common;
+
+import cn.iocoder.yudao.module.system.controller.common.vo.SysCaptchaImageRespVO;
+
+/**
+ * 验证码 Service 接口
+ */
+public interface SysCaptchaService {
+
+ /**
+ * 获得验证码图片
+ *
+ * @return 验证码图片
+ */
+ SysCaptchaImageRespVO getCaptchaImage();
+
+ /**
+ * 是否开启图片验证码
+ *
+ * @return 是否
+ */
+ Boolean isCaptchaEnable();
+
+ /**
+ * 获得 uuid 对应的验证码
+ *
+ * @param uuid 验证码编号
+ * @return 验证码
+ */
+ String getCaptchaCode(String uuid);
+
+ /**
+ * 删除 uuid 对应的验证码
+ *
+ * @param uuid 验证码编号
+ */
+ void deleteCaptchaCode(String uuid);
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/common/SysCaptchaServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/common/SysCaptchaServiceImpl.java
new file mode 100644
index 0000000..c97ca03
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/common/SysCaptchaServiceImpl.java
@@ -0,0 +1,53 @@
+package cn.iocoder.yudao.module.system.service.common;
+
+import cn.hutool.captcha.CaptchaUtil;
+import cn.hutool.captcha.CircleCaptcha;
+import cn.hutool.core.util.IdUtil;
+import cn.iocoder.yudao.module.system.framework.captcha.config.CaptchaProperties;
+import cn.iocoder.yudao.module.system.controller.common.vo.SysCaptchaImageRespVO;
+import cn.iocoder.yudao.module.system.convert.common.SysCaptchaConvert;
+import cn.iocoder.yudao.module.system.dal.redis.common.SysCaptchaRedisDAO;
+import cn.iocoder.yudao.module.system.service.common.SysCaptchaService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * 验证码 Service 实现类
+ */
+@Service
+public class SysCaptchaServiceImpl implements SysCaptchaService {
+
+ @Resource
+ private CaptchaProperties captchaProperties;
+
+ @Resource
+ private SysCaptchaRedisDAO captchaRedisDAO;
+
+ @Override
+ public SysCaptchaImageRespVO getCaptchaImage() {
+ // 生成验证码
+ CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(captchaProperties.getWidth(), captchaProperties.getHeight());
+ // 缓存到 Redis 中
+ String uuid = IdUtil.fastSimpleUUID();
+ captchaRedisDAO.set(uuid, captcha.getCode(), captchaProperties.getTimeout());
+ // 返回
+ return SysCaptchaConvert.INSTANCE.convert(uuid, captcha);
+ }
+
+ @Override
+ public Boolean isCaptchaEnable() {
+ return captchaProperties.getEnable();
+ }
+
+ @Override
+ public String getCaptchaCode(String uuid) {
+ return captchaRedisDAO.get(uuid);
+ }
+
+ @Override
+ public void deleteCaptchaCode(String uuid) {
+ captchaRedisDAO.delete(uuid);
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dept/SysDeptService.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dept/SysDeptService.java
new file mode 100644
index 0000000..79913ed
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dept/SysDeptService.java
@@ -0,0 +1,62 @@
+package cn.iocoder.yudao.module.system.service.dept;
+
+import cn.iocoder.yudao.module.system.controller.dept.vo.dept.SysDeptCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.dept.SysDeptListReqVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.dept.SysDeptUpdateReqVO;
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
+
+import java.util.List;
+
+/**
+ * 部门 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface SysDeptService {
+
+ /**
+ * 初始化部门的本地缓存
+ */
+ void initLocalCache();
+
+ /**
+ * 创建部门
+ *
+ * @param reqVO 部门信息
+ * @return 部门编号
+ */
+ Long createDept(SysDeptCreateReqVO reqVO);
+
+ /**
+ * 更新部门
+ *
+ * @param reqVO 部门信息
+ */
+ void updateDept(SysDeptUpdateReqVO reqVO);
+
+ /**
+ * 删除部门
+ *
+ * @param id 部门编号
+ */
+ void deleteDept(Long id);
+
+
+ /**
+ * 筛选部门列表
+ *
+ * @param reqVO 筛选条件请求 VO
+ * @return 部门列表
+ */
+ List getSimpleDepts(SysDeptListReqVO reqVO);
+
+ /**
+ * 获得所有子部门,从缓存中
+ *
+ * @param parentId 部门编号
+ * @param recursive 是否递归获取所有
+ * @return 子部门列表
+ */
+ List getDeptsByParentIdFromCache(Long parentId, boolean recursive);
+
+}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/impl/SysDeptServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dept/SysDeptServiceImpl.java
index 8770fbb..f4f2773 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/impl/SysDeptServiceImpl.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dept/SysDeptServiceImpl.java
@@ -1,19 +1,18 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.dept.impl;
+package cn.iocoder.yudao.module.system.service.dept;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
-import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptListReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.convert.dept.SysDeptConvert;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dept.SysDeptMapper;
+import cn.iocoder.yudao.module.system.controller.dept.vo.dept.SysDeptCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.dept.SysDeptListReqVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.dept.SysDeptUpdateReqVO;
+import cn.iocoder.yudao.module.system.convert.dept.SysDeptConvert;
+import cn.iocoder.yudao.module.system.dal.mysql.dept.SysDeptMapper;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
-import cn.iocoder.yudao.adminserver.modules.system.enums.dept.DeptIdEnum;
-import cn.iocoder.yudao.adminserver.modules.system.mq.producer.dept.SysDeptProducer;
-import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService;
+import cn.iocoder.yudao.module.system.enums.dept.DeptIdEnum;
+import cn.iocoder.yudao.module.system.mq.producer.dept.SysDeptProducer;
+import cn.iocoder.yudao.module.system.service.dept.SysDeptService;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.Multimap;
@@ -26,7 +25,7 @@ import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.*;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.*;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
/**
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dept/SysPostService.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dept/SysPostService.java
new file mode 100644
index 0000000..def06e2
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dept/SysPostService.java
@@ -0,0 +1,89 @@
+package cn.iocoder.yudao.module.system.service.dept;
+
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.system.controller.dept.vo.post.SysPostCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.post.SysPostExportReqVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.post.SysPostPageReqVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.post.SysPostUpdateReqVO;
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
+import org.springframework.lang.Nullable;
+
+import java.util.Collection;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.util.collection.SetUtils.asSet;
+
+/**
+ * 岗位 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface SysPostService {
+
+ /**
+ * 创建岗位
+ *
+ * @param reqVO 岗位信息
+ * @return 岗位编号
+ */
+ Long createPost(SysPostCreateReqVO reqVO);
+
+ /**
+ * 更新岗位
+ *
+ * @param reqVO 岗位信息
+ */
+ void updatePost(SysPostUpdateReqVO reqVO);
+
+ /**
+ * 删除岗位信息
+ *
+ * @param id 岗位编号
+ */
+ void deletePost(Long id);
+
+ /**
+ * 获得岗位列表
+ *
+ * @param ids 岗位编号数组。如果为空,不进行筛选
+ * @return 部门列表
+ */
+ default List getPosts(@Nullable Collection ids) {
+ return getPosts(ids, asSet(CommonStatusEnum.ENABLE.getStatus(), CommonStatusEnum.DISABLE.getStatus()));
+ }
+
+ /**
+ * 获得符合条件的岗位列表
+ *
+ * @param ids 岗位编号数组。如果为空,不进行筛选
+ * @param statuses 状态数组。如果为空,不进行筛选
+ * @return 部门列表
+ */
+ List getPosts(@Nullable Collection ids, @Nullable Collection statuses);
+
+ /**
+ * 获得岗位分页列表
+ *
+ * @param reqVO 分页条件
+ * @return 部门分页列表
+ */
+ PageResult getPostPage(SysPostPageReqVO reqVO);
+
+ /**
+ * 获得岗位列表
+ *
+ * @param reqVO 查询条件
+ * @return 部门列表
+ */
+ List getPosts(SysPostExportReqVO reqVO);
+
+ /**
+ * 获得岗位信息
+ *
+ * @param id 岗位编号
+ * @return 岗位信息
+ */
+ SysPostDO getPost(Long id);
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dept/SysPostServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dept/SysPostServiceImpl.java
new file mode 100644
index 0000000..178daee
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dept/SysPostServiceImpl.java
@@ -0,0 +1,129 @@
+package cn.iocoder.yudao.module.system.service.dept;
+
+import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.system.controller.dept.vo.post.SysPostCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.post.SysPostExportReqVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.post.SysPostPageReqVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.post.SysPostUpdateReqVO;
+import cn.iocoder.yudao.module.system.convert.dept.SysPostConvert;
+import cn.iocoder.yudao.module.system.dal.mysql.dept.SysPostMapper;
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
+import cn.iocoder.yudao.module.system.service.dept.SysPostService;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+import java.util.Collection;
+import java.util.List;
+
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.*;
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+
+/**
+ * 岗位 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class SysPostServiceImpl implements SysPostService {
+
+ @Resource
+ private SysPostMapper postMapper;
+
+ @Override
+ public Long createPost(SysPostCreateReqVO reqVO) {
+ // 校验正确性
+ this.checkCreateOrUpdate(null, reqVO.getName(), reqVO.getCode());
+ // 插入岗位
+ SysPostDO post = SysPostConvert.INSTANCE.convert(reqVO);
+ postMapper.insert(post);
+ return post.getId();
+ }
+
+ @Override
+ public void updatePost(SysPostUpdateReqVO reqVO) {
+ // 校验正确性
+ this.checkCreateOrUpdate(reqVO.getId(), reqVO.getName(), reqVO.getCode());
+ // 更新岗位
+ SysPostDO updateObj = SysPostConvert.INSTANCE.convert(reqVO);
+ postMapper.updateById(updateObj);
+ }
+
+ @Override
+ public void deletePost(Long id) {
+ // 校验是否存在
+ this.checkPostExists(id);
+ // 删除部门
+ postMapper.deleteById(id);
+ }
+
+ @Override
+ public List getPosts(Collection ids, Collection statuses) {
+ return postMapper.selectList(ids, statuses);
+ }
+
+ @Override
+ public PageResult getPostPage(SysPostPageReqVO reqVO) {
+ return postMapper.selectPage(reqVO);
+ }
+
+ @Override
+ public List getPosts(SysPostExportReqVO reqVO) {
+ return postMapper.selectList(reqVO);
+ }
+
+ @Override
+ public SysPostDO getPost(Long id) {
+ return postMapper.selectById(id);
+ }
+
+ private void checkCreateOrUpdate(Long id, String name, String code) {
+ // 校验自己存在
+ checkPostExists(id);
+ // 校验岗位名的唯一性
+ checkPostNameUnique(id, name);
+ // 校验岗位编码的唯一性
+ checkPostCodeUnique(id, code);
+ }
+
+ private void checkPostNameUnique(Long id, String name) {
+ SysPostDO post = postMapper.selectByName(name);
+ if (post == null) {
+ return;
+ }
+ // 如果 id 为空,说明不用比较是否为相同 id 的岗位
+ if (id == null) {
+ throw ServiceExceptionUtil.exception(POST_NAME_DUPLICATE);
+ }
+ if (!post.getId().equals(id)) {
+ throw ServiceExceptionUtil.exception(POST_NAME_DUPLICATE);
+ }
+ }
+
+ private void checkPostCodeUnique(Long id, String code) {
+ SysPostDO post = postMapper.selectByCode(code);
+ if (post == null) {
+ return;
+ }
+ // 如果 id 为空,说明不用比较是否为相同 id 的岗位
+ if (id == null) {
+ throw ServiceExceptionUtil.exception(POST_CODE_DUPLICATE);
+ }
+ if (!post.getId().equals(id)) {
+ throw ServiceExceptionUtil.exception(POST_CODE_DUPLICATE);
+ }
+ }
+
+ private void checkPostExists(Long id) {
+ if (id == null) {
+ return;
+ }
+ SysPostDO post = postMapper.selectById(id);
+ if (post == null) {
+ throw ServiceExceptionUtil.exception(POST_NOT_FOUND);
+ }
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dict/SysDictDataService.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dict/SysDictDataService.java
new file mode 100644
index 0000000..30d4690
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dict/SysDictDataService.java
@@ -0,0 +1,80 @@
+package cn.iocoder.yudao.module.system.service.dict;
+
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.system.controller.dict.vo.data.SysDictDataCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.data.SysDictDataExportReqVO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.data.SysDictDataPageReqVO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.data.SysDictDataUpdateReqVO;
+
+import java.util.List;
+
+/**
+ * 字典数据 Service 接口
+ *
+ * @author ruoyi
+ */
+public interface SysDictDataService {
+
+ /**
+ * 创建字典数据
+ *
+ * @param reqVO 字典数据信息
+ * @return 字典数据编号
+ */
+ Long createDictData(SysDictDataCreateReqVO reqVO);
+
+ /**
+ * 更新字典数据
+ *
+ * @param reqVO 字典数据信息
+ */
+ void updateDictData(SysDictDataUpdateReqVO reqVO);
+
+ /**
+ * 删除字典数据
+ *
+ * @param id 字典数据编号
+ */
+ void deleteDictData(Long id);
+
+ /**
+ * 获得字典数据列表
+ *
+ * @return 字典数据全列表
+ */
+ List getDictDatas();
+
+ /**
+ * 获得字典数据分页列表
+ *
+ * @param reqVO 分页请求
+ * @return 字典数据分页列表
+ */
+ PageResult getDictDataPage(SysDictDataPageReqVO reqVO);
+
+ /**
+ * 获得字典数据列表
+ *
+ * @param reqVO 列表请求
+ * @return 字典数据列表
+ */
+ List getDictDatas(SysDictDataExportReqVO reqVO);
+
+ /**
+ * 获得字典数据详情
+ *
+ * @param id 字典数据编号
+ * @return 字典数据
+ */
+ SysDictDataDO getDictData(Long id);
+
+ /**
+ * 获得指定字典类型的数据数量
+ *
+ * @param dictType 字典类型
+ * @return 数据数量
+ */
+ int countByDictType(String dictType);
+
+}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/impl/SysDictDataServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dict/SysDictDataServiceImpl.java
index 9130ebe..1037779 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/impl/SysDictDataServiceImpl.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dict/SysDictDataServiceImpl.java
@@ -1,21 +1,18 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.dict.impl;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.convert.dict.SysDictDataConvert;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictTypeDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dict.SysDictDataMapper;
-import cn.iocoder.yudao.adminserver.modules.system.mq.producer.dict.SysDictDataProducer;
-import cn.iocoder.yudao.adminserver.modules.system.service.dict.SysDictDataService;
-import cn.iocoder.yudao.adminserver.modules.system.service.dict.SysDictTypeService;
+package cn.iocoder.yudao.module.system.service.dict;
+
+import cn.iocoder.yudao.module.system.controller.dict.vo.data.SysDictDataCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.data.SysDictDataExportReqVO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.data.SysDictDataPageReqVO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.data.SysDictDataUpdateReqVO;
+import cn.iocoder.yudao.module.system.convert.dict.SysDictDataConvert;
+import cn.iocoder.yudao.module.system.dal.dataobject.dict.SysDictTypeDO;
+import cn.iocoder.yudao.module.system.dal.mysql.dict.SysDictDataMapper;
+import cn.iocoder.yudao.module.system.mq.producer.dict.SysDictDataProducer;
+import cn.iocoder.yudao.module.system.service.dict.SysDictDataService;
+import cn.iocoder.yudao.module.system.service.dict.SysDictTypeService;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import com.google.common.annotations.VisibleForTesting;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -23,7 +20,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.*;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
/**
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dict/SysDictTypeService.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dict/SysDictTypeService.java
new file mode 100644
index 0000000..a115269
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dict/SysDictTypeService.java
@@ -0,0 +1,80 @@
+package cn.iocoder.yudao.module.system.service.dict;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.system.controller.dict.vo.type.SysDictTypeCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.type.SysDictTypeExportReqVO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.type.SysDictTypePageReqVO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.type.SysDictTypeUpdateReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.dict.SysDictTypeDO;
+
+import java.util.List;
+
+/**
+ * 字典类型 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface SysDictTypeService {
+
+ /**
+ * 创建字典类型
+ *
+ * @param reqVO 字典类型信息
+ * @return 字典类型编号
+ */
+ Long createDictType(SysDictTypeCreateReqVO reqVO);
+
+ /**
+ * 更新字典类型
+ *
+ * @param reqVO 字典类型信息
+ */
+ void updateDictType(SysDictTypeUpdateReqVO reqVO);
+
+ /**
+ * 删除字典类型
+ *
+ * @param id 字典类型编号
+ */
+ void deleteDictType(Long id);
+
+ /**
+ * 获得字典类型分页列表
+ *
+ * @param reqVO 分页请求
+ * @return 字典类型分页列表
+ */
+ PageResult getDictTypePage(SysDictTypePageReqVO reqVO);
+
+ /**
+ * 获得字典类型列表
+ *
+ * @param reqVO 列表请求
+ * @return 字典类型列表
+ */
+ List getDictTypeList(SysDictTypeExportReqVO reqVO);
+
+ /**
+ * 获得字典类型详情
+ *
+ * @param id 字典类型编号
+ * @return 字典类型
+ */
+ SysDictTypeDO getDictType(Long id);
+
+ /**
+ * 获得字典类型详情
+ *
+ * @param type 字典类型
+ * @return 字典类型详情
+ */
+ SysDictTypeDO getDictType(String type);
+
+ /**
+ * 获得全部字典类型列表
+ *
+ * @return 字典类型列表
+ */
+ List getDictTypeList();
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dict/SysDictTypeServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dict/SysDictTypeServiceImpl.java
new file mode 100644
index 0000000..7cfb1a9
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dict/SysDictTypeServiceImpl.java
@@ -0,0 +1,141 @@
+package cn.iocoder.yudao.module.system.service.dict;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.system.controller.dict.vo.type.SysDictTypeCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.type.SysDictTypeExportReqVO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.type.SysDictTypePageReqVO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.type.SysDictTypeUpdateReqVO;
+import cn.iocoder.yudao.module.system.convert.dict.SysDictTypeConvert;
+import cn.iocoder.yudao.module.system.dal.dataobject.dict.SysDictTypeDO;
+import cn.iocoder.yudao.module.system.dal.mysql.dict.SysDictTypeMapper;
+import com.google.common.annotations.VisibleForTesting;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.*;
+
+/**
+ * 字典类型 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+public class SysDictTypeServiceImpl implements SysDictTypeService {
+
+ @Resource
+ private SysDictDataService dictDataService;
+
+ @Resource
+ private SysDictTypeMapper dictTypeMapper;
+
+ @Override
+ public PageResult getDictTypePage(SysDictTypePageReqVO reqVO) {
+ return dictTypeMapper.selectPage(reqVO);
+ }
+
+ @Override
+ public List getDictTypeList(SysDictTypeExportReqVO reqVO) {
+ return dictTypeMapper.selectList(reqVO);
+ }
+
+ @Override
+ public SysDictTypeDO getDictType(Long id) {
+ return dictTypeMapper.selectById(id);
+ }
+
+ @Override
+ public SysDictTypeDO getDictType(String type) {
+ return dictTypeMapper.selectByType(type);
+ }
+
+ @Override
+ public Long createDictType(SysDictTypeCreateReqVO reqVO) {
+ // 校验正确性
+ this.checkCreateOrUpdate(null, reqVO.getName(), reqVO.getType());
+ // 插入字典类型
+ SysDictTypeDO dictType = SysDictTypeConvert.INSTANCE.convert(reqVO);
+ dictTypeMapper.insert(dictType);
+ return dictType.getId();
+ }
+
+ @Override
+ public void updateDictType(SysDictTypeUpdateReqVO reqVO) {
+ // 校验正确性
+ this.checkCreateOrUpdate(reqVO.getId(), reqVO.getName(), null);
+ // 更新字典类型
+ SysDictTypeDO updateObj = SysDictTypeConvert.INSTANCE.convert(reqVO);
+ dictTypeMapper.updateById(updateObj);
+ }
+
+ @Override
+ public void deleteDictType(Long id) {
+ // 校验是否存在
+ SysDictTypeDO dictType = this.checkDictTypeExists(id);
+ // 校验是否有字典数据
+ if (dictDataService.countByDictType(dictType.getType()) > 0) {
+ throw exception(DICT_TYPE_HAS_CHILDREN);
+ }
+ // 删除字典类型
+ dictTypeMapper.deleteById(id);
+ }
+
+ @Override
+ public List getDictTypeList() {
+ return dictTypeMapper.selectList();
+ }
+
+ private void checkCreateOrUpdate(Long id, String name, String type) {
+ // 校验自己存在
+ checkDictTypeExists(id);
+ // 校验字典类型的名字的唯一性
+ checkDictTypeNameUnique(id, name);
+ // 校验字典类型的类型的唯一性
+ checkDictTypeUnique(id, type);
+ }
+
+ @VisibleForTesting
+ public void checkDictTypeNameUnique(Long id, String name) {
+ SysDictTypeDO dictType = dictTypeMapper.selectByName(name);
+ if (dictType == null) {
+ return;
+ }
+ // 如果 id 为空,说明不用比较是否为相同 id 的字典类型
+ if (id == null) {
+ throw exception(DICT_TYPE_NAME_DUPLICATE);
+ }
+ if (!dictType.getId().equals(id)) {
+ throw exception(DICT_TYPE_NAME_DUPLICATE);
+ }
+ }
+
+ @VisibleForTesting
+ public void checkDictTypeUnique(Long id, String type) {
+ SysDictTypeDO dictType = dictTypeMapper.selectByType(type);
+ if (dictType == null) {
+ return;
+ }
+ // 如果 id 为空,说明不用比较是否为相同 id 的字典类型
+ if (id == null) {
+ throw exception(DICT_TYPE_TYPE_DUPLICATE);
+ }
+ if (!dictType.getId().equals(id)) {
+ throw exception(DICT_TYPE_TYPE_DUPLICATE);
+ }
+ }
+
+ @VisibleForTesting
+ public SysDictTypeDO checkDictTypeExists(Long id) {
+ if (id == null) {
+ return null;
+ }
+ SysDictTypeDO dictType = dictTypeMapper.selectById(id);
+ if (dictType == null) {
+ throw exception(DICT_TYPE_NOT_EXISTS);
+ }
+ return dictType;
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/errorcode/SysErrorCodeService.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/errorcode/SysErrorCodeService.java
new file mode 100644
index 0000000..0eff899
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/errorcode/SysErrorCodeService.java
@@ -0,0 +1,67 @@
+package cn.iocoder.yudao.module.system.service.errorcode;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.system.framework.errorcode.core.service.ErrorCodeFrameworkService;
+import cn.iocoder.yudao.module.system.controller.errorcode.vo.SysErrorCodeCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.errorcode.vo.SysErrorCodeExportReqVO;
+import cn.iocoder.yudao.module.system.controller.errorcode.vo.SysErrorCodePageReqVO;
+import cn.iocoder.yudao.module.system.controller.errorcode.vo.SysErrorCodeUpdateReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.errorcode.SysErrorCodeDO;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 错误码 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface SysErrorCodeService extends ErrorCodeFrameworkService {
+
+ /**
+ * 创建错误码
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ Long createErrorCode(@Valid SysErrorCodeCreateReqVO createReqVO);
+
+ /**
+ * 更新错误码
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateErrorCode(@Valid SysErrorCodeUpdateReqVO updateReqVO);
+
+ /**
+ * 删除错误码
+ *
+ * @param id 编号
+ */
+ void deleteErrorCode(Long id);
+
+ /**
+ * 获得错误码
+ *
+ * @param id 编号
+ * @return 错误码
+ */
+ SysErrorCodeDO getErrorCode(Long id);
+
+ /**
+ * 获得错误码分页
+ *
+ * @param pageReqVO 分页查询
+ * @return 错误码分页
+ */
+ PageResult getErrorCodePage(SysErrorCodePageReqVO pageReqVO);
+
+ /**
+ * 获得错误码列表, 用于 Excel 导出
+ *
+ * @param exportReqVO 查询条件
+ * @return 错误码列表
+ */
+ List getErrorCodeList(SysErrorCodeExportReqVO exportReqVO);
+
+}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/errorcode/impl/SysErrorCodeServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/errorcode/SysErrorCodeServiceImpl.java
index 178e071..af4e9f3 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/errorcode/impl/SysErrorCodeServiceImpl.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/errorcode/SysErrorCodeServiceImpl.java
@@ -1,18 +1,18 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.errorcode.impl;
+package cn.iocoder.yudao.module.system.service.errorcode;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO;
-import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto.ErrorCodeRespDTO;
-import cn.iocoder.yudao.adminserver.modules.system.convert.errorcode.SysErrorCodeConvert;
-import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.errorcode.SysErrorCodeDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.errorcode.SysErrorCodeMapper;
-import cn.iocoder.yudao.adminserver.modules.system.enums.errorcode.SysErrorCodeTypeEnum;
-import cn.iocoder.yudao.adminserver.modules.system.service.errorcode.SysErrorCodeService;
+import cn.iocoder.yudao.module.system.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO;
+import cn.iocoder.yudao.module.system.framework.errorcode.core.dto.ErrorCodeRespDTO;
+import cn.iocoder.yudao.module.system.convert.errorcode.SysErrorCodeConvert;
+import cn.iocoder.yudao.module.system.controller.errorcode.vo.SysErrorCodeCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.errorcode.vo.SysErrorCodeExportReqVO;
+import cn.iocoder.yudao.module.system.controller.errorcode.vo.SysErrorCodePageReqVO;
+import cn.iocoder.yudao.module.system.controller.errorcode.vo.SysErrorCodeUpdateReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.errorcode.SysErrorCodeDO;
+import cn.iocoder.yudao.module.system.dal.mysql.errorcode.SysErrorCodeMapper;
+import cn.iocoder.yudao.module.system.enums.errorcode.SysErrorCodeTypeEnum;
+import cn.iocoder.yudao.module.system.service.errorcode.SysErrorCodeService;
import com.google.common.annotations.VisibleForTesting;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -25,7 +25,7 @@ import java.util.List;
import java.util.Map;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.*;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/logger/SysLoginLogService.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/logger/SysLoginLogService.java
new file mode 100644
index 0000000..8dbff7d
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/logger/SysLoginLogService.java
@@ -0,0 +1,31 @@
+package cn.iocoder.yudao.module.system.service.logger;
+
+import cn.iocoder.yudao.module.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO;
+import cn.iocoder.yudao.module.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO;
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+
+import java.util.List;
+
+/**
+ * 登录日志 Service 接口
+ */
+public interface SysLoginLogService {
+
+ /**
+ * 获得登录日志分页
+ *
+ * @param reqVO 分页条件
+ * @return 登录日志分页
+ */
+ PageResult getLoginLogPage(SysLoginLogPageReqVO reqVO);
+
+ /**
+ * 获得登录日志列表
+ *
+ * @param reqVO 列表条件
+ * @return 登录日志列表
+ */
+ List getLoginLogList(SysLoginLogExportReqVO reqVO);
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/logger/SysLoginLogServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/logger/SysLoginLogServiceImpl.java
new file mode 100644
index 0000000..5d70877
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/logger/SysLoginLogServiceImpl.java
@@ -0,0 +1,33 @@
+package cn.iocoder.yudao.module.system.service.logger;
+
+import cn.iocoder.yudao.module.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO;
+import cn.iocoder.yudao.module.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO;
+import cn.iocoder.yudao.module.system.dal.mysql.logger.SysLoginLogMapper;
+import cn.iocoder.yudao.module.system.service.logger.SysLoginLogService;
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 登录日志 Service 实现
+ */
+@Service
+public class SysLoginLogServiceImpl implements SysLoginLogService {
+
+ @Resource
+ private SysLoginLogMapper loginLogMapper;
+
+ @Override
+ public PageResult getLoginLogPage(SysLoginLogPageReqVO reqVO) {
+ return loginLogMapper.selectPage(reqVO);
+ }
+
+ @Override
+ public List getLoginLogList(SysLoginLogExportReqVO reqVO) {
+ return loginLogMapper.selectList(reqVO);
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/logger/SysOperateLogService.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/logger/SysOperateLogService.java
new file mode 100644
index 0000000..4bab975
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/logger/SysOperateLogService.java
@@ -0,0 +1,32 @@
+package cn.iocoder.yudao.module.system.service.logger;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.operatelog.core.service.OperateLogFrameworkService;
+import cn.iocoder.yudao.module.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO;
+import cn.iocoder.yudao.module.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.logger.SysOperateLogDO;
+
+import java.util.List;
+
+/**
+ * 操作日志 Service 接口
+ */
+public interface SysOperateLogService extends OperateLogFrameworkService {
+
+ /**
+ * 获得操作日志分页列表
+ *
+ * @param reqVO 分页条件
+ * @return 操作日志分页列表
+ */
+ PageResult getOperateLogPage(SysOperateLogPageReqVO reqVO);
+
+ /**
+ * 获得操作日志列表
+ *
+ * @param reqVO 列表条件
+ * @return 日志列表
+ */
+ List getOperateLogs(SysOperateLogExportReqVO reqVO);
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/logger/SysOperateLogServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/logger/SysOperateLogServiceImpl.java
new file mode 100644
index 0000000..c89c37b
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/logger/SysOperateLogServiceImpl.java
@@ -0,0 +1,85 @@
+package cn.iocoder.yudao.module.system.service.logger;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.iocoder.yudao.module.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO;
+import cn.iocoder.yudao.module.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO;
+import cn.iocoder.yudao.module.system.convert.logger.SysOperateLogConvert;
+import cn.iocoder.yudao.module.system.dal.dataobject.logger.SysOperateLogDO;
+import cn.iocoder.yudao.module.system.dal.mysql.logger.SysOperateLogMapper;
+import cn.iocoder.yudao.module.system.service.logger.SysOperateLogService;
+import cn.iocoder.yudao.module.system.service.user.SysUserService;
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.string.StrUtils;
+import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.AsyncResult;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.Future;
+
+import static cn.iocoder.yudao.module.system.dal.dataobject.logger.SysOperateLogDO.JAVA_METHOD_ARGS_MAX_LENGTH;
+import static cn.iocoder.yudao.module.system.dal.dataobject.logger.SysOperateLogDO.RESULT_MAX_LENGTH;
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
+
+@Service
+@Slf4j
+public class SysOperateLogServiceImpl implements SysOperateLogService {
+
+ @Resource
+ private SysOperateLogMapper operateLogMapper;
+
+ @Resource
+ private SysUserService userService;
+
+ @Override
+ @Async
+ public Future createOperateLogAsync(OperateLogCreateReqDTO reqVO) {
+ boolean success = false;
+ try {
+ SysOperateLogDO logDO = SysOperateLogConvert.INSTANCE.convert(reqVO);
+ logDO.setJavaMethodArgs(StrUtils.maxLength(logDO.getJavaMethodArgs(), JAVA_METHOD_ARGS_MAX_LENGTH));
+ logDO.setResultData(StrUtils.maxLength(logDO.getResultData(), RESULT_MAX_LENGTH));
+ success = operateLogMapper.insert(logDO) == 1;
+ } catch (Throwable throwable) {
+ // 仅仅打印日志,不对外抛出。原因是,还是要保留现场数据。
+ log.error("[createOperateLogAsync][记录操作日志异常,日志为 ({})]", reqVO, throwable);
+ }
+ return new AsyncResult<>(success);
+ }
+
+ @Override
+ public PageResult getOperateLogPage(SysOperateLogPageReqVO reqVO) {
+ // 处理基于用户昵称的查询
+ Collection userIds = null;
+ if (StrUtil.isNotEmpty(reqVO.getUserNickname())) {
+ userIds = convertSet(userService.getUsersByNickname(reqVO.getUserNickname()), SysUserDO::getId);
+ if (CollUtil.isEmpty(userIds)) {
+ return PageResult.empty();
+ }
+ }
+ // 查询分页
+ return operateLogMapper.selectPage(reqVO, userIds);
+ }
+
+ @Override
+ public List getOperateLogs(SysOperateLogExportReqVO reqVO) {
+ // 处理基于用户昵称的查询
+ Collection userIds = null;
+ if (StrUtil.isNotEmpty(reqVO.getUserNickname())) {
+ userIds = convertSet(userService.getUsersByNickname(reqVO.getUserNickname()), SysUserDO::getId);
+ if (CollUtil.isEmpty(userIds)) {
+ return Collections.emptyList();
+ }
+ }
+ // 查询列表
+ return operateLogMapper.selectList(reqVO, userIds);
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/notice/SysNoticeService.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/notice/SysNoticeService.java
new file mode 100644
index 0000000..c832bef
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/notice/SysNoticeService.java
@@ -0,0 +1,52 @@
+package cn.iocoder.yudao.module.system.service.notice;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.system.controller.notice.vo.SysNoticeCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.notice.vo.SysNoticePageReqVO;
+import cn.iocoder.yudao.module.system.controller.notice.vo.SysNoticeUpdateReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.notice.SysNoticeDO;
+
+/**
+ * 通知公告 Service 接口
+ */
+public interface SysNoticeService {
+
+ /**
+ * 创建岗位公告公告
+ *
+ * @param reqVO 岗位公告公告信息
+ * @return 岗位公告公告编号
+ */
+ Long createNotice(SysNoticeCreateReqVO reqVO);
+
+ /**
+ * 更新岗位公告公告
+ *
+ * @param reqVO 岗位公告公告信息
+ */
+ void updateNotice(SysNoticeUpdateReqVO reqVO);
+
+ /**
+ * 删除岗位公告公告信息
+ *
+ * @param id 岗位公告公告编号
+ */
+ void deleteNotice(Long id);
+
+ /**
+ * 获得岗位公告公告分页列表
+ *
+ * @param reqVO 分页条件
+ * @return 部门分页列表
+ */
+ PageResult pageNotices(SysNoticePageReqVO reqVO);
+
+ /**
+ * 获得岗位公告公告信息
+ *
+ * @param id 岗位公告公告编号
+ * @return 岗位公告公告信息
+ */
+ SysNoticeDO getNotice(Long id);
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/notice/SysNoticeServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/notice/SysNoticeServiceImpl.java
new file mode 100644
index 0000000..aa9f4a6
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/notice/SysNoticeServiceImpl.java
@@ -0,0 +1,75 @@
+package cn.iocoder.yudao.module.system.service.notice;
+
+import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.system.controller.notice.vo.SysNoticeCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.notice.vo.SysNoticePageReqVO;
+import cn.iocoder.yudao.module.system.controller.notice.vo.SysNoticeUpdateReqVO;
+import cn.iocoder.yudao.module.system.convert.notice.SysNoticeConvert;
+import cn.iocoder.yudao.module.system.dal.mysql.notice.SysNoticeMapper;
+import cn.iocoder.yudao.module.system.dal.dataobject.notice.SysNoticeDO;
+import cn.iocoder.yudao.module.system.service.notice.SysNoticeService;
+import com.google.common.annotations.VisibleForTesting;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.NOTICE_NOT_FOUND;
+
+/**
+ * 通知公告 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+public class SysNoticeServiceImpl implements SysNoticeService {
+
+ @Resource
+ private SysNoticeMapper noticeMapper;
+
+ @Override
+ public Long createNotice(SysNoticeCreateReqVO reqVO) {
+ SysNoticeDO notice = SysNoticeConvert.INSTANCE.convert(reqVO);
+ noticeMapper.insert(notice);
+ return notice.getId();
+ }
+
+ @Override
+ public void updateNotice(SysNoticeUpdateReqVO reqVO) {
+ // 校验是否存在
+ this.checkNoticeExists(reqVO.getId());
+ // 更新通知公告
+ SysNoticeDO updateObj = SysNoticeConvert.INSTANCE.convert(reqVO);
+ noticeMapper.updateById(updateObj);
+ }
+
+ @Override
+ public void deleteNotice(Long id) {
+ // 校验是否存在
+ this.checkNoticeExists(id);
+ // 删除通知公告
+ noticeMapper.deleteById(id);
+ }
+
+ @Override
+ public PageResult pageNotices(SysNoticePageReqVO reqVO) {
+ return noticeMapper.selectPage(reqVO);
+ }
+
+ @Override
+ public SysNoticeDO getNotice(Long id) {
+ return noticeMapper.selectById(id);
+ }
+
+ @VisibleForTesting
+ public void checkNoticeExists(Long id) {
+ if (id == null) {
+ return;
+ }
+ SysNoticeDO notice = noticeMapper.selectById(id);
+ if (notice == null) {
+ throw ServiceExceptionUtil.exception(NOTICE_NOT_FOUND);
+ }
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/SysMenuService.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/SysMenuService.java
new file mode 100644
index 0000000..155769a
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/SysMenuService.java
@@ -0,0 +1,100 @@
+package cn.iocoder.yudao.module.system.service.permission;
+
+import cn.iocoder.yudao.module.system.controller.permission.vo.menu.SysMenuCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.menu.SysMenuListReqVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.menu.SysMenuUpdateReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysMenuDO;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 菜单 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface SysMenuService {
+
+ /**
+ * 初始化菜单的本地缓存
+ */
+ void initLocalCache();
+
+ /**
+ * 创建菜单
+ *
+ * @param reqVO 菜单信息
+ * @return 创建出来的菜单编号
+ */
+ Long createMenu(SysMenuCreateReqVO reqVO);
+
+ /**
+ * 更新菜单
+ *
+ * @param reqVO 菜单信息
+ */
+ void updateMenu(SysMenuUpdateReqVO reqVO);
+
+ /**
+ * 删除菜单
+ *
+ * @param id 菜单编号
+ */
+ void deleteMenu(Long id);
+
+ /**
+ * 获得所有菜单列表
+ *
+ * @return 菜单列表
+ */
+ List getMenus();
+
+ /**
+ * 筛选菜单列表
+ *
+ * @param reqVO 筛选条件请求 VO
+ * @return 菜单列表
+ */
+ List getMenus(SysMenuListReqVO reqVO);
+
+ /**
+ * 获得所有菜单,从缓存中
+ *
+ * 任一参数为空时,则返回为空
+ *
+ * @param menuTypes 菜单类型数组
+ * @param menusStatuses 菜单状态数组
+ * @return 菜单列表
+ */
+ List listMenusFromCache(Collection menuTypes, Collection menusStatuses);
+
+ /**
+ * 获得指定编号的菜单数组,从缓存中
+ *
+ * 任一参数为空时,则返回为空
+ *
+ * @param menuIds 菜单编号数组
+ * @param menuTypes 菜单类型数组
+ * @param menusStatuses 菜单状态数组
+ * @return 菜单数组
+ */
+ List listMenusFromCache(Collection menuIds, Collection menuTypes,
+ Collection menusStatuses);
+
+ /**
+ * 获得权限对应的菜单数组
+ *
+ * @param permission 权限标识
+ * @return 数组
+ */
+ List getMenuListByPermissionFromCache(String permission);
+
+ /**
+ * 获得菜单
+ *
+ * @param id 菜单编号
+ * @return 菜单
+ */
+ SysMenuDO getMenu(Long id);
+
+}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/impl/SysMenuServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/SysMenuServiceImpl.java
index 3920022..855d8c9 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/impl/SysMenuServiceImpl.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/SysMenuServiceImpl.java
@@ -1,19 +1,19 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.permission.impl;
+package cn.iocoder.yudao.module.system.service.permission;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuListReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.convert.permission.SysMenuConvert;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysMenuMapper;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO;
-import cn.iocoder.yudao.adminserver.modules.system.enums.permission.MenuIdEnum;
-import cn.iocoder.yudao.adminserver.modules.system.enums.permission.MenuTypeEnum;
-import cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission.SysMenuProducer;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysMenuService;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService;
+import cn.iocoder.yudao.module.system.controller.permission.vo.menu.SysMenuCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.menu.SysMenuListReqVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.menu.SysMenuUpdateReqVO;
+import cn.iocoder.yudao.module.system.convert.permission.SysMenuConvert;
+import cn.iocoder.yudao.module.system.dal.mysql.permission.SysMenuMapper;
+import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysMenuDO;
+import cn.iocoder.yudao.module.system.enums.permission.MenuIdEnum;
+import cn.iocoder.yudao.module.system.enums.permission.MenuTypeEnum;
+import cn.iocoder.yudao.module.system.mq.producer.permission.SysMenuProducer;
+import cn.iocoder.yudao.module.system.service.permission.SysMenuService;
+import cn.iocoder.yudao.module.system.service.permission.SysPermissionService;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableMap;
@@ -31,7 +31,7 @@ import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.*;
/**
* 菜单 Service 实现
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/SysPermissionService.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/SysPermissionService.java
new file mode 100644
index 0000000..aad7a41
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/SysPermissionService.java
@@ -0,0 +1,118 @@
+package cn.iocoder.yudao.module.system.service.permission;
+
+import cn.iocoder.yudao.framework.datapermission.core.dept.service.DeptDataPermissionFrameworkService;
+import cn.iocoder.yudao.framework.security.core.service.SecurityPermissionFrameworkService;
+import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysMenuDO;
+import org.springframework.lang.Nullable;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 权限 Service 接口
+ *
+ * 提供用户-角色、角色-菜单、角色-部门的关联权限处理
+ *
+ * @author 芋道源码
+ */
+public interface SysPermissionService extends SecurityPermissionFrameworkService, DeptDataPermissionFrameworkService {
+
+ /**
+ * 初始化权限的本地缓存
+ */
+ void initLocalCache();
+
+ /**
+ * 获得角色们拥有的菜单列表,从缓存中获取
+ *
+ * 任一参数为空时,则返回为空
+ *
+ * @param roleIds 角色编号数组
+ * @param menuTypes 菜单类型数组
+ * @param menusStatuses 菜单状态数组
+ * @return 菜单列表
+ */
+ List getRoleMenusFromCache(Collection roleIds, Collection menuTypes,
+ Collection menusStatuses);
+
+ /**
+ * 获得用户拥有的角色编号集合
+ *
+ * @param userId 用户编号
+ * @param roleStatuses 角色状态集合. 允许为空,为空时不过滤
+ * @return 角色编号集合
+ */
+ Set getUserRoleIds(Long userId, @Nullable Collection roleStatuses);
+
+ /**
+ * 获得角色拥有的菜单编号集合
+ *
+ * @param roleId 角色编号
+ * @return 菜单编号集合
+ */
+ Set listRoleMenuIds(Long roleId);
+
+ /**
+ * 设置角色菜单
+ *
+ * @param roleId 角色编号
+ * @param menuIds 菜单编号集合
+ */
+ void assignRoleMenu(Long roleId, Set menuIds);
+
+ /**
+ * 获得用户拥有的角色编号集合
+ *
+ * @param userId 用户编号
+ * @return 角色编号集合
+ */
+ Set getUserRoleIdListByUserId(Long userId);
+
+ /**
+ * 获得拥有某个角色的用户编号集合
+ *
+ * @param roleId 角色编号
+ * @return 用户编号集合
+ */
+ Set getUserRoleIdListByRoleId(Long roleId);
+
+ /**
+ * 设置用户角色
+ *
+ * @param userId 角色编号
+ * @param roleIds 角色编号集合
+ */
+ void assignUserRole(Long userId, Set roleIds);
+
+ /**
+ * 设置角色的数据权限
+ *
+ * @param roleId 角色编号
+ * @param dataScope 数据范围
+ * @param dataScopeDeptIds 部门编号数组
+ */
+ void assignRoleDataScope(Long roleId, Integer dataScope, Set dataScopeDeptIds);
+
+ /**
+ * 处理角色删除时,删除关联授权数据
+ *
+ * @param roleId 角色编号
+ */
+ void processRoleDeleted(Long roleId);
+
+ /**
+ * 处理菜单删除时,删除关联授权数据
+ *
+ * @param menuId 菜单编号
+ */
+ void processMenuDeleted(Long menuId);
+
+ /**
+ * 处理用户删除是,删除关联授权数据
+ *
+ * @param userId 用户编号
+ */
+ void processUserDeleted(Long userId);
+
+}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/impl/SysPermissionServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/SysPermissionServiceImpl.java
index 7e90b56..83ca671 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/impl/SysPermissionServiceImpl.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/SysPermissionServiceImpl.java
@@ -1,20 +1,17 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.permission.impl;
+package cn.iocoder.yudao.module.system.service.permission;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysMenuDO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleMenuDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysRoleMenuDO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysUserRoleDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysRoleMenuMapper;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysUserRoleMapper;
-import cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission.SysPermissionProducer;
-import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysMenuService;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService;
+import cn.iocoder.yudao.module.system.dal.mysql.permission.SysRoleMenuMapper;
+import cn.iocoder.yudao.module.system.dal.mysql.permission.SysUserRoleMapper;
+import cn.iocoder.yudao.module.system.mq.producer.permission.SysPermissionProducer;
+import cn.iocoder.yudao.module.system.service.dept.SysDeptService;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/SysRoleService.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/SysRoleService.java
new file mode 100644
index 0000000..47de67f
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/SysRoleService.java
@@ -0,0 +1,134 @@
+package cn.iocoder.yudao.module.system.service.permission;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.system.controller.permission.vo.role.SysRoleCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.role.SysRoleExportReqVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.role.SysRolePageReqVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.role.SysRoleUpdateReqVO;
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
+import org.springframework.lang.Nullable;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 角色 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface SysRoleService {
+
+ /**
+ * 初始化角色的本地缓存
+ */
+ void initLocalCache();
+
+ /**
+ * 创建角色
+ *
+ * @param reqVO 创建角色信息
+ * @return 角色编号
+ */
+ Long createRole(SysRoleCreateReqVO reqVO);
+
+ /**
+ * 更新角色
+ *
+ * @param reqVO 更新角色信息
+ */
+ void updateRole(SysRoleUpdateReqVO reqVO);
+
+ /**
+ * 删除角色
+ *
+ * @param id 角色编号
+ */
+ void deleteRole(Long id);
+
+ /**
+ * 更新角色状态
+ *
+ * @param id 角色编号
+ * @param status 状态
+ */
+ void updateRoleStatus(Long id, Integer status);
+
+ /**
+ * 设置角色的数据权限
+ *
+ * @param id 角色编号
+ * @param dataScope 数据范围
+ * @param dataScopeDeptIds 部门编号数组
+ */
+ void updateRoleDataScope(Long id, Integer dataScope, Set dataScopeDeptIds);
+
+ /**
+ * 获得角色,从缓存中
+ *
+ * @param id 角色编号
+ * @return 角色
+ */
+ SysRoleDO getRoleFromCache(Long id);
+
+ /**
+ * 获得角色列表
+ *
+ * @param statuses 筛选的状态。允许空,空时不筛选
+ * @return 角色列表
+ */
+ List getRoles(@Nullable Collection statuses);
+
+ /**
+ * 获得角色数组,从缓存中
+ *
+ * @param ids 角色编号数组
+ * @return 角色数组
+ */
+ List getRolesFromCache(Collection ids);
+
+ /**
+ * 判断角色数组中,是否有管理员
+ *
+ * @param roleList 角色数组
+ * @return 是否有管理员
+ */
+ boolean hasAnyAdmin(Collection roleList);
+
+ /**
+ * 判断角色编号数组中,是否有管理员
+ *
+ * @param ids 角色编号数组
+ * @return 是否有管理员
+ */
+ default boolean hasAnyAdmin(Set ids) {
+ return hasAnyAdmin(getRolesFromCache(ids));
+ }
+
+ /**
+ * 获得角色
+ *
+ * @param id 角色编号
+ * @return 角色
+ */
+ SysRoleDO getRole(Long id);
+
+ /**
+ * 获得角色分页
+ *
+ * @param reqVO 角色分页查询
+ * @return 角色分页结果
+ */
+ PageResult getRolePage(SysRolePageReqVO reqVO);
+
+ /**
+ * 获得角色列表
+ *
+ * @param reqVO 列表查询
+ * @return 角色列表
+ */
+ List getRoleList(SysRoleExportReqVO reqVO);
+
+
+
+}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/impl/SysRoleServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/SysRoleServiceImpl.java
index 8b29e19..f0c8b16 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/impl/SysRoleServiceImpl.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/SysRoleServiceImpl.java
@@ -1,22 +1,22 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.permission.impl;
+package cn.iocoder.yudao.module.system.service.permission;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRolePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.convert.permission.SysRoleConvert;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysRoleMapper;
+import cn.iocoder.yudao.module.system.controller.permission.vo.role.SysRoleCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.role.SysRoleExportReqVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.role.SysRolePageReqVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.role.SysRoleUpdateReqVO;
+import cn.iocoder.yudao.module.system.convert.permission.SysRoleConvert;
+import cn.iocoder.yudao.module.system.dal.mysql.permission.SysRoleMapper;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
-import cn.iocoder.yudao.adminserver.modules.system.enums.permission.RoleCodeEnum;
-import cn.iocoder.yudao.adminserver.modules.system.enums.permission.SysRoleTypeEnum;
-import cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission.SysRoleProducer;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService;
+import cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum;
+import cn.iocoder.yudao.module.system.enums.permission.SysRoleTypeEnum;
+import cn.iocoder.yudao.module.system.mq.producer.permission.SysRoleProducer;
+import cn.iocoder.yudao.module.system.service.permission.SysPermissionService;
+import cn.iocoder.yudao.module.system.service.permission.SysRoleService;
import cn.iocoder.yudao.framework.security.core.enums.DataScopeEnum;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableMap;
@@ -34,7 +34,7 @@ import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.*;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
/**
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SysSmsChannelService.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SysSmsChannelService.java
new file mode 100644
index 0000000..d7fa604
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SysSmsChannelService.java
@@ -0,0 +1,79 @@
+package cn.iocoder.yudao.module.system.service.sms;
+
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.channel.SysSmsChannelPageReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO;
+
+import javax.validation.Valid;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 短信渠道 Service 接口
+ *
+ * @author zzf
+ * @date 2021/1/25 9:24
+ */
+public interface SysSmsChannelService {
+
+ /**
+ * 初始化短信客户端
+ */
+ void initSmsClients();
+
+ /**
+ * 创建短信渠道
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ Long createSmsChannel(@Valid SysSmsChannelCreateReqVO createReqVO);
+
+ /**
+ * 更新短信渠道
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateSmsChannel(@Valid SysSmsChannelUpdateReqVO updateReqVO);
+
+ /**
+ * 删除短信渠道
+ *
+ * @param id 编号
+ */
+ void deleteSmsChannel(Long id);
+
+ /**
+ * 获得短信渠道
+ *
+ * @param id 编号
+ * @return 短信渠道
+ */
+ SysSmsChannelDO getSmsChannel(Long id);
+
+ /**
+ * 获得短信渠道列表
+ *
+ * @param ids 编号
+ * @return 短信渠道列表
+ */
+ List getSmsChannelList(Collection ids);
+
+ /**
+ * 获得所有短信渠道列表
+ *
+ * @return 短信渠道列表
+ */
+ List getSmsChannelList();
+
+ /**
+ * 获得短信渠道分页
+ *
+ * @param pageReqVO 分页查询
+ * @return 短信渠道分页
+ */
+ PageResult getSmsChannelPage(SysSmsChannelPageReqVO pageReqVO);
+
+}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsChannelServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SysSmsChannelServiceImpl.java
index 59f2a9a..b36016a 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsChannelServiceImpl.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SysSmsChannelServiceImpl.java
@@ -1,14 +1,14 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.sms.impl;
+package cn.iocoder.yudao.module.system.service.sms;
import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.convert.sms.SysSmsChannelConvert;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms.SysSmsChannelMapper;
-import cn.iocoder.yudao.adminserver.modules.system.mq.producer.sms.SysSmsProducer;
-import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsChannelService;
-import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsTemplateService;
+import cn.iocoder.yudao.module.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.channel.SysSmsChannelPageReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO;
+import cn.iocoder.yudao.module.system.convert.sms.SysSmsChannelConvert;
+import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsChannelMapper;
+import cn.iocoder.yudao.module.system.mq.producer.sms.SysSmsProducer;
+import cn.iocoder.yudao.module.system.service.sms.SysSmsChannelService;
+import cn.iocoder.yudao.module.system.service.sms.SysSmsTemplateService;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
@@ -25,8 +25,8 @@ import java.util.Comparator;
import java.util.Date;
import java.util.List;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.SMS_CHANNEL_HAS_CHILDREN;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.SMS_CHANNEL_NOT_EXISTS;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.SMS_CHANNEL_HAS_CHILDREN;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.SMS_CHANNEL_NOT_EXISTS;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
/**
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SysSmsLogService.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SysSmsLogService.java
new file mode 100644
index 0000000..547bc6b
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SysSmsLogService.java
@@ -0,0 +1,34 @@
+package cn.iocoder.yudao.module.system.service.sms;
+
+import cn.iocoder.yudao.module.system.controller.sms.vo.log.SysSmsLogExportReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.log.SysSmsLogPageReqVO;
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+
+import java.util.List;
+
+/**
+ * 短信日志 Service 接口
+ *
+ * @author zzf
+ * @date 13:48 2021/3/2
+ */
+public interface SysSmsLogService {
+
+ /**
+ * 获得短信日志分页
+ *
+ * @param pageReqVO 分页查询
+ * @return 短信日志分页
+ */
+ PageResult getSmsLogPage(SysSmsLogPageReqVO pageReqVO);
+
+ /**
+ * 获得短信日志列表, 用于 Excel 导出
+ *
+ * @param exportReqVO 查询条件
+ * @return 短信日志列表
+ */
+ List getSmsLogList(SysSmsLogExportReqVO exportReqVO);
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SysSmsLogServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SysSmsLogServiceImpl.java
new file mode 100644
index 0000000..f390c98
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SysSmsLogServiceImpl.java
@@ -0,0 +1,38 @@
+package cn.iocoder.yudao.module.system.service.sms;
+
+import cn.iocoder.yudao.module.system.controller.sms.vo.log.SysSmsLogExportReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.log.SysSmsLogPageReqVO;
+import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsLogMapper;
+import cn.iocoder.yudao.module.system.service.sms.SysSmsLogService;
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 短信日志 Service 实现类
+ *
+ * @author zzf
+ * @date 2021/1/25 9:25
+ */
+@Slf4j
+@Service
+public class SysSmsLogServiceImpl implements SysSmsLogService {
+
+ @Resource
+ private SysSmsLogMapper smsLogMapper;
+
+ @Override
+ public PageResult getSmsLogPage(SysSmsLogPageReqVO pageReqVO) {
+ return smsLogMapper.selectPage(pageReqVO);
+ }
+
+ @Override
+ public List getSmsLogList(SysSmsLogExportReqVO exportReqVO) {
+ return smsLogMapper.selectList(exportReqVO);
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SysSmsTemplateService.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SysSmsTemplateService.java
new file mode 100644
index 0000000..96873a0
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SysSmsTemplateService.java
@@ -0,0 +1,92 @@
+package cn.iocoder.yudao.module.system.service.sms;
+
+import cn.iocoder.yudao.module.system.controller.sms.vo.template.SysSmsTemplateCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.template.SysSmsTemplateExportReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.template.SysSmsTemplatePageReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.template.SysSmsTemplateUpdateReqVO;
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+
+import javax.validation.Valid;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 短信模板 Service 接口
+ *
+ * @author zzf
+ * @date 2021/1/25 9:24
+ */
+public interface SysSmsTemplateService {
+
+ /**
+ * 获得短信模板
+ *
+ * @param code 模板编码
+ * @return 短信模板
+ */
+ SysSmsTemplateDO getSmsTemplateByCode(String code);
+
+ /**
+ * 创建短信模板
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ Long createSmsTemplate(@Valid SysSmsTemplateCreateReqVO createReqVO);
+
+ /**
+ * 更新短信模板
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateSmsTemplate(@Valid SysSmsTemplateUpdateReqVO updateReqVO);
+
+ /**
+ * 删除短信模板
+ *
+ * @param id 编号
+ */
+ void deleteSmsTemplate(Long id);
+
+ /**
+ * 获得短信模板
+ *
+ * @param id 编号
+ * @return 短信模板
+ */
+ SysSmsTemplateDO getSmsTemplate(Long id);
+
+ /**
+ * 获得短信模板列表
+ *
+ * @param ids 编号
+ * @return 短信模板列表
+ */
+ List getSmsTemplateList(Collection ids);
+
+ /**
+ * 获得短信模板分页
+ *
+ * @param pageReqVO 分页查询
+ * @return 短信模板分页
+ */
+ PageResult getSmsTemplatePage(SysSmsTemplatePageReqVO pageReqVO);
+
+ /**
+ * 获得短信模板列表, 用于 Excel 导出
+ *
+ * @param exportReqVO 查询条件
+ * @return 短信模板分页
+ */
+ List getSmsTemplateList(SysSmsTemplateExportReqVO exportReqVO);
+
+ /**
+ * 获得指定短信渠道下的短信模板数量
+ *
+ * @param channelId 短信渠道编号
+ * @return 数量
+ */
+ Integer countByChannelId(Long channelId);
+
+}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsTemplateServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SysSmsTemplateServiceImpl.java
index d8c5b99..3b6e463 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsTemplateServiceImpl.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SysSmsTemplateServiceImpl.java
@@ -1,15 +1,15 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.sms.impl;
+package cn.iocoder.yudao.module.system.service.sms;
import cn.hutool.core.util.ReUtil;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplatePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.convert.sms.SysSmsTemplateConvert;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms.SysSmsTemplateMapper;
-import cn.iocoder.yudao.adminserver.modules.system.mq.producer.sms.SysSmsProducer;
-import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsChannelService;
-import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsTemplateService;
+import cn.iocoder.yudao.module.system.controller.sms.vo.template.SysSmsTemplateCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.template.SysSmsTemplateExportReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.template.SysSmsTemplatePageReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.template.SysSmsTemplateUpdateReqVO;
+import cn.iocoder.yudao.module.system.convert.sms.SysSmsTemplateConvert;
+import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsTemplateMapper;
+import cn.iocoder.yudao.module.system.mq.producer.sms.SysSmsProducer;
+import cn.iocoder.yudao.module.system.service.sms.SysSmsChannelService;
+import cn.iocoder.yudao.module.system.service.sms.SysSmsTemplateService;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
@@ -29,7 +29,7 @@ import java.util.List;
import java.util.Objects;
import java.util.regex.Pattern;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.*;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
/**
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/tenant/SysTenantService.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/tenant/SysTenantService.java
new file mode 100755
index 0000000..357e23a
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/tenant/SysTenantService.java
@@ -0,0 +1,83 @@
+package cn.iocoder.yudao.module.system.service.tenant;
+
+import cn.iocoder.yudao.module.system.controller.tenant.vo.SysTenantCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.tenant.vo.SysTenantExportReqVO;
+import cn.iocoder.yudao.module.system.controller.tenant.vo.SysTenantPageReqVO;
+import cn.iocoder.yudao.module.system.controller.tenant.vo.SysTenantUpdateReqVO;
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.tenant.SysTenantDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+
+import javax.validation.Valid;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 租户 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface SysTenantService {
+
+ /**
+ * 创建租户
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ Long createTenant(@Valid SysTenantCreateReqVO createReqVO);
+
+ /**
+ * 更新租户
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateTenant(@Valid SysTenantUpdateReqVO updateReqVO);
+
+ /**
+ * 删除租户
+ *
+ * @param id 编号
+ */
+ void deleteTenant(Long id);
+
+ /**
+ * 获得租户
+ *
+ * @param id 编号
+ * @return 租户
+ */
+ SysTenantDO getTenant(Long id);
+
+ /**
+ * 获得租户列表
+ *
+ * @param ids 编号
+ * @return 租户列表
+ */
+ List getTenantList(Collection ids);
+
+ /**
+ * 获得租户分页
+ *
+ * @param pageReqVO 分页查询
+ * @return 租户分页
+ */
+ PageResult getTenantPage(SysTenantPageReqVO pageReqVO);
+
+ /**
+ * 获得租户列表, 用于 Excel 导出
+ *
+ * @param exportReqVO 查询条件
+ * @return 租户列表
+ */
+ List getTenantList(SysTenantExportReqVO exportReqVO);
+
+ /**
+ * 获得名字对应的租户
+ *
+ * @param name 组户名
+ * @return 租户
+ */
+ SysTenantDO getTenantByName(String name);
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/tenant/SysTenantServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/tenant/SysTenantServiceImpl.java
new file mode 100755
index 0000000..bc76d2b
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/tenant/SysTenantServiceImpl.java
@@ -0,0 +1,91 @@
+package cn.iocoder.yudao.module.system.service.tenant;
+
+import cn.iocoder.yudao.module.system.controller.tenant.vo.SysTenantCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.tenant.vo.SysTenantExportReqVO;
+import cn.iocoder.yudao.module.system.controller.tenant.vo.SysTenantPageReqVO;
+import cn.iocoder.yudao.module.system.controller.tenant.vo.SysTenantUpdateReqVO;
+import cn.iocoder.yudao.module.system.convert.tenant.SysTenantConvert;
+import cn.iocoder.yudao.module.system.dal.mysql.tenant.SysTenantMapper;
+import cn.iocoder.yudao.module.system.service.tenant.SysTenantService;
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.tenant.SysTenantDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+import java.util.Collection;
+import java.util.List;
+
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.TENANT_NOT_EXISTS;
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+
+/**
+ * 租户 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class SysTenantServiceImpl implements SysTenantService {
+
+ @Resource
+ private SysTenantMapper tenantMapper;
+
+ @Override
+ public Long createTenant(SysTenantCreateReqVO createReqVO) {
+ // 插入
+ SysTenantDO tenant = SysTenantConvert.INSTANCE.convert(createReqVO);
+ tenantMapper.insert(tenant);
+ // 返回
+ return tenant.getId();
+ }
+
+ @Override
+ public void updateTenant(SysTenantUpdateReqVO updateReqVO) {
+ // 校验存在
+ this.validateTenantExists(updateReqVO.getId());
+ // 更新
+ SysTenantDO updateObj = SysTenantConvert.INSTANCE.convert(updateReqVO);
+ tenantMapper.updateById(updateObj);
+ }
+
+ @Override
+ public void deleteTenant(Long id) {
+ // 校验存在
+ this.validateTenantExists(id);
+ // 删除
+ tenantMapper.deleteById(id);
+ }
+
+ private void validateTenantExists(Long id) {
+ if (tenantMapper.selectById(id) == null) {
+ throw exception(TENANT_NOT_EXISTS);
+ }
+ }
+
+ @Override
+ public SysTenantDO getTenant(Long id) {
+ return tenantMapper.selectById(id);
+ }
+
+ @Override
+ public List getTenantList(Collection ids) {
+ return tenantMapper.selectBatchIds(ids);
+ }
+
+ @Override
+ public PageResult getTenantPage(SysTenantPageReqVO pageReqVO) {
+ return tenantMapper.selectPage(pageReqVO);
+ }
+
+ @Override
+ public List getTenantList(SysTenantExportReqVO exportReqVO) {
+ return tenantMapper.selectList(exportReqVO);
+ }
+
+ @Override
+ public SysTenantDO getTenantByName(String name) {
+ return tenantMapper.selectByName(name);
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/user/SysUserService.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/user/SysUserService.java
new file mode 100644
index 0000000..a1f428b
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/user/SysUserService.java
@@ -0,0 +1,156 @@
+package cn.iocoder.yudao.module.system.service.user;
+
+import cn.iocoder.yudao.module.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO;
+import cn.iocoder.yudao.module.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
+import cn.iocoder.yudao.module.system.controller.user.vo.user.*;
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+
+import java.io.InputStream;
+import java.util.*;
+
+/**
+ * 后台用户 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface SysUserService {
+
+ /**
+ * 创建用户
+ *
+ * @param reqVO 用户信息
+ * @return 用户编号
+ */
+ Long createUser(SysUserCreateReqVO reqVO);
+
+ /**
+ * 修改用户
+ *
+ * @param reqVO 用户信息
+ */
+ void updateUser(SysUserUpdateReqVO reqVO);
+
+ /**
+ * 更新用户的最后登陆信息
+ *
+ * @param id 用户编号
+ * @param loginIp 登陆 IP
+ */
+ void updateUserLogin(Long id, String loginIp);
+
+ /**
+ * 修改用户个人信息
+ *
+ * @param id 用户编号
+ * @param reqVO 用户个人信息
+ */
+ void updateUserProfile(Long id, SysUserProfileUpdateReqVO reqVO);
+
+ /**
+ * 修改用户个人密码
+ *
+ * @param id 用户编号
+ * @param reqVO 更新用户个人密码
+ */
+ void updateUserPassword(Long id, SysUserProfileUpdatePasswordReqVO reqVO);
+
+ /**
+ * 更新用户头像
+ *
+ * @param id 用户 id
+ * @param avatarFile 头像文件
+ */
+ String updateUserAvatar(Long id, InputStream avatarFile);
+
+ /**
+ * 修改密码
+ *
+ * @param id 用户编号
+ * @param password 密码
+ */
+ void updateUserPassword(Long id, String password);
+
+ /**
+ * 修改状态
+ *
+ * @param id 用户编号
+ * @param status 状态
+ */
+ void updateUserStatus(Long id, Integer status);
+
+ /**
+ * 删除用户
+ *
+ * @param id 用户编号
+ */
+ void deleteUser(Long id);
+
+ /**
+ * 通过用户名查询用户
+ *
+ * @param username 用户名
+ * @return 用户对象信息
+ */
+ SysUserDO getUserByUsername(String username);
+
+ /**
+ * 获得用户分页列表
+ *
+ * @param reqVO 分页条件
+ * @return 分页列表
+ */
+ PageResult getUserPage(SysUserPageReqVO reqVO);
+
+ /**
+ * 获得用户
+ *
+ * @param id 用户编号
+ * @return 用户
+ */
+ SysUserDO getUser(Long id);
+
+ /**
+ * 获得用户列表
+ *
+ * @param reqVO 列表请求
+ * @return 用户列表
+ */
+ List getUsers(SysUserExportReqVO reqVO);
+
+
+
+ /**
+ * 获得用户列表,基于昵称模糊匹配
+ *
+ * @param nickname 昵称
+ * @return 用户列表
+ */
+ List getUsersByNickname(String nickname);
+
+ /**
+ * 获得用户列表,基于用户账号模糊匹配
+ *
+ * @param username 用户账号
+ * @return 用户列表
+ */
+ List getUsersByUsername(String username);
+
+ /**
+ * 批量导入用户
+ *
+ * @param importUsers 导入用户列表
+ * @param isUpdateSupport 是否支持更新
+ * @return 导入结果
+ */
+ SysUserImportRespVO importUsers(List importUsers, boolean isUpdateSupport);
+
+ /**
+ * 获得指定状态的用户们
+ *
+ * @param status 状态
+ * @return 用户们
+ */
+ List getUsersByStatus(Integer status);
+
+}
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/user/impl/SysUserServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/user/SysUserServiceImpl.java
index 1b6c4e4..5eab9a8 100644
--- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/user/impl/SysUserServiceImpl.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/user/SysUserServiceImpl.java
@@ -1,20 +1,20 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.user.impl;
+package cn.iocoder.yudao.module.system.service.user;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
-import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.*;
-import cn.iocoder.yudao.adminserver.modules.system.convert.user.SysUserConvert;
+import cn.iocoder.yudao.module.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO;
+import cn.iocoder.yudao.module.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
+import cn.iocoder.yudao.module.system.controller.user.vo.user.*;
+import cn.iocoder.yudao.module.system.convert.user.SysUserConvert;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.user.SysUserMapper;
-import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService;
-import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService;
-import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
+import cn.iocoder.yudao.module.system.dal.mysql.user.SysUserMapper;
+import cn.iocoder.yudao.module.system.service.dept.SysDeptService;
+import cn.iocoder.yudao.module.system.service.dept.SysPostService;
+import cn.iocoder.yudao.module.system.service.permission.SysPermissionService;
+import cn.iocoder.yudao.module.system.service.user.SysUserService;
import cn.iocoder.yudao.coreservice.modules.infra.service.file.InfFileCoreService;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService;
@@ -24,7 +24,6 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import com.google.common.annotations.VisibleForTesting;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
@@ -34,7 +33,7 @@ import javax.annotation.Resource;
import java.io.InputStream;
import java.util.*;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.*;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
/**
diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthServiceImplTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/auth/SysAuthServiceImplTest.java
index 6e213a5..75ab194 100644
--- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthServiceImplTest.java
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/auth/SysAuthServiceImplTest.java
@@ -1,14 +1,12 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.auth;
+package cn.iocoder.yudao.module.system.service.auth;
-import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
-import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthLoginReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginLogTypeEnum;
-import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum;
-import cn.iocoder.yudao.adminserver.modules.system.service.auth.impl.SysAuthServiceImpl;
-import cn.iocoder.yudao.adminserver.modules.system.service.common.SysCaptchaService;
-import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService;
-import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
+import cn.iocoder.yudao.module.system.controller.auth.vo.auth.SysAuthLoginReqVO;
+import cn.iocoder.yudao.module.system.enums.logger.SysLoginLogTypeEnum;
+import cn.iocoder.yudao.module.system.enums.logger.SysLoginResultEnum;
+import cn.iocoder.yudao.module.system.service.common.SysCaptchaService;
+import cn.iocoder.yudao.module.system.service.dept.SysPostService;
+import cn.iocoder.yudao.module.system.service.permission.SysPermissionService;
+import cn.iocoder.yudao.module.system.service.user.SysUserService;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService;
import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService;
@@ -17,6 +15,7 @@ import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreServi
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.security.core.LoginUser;
import cn.iocoder.yudao.framework.test.core.util.AssertUtils;
+import cn.iocoder.yudao.module.system.test.BaseDbUnitTest;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
@@ -32,7 +31,7 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
import javax.annotation.Resource;
import java.util.Set;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.*;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
import static java.util.Collections.singleton;
@@ -40,11 +39,6 @@ import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.*;
-/**
- * {@link SysAuthServiceImpl} 的单元测试
- *
- * @author 芋道源码
- */
@Import(SysAuthServiceImpl.class)
public class SysAuthServiceImplTest extends BaseDbUnitTest {
diff --git a/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/auth/SysUserSessionServiceImplTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/auth/SysUserSessionServiceImplTest.java
new file mode 100644
index 0000000..3454572
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/auth/SysUserSessionServiceImplTest.java
@@ -0,0 +1,127 @@
+package cn.iocoder.yudao.module.system.service.auth;
+
+import cn.hutool.core.date.DateUtil;
+import cn.iocoder.yudao.module.system.controller.auth.vo.session.SysUserSessionPageReqVO;
+import cn.iocoder.yudao.module.system.dal.mysql.auth.SysUserSessionMapper;
+import cn.iocoder.yudao.module.system.service.user.SysUserService;
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO;
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
+import cn.iocoder.yudao.coreservice.modules.system.dal.redis.auth.SysLoginUserCoreRedisDAO;
+import cn.iocoder.yudao.coreservice.modules.system.enums.common.SysSexEnum;
+import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService;
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
+import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
+import cn.iocoder.yudao.module.system.test.BaseDbAndRedisUnitTest;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.context.annotation.Import;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import static cn.hutool.core.util.RandomUtil.randomEle;
+import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
+import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
+import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString;
+import static java.util.Collections.singletonList;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.when;
+
+/**
+ * {@link SysUserSessionServiceImpl} 的单元测试
+ *
+ * @author Lyon
+ */
+@Import({SysUserSessionServiceImpl.class})
+public class SysUserSessionServiceImplTest extends BaseDbAndRedisUnitTest {
+
+ @Resource
+ private SysUserSessionServiceImpl userSessionService;
+
+ @Resource
+ private SysUserSessionMapper userSessionMapper;
+
+ @MockBean
+ private SysUserService userService;
+ @MockBean
+ private SysLoginLogCoreService loginLogCoreService;
+ @MockBean
+ private SysLoginUserCoreRedisDAO loginUserCoreRedisDAO;
+
+ @Test
+ public void testGetUserSessionPage_success() {
+ // mock 数据
+ SysUserDO dbUser = randomPojo(SysUserDO.class, o -> {
+ o.setSex(randomEle(SysSexEnum.values()).getSex());
+ o.setStatus(CommonStatusEnum.ENABLE.getStatus());
+ });
+ when(userService.getUsersByUsername(eq(dbUser.getUsername()))).thenReturn(singletonList(dbUser));
+ // 插入可被查询到的数据
+ String userIp = randomString();
+ SysUserSessionDO dbSession = randomPojo(SysUserSessionDO.class, o -> {
+ o.setUserId(dbUser.getId());
+ o.setUserType(randomEle(UserTypeEnum.values()).getValue());
+ o.setUserIp(userIp);
+ });
+ userSessionMapper.insert(dbSession);
+ // 测试 username 不匹配
+ userSessionMapper.insert(ObjectUtils.cloneIgnoreId(dbSession, o -> {
+ o.setId(randomString());
+ o.setUserId(123456L);
+ }));
+ // 测试 userIp 不匹配
+ userSessionMapper.insert(ObjectUtils.cloneIgnoreId(dbSession, o -> {
+ o.setId(randomString());
+ o.setUserIp("testUserIp");
+ }));
+ // 准备参数
+ SysUserSessionPageReqVO reqVO = new SysUserSessionPageReqVO();
+ reqVO.setUsername(dbUser.getUsername());
+ reqVO.setUserIp(userIp);
+
+ // 调用
+ PageResult pageResult = userSessionService.getUserSessionPage(reqVO);
+ // 断言
+ assertEquals(1, pageResult.getTotal());
+ assertEquals(1, pageResult.getList().size());
+ assertPojoEquals(dbSession, pageResult.getList().get(0));
+ }
+
+ // TODO 芋艿:单测写的有问题
+ @Test
+ public void testClearSessionTimeout_success() {
+ // 准备超时数据 120 条, 在线用户 1 条
+ int expectedTimeoutCount = 120, expectedTotal = 1;
+
+ // 准备数据
+ List prepareData = Stream
+ .iterate(0, i -> i)
+ .limit(expectedTimeoutCount)
+ .map(i -> randomPojo(SysUserSessionDO.class, o -> {
+ o.setUserType(randomEle(UserTypeEnum.values()).getValue());
+ o.setSessionTimeout(DateUtil.offsetSecond(new Date(), -1));
+ }))
+ .collect(Collectors.toList());
+ SysUserSessionDO sessionDO = randomPojo(SysUserSessionDO.class, o -> {
+ o.setUserType(randomEle(UserTypeEnum.values()).getValue());
+ o.setSessionTimeout(DateUtil.offsetMinute(new Date(), 30));
+ });
+ prepareData.add(sessionDO);
+ prepareData.forEach(userSessionMapper::insert);
+
+ // 清空超时数据
+ long actualTimeoutCount = userSessionService.clearSessionTimeout();
+ // 校验
+ assertEquals(expectedTimeoutCount, actualTimeoutCount);
+ List userSessionDOS = userSessionMapper.selectList();
+ assertEquals(expectedTotal, userSessionDOS.size());
+ assertPojoEquals(sessionDO, userSessionDOS.get(0), "updateTime");
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/common/SysCaptchaServiceTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/common/SysCaptchaServiceTest.java
new file mode 100644
index 0000000..2248744
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/common/SysCaptchaServiceTest.java
@@ -0,0 +1,65 @@
+package cn.iocoder.yudao.module.system.service.common;
+
+import cn.iocoder.yudao.module.system.controller.common.vo.SysCaptchaImageRespVO;
+import cn.iocoder.yudao.module.system.dal.redis.common.SysCaptchaRedisDAO;
+import cn.iocoder.yudao.module.system.framework.captcha.config.CaptchaProperties;
+import cn.iocoder.yudao.module.system.test.BaseRedisUnitTest;
+import org.junit.jupiter.api.Test;
+import org.springframework.context.annotation.Import;
+
+import javax.annotation.Resource;
+
+import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString;
+import static org.junit.jupiter.api.Assertions.*;
+
+@Import({SysCaptchaServiceImpl.class, CaptchaProperties.class, SysCaptchaRedisDAO.class})
+public class SysCaptchaServiceTest extends BaseRedisUnitTest {
+
+ @Resource
+ private SysCaptchaServiceImpl captchaService;
+
+ @Resource
+ private SysCaptchaRedisDAO captchaRedisDAO;
+ @Resource
+ private CaptchaProperties captchaProperties;
+
+ @Test
+ public void testGetCaptchaImage() {
+ // 调用
+ SysCaptchaImageRespVO respVO = captchaService.getCaptchaImage();
+ // 断言
+ assertNotNull(respVO.getUuid());
+ assertNotNull(respVO.getImg());
+ String captchaCode = captchaRedisDAO.get(respVO.getUuid());
+ assertNotNull(captchaCode);
+ }
+
+ @Test
+ public void testGetCaptchaCode() {
+ // 准备参数
+ String uuid = randomString();
+ String code = randomString();
+ // mock 数据
+ captchaRedisDAO.set(uuid, code, captchaProperties.getTimeout());
+
+ // 调用
+ String resultCode = captchaService.getCaptchaCode(uuid);
+ // 断言
+ assertEquals(code, resultCode);
+ }
+
+ @Test
+ public void testDeleteCaptchaCode() {
+ // 准备参数
+ String uuid = randomString();
+ String code = randomString();
+ // mock 数据
+ captchaRedisDAO.set(uuid, code, captchaProperties.getTimeout());
+
+ // 调用
+ captchaService.deleteCaptchaCode(uuid);
+ // 断言
+ assertNull(captchaRedisDAO.get(uuid));
+ }
+
+}
diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysDeptServiceTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/dept/SysDeptServiceTest.java
index 78f8cb7..b041e2d 100644
--- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysDeptServiceTest.java
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/dept/SysDeptServiceTest.java
@@ -1,17 +1,16 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.dept;
+package cn.iocoder.yudao.module.system.service.dept;
-import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptListReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptUpdateReqVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.dept.SysDeptCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.dept.SysDeptListReqVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.dept.SysDeptUpdateReqVO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dept.SysDeptMapper;
-import cn.iocoder.yudao.adminserver.modules.system.enums.dept.DeptIdEnum;
-import cn.iocoder.yudao.adminserver.modules.system.mq.producer.dept.SysDeptProducer;
-import cn.iocoder.yudao.adminserver.modules.system.service.dept.impl.SysDeptServiceImpl;
+import cn.iocoder.yudao.module.system.dal.mysql.dept.SysDeptMapper;
+import cn.iocoder.yudao.module.system.enums.dept.DeptIdEnum;
+import cn.iocoder.yudao.module.system.mq.producer.dept.SysDeptProducer;
import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
+import cn.iocoder.yudao.module.system.test.BaseDbUnitTest;
import com.google.common.collect.Multimap;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
@@ -25,7 +24,7 @@ import java.util.function.Consumer;
import static cn.hutool.core.bean.BeanUtil.getFieldValue;
import static cn.hutool.core.util.RandomUtil.randomEle;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.*;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysPostServiceTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/dept/SysPostServiceTest.java
index e3efb41..fa0da32 100644
--- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysPostServiceTest.java
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/dept/SysPostServiceTest.java
@@ -1,17 +1,16 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.dept;
+package cn.iocoder.yudao.module.system.service.dept;
-import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostUpdateReqVO;
-import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dept.SysPostMapper;
-import cn.iocoder.yudao.adminserver.modules.system.service.dept.impl.SysPostServiceImpl;
import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
+import cn.iocoder.yudao.module.system.controller.dept.vo.post.SysPostCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.post.SysPostExportReqVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.post.SysPostPageReqVO;
+import cn.iocoder.yudao.module.system.controller.dept.vo.post.SysPostUpdateReqVO;
+import cn.iocoder.yudao.module.system.dal.mysql.dept.SysPostMapper;
+import cn.iocoder.yudao.module.system.test.BaseDbUnitTest;
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.Import;
@@ -20,11 +19,11 @@ import java.util.List;
import java.util.function.Consumer;
import static cn.hutool.core.util.RandomUtil.randomEle;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId;
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.*;
import static org.junit.jupiter.api.Assertions.*;
/**
diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictDataServiceTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/dict/SysDictDataServiceTest.java
index e69b629..bc5f83d 100644
--- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictDataServiceTest.java
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/dict/SysDictDataServiceTest.java
@@ -1,19 +1,18 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.dict;
+package cn.iocoder.yudao.module.system.service.dict;
-import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictTypeDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dict.SysDictDataMapper;
-import cn.iocoder.yudao.adminserver.modules.system.mq.producer.dict.SysDictDataProducer;
-import cn.iocoder.yudao.adminserver.modules.system.service.dict.impl.SysDictDataServiceImpl;
+import cn.iocoder.yudao.module.system.controller.dict.vo.data.SysDictDataCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.data.SysDictDataExportReqVO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.data.SysDictDataPageReqVO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.data.SysDictDataUpdateReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.dict.SysDictTypeDO;
+import cn.iocoder.yudao.module.system.dal.mysql.dict.SysDictDataMapper;
+import cn.iocoder.yudao.module.system.mq.producer.dict.SysDictDataProducer;
import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
+import cn.iocoder.yudao.module.system.test.BaseDbUnitTest;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
@@ -22,7 +21,7 @@ import javax.annotation.Resource;
import java.util.List;
import java.util.function.Consumer;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.*;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictTypeServiceTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/dict/SysDictTypeServiceTest.java
index 8ca3638..916acbf 100644
--- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictTypeServiceTest.java
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/dict/SysDictTypeServiceTest.java
@@ -1,17 +1,16 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.dict;
+package cn.iocoder.yudao.module.system.service.dict;
-import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypeCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypeExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypeUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictTypeDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dict.SysDictTypeMapper;
-import cn.iocoder.yudao.adminserver.modules.system.service.dict.impl.SysDictTypeServiceImpl;
+import cn.iocoder.yudao.module.system.controller.dict.vo.type.SysDictTypeCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.type.SysDictTypeExportReqVO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.type.SysDictTypePageReqVO;
+import cn.iocoder.yudao.module.system.controller.dict.vo.type.SysDictTypeUpdateReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.dict.SysDictTypeDO;
+import cn.iocoder.yudao.module.system.dal.mysql.dict.SysDictTypeMapper;
import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
+import cn.iocoder.yudao.module.system.test.BaseDbUnitTest;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
@@ -21,7 +20,7 @@ import java.util.List;
import java.util.function.Consumer;
import static cn.hutool.core.util.RandomUtil.randomEle;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.*;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
@@ -30,11 +29,6 @@ import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
-/**
-* {@link SysDictTypeServiceImpl} 的单元测试类
-*
-* @author 芋道源码
-*/
@Import(SysDictTypeServiceImpl.class)
public class SysDictTypeServiceTest extends BaseDbUnitTest {
diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/errorcode/SysErrorCodeServiceTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/errorcode/SysErrorCodeServiceTest.java
index 56c0b34..517006d 100644
--- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/errorcode/SysErrorCodeServiceTest.java
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/errorcode/SysErrorCodeServiceTest.java
@@ -1,19 +1,17 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.errorcode;
+package cn.iocoder.yudao.module.system.service.errorcode;
-import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO;
-import cn.iocoder.yudao.adminserver.modules.infra.enums.config.InfConfigTypeEnum;
-import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.errorcode.SysErrorCodeDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.errorcode.SysErrorCodeMapper;
-import cn.iocoder.yudao.adminserver.modules.system.enums.errorcode.SysErrorCodeTypeEnum;
-import cn.iocoder.yudao.adminserver.modules.system.service.errorcode.impl.SysErrorCodeServiceImpl;
+import cn.iocoder.yudao.module.system.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO;
+import cn.iocoder.yudao.module.system.controller.errorcode.vo.SysErrorCodeCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.errorcode.vo.SysErrorCodeExportReqVO;
+import cn.iocoder.yudao.module.system.controller.errorcode.vo.SysErrorCodePageReqVO;
+import cn.iocoder.yudao.module.system.controller.errorcode.vo.SysErrorCodeUpdateReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.errorcode.SysErrorCodeDO;
+import cn.iocoder.yudao.module.system.dal.mysql.errorcode.SysErrorCodeMapper;
+import cn.iocoder.yudao.module.system.enums.errorcode.SysErrorCodeTypeEnum;
import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
+import cn.iocoder.yudao.module.system.test.BaseDbUnitTest;
import org.assertj.core.util.Lists;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
@@ -25,19 +23,14 @@ import java.util.List;
import java.util.function.Consumer;
import static cn.hutool.core.util.RandomUtil.randomEle;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.ERROR_CODE_DUPLICATE;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.ERROR_CODE_NOT_EXISTS;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.ERROR_CODE_DUPLICATE;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.ERROR_CODE_NOT_EXISTS;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
import static org.junit.jupiter.api.Assertions.*;
-/**
-* {@link SysErrorCodeServiceImpl} 的单元测试类
-*
-* @author 芋道源码
-*/
@Import(SysErrorCodeServiceImpl.class)
public class SysErrorCodeServiceTest extends BaseDbUnitTest {
@@ -47,9 +40,6 @@ public class SysErrorCodeServiceTest extends BaseDbUnitTest {
@Resource
private SysErrorCodeMapper errorCodeMapper;
- @Mock
- private Logger log;
-
@Test
public void testCreateErrorCode_success() {
// 准备参数
@@ -297,7 +287,7 @@ public class SysErrorCodeServiceTest extends BaseDbUnitTest {
@SafeVarargs
private static SysErrorCodeDO randomInfErrorCodeDO(Consumer... consumers) {
Consumer consumer = (o) -> {
- o.setType(randomEle(InfConfigTypeEnum.values()).getType()); // 保证 key 的范围
+ o.setType(randomEle(SysErrorCodeTypeEnum.values()).getType()); // 保证 key 的范围
};
return randomPojo(SysErrorCodeDO.class, ArrayUtils.append(consumer, consumers));
}
diff --git a/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/logger/SysLoginLogServiceImplTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/logger/SysLoginLogServiceImplTest.java
new file mode 100644
index 0000000..bac9b5a
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/logger/SysLoginLogServiceImplTest.java
@@ -0,0 +1,123 @@
+package cn.iocoder.yudao.module.system.service.logger;
+
+import cn.hutool.core.util.RandomUtil;
+import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO;
+import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
+import cn.iocoder.yudao.module.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO;
+import cn.iocoder.yudao.module.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO;
+import cn.iocoder.yudao.module.system.dal.mysql.logger.SysLoginLogMapper;
+import cn.iocoder.yudao.module.system.enums.logger.SysLoginLogTypeEnum;
+import cn.iocoder.yudao.module.system.enums.logger.SysLoginResultEnum;
+import cn.iocoder.yudao.framework.test.core.util.RandomUtils;
+import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
+import cn.iocoder.yudao.module.system.test.BaseDbUnitTest;
+import org.junit.jupiter.api.Test;
+import org.springframework.context.annotation.Import;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+@Import(SysLoginLogServiceImpl.class)
+public class SysLoginLogServiceImplTest extends BaseDbUnitTest {
+
+ @Resource
+ private SysLoginLogServiceImpl sysLoginLogService;
+
+ @Resource
+ private SysLoginLogMapper loginLogMapper;
+
+ @Test
+ public void testGetLoginLogPage() {
+ // 构造测试数据
+ // 登录成功的
+ SysLoginLogDO loginLogDO = RandomUtils.randomPojo(SysLoginLogDO.class, logDO -> {
+ logDO.setLogType(RandomUtil.randomEle(SysLoginLogTypeEnum.values()).getType());
+ logDO.setTraceId(TracerUtils.getTraceId());
+ logDO.setUserType(RandomUtil.randomEle(UserTypeEnum.values()).getValue());
+
+ logDO.setUserIp("192.168.199.16");
+ logDO.setUsername("wangkai");
+ logDO.setCreateTime(buildTime(2021, 3, 6));
+ logDO.setResult(SysLoginResultEnum.SUCCESS.getResult());
+ });
+ loginLogMapper.insert(loginLogDO);
+
+ // 下面几个都是不匹配的数据
+ // 登录失败的
+ loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setResult(SysLoginResultEnum.CAPTCHA_CODE_ERROR.getResult())));
+ // 不同ip段的
+ loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setUserIp("192.168.128.18")));
+ // 不同username
+ loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setUsername("yunai")));
+ // 构造一个早期时间 2021-02-06 00:00:00
+ loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setCreateTime(buildTime(2021, 2, 6))));
+
+
+ // 构造调用参数
+ SysLoginLogPageReqVO reqVO = new SysLoginLogPageReqVO();
+ reqVO.setUsername("wangkai");
+ reqVO.setUserIp("192.168.199");
+ reqVO.setStatus(true);
+ reqVO.setBeginTime(buildTime(2021, 3, 5));
+ reqVO.setEndTime(buildTime(2021, 3, 7));
+
+ // 调用service方法
+ PageResult pageResult = sysLoginLogService.getLoginLogPage(reqVO);
+
+ // 断言,只查到了一条符合条件的
+ assertEquals(1, pageResult.getTotal());
+ assertEquals(1, pageResult.getList().size());
+ assertPojoEquals(loginLogDO, pageResult.getList().get(0));
+ }
+
+ @Test
+ public void testGetLoginLogList() {
+ // 构造测试数据
+
+ // 登录成功的
+ SysLoginLogDO loginLogDO = RandomUtils.randomPojo(SysLoginLogDO.class, logDO -> {
+ logDO.setLogType(RandomUtil.randomEle(SysLoginLogTypeEnum.values()).getType());
+ logDO.setTraceId(TracerUtils.getTraceId());
+ logDO.setUserType(RandomUtil.randomEle(UserTypeEnum.values()).getValue());
+
+ logDO.setUserIp("192.168.111.16");
+ logDO.setUsername("wangxiaokai");
+ logDO.setCreateTime(buildTime(2021, 3, 6));
+ logDO.setResult(SysLoginResultEnum.SUCCESS.getResult());
+ });
+ loginLogMapper.insert(loginLogDO);
+
+ // 下面几个都是不匹配的数据
+ // 登录失败的
+ loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setResult(SysLoginResultEnum.CAPTCHA_CODE_ERROR.getResult())));
+ // 不同ip段的
+ loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setUserIp("192.168.128.18")));
+ // 不同username
+ loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setUsername("yunai")));
+ // 构造一个早期时间 2021-02-06 00:00:00
+ loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setCreateTime(buildTime(2021, 2, 6))));
+
+
+ // 构造调用参数
+ SysLoginLogExportReqVO reqVO = new SysLoginLogExportReqVO();
+ reqVO.setUsername("wangxiaokai");
+ reqVO.setUserIp("192.168.111");
+ reqVO.setStatus(true);
+ reqVO.setBeginTime(buildTime(2021, 3, 5));
+ reqVO.setEndTime(buildTime(2021, 3, 7));
+
+
+ // 调用service方法
+ List loginLogList = sysLoginLogService.getLoginLogList(reqVO);
+
+ // 断言
+ assertEquals(1, loginLogList.size());
+ assertPojoEquals(loginLogDO, loginLogList.get(0));
+ }
+}
diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysOperateLogServiceImplTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/logger/SysOperateLogServiceImplTest.java
index f375be3..7838def 100644
--- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysOperateLogServiceImplTest.java
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/logger/SysOperateLogServiceImplTest.java
@@ -1,13 +1,11 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.logger;
+package cn.iocoder.yudao.module.system.service.logger;
import cn.hutool.core.map.MapUtil;
-import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysOperateLogDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.logger.SysOperateLogMapper;
-import cn.iocoder.yudao.adminserver.modules.system.service.logger.impl.SysOperateLogServiceImpl;
-import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
+import cn.iocoder.yudao.module.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO;
+import cn.iocoder.yudao.module.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.logger.SysOperateLogDO;
+import cn.iocoder.yudao.module.system.dal.mysql.logger.SysOperateLogMapper;
+import cn.iocoder.yudao.module.system.service.user.SysUserService;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
import cn.iocoder.yudao.coreservice.modules.system.enums.common.SysSexEnum;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
@@ -18,6 +16,7 @@ import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO;
import cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum;
import cn.iocoder.yudao.framework.test.core.util.RandomUtils;
+import cn.iocoder.yudao.module.system.test.BaseDbUnitTest;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
diff --git a/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/notice/SysNoticeServiceImplTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/notice/SysNoticeServiceImplTest.java
new file mode 100644
index 0000000..0d9144f
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/notice/SysNoticeServiceImplTest.java
@@ -0,0 +1,163 @@
+package cn.iocoder.yudao.module.system.service.notice;
+
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.system.controller.notice.vo.SysNoticeCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.notice.vo.SysNoticePageReqVO;
+import cn.iocoder.yudao.module.system.controller.notice.vo.SysNoticeUpdateReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.notice.SysNoticeDO;
+import cn.iocoder.yudao.module.system.dal.mysql.notice.SysNoticeMapper;
+import cn.iocoder.yudao.module.system.enums.notice.SysNoticeTypeEnum;
+import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
+import cn.iocoder.yudao.module.system.test.BaseDbUnitTest;
+import org.junit.jupiter.api.Test;
+import org.springframework.context.annotation.Import;
+
+import javax.annotation.Resource;
+
+import java.util.function.Consumer;
+
+import static cn.hutool.core.util.RandomUtil.randomEle;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.NOTICE_NOT_FOUND;
+import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
+import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
+import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId;
+import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
+import static org.junit.jupiter.api.Assertions.*;
+
+@Import(SysNoticeServiceImpl.class)
+class SysNoticeServiceImplTest extends BaseDbUnitTest {
+
+ @Resource
+ private SysNoticeServiceImpl sysNoticeService;
+
+ @Resource
+ private SysNoticeMapper sysNoticeMapper;
+
+ @Test
+ public void testPageNotices_success() {
+ // 插入前置数据
+ SysNoticeDO dbNotice = randomPojo(SysNoticeDO.class, o -> {
+ o.setTitle("尼古拉斯赵四来啦!");
+ o.setStatus(CommonStatusEnum.ENABLE.getStatus());
+ o.setType(randomEle(SysNoticeTypeEnum.values()).getType());
+ });
+ sysNoticeMapper.insert(dbNotice);
+
+ // 测试 title 不匹配
+ sysNoticeMapper.insert(ObjectUtils.cloneIgnoreId(dbNotice, o -> o.setTitle("尼古拉斯凯奇也来啦!")));
+ // 测试 status 不匹配
+ sysNoticeMapper.insert(ObjectUtils.cloneIgnoreId(dbNotice, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
+
+
+ // 查询
+ SysNoticePageReqVO reqVO = new SysNoticePageReqVO();
+ reqVO.setTitle("尼古拉斯赵四来啦!");
+ reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
+ PageResult pageResult = sysNoticeService.pageNotices(reqVO);
+
+ // 验证查询结果经过筛选
+ assertEquals(1, pageResult.getTotal());
+ assertEquals(1, pageResult.getList().size());
+ assertPojoEquals(dbNotice, pageResult.getList().get(0));
+
+ }
+
+ @Test
+ public void testGetNotice_success() {
+ // 插入前置数据
+ SysNoticeDO dbNotice = randomSysNoticeDO();
+ sysNoticeMapper.insert(dbNotice);
+
+ // 查询
+ SysNoticeDO notice = sysNoticeService.getNotice(dbNotice.getId());
+
+ // 验证插入与读取对象是否一致
+ assertNotNull(notice);
+ assertPojoEquals(dbNotice, notice);
+ }
+
+ @Test
+ public void testCreateNotice_success() {
+ // 准备参数
+ SysNoticeCreateReqVO reqVO = randomSysNoticeCreateReqVO();
+
+ // 校验插入是否成功
+ Long noticeId = sysNoticeService.createNotice(reqVO);
+ assertNotNull(noticeId);
+
+ // 校验插入属性是否正确
+ SysNoticeDO notice = sysNoticeMapper.selectById(noticeId);
+ assertPojoEquals(reqVO, notice);
+ }
+
+ @Test
+ public void testUpdateNotice_success() {
+ // 插入前置数据
+ SysNoticeDO dbNoticeDO = randomSysNoticeDO();
+ sysNoticeMapper.insert(dbNoticeDO);
+
+ // 准备更新参数
+ SysNoticeUpdateReqVO reqVO = randomSysNoticeUpdateReqVO(o -> o.setId(dbNoticeDO.getId()));
+
+ // 更新
+ sysNoticeService.updateNotice(reqVO);
+
+ // 检验是否更新成功
+ SysNoticeDO notice = sysNoticeMapper.selectById(reqVO.getId());
+ assertPojoEquals(reqVO, notice);
+ }
+
+ @Test
+ public void testDeleteNotice_success() {
+ // 插入前置数据
+ SysNoticeDO dbNotice = randomSysNoticeDO();
+ sysNoticeMapper.insert(dbNotice);
+
+ // 删除
+ sysNoticeService.deleteNotice(dbNotice.getId());
+
+ // 检查是否删除成功
+ assertNull(sysNoticeMapper.selectById(dbNotice.getId()));
+ }
+
+ @Test
+ public void checkNoticeExists_success() {
+ // 插入前置数据
+ SysNoticeDO dbNotice = randomSysNoticeDO();
+ sysNoticeMapper.insert(dbNotice);
+
+ // 成功调用
+ sysNoticeService.checkNoticeExists(dbNotice.getId());
+ }
+
+ @Test
+ public void checkNoticeExists_noExists() {
+ assertServiceException(() -> sysNoticeService.checkNoticeExists(randomLongId()), NOTICE_NOT_FOUND);
+ }
+
+ @SafeVarargs
+ private static SysNoticeDO randomSysNoticeDO(Consumer... consumers) {
+ SysNoticeDO notice = randomPojo(SysNoticeDO.class, consumers);
+ notice.setType(randomEle(SysNoticeTypeEnum.values()).getType());
+ notice.setStatus(CommonStatusEnum.ENABLE.getStatus());
+ return notice;
+ }
+
+ @SafeVarargs
+ private static SysNoticeUpdateReqVO randomSysNoticeUpdateReqVO(Consumer... consumers) {
+ SysNoticeUpdateReqVO reqVO = randomPojo(SysNoticeUpdateReqVO.class, consumers);
+ reqVO.setType(randomEle(SysNoticeTypeEnum.values()).getType());
+ reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
+ return reqVO;
+ }
+
+ private static SysNoticeCreateReqVO randomSysNoticeCreateReqVO() {
+ SysNoticeCreateReqVO reqVO = randomPojo(SysNoticeCreateReqVO.class);
+ reqVO.setType(randomEle(SysNoticeTypeEnum.values()).getType());
+ reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
+ return reqVO;
+ }
+
+
+}
diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysMenuServiceTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/permission/SysMenuServiceTest.java
index e9dab50..06209bb 100644
--- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysMenuServiceTest.java
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/permission/SysMenuServiceTest.java
@@ -1,20 +1,19 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.permission;
+package cn.iocoder.yudao.module.system.service.permission;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Assert;
-import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuListReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysMenuMapper;
-import cn.iocoder.yudao.adminserver.modules.system.enums.permission.MenuTypeEnum;
-import cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission.SysMenuProducer;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.impl.SysMenuServiceImpl;
+import cn.iocoder.yudao.module.system.controller.permission.vo.menu.SysMenuCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.menu.SysMenuListReqVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.menu.SysMenuUpdateReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysMenuDO;
+import cn.iocoder.yudao.module.system.dal.mysql.permission.SysMenuMapper;
+import cn.iocoder.yudao.module.system.enums.permission.MenuTypeEnum;
+import cn.iocoder.yudao.module.system.mq.producer.permission.SysMenuProducer;
import cn.iocoder.yudao.framework.common.util.spring.SpringAopUtils;
import cn.iocoder.yudao.framework.test.core.util.RandomUtils;
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
+import cn.iocoder.yudao.module.system.test.BaseDbUnitTest;
import com.google.common.collect.Multimap;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
@@ -24,7 +23,7 @@ import org.springframework.context.annotation.Import;
import javax.annotation.Resource;
import java.util.*;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.*;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
@@ -87,12 +86,12 @@ public class SysMenuServiceTest extends BaseDbUnitTest {
o.setParentId(parentId);
o.setName("testSonName");
o.setType(MenuTypeEnum.MENU.getType());
- o.setStatus(RandomUtils.randomCommonStatus());
+ o.setStatus(randomCommonStatus());
});
Long menuId = sysMenuService.createMenu(vo);
//断言
- Assertions.assertNotNull(menuId);
+ assertNotNull(menuId);
// 校验记录的属性是否正确
SysMenuDO ret = menuMapper.selectById(menuId);
assertPojoEquals(vo, ret);
@@ -112,7 +111,7 @@ public class SysMenuServiceTest extends BaseDbUnitTest {
o.setId(sonId);
o.setParentId(parentId);
o.setType(MenuTypeEnum.MENU.getType());
- o.setStatus(RandomUtils.randomCommonStatus());
+ o.setStatus(randomCommonStatus());
o.setName("pppppp"); //修改名字
});
sysMenuService.updateMenu(vo);
@@ -135,7 +134,7 @@ public class SysMenuServiceTest extends BaseDbUnitTest {
o.setId(sonId);
o.setParentId(parentId);
o.setType(MenuTypeEnum.MENU.getType());
- o.setStatus(RandomUtils.randomCommonStatus());
+ o.setStatus(randomCommonStatus());
});
//断言
assertServiceException(() -> sysMenuService.updateMenu(vo), MENU_NOT_EXISTS);
@@ -346,7 +345,7 @@ public class SysMenuServiceTest extends BaseDbUnitTest {
}
private SysMenuDO createMenuDO(MenuTypeEnum typeEnum, String menuName, Long parentId) {
- return createMenuDO(typeEnum, menuName, parentId, RandomUtils.randomCommonStatus());
+ return createMenuDO(typeEnum, menuName, parentId, randomCommonStatus());
}
private SysMenuDO createMenuDO(MenuTypeEnum typeEnum, String menuName, Long parentId, Integer status) {
diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysPermissionServiceTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/permission/SysPermissionServiceTest.java
index 6de0028..dde1a7b 100644
--- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysPermissionServiceTest.java
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/permission/SysPermissionServiceTest.java
@@ -1,19 +1,18 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.permission;
+package cn.iocoder.yudao.module.system.service.permission;
import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleMenuDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysRoleMenuDO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysUserRoleDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysRoleMenuMapper;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysUserRoleMapper;
-import cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission.SysPermissionProducer;
-import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.impl.SysPermissionServiceImpl;
+import cn.iocoder.yudao.module.system.dal.mysql.permission.SysRoleMenuMapper;
+import cn.iocoder.yudao.module.system.dal.mysql.permission.SysUserRoleMapper;
+import cn.iocoder.yudao.module.system.mq.producer.permission.SysPermissionProducer;
+import cn.iocoder.yudao.module.system.service.dept.SysDeptService;
import cn.iocoder.yudao.framework.datapermission.core.dept.service.dto.DeptDataPermissionRespDTO;
import cn.iocoder.yudao.framework.security.core.LoginUser;
import cn.iocoder.yudao.framework.security.core.enums.DataScopeEnum;
+import cn.iocoder.yudao.module.system.test.BaseDbUnitTest;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysRoleServiceTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/permission/SysRoleServiceTest.java
index 87261a4..d58e68a 100644
--- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysRoleServiceTest.java
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/permission/SysRoleServiceTest.java
@@ -1,19 +1,18 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.permission;
+package cn.iocoder.yudao.module.system.service.permission;
import cn.hutool.core.bean.BeanUtil;
-import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.security.core.enums.DataScopeEnum;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRolePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleUpdateReqVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.role.SysRoleCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.role.SysRolePageReqVO;
+import cn.iocoder.yudao.module.system.controller.permission.vo.role.SysRoleUpdateReqVO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysRoleMapper;
-import cn.iocoder.yudao.adminserver.modules.system.enums.permission.SysRoleTypeEnum;
-import cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission.SysRoleProducer;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.impl.SysRoleServiceImpl;
+import cn.iocoder.yudao.module.system.dal.mysql.permission.SysRoleMapper;
+import cn.iocoder.yudao.module.system.enums.permission.SysRoleTypeEnum;
+import cn.iocoder.yudao.module.system.mq.producer.permission.SysRoleProducer;
import cn.iocoder.yudao.framework.common.util.spring.SpringAopUtils;
+import cn.iocoder.yudao.module.system.test.BaseDbUnitTest;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
@@ -22,7 +21,7 @@ import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.*;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.max;
diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsChannelServiceTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/sms/SysSmsChannelServiceTest.java
index 4442751..d3509f9 100644
--- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsChannelServiceTest.java
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/sms/SysSmsChannelServiceTest.java
@@ -1,19 +1,18 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.sms;
+package cn.iocoder.yudao.module.system.service.sms;
import cn.hutool.core.bean.BeanUtil;
-import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms.SysSmsChannelMapper;
-import cn.iocoder.yudao.adminserver.modules.system.mq.producer.sms.SysSmsProducer;
-import cn.iocoder.yudao.adminserver.modules.system.service.sms.impl.SysSmsChannelServiceImpl;
+import cn.iocoder.yudao.module.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.channel.SysSmsChannelPageReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO;
+import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsChannelMapper;
+import cn.iocoder.yudao.module.system.mq.producer.sms.SysSmsProducer;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory;
+import cn.iocoder.yudao.module.system.test.BaseDbUnitTest;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
@@ -23,8 +22,8 @@ import java.util.Date;
import java.util.function.Consumer;
import static cn.hutool.core.util.RandomUtil.randomEle;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.SMS_CHANNEL_HAS_CHILDREN;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.SMS_CHANNEL_NOT_EXISTS;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.SMS_CHANNEL_HAS_CHILDREN;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.SMS_CHANNEL_NOT_EXISTS;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.max;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*;
@@ -33,11 +32,6 @@ import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.*;
-/**
-* {@link SysSmsChannelServiceImpl} 的单元测试类
-*
-* @author 芋道源码
-*/
@Import(SysSmsChannelServiceImpl.class)
public class SysSmsChannelServiceTest extends BaseDbUnitTest {
diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsLogServiceTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/sms/SysSmsLogServiceTest.java
index fdeed2a..ae8e734 100644
--- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsLogServiceTest.java
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/sms/SysSmsLogServiceTest.java
@@ -1,11 +1,9 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.sms;
+package cn.iocoder.yudao.module.system.service.sms;
import cn.hutool.core.map.MapUtil;
-import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms.SysSmsLogMapper;
-import cn.iocoder.yudao.adminserver.modules.system.service.sms.impl.SysSmsLogServiceImpl;
+import cn.iocoder.yudao.module.system.controller.sms.vo.log.SysSmsLogExportReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.log.SysSmsLogPageReqVO;
+import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsLogMapper;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO;
import cn.iocoder.yudao.coreservice.modules.system.enums.sms.SysSmsReceiveStatusEnum;
import cn.iocoder.yudao.coreservice.modules.system.enums.sms.SysSmsSendStatusEnum;
@@ -14,6 +12,7 @@ import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
+import cn.iocoder.yudao.module.system.test.BaseDbUnitTest;
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.Import;
@@ -29,11 +28,6 @@ import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString;
import static org.junit.jupiter.api.Assertions.assertEquals;
-/**
-* {@link SysSmsLogServiceImpl} 的单元测试类
-*
-* @author 芋道源码
-*/
@Import(SysSmsLogServiceImpl.class)
public class SysSmsLogServiceTest extends BaseDbUnitTest {
diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsTemplateServiceTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/sms/SysSmsTemplateServiceTest.java
index a893ee2..1ee2c90 100644
--- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsTemplateServiceTest.java
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/sms/SysSmsTemplateServiceTest.java
@@ -1,13 +1,11 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.sms;
-
-import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplatePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms.SysSmsTemplateMapper;
-import cn.iocoder.yudao.adminserver.modules.system.mq.producer.sms.SysSmsProducer;
-import cn.iocoder.yudao.adminserver.modules.system.service.sms.impl.SysSmsTemplateServiceImpl;
+package cn.iocoder.yudao.module.system.service.sms;
+
+import cn.iocoder.yudao.module.system.controller.sms.vo.template.SysSmsTemplateCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.template.SysSmsTemplateExportReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.template.SysSmsTemplatePageReqVO;
+import cn.iocoder.yudao.module.system.controller.sms.vo.template.SysSmsTemplateUpdateReqVO;
+import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsTemplateMapper;
+import cn.iocoder.yudao.module.system.mq.producer.sms.SysSmsProducer;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
import cn.iocoder.yudao.coreservice.modules.system.enums.sms.SysSmsTemplateTypeEnum;
@@ -20,6 +18,7 @@ import cn.iocoder.yudao.framework.sms.core.client.SmsClient;
import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory;
import cn.iocoder.yudao.framework.sms.core.client.SmsCommonResult;
import cn.iocoder.yudao.framework.sms.core.client.dto.SmsTemplateRespDTO;
+import cn.iocoder.yudao.module.system.test.BaseDbUnitTest;
import com.google.common.collect.Lists;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
@@ -30,7 +29,7 @@ import java.util.List;
import java.util.function.Consumer;
import static cn.hutool.core.util.RandomUtil.randomEle;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.*;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
@@ -39,11 +38,6 @@ import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.*;
-/**
-* {@link SysSmsTemplateServiceImpl} 的单元测试类
-*
-* @author 芋道源码
-*/
@Import(SysSmsTemplateServiceImpl.class)
public class SysSmsTemplateServiceTest extends BaseDbUnitTest {
diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/tenant/SysTenantServiceTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/tenant/SysTenantServiceTest.java
index abb16e8..a6199f7 100644
--- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/tenant/SysTenantServiceTest.java
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/tenant/SysTenantServiceTest.java
@@ -1,22 +1,21 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.tenant;
-
-import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
-import cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo.SysTenantCreateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo.SysTenantExportReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo.SysTenantPageReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.tenant.vo.SysTenantUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.tenant.SysTenantMapper;
-import cn.iocoder.yudao.adminserver.modules.system.service.tenant.impl.SysTenantServiceImpl;
+package cn.iocoder.yudao.module.system.service.tenant;
+
+import cn.iocoder.yudao.module.system.controller.tenant.vo.SysTenantCreateReqVO;
+import cn.iocoder.yudao.module.system.controller.tenant.vo.SysTenantExportReqVO;
+import cn.iocoder.yudao.module.system.controller.tenant.vo.SysTenantPageReqVO;
+import cn.iocoder.yudao.module.system.controller.tenant.vo.SysTenantUpdateReqVO;
+import cn.iocoder.yudao.module.system.dal.mysql.tenant.SysTenantMapper;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.tenant.SysTenantDO;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.system.test.BaseDbUnitTest;
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.Import;
import javax.annotation.Resource;
import java.util.List;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.TENANT_NOT_EXISTS;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.TENANT_NOT_EXISTS;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/user/SysUserServiceImplTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/user/SysUserServiceImplTest.java
index dc90a43..fc53a65 100644
--- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/user/SysUserServiceImplTest.java
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/user/SysUserServiceImplTest.java
@@ -1,18 +1,16 @@
-package cn.iocoder.yudao.adminserver.modules.system.service.user;
+package cn.iocoder.yudao.module.system.service.user;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.RandomUtil;
-import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
-import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.*;
+import cn.iocoder.yudao.module.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO;
+import cn.iocoder.yudao.module.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
+import cn.iocoder.yudao.module.system.controller.user.vo.user.*;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO;
-import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.user.SysUserMapper;
-import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService;
-import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService;
-import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService;
-import cn.iocoder.yudao.adminserver.modules.system.service.user.impl.SysUserServiceImpl;
+import cn.iocoder.yudao.module.system.dal.mysql.user.SysUserMapper;
+import cn.iocoder.yudao.module.system.service.dept.SysDeptService;
+import cn.iocoder.yudao.module.system.service.dept.SysPostService;
+import cn.iocoder.yudao.module.system.service.permission.SysPermissionService;
import cn.iocoder.yudao.coreservice.modules.infra.service.file.InfFileCoreService;
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
import cn.iocoder.yudao.coreservice.modules.system.enums.common.SysSexEnum;
@@ -22,6 +20,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
+import cn.iocoder.yudao.module.system.test.BaseDbUnitTest;
import org.junit.jupiter.api.Test;
import org.mockito.stubbing.Answer;
import org.springframework.boot.test.mock.mockito.MockBean;
@@ -35,13 +34,11 @@ import java.util.function.Consumer;
import static cn.hutool.core.util.RandomUtil.randomBytes;
import static cn.hutool.core.util.RandomUtil.randomEle;
-import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
-import static cn.iocoder.yudao.framework.common.util.collection.SetUtils.asSet;
+import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.*;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
-import static java.util.Collections.singleton;
import static org.assertj.core.util.Lists.newArrayList;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
diff --git a/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/test/BaseDbAndRedisUnitTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/test/BaseDbAndRedisUnitTest.java
new file mode 100644
index 0000000..e5b5cdb
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/test/BaseDbAndRedisUnitTest.java
@@ -0,0 +1,47 @@
+package cn.iocoder.yudao.module.system.test;
+
+import cn.iocoder.yudao.framework.datasource.config.YudaoDataSourceAutoConfiguration;
+import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration;
+import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration;
+import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
+import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
+import org.redisson.spring.starter.RedissonAutoConfiguration;
+import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.Import;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.jdbc.Sql;
+
+/**
+ * 依赖内存 DB + Redis 的单元测试
+ *
+ * 相比 {@link BaseDbUnitTest} 来说,额外增加了内存 Redis
+ *
+ * @author 芋道源码
+ */
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseDbAndRedisUnitTest.Application.class)
+@ActiveProfiles("unit-test") // 设置使用 application-unit-test 配置文件
+@Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) // 每个单元测试结束后,清理 DB
+public class BaseDbAndRedisUnitTest {
+
+ @Import({
+ // DB 配置类
+ YudaoDataSourceAutoConfiguration.class, // 自己的 DB 配置类
+ DataSourceAutoConfiguration.class, // Spring DB 自动配置类
+ DataSourceTransactionManagerAutoConfiguration.class, // Spring 事务自动配置类
+ DruidDataSourceAutoConfigure.class, // Druid 自动配置类
+ // MyBatis 配置类
+ YudaoMybatisAutoConfiguration.class, // 自己的 MyBatis 配置类
+ MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类
+ // Redis 配置类
+ RedisTestConfiguration.class, // Redis 测试配置类,用于启动 RedisServer
+ RedisAutoConfiguration.class, // Spring Redis 自动配置类
+ YudaoRedisAutoConfiguration.class, // 自己的 Redis 配置类
+ RedissonAutoConfiguration.class, // Redisson 自动高配置类
+ })
+ public static class Application {
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/test/BaseDbUnitTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/test/BaseDbUnitTest.java
new file mode 100644
index 0000000..053da2c
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/test/BaseDbUnitTest.java
@@ -0,0 +1,39 @@
+package cn.iocoder.yudao.module.system.test;
+
+import cn.iocoder.yudao.framework.datasource.config.YudaoDataSourceAutoConfiguration;
+import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration;
+import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
+import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.Import;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.jdbc.Sql;
+
+/**
+ * 依赖内存 DB 的单元测试
+ *
+ * 注意,Service 层同样适用。对于 Service 层的单元测试,我们针对自己模块的 Mapper 走的是 H2 内存数据库,针对别的模块的 Service 走的是 Mock 方法
+ *
+ * @author 芋道源码
+ */
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseDbUnitTest.Application.class)
+@ActiveProfiles("unit-test") // 设置使用 application-unit-test 配置文件
+@Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) // 每个单元测试结束后,清理 DB
+public class BaseDbUnitTest {
+
+ @Import({
+ // DB 配置类
+ YudaoDataSourceAutoConfiguration.class, // 自己的 DB 配置类
+ DataSourceAutoConfiguration.class, // Spring DB 自动配置类
+ DataSourceTransactionManagerAutoConfiguration.class, // Spring 事务自动配置类
+ DruidDataSourceAutoConfigure.class, // Druid 自动配置类
+ // MyBatis 配置类
+ YudaoMybatisAutoConfiguration.class, // 自己的 MyBatis 配置类
+ MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类
+ })
+ public static class Application {
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/test/BaseRedisUnitTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/test/BaseRedisUnitTest.java
new file mode 100644
index 0000000..0e3472f
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/test/BaseRedisUnitTest.java
@@ -0,0 +1,31 @@
+package cn.iocoder.yudao.module.system.test;
+
+import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration;
+import org.redisson.spring.starter.RedissonAutoConfiguration;
+import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.Import;
+import org.springframework.test.context.ActiveProfiles;
+
+/**
+ * 依赖内存 Redis 的单元测试
+ *
+ * 相比 {@link BaseDbUnitTest} 来说,从内存 DB 改成了内存 Redis
+ *
+ * @author 芋道源码
+ */
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseRedisUnitTest.Application.class)
+@ActiveProfiles("unit-test") // 设置使用 application-unit-test 配置文件
+public class BaseRedisUnitTest {
+
+ @Import({
+ // Redis 配置类
+ RedisTestConfiguration.class, // Redis 测试配置类,用于启动 RedisServer
+ RedisAutoConfiguration.class, // Spring Redis 自动配置类
+ YudaoRedisAutoConfiguration.class, // 自己的 Redis 配置类
+ RedissonAutoConfiguration.class, // Redisson 自动高配置类
+ })
+ public static class Application {
+ }
+
+}
diff --git a/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/test/RedisTestConfiguration.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/test/RedisTestConfiguration.java
new file mode 100644
index 0000000..71c912d
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/test/RedisTestConfiguration.java
@@ -0,0 +1,30 @@
+package cn.iocoder.yudao.module.system.test;
+
+import com.github.fppt.jedismock.RedisServer;
+import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
+
+import java.io.IOException;
+
+@Configuration(proxyBeanMethods = false)
+@Lazy(false) // 禁止延迟加载
+@EnableConfigurationProperties(RedisProperties.class)
+public class RedisTestConfiguration {
+
+ /**
+ * 创建模拟的 Redis Server 服务器
+ */
+ @Bean
+ public RedisServer redisServer(RedisProperties properties) throws IOException {
+ RedisServer redisServer = new RedisServer(properties.getPort());
+ // TODO 芋艿:一次执行多个单元测试时,貌似创建多个 spring 容器,导致不进行 stop。这样,就导致端口被占用,无法启动。。。
+ try {
+ redisServer.start();
+ } catch (Exception ignore) {}
+ return redisServer;
+ }
+
+}