Просмотр исходного кода

Update 调整用户id翻译,优化部分代码

YueYunyun 1 год назад
Родитель
Сommit
dcc2655cb5

+ 2 - 0
SERVER/VberAdminPlusV3/vber-common/vber-common-core/src/main/java/com/vber/common/core/constant/CacheNames.java

@@ -45,6 +45,8 @@ public interface CacheNames {
      * 用户名称
      * 用户名称
      */
      */
     String SYS_NICKNAME = "sys_nickname#30d";
     String SYS_NICKNAME = "sys_nickname#30d";
+    String SYS_PHONE = "sys_phone#30d";
+    String SYS_EMAIL = "sys_email#30d";
 
 
     /**
     /**
      * 组织机构
      * 组织机构

+ 9 - 1
SERVER/VberAdminPlusV3/vber-common/vber-common-core/src/main/java/com/vber/common/core/service/UserService.java

@@ -19,8 +19,16 @@ public interface UserService {
      * 通过用户ID查询用户账户
      * 通过用户ID查询用户账户
      *
      *
      * @param userId 用户ID
      * @param userId 用户ID
-     * @return 用户账户
+     * @return 用户昵称
      */
      */
     String selectNicknameById(Long userId);
     String selectNicknameById(Long userId);
 
 
+    /**
+     * 通过用户ID查询用户账户
+     *
+     * @param userIds 用户ID  多个用逗号隔开
+     * @return 用户昵称
+     */
+    String selectNicknameByIds(String userIds);
+
 }
 }

+ 6 - 5
SERVER/VberAdminPlusV3/vber-common/vber-common-redis/src/main/java/com/vber/common/redis/utils/CacheUtils.java

@@ -7,6 +7,7 @@ import org.redisson.api.RMap;
 import org.springframework.cache.Cache;
 import org.springframework.cache.Cache;
 import org.springframework.cache.CacheManager;
 import org.springframework.cache.CacheManager;
 
 
+import java.util.Objects;
 import java.util.Set;
 import java.util.Set;
 
 
 /**
 /**
@@ -26,7 +27,7 @@ public class CacheUtils {
      * @param cacheNames 缓存组名称
      * @param cacheNames 缓存组名称
      */
      */
     public static Set<Object> keys(String cacheNames) {
     public static Set<Object> keys(String cacheNames) {
-        RMap<Object, Object> rmap = (RMap<Object, Object>) CACHE_MANAGER.getCache(cacheNames).getNativeCache();
+        RMap<Object, Object> rmap = (RMap<Object, Object>) Objects.requireNonNull(CACHE_MANAGER.getCache(cacheNames)).getNativeCache();
         return rmap.keySet();
         return rmap.keySet();
     }
     }
 
 
@@ -37,7 +38,7 @@ public class CacheUtils {
      * @param key        缓存key
      * @param key        缓存key
      */
      */
     public static <T> T get(String cacheNames, Object key) {
     public static <T> T get(String cacheNames, Object key) {
-        Cache.ValueWrapper wrapper = CACHE_MANAGER.getCache(cacheNames).get(key);
+        Cache.ValueWrapper wrapper = Objects.requireNonNull(CACHE_MANAGER.getCache(cacheNames)).get(key);
         return wrapper != null ? (T) wrapper.get() : null;
         return wrapper != null ? (T) wrapper.get() : null;
     }
     }
 
 
@@ -49,7 +50,7 @@ public class CacheUtils {
      * @param value      缓存值
      * @param value      缓存值
      */
      */
     public static void put(String cacheNames, Object key, Object value) {
     public static void put(String cacheNames, Object key, Object value) {
-        CACHE_MANAGER.getCache(cacheNames).put(key, value);
+        Objects.requireNonNull(CACHE_MANAGER.getCache(cacheNames)).put(key, value);
     }
     }
 
 
     /**
     /**
@@ -59,7 +60,7 @@ public class CacheUtils {
      * @param key        缓存key
      * @param key        缓存key
      */
      */
     public static void evict(String cacheNames, Object key) {
     public static void evict(String cacheNames, Object key) {
-        CACHE_MANAGER.getCache(cacheNames).evict(key);
+        Objects.requireNonNull(CACHE_MANAGER.getCache(cacheNames)).evict(key);
     }
     }
 
 
     /**
     /**
@@ -68,7 +69,7 @@ public class CacheUtils {
      * @param cacheNames 缓存组名称
      * @param cacheNames 缓存组名称
      */
      */
     public static void clear(String cacheNames) {
     public static void clear(String cacheNames) {
-        CACHE_MANAGER.getCache(cacheNames).clear();
+        Objects.requireNonNull(CACHE_MANAGER.getCache(cacheNames)).clear();
     }
     }
 
 
 }
 }

+ 3 - 1
SERVER/VberAdminPlusV3/vber-common/vber-common-translation/src/main/java/com/vber/common/translation/core/impl/NicknameTranslationImpl.java

@@ -1,10 +1,10 @@
 package com.vber.common.translation.core.impl;
 package com.vber.common.translation.core.impl;
 
 
-import lombok.AllArgsConstructor;
 import com.vber.common.core.service.UserService;
 import com.vber.common.core.service.UserService;
 import com.vber.common.translation.annotation.TranslationType;
 import com.vber.common.translation.annotation.TranslationType;
 import com.vber.common.translation.constant.TransConstant;
 import com.vber.common.translation.constant.TransConstant;
 import com.vber.common.translation.core.TranslationInterface;
 import com.vber.common.translation.core.TranslationInterface;
+import lombok.AllArgsConstructor;
 
 
 /**
 /**
  * 用户名称翻译实现
  * 用户名称翻译实现
@@ -21,6 +21,8 @@ public class NicknameTranslationImpl implements TranslationInterface<String> {
     public String translation(Object key, String other) {
     public String translation(Object key, String other) {
         if (key instanceof Long id) {
         if (key instanceof Long id) {
             return userService.selectNicknameById(id);
             return userService.selectNicknameById(id);
+        } else if (key instanceof String ids) {
+            return userService.selectNicknameByIds(ids);
         }
         }
         return null;
         return null;
     }
     }

+ 26 - 2
SERVER/VberAdminPlusV3/vber-modules/vber-system/src/main/java/com/vber/system/service/ISysUserService.java

@@ -205,8 +205,32 @@ public interface ISysUserService {
     /**
     /**
      * 通过组织机构id查询当前组织机构所有用户
      * 通过组织机构id查询当前组织机构所有用户
      *
      *
-     * @param orgId
-     * @return
+     * @param orgId 组织机构id
+     * @return 用户列表
      */
      */
     List<SysUserVo> selectUserListByOrg(Long orgId);
     List<SysUserVo> selectUserListByOrg(Long orgId);
+
+    /**
+     * 通过用户ID查询用户账户
+     *
+     * @param userIds 用户ID  多个用逗号隔开
+     * @return 用户昵称
+     */
+    String selectNicknameByIds(String userIds);
+
+    /**
+     * 通过用户ID查询用户手机号
+     *
+     * @param userId 用户id
+     * @return 用户手机号
+     */
+    String selectPhonenumberById(Long userId);
+
+    /**
+     * 通过用户ID查询用户邮箱
+     *
+     * @param userId 用户id
+     * @return 用户邮箱
+     */
+    String selectEmailById(Long userId);
 }
 }

+ 72 - 5
SERVER/VberAdminPlusV3/vber-modules/vber-system/src/main/java/com/vber/system/service/impl/SysUserServiceImpl.java

@@ -1,6 +1,7 @@
 package com.vber.system.service.impl;
 package com.vber.system.service.impl;
 
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
@@ -9,18 +10,18 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
 import com.vber.common.core.constant.CacheNames;
 import com.vber.common.core.constant.CacheNames;
 import com.vber.common.core.constant.UserConstants;
 import com.vber.common.core.constant.UserConstants;
 import com.vber.common.core.exception.ServiceException;
 import com.vber.common.core.exception.ServiceException;
 import com.vber.common.core.service.UserService;
 import com.vber.common.core.service.UserService;
 import com.vber.common.core.utils.MapstructUtils;
 import com.vber.common.core.utils.MapstructUtils;
+import com.vber.common.core.utils.SpringUtils;
 import com.vber.common.core.utils.StreamUtils;
 import com.vber.common.core.utils.StreamUtils;
 import com.vber.common.core.utils.StringUtils;
 import com.vber.common.core.utils.StringUtils;
 import com.vber.common.mybatis.core.page.PageQuery;
 import com.vber.common.mybatis.core.page.PageQuery;
 import com.vber.common.mybatis.core.page.TableDataInfo;
 import com.vber.common.mybatis.core.page.TableDataInfo;
 import com.vber.common.mybatis.helper.DataBaseHelper;
 import com.vber.common.mybatis.helper.DataBaseHelper;
+import com.vber.common.redis.utils.CacheUtils;
 import com.vber.common.satoken.utils.LoginHelper;
 import com.vber.common.satoken.utils.LoginHelper;
 import com.vber.system.domain.SysOrg;
 import com.vber.system.domain.SysOrg;
 import com.vber.system.domain.SysUser;
 import com.vber.system.domain.SysUser;
@@ -32,10 +33,16 @@ import com.vber.system.domain.vo.SysRoleVo;
 import com.vber.system.domain.vo.SysUserVo;
 import com.vber.system.domain.vo.SysUserVo;
 import com.vber.system.mapper.*;
 import com.vber.system.mapper.*;
 import com.vber.system.service.ISysUserService;
 import com.vber.system.service.ISysUserService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.cache.CacheManager;
+import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.cache.annotation.Cacheable;
+import org.springframework.cache.annotation.Caching;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
@@ -55,6 +62,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
     private final SysPostMapper postMapper;
     private final SysPostMapper postMapper;
     private final SysUserRoleMapper userRoleMapper;
     private final SysUserRoleMapper userRoleMapper;
     private final SysUserPostMapper userPostMapper;
     private final SysUserPostMapper userPostMapper;
+    private final CacheManager cacheManager;
 
 
     @Override
     @Override
     public TableDataInfo<SysUserVo> selectPageUserList(SysUserBo user, PageQuery pageQuery) {
     public TableDataInfo<SysUserVo> selectPageUserList(SysUserBo user, PageQuery pageQuery) {
@@ -309,6 +317,11 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
      */
      */
     @Override
     @Override
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
+    @Caching(evict = {
+            @CacheEvict(value = CacheNames.SYS_NICKNAME, key = "#user.userId"),
+            @CacheEvict(value = CacheNames.SYS_PHONE, key = "#user.userId"),
+            @CacheEvict(value = CacheNames.SYS_EMAIL, key = "#user.userId"),
+    })
     public int updateUser(SysUserBo user) {
     public int updateUser(SysUserBo user) {
         // 新增用户与角色管理
         // 新增用户与角色管理
         insertUserRole(user, true);
         insertUserRole(user, true);
@@ -357,6 +370,11 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
      * @return 结果
      * @return 结果
      */
      */
     @Override
     @Override
+    @Caching(evict = {
+            @CacheEvict(value = CacheNames.SYS_NICKNAME, key = "#user.userId"),
+            @CacheEvict(value = CacheNames.SYS_PHONE, key = "#user.userId"),
+            @CacheEvict(value = CacheNames.SYS_EMAIL, key = "#user.userId"),
+    })
     public int updateUserProfile(SysUserBo user) {
     public int updateUserProfile(SysUserBo user) {
         return baseMapper.update(null,
         return baseMapper.update(null,
                 new LambdaUpdateWrapper<SysUser>()
                 new LambdaUpdateWrapper<SysUser>()
@@ -503,6 +521,15 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
             checkUserDataScope(userId);
             checkUserDataScope(userId);
         }
         }
         List<Long> ids = List.of(userIds);
         List<Long> ids = List.of(userIds);
+        if (CollUtil.isEmpty(ids)) {
+            return 0;
+        }
+        ids.forEach(userId -> {
+            CacheUtils.evict(CacheNames.SYS_USER_NAME, userId);
+            CacheUtils.evict(CacheNames.SYS_NICKNAME, userId);
+            CacheUtils.evict(CacheNames.SYS_PHONE, userId);
+            CacheUtils.evict(CacheNames.SYS_EMAIL, userId);
+        });
         // 删除用户与角色关联
         // 删除用户与角色关联
         userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getUserId, ids));
         userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getUserId, ids));
         // 删除用户与岗位表
         // 删除用户与岗位表
@@ -518,8 +545,8 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
     /**
     /**
      * 通过组织机构id查询当前组织机构所有用户
      * 通过组织机构id查询当前组织机构所有用户
      *
      *
-     * @param orgId
-     * @return
+     * @param orgId 组织结构ID
+     * @return 用户信息集合
      */
      */
     @Override
     @Override
     public List<SysUserVo> selectUserListByOrg(Long orgId) {
     public List<SysUserVo> selectUserListByOrg(Long orgId) {
@@ -529,8 +556,8 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
         return baseMapper.selectVoList(lqw);
         return baseMapper.selectVoList(lqw);
     }
     }
 
 
-    @Cacheable(cacheNames = CacheNames.SYS_USER_NAME, key = "#userId")
     @Override
     @Override
+    @Cacheable(cacheNames = CacheNames.SYS_USER_NAME, key = "#userId")
     public String selectUserNameById(Long userId) {
     public String selectUserNameById(Long userId) {
         SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper<SysUser>()
         SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper<SysUser>()
                 .select(SysUser::getUserName).eq(SysUser::getUserId, userId));
                 .select(SysUser::getUserName).eq(SysUser::getUserId, userId));
@@ -544,4 +571,44 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
                 .select(SysUser::getNickName).eq(SysUser::getUserId, userId));
                 .select(SysUser::getNickName).eq(SysUser::getUserId, userId));
         return ObjectUtil.isNull(sysUser) ? null : sysUser.getNickName();
         return ObjectUtil.isNull(sysUser) ? null : sysUser.getNickName();
     }
     }
+
+    @Override
+    public String selectNicknameByIds(String userIds) {
+        List<String> list = new ArrayList<>();
+        for (Long id : StringUtils.splitTo(userIds, Convert::toLong)) {
+            String nickname = SpringUtils.getAopProxy(this).selectNicknameById(id);
+            if (StringUtils.isNotBlank(nickname)) {
+                list.add(nickname);
+            }
+        }
+        return String.join(StringUtils.SEPARATOR, list);
+    }
+
+    /**
+     * 通过用户ID查询用户手机号
+     *
+     * @param userId 用户id
+     * @return 用户手机号
+     */
+    @Override
+    @Cacheable(cacheNames = CacheNames.SYS_PHONE, key = "#userId")
+    public String selectPhonenumberById(Long userId) {
+        SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper<SysUser>()
+                .select(SysUser::getPhonenumber).eq(SysUser::getUserId, userId));
+        return ObjectUtil.isNull(sysUser) ? null : sysUser.getPhonenumber();
+    }
+
+    /**
+     * 通过用户ID查询用户邮箱
+     *
+     * @param userId 用户id
+     * @return 用户邮箱
+     */
+    @Override
+    @Cacheable(cacheNames = CacheNames.SYS_EMAIL, key = "#userId")
+    public String selectEmailById(Long userId) {
+        SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper<SysUser>()
+                .select(SysUser::getEmail).eq(SysUser::getUserId, userId));
+        return ObjectUtil.isNull(sysUser) ? null : sysUser.getEmail();
+    }
 }
 }