xieb
2023-10-19 1dd5d8f8a616f5cf3caa7828d46989c7d3dcafc4
skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserServiceImpl.java
@@ -17,6 +17,9 @@
package cn.gistack.system.user.service.impl;
import cn.gistack.pwd.dto.CBCResultDTO;
import cn.gistack.pwd.dto.ResultDTO;
import cn.gistack.pwd.fegin.IPwdClient;
import cn.gistack.system.cache.DictCache;
import cn.gistack.system.cache.ParamCache;
import cn.gistack.system.cache.SysCache;
@@ -31,7 +34,9 @@
import cn.gistack.system.user.service.IUserDeptService;
import cn.gistack.system.user.service.IUserOauthService;
import cn.gistack.system.user.service.IUserService;
import cn.gistack.system.user.supo.UserSUPO;
import cn.gistack.system.user.vo.UserVO;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -76,6 +81,8 @@
   private final ISysClient sysClient;
   private final BladeTenantProperties tenantProperties;
   private final IPwdClient pwdClient;
   @Override
   @Transactional(rollbackFor = Exception.class)
   public boolean submit(User user) {
@@ -106,6 +113,44 @@
      return save(user) && submitUserDept(user);
   }
   public Boolean encryptUserInfo(User user){
      UserSUPO userSUPO = new UserSUPO();
      userSUPO.setPhone(user.getPhone());
      userSUPO.setRoleId(user.getRoleId());
      userSUPO.setDeptId(user.getDeptId());
      String message = JSONObject.toJSONString(userSUPO);
      R<CBCResultDTO> cbcRres = pwdClient.getCBCMacEncipher(message);
      if (cbcRres.getCode() != 200){
         return false;
      }
      CBCResultDTO data = cbcRres.getData();
      String keyIndex = data.getKeyIndex();
      String maced = data.getMaced();
      String sm4IV = data.getSm4IV();
      user.setKeyindexs(keyIndex);
      user.setMaced(maced);
      user.setSm4iv(sm4IV);
      R<ResultDTO> encryptRes = pwdClient.getEncrypt(sm4IV, keyIndex, message);
      if (encryptRes.getCode() != 200){
         return false;
      }
      user.setEncdata(encryptRes.getData().getData());
      return true;
   }
   @Override
   public boolean save(User entity) {
      //对User进行加密
      encryptUserInfo(entity);
      return super.save(entity);
   }
   @Override
   @Transactional(rollbackFor = Exception.class)
   public boolean updateUser(User user) {
@@ -128,6 +173,14 @@
      return updateById(user);
   }
   @Override
   public boolean updateById(User entity) {
      encryptUserInfo(entity);
      return super.updateById(entity);
   }
   private boolean submitUserDept(User user) {
      List<Long> deptIdList = Func.toLongList(user.getDeptId());
      List<UserDept> userDeptList = new ArrayList<>();
@@ -141,10 +194,34 @@
      return userDeptService.saveBatch(userDeptList);
   }
   /**
    * 自定义分页查询
    * @param page
    * @param user
    * @param deptId
    * @param tenantId
    * @return
    */
   @Override
   public IPage<User> selectUserPage(IPage<User> page, User user, Long deptId, String tenantId) {
      List<Long> deptIdList = SysCache.getDeptChildIds(deptId);
   public IPage<UserVO> selectUserPage(IPage<UserVO> page, UserVO user, Long deptId, String tenantId) {
      List<Long> deptIdList = new ArrayList<>();
      if (null!=user.getIsDept()) {
         deptIdList.add(deptId);
      }else {
         deptIdList = SysCache.getDeptChildIds(deptId);
      }
      return page.setRecords(baseMapper.selectUserPage(page, user, deptIdList, tenantId));
   }
   @Override
   public List<UserVO> getAllUser(UserVO user, Long deptId, String tenantId) {
      List<Long> deptIdList = new ArrayList<>();
      if (null!=user.getIsDept()) {
         deptIdList.add(deptId);
      }else {
         deptIdList = SysCache.getDeptChildIds(deptId);
      }
      return baseMapper.getAllUser(user, deptIdList, tenantId);
   }
   @Override
@@ -198,8 +275,11 @@
   @Override
   public UserInfo userInfo(String tenantId, String account, UserEnum userEnum) {
      User user = baseMapper.getUser(tenantId, account);
      return buildUserInfo(user, userEnum);
      List<User> list = baseMapper.selectUserByPhoneOrAccount(tenantId, account);
      if (list.size()>0){
         return buildUserInfo(list.get(0), userEnum);
      }
      return buildUserInfo(null, userEnum);
   }
   private UserInfo buildUserInfo(User user) {
@@ -435,4 +515,30 @@
      return baseMapper.customizeGetList(user);
   }
   /**
    * 根据手机号码查询用户信息
    * @param tenantId
    * @param phone
    * @return
    */
   @Override
   public List<User> userInfoByPhone(String tenantId, String phone) {
      return list(Wrappers.<User>query().lambda().eq(User::getTenantId, tenantId).eq(User::getPhone, phone).eq(User::getIsDeleted, BladeConstant.DB_NOT_DELETED));
   }
   /**
    * 根据手机号码或者账户查询用户信息
    * @param tenantId 租户id
    * @param key 账户或者手机号
    * @return
    */
   @Override
   public List<User> userInfoByPhoneOrAccount(String tenantId, String key) {
      return baseMapper.selectUserByPhoneOrAccount(tenantId,key);
   }
   @Override
   public List<User> getUserByPhoneIds(String phoneIds) {
      return baseMapper.getUserByPhoneIds(phoneIds);
   }
}