From f4bca3b4833bc6d26b81d84d959aec3f5854b906 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=91=E5=B9=B4=E6=A2=A6=E4=B8=8E=E7=A0=96?=
<2847127106@qq.com>
Date: Mon, 23 Sep 2024 22:36:18 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B3=A8=E9=87=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
cloud-auth/pom.xml | 63 ++--
.../com/muyu/auth/CloudAuthApplication.java | 12 +-
.../muyu/auth/controller/TokenController.java | 6 +-
.../muyu/auth/service/SysLoginService.java | 33 +-
.../muyu/auth/service/SysPasswordService.java | 6 +-
.../auth/service/SysRecordLogService.java | 4 +-
.../core/constant/ServiceNameConstants.java | 2 +
.../com/muyu/common/log/aspect/LogAspect.java | 4 +-
.../common/log/service/AsyncLogService.java | 4 +-
.../rabbit/RabbitListenerConfigurer.java | 4 +-
.../common/redis/service/RedisService.java | 4 +-
.../many/datasource/ManyDataSource.java | 19 +-
.../datasource/role/DynamicDataSource.java | 10 +-
.../saas/interceptor/WebMvcSaaSConfig.java | 2 +-
.../common/security/service/TokenService.java | 4 +-
.../system/remote/RemoteEntService.java | 23 --
.../system/remote/RemoteSaasService.java | 32 ++
.../system/remote/RemoteUserService.java | 31 +-
...ry.java => RemoteSaasFallbackFactory.java} | 16 +-
.../factory/RemoteUserFallbackFactory.java | 16 +-
...ot.autoconfigure.AutoConfiguration.imports | 2 +-
.../config/RouterFunctionConfiguration.java | 4 +-
.../com/muyu/gateway/filter/AuthFilter.java | 6 +-
.../gateway/filter/ValidateCodeFilter.java | 6 +-
.../com/muyu/gateway/filter/XssFilter.java | 4 +-
.../gateway/handler/ValidateCodeHandler.java | 4 +-
.../service/impl/ValidateCodeServiceImpl.java | 6 +-
.../file/controller/SysFileController.java | 4 +-
.../file/service/MinioSysFileServiceImpl.java | 6 +-
.../cloud-modules-system-saas/pom.xml | 12 +-
.../saas/controller/SysUserController.java | 45 +++
.../system/saas/mapper/SysUserMapper.java | 22 ++
.../system/saas/service/SysUserService.java | 18 ++
.../saas/service/impl/SysUserServiceImpl.java | 33 ++
.../resources/mapper/saas/SysUserMapper.xml | 287 ++++++++++++++++++
.../controller/SysConfigController.java | 4 +-
.../system/controller/SysDeptController.java | 4 +-
.../controller/SysDictDataController.java | 6 +-
.../controller/SysDictTypeController.java | 4 +-
.../controller/SysLogininforController.java | 6 +-
.../system/controller/SysMenuController.java | 4 +-
.../controller/SysNoticeController.java | 4 +-
.../controller/SysOperlogController.java | 4 +-
.../controller/SysPermissionController.java | 55 ++++
.../system/controller/SysPostController.java | 4 +-
.../controller/SysProfileController.java | 6 +-
.../system/controller/SysRoleController.java | 8 +-
.../system/controller/SysUserController.java | 14 +-
.../controller/SysUserOnlineController.java | 6 +-
.../com/muyu/system/rabbit/RabbitTest.java | 4 +-
.../muyu/system/service/SysUserService.java | 2 +-
.../service/impl/SysConfigServiceImpl.java | 4 +-
.../service/impl/SysDeptServiceImpl.java | 6 +-
.../service/impl/SysDictDataServiceImpl.java | 4 +-
.../service/impl/SysDictTypeServiceImpl.java | 6 +-
.../impl/SysLogininforServiceImpl.java | 4 +-
.../service/impl/SysMenuServiceImpl.java | 8 +-
.../service/impl/SysNoticeServiceImpl.java | 4 +-
.../service/impl/SysOperLogServiceImpl.java | 4 +-
.../impl/SysPermissionServiceImpl.java | 6 +-
.../service/impl/SysPostServiceImpl.java | 6 +-
61 files changed, 738 insertions(+), 203 deletions(-)
delete mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteEntService.java
create mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteSaasService.java
rename cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/{RemoteEntFallbackFactory.java => RemoteSaasFallbackFactory.java} (53%)
create mode 100644 cloud-modules/cloud-modules-system-saas/src/main/java/com/muyu/system/saas/controller/SysUserController.java
create mode 100644 cloud-modules/cloud-modules-system-saas/src/main/java/com/muyu/system/saas/mapper/SysUserMapper.java
create mode 100644 cloud-modules/cloud-modules-system-saas/src/main/java/com/muyu/system/saas/service/SysUserService.java
create mode 100644 cloud-modules/cloud-modules-system-saas/src/main/java/com/muyu/system/saas/service/impl/SysUserServiceImpl.java
create mode 100644 cloud-modules/cloud-modules-system-saas/src/main/resources/mapper/saas/SysUserMapper.xml
create mode 100644 cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysPermissionController.java
diff --git a/cloud-auth/pom.xml b/cloud-auth/pom.xml
index 0a76aae..3921e2a 100644
--- a/cloud-auth/pom.xml
+++ b/cloud-auth/pom.xml
@@ -16,23 +16,10 @@
-
-
- com.alibaba.cloud
- spring-cloud-starter-alibaba-nacos-discovery
-
-
-
-
- com.alibaba.cloud
- spring-cloud-starter-alibaba-nacos-config
-
-
-
-
- com.alibaba.cloud
- spring-cloud-starter-alibaba-sentinel
-
+
+
+
+
@@ -58,6 +45,48 @@
cloud-common-api-doc
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-sentinel
+
+
+
+
+ com.mysql
+ mysql-connector-j
+
+
+
+
+ com.muyu
+ cloud-common-datasource
+
+
+
+
+ com.muyu
+ cloud-common-datascope
+
+
+
+
+ com.muyu
+ cloud-common-log
+
+
diff --git a/cloud-auth/src/main/java/com/muyu/auth/CloudAuthApplication.java b/cloud-auth/src/main/java/com/muyu/auth/CloudAuthApplication.java
index e6ea4fd..404413f 100644
--- a/cloud-auth/src/main/java/com/muyu/auth/CloudAuthApplication.java
+++ b/cloud-auth/src/main/java/com/muyu/auth/CloudAuthApplication.java
@@ -1,5 +1,8 @@
package com.muyu.auth;
+import com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure;
+import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration;
+import com.muyu.common.security.annotation.EnableCustomConfig;
import com.muyu.common.security.annotation.EnableMyFeignClients;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -10,8 +13,15 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
*
* @author muyu
*/
+@EnableCustomConfig
@EnableMyFeignClients
-@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
+@SpringBootApplication(
+ exclude = {
+ DataSourceAutoConfiguration.class,
+ DruidDataSourceAutoConfigure.class,
+ DynamicDataSourceAutoConfiguration.class
+ }
+)
public class CloudAuthApplication {
public static void main (String[] args) {
SpringApplication.run(CloudAuthApplication.class, args);
diff --git a/cloud-auth/src/main/java/com/muyu/auth/controller/TokenController.java b/cloud-auth/src/main/java/com/muyu/auth/controller/TokenController.java
index b4a964d..8c84466 100644
--- a/cloud-auth/src/main/java/com/muyu/auth/controller/TokenController.java
+++ b/cloud-auth/src/main/java/com/muyu/auth/controller/TokenController.java
@@ -10,7 +10,7 @@ import com.muyu.common.security.auth.AuthUtil;
import com.muyu.common.security.service.TokenService;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.domain.LoginUser;
-import org.springframework.beans.factory.annotation.Autowired;
+import javax.annotation.Resource;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -25,10 +25,10 @@ import jakarta.servlet.http.HttpServletRequest;
*/
@RestController
public class TokenController {
- @Autowired
+ @Resource
private TokenService tokenService;
- @Autowired
+ @Resource
private SysLoginService sysLoginService;
@PostMapping("login")
diff --git a/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java b/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java
index 328646b..6cfe874 100644
--- a/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java
+++ b/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java
@@ -13,12 +13,16 @@ import com.muyu.common.core.utils.StringUtils;
import com.muyu.common.core.utils.ip.IpUtils;
import com.muyu.common.redis.service.RedisService;
import com.muyu.common.security.utils.SecurityUtils;
+import com.muyu.common.system.remote.RemoteSaasService;
import com.muyu.common.system.remote.RemoteUserService;
import com.muyu.common.system.domain.SysUser;
import com.muyu.common.system.domain.LoginUser;
-import org.springframework.beans.factory.annotation.Autowired;
+import javax.annotation.Resource;
import org.springframework.stereotype.Component;
+import java.util.Set;
+
+
/**
* 登录校验方法
*
@@ -26,18 +30,21 @@ import org.springframework.stereotype.Component;
*/
@Component
public class SysLoginService {
- @Autowired
+ @Resource
private RemoteUserService remoteUserService;
- @Autowired
+ @Resource
private SysPasswordService passwordService;
- @Autowired
+ @Resource
private SysRecordLogService recordLogService;
- @Autowired
+ @Resource
private RedisService redisService;
+ @Resource
+ private RemoteSaasService remoteSaasService;
+
/**
* 登录
*/
@@ -69,7 +76,7 @@ public class SysLoginService {
throw new ServiceException("很遗憾,访问IP已被列入系统黑名单");
}
// 查询用户信息
- Result userResult = remoteUserService.getUserInfo(firmCode, username, SecurityConstants.INNER);
+ Result userResult = remoteSaasService.getUserInfo(firmCode, username, SecurityConstants.INNER);
if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) {
recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在");
@@ -80,8 +87,7 @@ public class SysLoginService {
throw new ServiceException(userResult.getMsg());
}
- LoginUser userInfo = userResult.getData();
- SysUser user = userResult.getData().getSysUser();
+ SysUser user = userResult.getData();
if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) {
recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除");
throw new ServiceException("对不起,您的账号:" + username + " 已被删除");
@@ -92,7 +98,16 @@ public class SysLoginService {
}
passwordService.validate(user, password);
recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功");
- return userInfo;
+
+ // 角色集合
+ Set roles = remoteUserService.getRolePermission(user);
+ // 权限集合
+ Set permissions = remoteUserService.getMenuPermission(user);
+ LoginUser sysUserVo = new LoginUser();
+ sysUserVo.setSysUser(user);
+ sysUserVo.setRoles(roles);
+ sysUserVo.setPermissions(permissions);
+ return sysUserVo;
}
public void logout (String loginName) {
diff --git a/cloud-auth/src/main/java/com/muyu/auth/service/SysPasswordService.java b/cloud-auth/src/main/java/com/muyu/auth/service/SysPasswordService.java
index 5f3c126..3303738 100644
--- a/cloud-auth/src/main/java/com/muyu/auth/service/SysPasswordService.java
+++ b/cloud-auth/src/main/java/com/muyu/auth/service/SysPasswordService.java
@@ -6,7 +6,7 @@ import com.muyu.common.core.exception.ServiceException;
import com.muyu.common.redis.service.RedisService;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.domain.SysUser;
-import org.springframework.beans.factory.annotation.Autowired;
+import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
@@ -18,14 +18,14 @@ import java.util.concurrent.TimeUnit;
*/
@Component
public class SysPasswordService {
- @Autowired
+ @Resource
private RedisService redisService;
private int maxRetryCount = CacheConstants.PASSWORD_MAX_RETRY_COUNT;
private Long lockTime = CacheConstants.PASSWORD_LOCK_TIME;
- @Autowired
+ @Resource
private SysRecordLogService recordLogService;
/**
diff --git a/cloud-auth/src/main/java/com/muyu/auth/service/SysRecordLogService.java b/cloud-auth/src/main/java/com/muyu/auth/service/SysRecordLogService.java
index 2d4de80..c4ae5e1 100644
--- a/cloud-auth/src/main/java/com/muyu/auth/service/SysRecordLogService.java
+++ b/cloud-auth/src/main/java/com/muyu/auth/service/SysRecordLogService.java
@@ -6,7 +6,7 @@ import com.muyu.common.core.utils.StringUtils;
import com.muyu.common.core.utils.ip.IpUtils;
import com.muyu.common.system.remote.RemoteLogService;
import com.muyu.common.system.domain.SysLogininfor;
-import org.springframework.beans.factory.annotation.Autowired;
+import javax.annotation.Resource;
import org.springframework.stereotype.Component;
/**
@@ -16,7 +16,7 @@ import org.springframework.stereotype.Component;
*/
@Component
public class SysRecordLogService {
- @Autowired
+ @Resource
private RemoteLogService remoteLogService;
/**
diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java
index 6095cbf..fee414d 100644
--- a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java
+++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java
@@ -27,4 +27,6 @@ public class ServiceNameConstants {
public static final String SMART_SERVICE = "cloud-smart-car";
public static final String ENT_SERVICE = "cloud-ent";
+
+ public static final String SAAS_SERVICE = "cloud-system-saas";
}
diff --git a/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/aspect/LogAspect.java b/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/aspect/LogAspect.java
index f82ffab..b8cabc4 100644
--- a/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/aspect/LogAspect.java
+++ b/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/aspect/LogAspect.java
@@ -18,7 +18,7 @@ import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+import javax.annotation.Resource;
import org.springframework.core.NamedThreadLocal;
import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Component;
@@ -48,7 +48,7 @@ public class LogAspect {
*/
private static final ThreadLocal TIME_THREADLOCAL = new NamedThreadLocal("Cost Time");
- @Autowired
+ @Resource
private AsyncLogService asyncLogService;
/**
diff --git a/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/service/AsyncLogService.java b/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/service/AsyncLogService.java
index 46e1cdf..ab2d064 100644
--- a/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/service/AsyncLogService.java
+++ b/cloud-common/cloud-common-log/src/main/java/com/muyu/common/log/service/AsyncLogService.java
@@ -3,7 +3,7 @@ package com.muyu.common.log.service;
import com.muyu.common.core.constant.SecurityConstants;
import com.muyu.common.system.remote.RemoteLogService;
import com.muyu.common.system.domain.SysOperLog;
-import org.springframework.beans.factory.annotation.Autowired;
+import javax.annotation.Resource;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@@ -14,7 +14,7 @@ import org.springframework.stereotype.Service;
*/
@Service
public class AsyncLogService {
- @Autowired
+ @Resource
private RemoteLogService remoteLogService;
/**
diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/RabbitListenerConfigurer.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/RabbitListenerConfigurer.java
index 51cb359..af09bfd 100644
--- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/RabbitListenerConfigurer.java
+++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/RabbitListenerConfigurer.java
@@ -2,7 +2,7 @@ package com.muyu.common.rabbit;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistrar;
-import org.springframework.beans.factory.annotation.Autowired;
+import javax.annotation.Resource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.converter.MappingJackson2MessageConverter;
@@ -16,7 +16,7 @@ public class RabbitListenerConfigurer implements org.springframework.amqp.rabbit
}
//以下配置RabbitMQ消息服务
- @Autowired
+ @Resource
public ConnectionFactory connectionFactory;
diff --git a/cloud-common/cloud-common-redis/src/main/java/com/muyu/common/redis/service/RedisService.java b/cloud-common/cloud-common-redis/src/main/java/com/muyu/common/redis/service/RedisService.java
index db90c1e..cbd59db 100644
--- a/cloud-common/cloud-common-redis/src/main/java/com/muyu/common/redis/service/RedisService.java
+++ b/cloud-common/cloud-common-redis/src/main/java/com/muyu/common/redis/service/RedisService.java
@@ -1,6 +1,6 @@
package com.muyu.common.redis.service;
-import org.springframework.beans.factory.annotation.Autowired;
+import javax.annotation.Resource;
import org.springframework.data.redis.core.BoundSetOperations;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
@@ -18,7 +18,7 @@ import java.util.concurrent.TimeUnit;
@SuppressWarnings(value = {"unchecked", "rawtypes"})
@Component
public class RedisService {
- @Autowired
+ @Resource
public RedisTemplate redisTemplate;
/**
diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java
index 7c4fda3..ce887d6 100644
--- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java
+++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java
@@ -1,10 +1,8 @@
package com.muyu.cloud.common.many.datasource;
-import cn.hutool.json.JSONObject;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
-import com.muyu.cloud.common.many.datasource.constents.DatasourceContent;
import com.muyu.cloud.common.saas.domain.model.EntInfo;
import com.muyu.cloud.common.many.datasource.factory.DruidDataSourceFactory;
import com.muyu.cloud.common.many.datasource.domain.model.DataSourceInfo;
@@ -12,30 +10,17 @@ import com.muyu.cloud.common.many.datasource.role.DynamicDataSource;
import com.muyu.cloud.common.saas.exception.SaaSException;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.SpringUtils;
-import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.common.system.domain.SysEnt;
-import com.muyu.common.system.domain.SysFirmUser;
-import com.muyu.common.system.domain.SysUser;
-import com.muyu.common.system.remote.RemoteEntService;
import com.muyu.common.system.remote.RemoteUserService;
import lombok.extern.log4j.Log4j2;
-import org.apache.ibatis.session.SqlSessionFactory;
-import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
-import javax.annotation.PostConstruct;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* @Author: DongZeLiang
@@ -83,7 +68,7 @@ public class ManyDataSource implements ApplicationRunner{
public DynamicDataSource dynamicDataSource(DruidDataSourceFactory druidDataSourceFactory) {
// 企业列表 企业CODE,端口,IP
Map