Jelajahi Sumber

fix 迁移后系统问题修改

Yjoioooo 3 tahun lalu
induk
melakukan
ba417747c5
17 mengubah file dengan 142 tambahan dan 295 penghapusan
  1. 15 1
      config/nacos/application-common.yml
  2. 2 1
      config/nacos/ruoyi-gateway.yml
  3. 7 4
      ruoyi-auth/src/main/java/org/dromara/auth/controller/TokenController.java
  4. 35 0
      ruoyi-auth/src/main/java/org/dromara/auth/domain/convert/TenantVoConvert.java
  5. 7 7
      ruoyi-common/ruoyi-common-idempotent/src/main/java/org/dromara/common/idempotent/aspectj/RepeatSubmitAspect.java
  6. 50 2
      ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/event/LogEventListener.java
  7. 11 12
      ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/CreateAndUpdateMetaObjectHandler.java
  8. 0 6
      ruoyi-common/ruoyi-common-satoken/pom.xml
  9. 11 4
      ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java
  10. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java
  11. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantPackageController.java
  12. 0 54
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUserOnline.java
  13. 1 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java
  14. 0 26
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDataScopeService.java
  15. 0 61
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDataScopeServiceImpl.java
  16. 1 63
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictTypeServiceImpl.java
  17. 0 52
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysLogininforServiceImpl.java

+ 15 - 1
config/nacos/application-common.yml

@@ -207,7 +207,7 @@ mybatis-plus:
     mapUnderscoreToCamelCase: true
     # MyBatis 自动映射策略
     # NONE:不启用 PARTIAL:只对非嵌套 resultMap 自动映射 FULL:对所有 resultMap 自动映射
-    autoMappingBehavior: PARTIAL
+    autoMappingBehavior: FULL
     # MyBatis 自动映射时未知列或未知属性处理策
     # NONE:不做处理 WARNING:打印相关警告 FAILING:抛出异常和详细信息
     autoMappingUnknownColumnBehavior: NONE
@@ -300,3 +300,17 @@ seata:
       server-addr: ${spring.cloud.nacos.server-addr}
       group: ${spring.cloud.nacos.discovery.group}
       namespace: ${spring.profiles.active}
+
+# 多租户配置
+tenant:
+  # 是否开启
+  enable: true
+  # 排除表
+  excludes:
+    - sys_menu
+    - sys_tenant
+    - sys_tenant_package
+    - sys_role_dept
+    - sys_role_menu
+    - sys_user_post
+    - sys_user_role

+ 2 - 1
config/nacos/ruoyi-gateway.yml

@@ -26,6 +26,7 @@ security:
       - /auth/smsLogin
       - /auth/xcxLogin
       - /auth/register
+      - /auth/tenant/list
       - /resource/sms/code
       - /*/v3/api-docs
       - /csrf
@@ -54,7 +55,7 @@ spring:
         - id: ruoyi-gen
           uri: lb://ruoyi-gen
           predicates:
-            - Path=/code/**
+            - Path=/tool/**
           filters:
             - StripPrefix=1
         # 系统模块

+ 7 - 4
ruoyi-auth/src/main/java/org/dromara/auth/controller/TokenController.java

@@ -3,6 +3,7 @@ package org.dromara.auth.controller;
 import cn.hutool.core.collection.CollUtil;
 import lombok.RequiredArgsConstructor;
 import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.auth.domain.convert.TenantVoConvert;
 import org.dromara.auth.domain.vo.LoginTenantVo;
 import org.dromara.auth.domain.vo.LoginVo;
 import org.dromara.auth.domain.vo.TenantListVo;
@@ -12,14 +13,16 @@ import org.dromara.auth.form.RegisterBody;
 import org.dromara.auth.form.SmsLoginBody;
 import org.dromara.auth.service.SysLoginService;
 import org.dromara.common.core.domain.R;
-import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StreamUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.system.api.RemoteTenantService;
 import org.dromara.system.api.domain.vo.RemoteTenantVo;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.constraints.NotBlank;
@@ -104,7 +107,7 @@ public class TokenController {
     /**
      * 登出方法
      */
-    @DeleteMapping("logout")
+    @PostMapping("logout")
     public R<Void> logout() {
         sysLoginService.logout();
         return R.ok();
@@ -128,7 +131,7 @@ public class TokenController {
     @GetMapping("/tenant/list")
     public R<LoginTenantVo> tenantList(HttpServletRequest request) throws Exception {
         List<RemoteTenantVo> tenantList = remoteTenantService.queryList();
-        List<TenantListVo> voList = MapstructUtils.convert(tenantList, TenantListVo.class);
+        List<TenantListVo> voList = TenantVoConvert.INSTANCE.convertList(tenantList);
         // 获取域名
         String host = new URL(request.getRequestURL().toString()).getHost();
         // 根据域名进行筛选

+ 35 - 0
ruoyi-auth/src/main/java/org/dromara/auth/domain/convert/TenantVoConvert.java

@@ -0,0 +1,35 @@
+package org.dromara.auth.domain.convert;
+
+import org.dromara.auth.domain.vo.TenantListVo;
+import org.dromara.system.api.domain.vo.RemoteTenantVo;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * 租户vo转换器
+ * @author zhujie
+ */
+@Mapper
+public interface TenantVoConvert {
+
+    TenantVoConvert INSTANCE = Mappers.getMapper(TenantVoConvert.class);
+
+    /**
+     * RemoteTenantVoToTenantListVo
+     * @param remoteTenantVo 待转换对象
+     * @return 转换后对象
+     */
+    TenantListVo convert(RemoteTenantVo remoteTenantVo);
+
+    /**
+     * RemoteTenantVoToTenantListVo
+     * @param remoteTenantVo 待转换对象
+     * @return 转换后对象
+     */
+    List<TenantListVo> convertList(List<RemoteTenantVo> remoteTenantVo);
+
+
+
+}

+ 7 - 7
ruoyi-common/ruoyi-common-idempotent/src/main/java/org/dromara/common/idempotent/aspectj/RepeatSubmitAspect.java

@@ -3,7 +3,12 @@ package org.dromara.common.idempotent.aspectj;
 import cn.dev33.satoken.SaManager;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.crypto.SecureUtil;
-import org.dromara.common.core.constant.Constants;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.AfterReturning;
+import org.aspectj.lang.annotation.AfterThrowing;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.dromara.common.core.constant.GlobalConstants;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.core.utils.JsonUtils;
@@ -12,11 +17,6 @@ import org.dromara.common.core.utils.ServletUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.redis.utils.RedisUtils;
-import org.aspectj.lang.JoinPoint;
-import org.aspectj.lang.annotation.AfterReturning;
-import org.aspectj.lang.annotation.AfterThrowing;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.annotation.Before;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -55,7 +55,7 @@ public class RepeatSubmitAspect {
 
         submitKey = SecureUtil.md5(submitKey + ":" + nowParams);
         // 唯一标识(指定key + url + 消息头)
-        String cacheRepeatKey = Constants.REPEAT_SUBMIT_KEY + url + submitKey;
+        String cacheRepeatKey = GlobalConstants.REPEAT_SUBMIT_KEY + url + submitKey;
         String key = RedisUtils.getCacheObject(cacheRepeatKey);
         if (key == null) {
             RedisUtils.setCacheObject(cacheRepeatKey, "", Duration.ofMillis(interval));

+ 50 - 2
ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/event/LogEventListener.java

@@ -1,7 +1,14 @@
 package org.dromara.common.log.event;
 
+import cn.hutool.http.useragent.UserAgent;
+import cn.hutool.http.useragent.UserAgentUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.common.core.constant.Constants;
 import org.dromara.common.core.utils.BeanCopyUtils;
+import org.dromara.common.core.utils.ServletUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.core.utils.ip.AddressUtils;
 import org.dromara.system.api.RemoteLogService;
 import org.dromara.system.api.domain.bo.RemoteLogininforBo;
 import org.dromara.system.api.domain.bo.RemoteOperLogBo;
@@ -9,12 +16,15 @@ import org.springframework.context.event.EventListener;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
 
+import javax.servlet.http.HttpServletRequest;
+
 /**
  * 异步调用日志服务
  *
  * @author ruoyi
  */
 @Component
+@Slf4j
 public class LogEventListener {
 
     @DubboReference
@@ -33,8 +43,46 @@ public class LogEventListener {
     @Async
     @EventListener
     public void saveLogininfor(LogininforEvent logininforEvent) {
-        RemoteLogininforBo sysLogininfor = BeanCopyUtils.copy(logininforEvent, RemoteLogininforBo.class);
-        remoteLogService.saveLogininfor(sysLogininfor);
+        HttpServletRequest request = logininforEvent.getRequest();
+        final UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
+        final String ip = ServletUtils.getClientIP(request);
+
+        String address = AddressUtils.getRealAddressByIP(ip);
+        StringBuilder s = new StringBuilder();
+        s.append(getBlock(ip));
+        s.append(address);
+        s.append(getBlock(logininforEvent.getUsername()));
+        s.append(getBlock(logininforEvent.getStatus()));
+        s.append(getBlock(logininforEvent.getMessage()));
+        // 打印信息到日志
+        log.info(s.toString(), logininforEvent.getArgs());
+        // 获取客户端操作系统
+        String os = userAgent.getOs().getName();
+        // 获取客户端浏览器
+        String browser = userAgent.getBrowser().getName();
+        // 封装对象
+        RemoteLogininforBo logininfor = new RemoteLogininforBo();
+        logininfor.setTenantId(logininforEvent.getTenantId());
+        logininfor.setUserName(logininforEvent.getUsername());
+        logininfor.setIpaddr(ip);
+        logininfor.setLoginLocation(address);
+        logininfor.setBrowser(browser);
+        logininfor.setOs(os);
+        logininfor.setMsg(logininforEvent.getMessage());
+        // 日志状态
+        if (StringUtils.equalsAny(logininforEvent.getStatus(), Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) {
+            logininfor.setStatus(Constants.SUCCESS);
+        } else if (Constants.LOGIN_FAIL.equals(logininforEvent.getStatus())) {
+            logininfor.setStatus(Constants.FAIL);
+        }
+        remoteLogService.saveLogininfor(logininfor);
+    }
+
+    private String getBlock(Object msg) {
+        if (msg == null) {
+            msg = "";
+        }
+        return "[" + msg + "]";
     }
 
 }

+ 11 - 12
ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/CreateAndUpdateMetaObjectHandler.java

@@ -3,13 +3,12 @@ package org.dromara.common.mybatis.handler;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.http.HttpStatus;
 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.reflection.MetaObject;
 import org.dromara.common.core.exception.ServiceException;
-import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.core.web.domain.BaseEntity;
 import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.system.api.model.LoginUser;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.ibatis.reflection.MetaObject;
 
 import java.util.Date;
 
@@ -31,12 +30,12 @@ public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler {
                     ? baseEntity.getCreateTime() : new Date();
                 baseEntity.setCreateTime(current);
                 baseEntity.setUpdateTime(current);
-                String username = StringUtils.isNotBlank(baseEntity.getCreateBy())
-                    ? baseEntity.getCreateBy() : getLoginUsername();
+                Long userId = ObjectUtil.isNotNull(baseEntity.getCreateBy())
+                    ? baseEntity.getCreateBy() : getLoginId();
                 // 当前已登录 且 创建人为空 则填充
-                baseEntity.setCreateBy(username);
+                baseEntity.setCreateBy(userId);
                 // 当前已登录 且 更新人为空 则填充
-                baseEntity.setUpdateBy(username);
+                baseEntity.setUpdateBy(userId);
             }
         } catch (Exception e) {
             throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);
@@ -51,10 +50,10 @@ public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler {
                 Date current = new Date();
                 // 更新时间填充(不管为不为空)
                 baseEntity.setUpdateTime(current);
-                String username = getLoginUsername();
+                Long userId  = getLoginId();
                 // 当前已登录 更新人填充(不管为不为空)
-                if (StringUtils.isNotBlank(username)) {
-                    baseEntity.setUpdateBy(username);
+                if (ObjectUtil.isNotNull(userId)) {
+                    baseEntity.setUpdateBy(userId);
                 }
             }
         } catch (Exception e) {
@@ -65,7 +64,7 @@ public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler {
     /**
      * 获取登录用户名
      */
-    private String getLoginUsername() {
+    private Long getLoginId() {
         LoginUser loginUser;
         try {
             loginUser = LoginHelper.getLoginUser();
@@ -73,7 +72,7 @@ public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler {
             log.warn("自动注入警告 => 用户未登录");
             return null;
         }
-        return ObjectUtil.isNotNull(loginUser) ? loginUser.getUsername() : null;
+        return ObjectUtil.isNotNull(loginUser) ? loginUser.getUserId() : null;
     }
 
 }

+ 0 - 6
ruoyi-common/ruoyi-common-satoken/pom.xml

@@ -52,12 +52,6 @@
             <artifactId>ruoyi-common-redis</artifactId>
         </dependency>
 
-        <!-- Sa-Token 权限认证, 在线文档:http://sa-token.dev33.cn/ -->
-        <dependency>
-            <groupId>cn.dev33</groupId>
-            <artifactId>sa-token-spring-boot-starter</artifactId>
-        </dependency>
-
     </dependencies>
 
 </project>

+ 11 - 4
ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java

@@ -1,7 +1,6 @@
 package org.dromara.common.tenant.helper;
 
 import cn.dev33.satoken.context.SaHolder;
-import cn.dev33.satoken.spring.SpringMVCUtil;
 import cn.hutool.core.convert.Convert;
 import com.alibaba.ttl.TransmittableThreadLocal;
 import com.baomidou.mybatisplus.core.plugins.IgnoreStrategy;
@@ -14,6 +13,7 @@ import org.dromara.common.core.utils.SpringUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.redis.utils.RedisUtils;
 import org.dromara.common.satoken.utils.LoginHelper;
+import org.springframework.web.context.request.RequestContextHolder;
 
 import java.util.function.Supplier;
 
@@ -85,7 +85,7 @@ public class TenantHelper {
      * 如果为非web环境 那么只在当前线程内生效
      */
     public static void setDynamic(String tenantId) {
-        if (!SpringMVCUtil.isWeb()) {
+        if (!isWeb()) {
             TEMP_DYNAMIC_TENANT.set(tenantId);
             return;
         }
@@ -100,7 +100,7 @@ public class TenantHelper {
      * 如果为非web环境 那么只在当前线程内生效
      */
     public static String getDynamic() {
-        if (!SpringMVCUtil.isWeb()) {
+        if (!isWeb()) {
             return TEMP_DYNAMIC_TENANT.get();
         }
         String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
@@ -117,7 +117,7 @@ public class TenantHelper {
      * 清除动态租户
      */
     public static void clearDynamic() {
-        if (!SpringMVCUtil.isWeb()) {
+        if (!isWeb()) {
             TEMP_DYNAMIC_TENANT.remove();
             return;
         }
@@ -137,4 +137,11 @@ public class TenantHelper {
         return tenantId;
     }
 
+    /**
+     * 判断是否web环境
+     */
+    private static boolean isWeb() {
+        return RequestContextHolder.getRequestAttributes() != null;
+    }
+
 }

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java

@@ -37,7 +37,7 @@ import java.util.List;
 @Validated
 @RequiredArgsConstructor
 @RestController
-@RequestMapping("/system/tenant")
+@RequestMapping("/tenant")
 public class SysTenantController extends BaseController {
 
     private final ISysTenantService tenantService;

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantPackageController.java

@@ -34,7 +34,7 @@ import java.util.List;
 @Validated
 @RequiredArgsConstructor
 @RestController
-@RequestMapping("/system/tenant/package")
+@RequestMapping("/tenant/package")
 public class SysTenantPackageController extends BaseController {
 
     private final ISysTenantPackageService tenantPackageService;

+ 0 - 54
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUserOnline.java

@@ -1,54 +0,0 @@
-package org.dromara.system.domain;
-
-import lombok.Data;
-
-/**
- * 当前在线会话
- *
- * @author Lion Li
- */
-
-@Data
-public class SysUserOnline {
-
-    /**
-     * 会话编号
-     */
-    private String tokenId;
-
-    /**
-     * 部门名称
-     */
-    private String deptName;
-
-    /**
-     * 用户名称
-     */
-    private String userName;
-
-    /**
-     * 登录IP地址
-     */
-    private String ipaddr;
-
-    /**
-     * 登录地址
-     */
-    private String loginLocation;
-
-    /**
-     * 浏览器类型
-     */
-    private String browser;
-
-    /**
-     * 操作系统
-     */
-    private String os;
-
-    /**
-     * 登录时间
-     */
-    private Long loginTime;
-
-}

+ 1 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java

@@ -127,6 +127,7 @@ public class RemoteUserServiceImpl implements RemoteUserService {
      */
     private LoginUser buildLoginUser(SysUserVo userVo) {
         LoginUser loginUser = new LoginUser();
+        loginUser.setTenantId(userVo.getTenantId());
         loginUser.setUserId(userVo.getUserId());
         loginUser.setDeptId(userVo.getDeptId());
         loginUser.setUsername(userVo.getUserName());

+ 0 - 26
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDataScopeService.java

@@ -1,26 +0,0 @@
-package org.dromara.system.service;
-
-/**
- * 通用 数据权限 服务
- *
- * @author Lion Li
- */
-public interface ISysDataScopeService {
-
-    /**
-     * 获取角色自定义权限
-     *
-     * @param roleId 角色id
-     * @return 部门id组
-     */
-    String getRoleCustom(Long roleId);
-
-    /**
-     * 获取部门及以下权限
-     *
-     * @param deptId 部门id
-     * @return 部门id组
-     */
-    String getDeptAndChild(Long deptId);
-
-}

+ 0 - 61
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDataScopeServiceImpl.java

@@ -1,61 +0,0 @@
-package org.dromara.system.service.impl;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.convert.Convert;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import lombok.RequiredArgsConstructor;
-import org.dromara.common.core.utils.StreamUtils;
-import org.dromara.common.mybatis.helper.DataBaseHelper;
-import org.dromara.system.domain.SysDept;
-import org.dromara.system.domain.SysRoleDept;
-import org.dromara.system.mapper.SysDeptMapper;
-import org.dromara.system.mapper.SysRoleDeptMapper;
-import org.dromara.system.service.ISysDataScopeService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-/**
- * 数据权限 实现
- * <p>
- * 注意: 此Service内不允许调用标注`数据权限`注解的方法
- * 例如: deptMapper.selectList 此 selectList 方法标注了`数据权限`注解 会出现循环解析的问题
- *
- * @author Lion Li
- */
-@RequiredArgsConstructor
-@Service("sdss")
-public class SysDataScopeServiceImpl implements ISysDataScopeService {
-
-    private final SysRoleDeptMapper roleDeptMapper;
-    private final SysDeptMapper deptMapper;
-
-    @Override
-    public String getRoleCustom(Long roleId) {
-        List<SysRoleDept> list = roleDeptMapper.selectList(
-            new LambdaQueryWrapper<SysRoleDept>()
-                .select(SysRoleDept::getDeptId)
-                .eq(SysRoleDept::getRoleId, roleId));
-        if (CollUtil.isNotEmpty(list)) {
-            return StreamUtils.join(list, rd -> Convert.toStr(rd.getDeptId()));
-        }
-        return null;
-    }
-
-    @Override
-    public String getDeptAndChild(Long deptId) {
-        List<SysDept> deptList = deptMapper.selectList(new LambdaQueryWrapper<SysDept>()
-            .select(SysDept::getDeptId)
-            .apply(DataBaseHelper.findInSet(deptId, "ancestors")));
-        List<Long> ids = StreamUtils.toList(deptList, SysDept::getDeptId);
-        ids.add(deptId);
-        List<SysDept> list = deptMapper.selectList(new LambdaQueryWrapper<SysDept>()
-            .select(SysDept::getDeptId)
-            .in(SysDept::getDeptId, ids));
-        if (CollUtil.isNotEmpty(list)) {
-            return StreamUtils.join(list, d -> Convert.toStr(d.getDeptId()));
-        }
-        return null;
-    }
-
-}

+ 1 - 63
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictTypeServiceImpl.java

@@ -1,6 +1,5 @@
 package org.dromara.system.service.impl;
 
-import cn.dev33.satoken.context.SaHolder;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -8,13 +7,9 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
-import org.dromara.common.core.constant.CacheConstants;
 import org.dromara.common.core.constant.CacheNames;
 import org.dromara.common.core.exception.ServiceException;
-import org.dromara.common.core.service.DictService;
 import org.dromara.common.core.utils.MapstructUtils;
-import org.dromara.common.core.utils.SpringUtils;
-import org.dromara.common.core.utils.StreamUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -36,7 +31,6 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 /**
  * 字典 业务层处理
@@ -45,7 +39,7 @@ import java.util.stream.Collectors;
  */
 @RequiredArgsConstructor
 @Service
-public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService {
+public class SysDictTypeServiceImpl implements ISysDictTypeService {
 
     private final SysDictTypeMapper baseMapper;
     private final SysDictDataMapper dictDataMapper;
@@ -209,60 +203,4 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService
         return !exist;
     }
 
-    /**
-     * 根据字典类型和字典值获取字典标签
-     *
-     * @param dictType  字典类型
-     * @param dictValue 字典值
-     * @param separator 分隔符
-     * @return 字典标签
-     */
-    @SuppressWarnings("unchecked cast")
-    @Override
-    public String getDictLabel(String dictType, String dictValue, String separator) {
-        // 优先从本地缓存获取
-        List<SysDictDataVo> datas = (List<SysDictDataVo>) SaHolder.getStorage().get(CacheConstants.SYS_DICT_KEY + dictType);
-        if (ObjectUtil.isNull(datas)) {
-            datas = SpringUtils.getAopProxy(this).selectDictDataByType(dictType);
-            SaHolder.getStorage().set(CacheConstants.SYS_DICT_KEY + dictType, datas);
-        }
-
-        Map<String, String> map = StreamUtils.toMap(datas, SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel);
-        if (StringUtils.containsAny(dictValue, separator)) {
-            return Arrays.stream(dictValue.split(separator))
-                .map(v -> map.getOrDefault(v, StringUtils.EMPTY))
-                .collect(Collectors.joining(separator));
-        } else {
-            return map.getOrDefault(dictValue, StringUtils.EMPTY);
-        }
-    }
-
-    /**
-     * 根据字典类型和字典标签获取字典值
-     *
-     * @param dictType  字典类型
-     * @param dictLabel 字典标签
-     * @param separator 分隔符
-     * @return 字典值
-     */
-    @SuppressWarnings("unchecked cast")
-    @Override
-    public String getDictValue(String dictType, String dictLabel, String separator) {
-        // 优先从本地缓存获取
-        List<SysDictDataVo> datas = (List<SysDictDataVo>) SaHolder.getStorage().get(CacheConstants.SYS_DICT_KEY + dictType);
-        if (ObjectUtil.isNull(datas)) {
-            datas = SpringUtils.getAopProxy(this).selectDictDataByType(dictType);
-            SaHolder.getStorage().set(CacheConstants.SYS_DICT_KEY + dictType, datas);
-        }
-
-        Map<String, String> map = StreamUtils.toMap(datas, SysDictDataVo::getDictLabel, SysDictDataVo::getDictValue);
-        if (StringUtils.containsAny(dictLabel, separator)) {
-            return Arrays.stream(dictLabel.split(separator))
-                .map(l -> map.getOrDefault(l, StringUtils.EMPTY))
-                .collect(Collectors.joining(separator));
-        } else {
-            return map.getOrDefault(dictLabel, StringUtils.EMPTY);
-        }
-    }
-
 }

+ 0 - 52
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysLogininforServiceImpl.java

@@ -1,17 +1,11 @@
 package org.dromara.system.service.impl;
 
-import cn.hutool.http.useragent.UserAgent;
-import cn.hutool.http.useragent.UserAgentUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.dromara.common.core.constant.Constants;
 import org.dromara.common.core.utils.MapstructUtils;
-import org.dromara.common.core.utils.ServletUtils;
 import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.core.utils.ip.AddressUtils;
-import org.dromara.common.log.event.LogininforEvent;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.system.domain.SysLogininfor;
@@ -19,11 +13,8 @@ import org.dromara.system.domain.bo.SysLogininforBo;
 import org.dromara.system.domain.vo.SysLogininforVo;
 import org.dromara.system.mapper.SysLogininforMapper;
 import org.dromara.system.service.ISysLogininforService;
-import org.springframework.context.event.EventListener;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
-import javax.servlet.http.HttpServletRequest;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
@@ -41,49 +32,6 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
 
     private final SysLogininforMapper baseMapper;
 
-    /**
-     * 记录登录信息
-     *
-     * @param logininforEvent 登录事件
-     */
-    @Async
-    @EventListener
-    public void recordLogininfor(LogininforEvent logininforEvent) {
-        HttpServletRequest request = logininforEvent.getRequest();
-        final UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
-        final String ip = ServletUtils.getClientIP(request);
-
-        String address = AddressUtils.getRealAddressByIP(ip);
-        StringBuilder s = new StringBuilder();
-        s.append(getBlock(ip));
-        s.append(address);
-        s.append(getBlock(logininforEvent.getUsername()));
-        s.append(getBlock(logininforEvent.getStatus()));
-        s.append(getBlock(logininforEvent.getMessage()));
-        // 打印信息到日志
-        log.info(s.toString(), logininforEvent.getArgs());
-        // 获取客户端操作系统
-        String os = userAgent.getOs().getName();
-        // 获取客户端浏览器
-        String browser = userAgent.getBrowser().getName();
-        // 封装对象
-        SysLogininforBo logininfor = new SysLogininforBo();
-        logininfor.setTenantId(logininforEvent.getTenantId());
-        logininfor.setUserName(logininforEvent.getUsername());
-        logininfor.setIpaddr(ip);
-        logininfor.setLoginLocation(address);
-        logininfor.setBrowser(browser);
-        logininfor.setOs(os);
-        logininfor.setMsg(logininforEvent.getMessage());
-        // 日志状态
-        if (StringUtils.equalsAny(logininforEvent.getStatus(), Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) {
-            logininfor.setStatus(Constants.SUCCESS);
-        } else if (Constants.LOGIN_FAIL.equals(logininforEvent.getStatus())) {
-            logininfor.setStatus(Constants.FAIL);
-        }
-        // 插入数据
-        insertLogininfor(logininfor);
-    }
 
     private String getBlock(Object msg) {
         if (msg == null) {