Pu Zhibing
2025-04-22 fd7b8fb7c89832c28a838b0449bbb8a392433ee2
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -1,46 +1,43 @@
package com.ruoyi.system.service.impl;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.validation.Validator;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.system.api.query.ChangeUserQuery;
import com.ruoyi.system.domain.SysPost;
import com.ruoyi.system.domain.SysUserPost;
import com.ruoyi.system.domain.SysUserRole;
import com.ruoyi.system.query.GetSysUserList;
import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysRoleService;
import com.ruoyi.system.service.ISysUserRoleService;
import com.ruoyi.system.service.ISysUserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.account.api.feignClient.AppUserShopClient;
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.account.api.model.AppUserShop;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.SpringUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.bean.BeanValidators;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.datascope.annotation.DataScope;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysDept;
import com.ruoyi.system.api.domain.SysRole;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.mapper.SysPostMapper;
import com.ruoyi.system.mapper.SysRoleMapper;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.mapper.SysUserPostMapper;
import com.ruoyi.system.mapper.SysUserRoleMapper;
import com.ruoyi.system.api.model.UserShop;
import com.ruoyi.system.api.query.ChangeUserQuery;
import com.ruoyi.system.domain.SysPost;
import com.ruoyi.system.domain.SysUserPost;
import com.ruoyi.system.domain.SysUserRole;
import com.ruoyi.system.mapper.*;
import com.ruoyi.system.query.GetSysUserList;
import com.ruoyi.system.service.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import javax.validation.Validator;
import java.util.*;
import java.util.stream.Collectors;
/**
 * 用户 业务层处理
@@ -80,6 +77,19 @@
   
   @Resource
   private TokenService tokenService;
   @Lazy
   @Resource
   private ISysDeptService deptService;
   @Resource
   private UserShopService userShopService;
   @Resource
   private AppUserShopClient appUserShopClient;
   @Resource
   private AppUserClient appUserClient;
   
   
   /**
@@ -127,6 +137,10 @@
   @Override
   public SysUser selectUserByUserName(String userName) {
      return userMapper.selectUserByUserName(userName);
   }
   @Override
   public SysUser selectUserShopByUserName(String userName) {
      return userMapper.selectUserShopByUserName(userName);
   }
   
   /**
@@ -179,13 +193,22 @@
   @Override
   public boolean checkUserNameUnique(SysUser user) {
      Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
      SysUser info = userMapper.checkUserNameUnique(user.getUserName());
      SysUser info = userMapper.checkUserNameUnique(user);
      if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
         return UserConstants.NOT_UNIQUE;
      }
      return UserConstants.UNIQUE;
   }
   @Override
   public boolean checkNickNameUnique(SysUser user) {
      SysUser info = userMapper.checkNickNameUnique(user);
      if (StringUtils.isNotNull(info) ) {
         return UserConstants.NOT_UNIQUE;
      }
      return UserConstants.UNIQUE;
   }
   /**
    * 校验手机号码是否唯一
    *
@@ -195,7 +218,7 @@
   @Override
   public boolean checkPhoneUnique(SysUser user) {
      Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
      SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber());
      SysUser info = userMapper.checkPhoneUnique(user);
      if (StringUtils.isNotNull(info)) {
         return UserConstants.NOT_UNIQUE;
      }
@@ -287,15 +310,6 @@
   @Override
   @Transactional(rollbackFor = Exception.class)
   public int updateUser(SysUser user) {
//        Long userId = user.getUserId();
//        // 删除用户与角色关联
//        userRoleMapper.deleteUserRoleByUserId(userId);
//        // 新增用户与角色管理
//        insertUserRole(user);
//        // 删除用户与岗位关联
//        userPostMapper.deleteUserPostByUserId(userId);
//        // 新增用户与岗位管理
//        insertUserPost(user);
      return userMapper.updateUser(user);
   }
   
@@ -367,6 +381,10 @@
   @Override
   public int resetUserPwd(String userName, String password) {
      return userMapper.resetUserPwd(userName, password);
   }
   @Override
   public int resetUserShopPwd(String userName, String password) {
      return userMapper.resetUserShopPwd(userName, password);
   }
   
   /**
@@ -442,16 +460,36 @@
    */
   @Override
   @Transactional(rollbackFor = Exception.class)
   public int deleteUserByIds(Long[] userIds) {
      for (Long userId : userIds) {
   public void deleteUserByIds(Long[] userIds) {
        Long userid = tokenService.getLoginUser().getUserid();
        SysUser sysUser = this.getById(userid);
        for (Long userId : userIds) {
         checkUserAllowed(new SysUser(userId));
//            checkUserDataScope(userId);
      }
      // 删除用户与角色关联
//        userRoleMapper.deleteUserRole(userIds);
//        // 删除用户与岗位关联
//        userPostMapper.deleteUserPost(userIds);
      return userMapper.deleteUserByIds(userIds);
      List<SysUser> sysUsers = this.listByIds(Arrays.asList(userIds));
      for (SysUser user : sysUsers) {
         if(2 == user.getRoleType()){
            userShopService.remove(new LambdaQueryWrapper<UserShop>().eq(UserShop::getUserId, user.getUserId()).eq(UserShop::getShopId, sysUser.getObjectId()));
            AppUser appUser = appUserClient.getAppUserByPhone1(user.getPhonenumber()).getData();
            if(null != appUser){
               AppUserShop appUserShop = new AppUserShop();
               appUserShop.setAppUserId(appUser.getId());
               appUserShop.setShopId(sysUser.getObjectId());
               appUserShopClient.delAppUserShop(appUserShop);
               int size = appUserShopClient.getAppUserShop(appUser.getId()).getData().size();
               if(size == 0){
                  appUser.setUserType(1);
                  appUserClient.editAppUserById(appUser);
               }
            }
                long count = userShopService.count(new LambdaQueryWrapper<UserShop>().eq(UserShop::getUserId, user.getUserId()));
            if(0 == count){
               userMapper.deleteUserById(user.getUserId());
                }
            }else{
            userMapper.deleteUserById(user.getUserId());
            }
      }
   }
   
   /**
@@ -514,7 +552,39 @@
   
   @Override
   public PageInfo<SysUser> getList(PageInfo<SysUser> pageInfo, GetSysUserList getSysUserList) {
      Long userid = tokenService.getLoginUser().getUserid();
      SysUser sysUser1 = this.getById(userid);
      if(sysUser1.getRoleType() == 2){
         getSysUserList.setObjectId(sysUser1.getObjectId());
      }
      List<SysUser> list = this.baseMapper.getList(pageInfo, getSysUserList);
      for (SysUser sysUser : list) {
         if(sysUser.getRoleType() == 2){
            UserShop userShop = userShopService.getOne(new LambdaQueryWrapper<UserShop>().eq(UserShop::getShopId, sysUser1.getObjectId()).eq(UserShop::getUserId, sysUser.getUserId()));
            SysRole sysRole = roleMapper.selectRoleById(userShop.getRoleId());
            Long[] roleIds = new Long[]{userShop.getRoleId()};
            sysUser.setNickName(userShop.getNickName());
            sysUser.setRoleIds(roleIds);
            sysUser.setRoleNames(Arrays.asList(sysRole.getRoleName()));
            SysDept sysDept = deptService.selectDeptById(userShop.getDeptId());
            sysUser.setDept(sysDept);
         }else{
            List<SysUserRole> list1 = sysUserRoleService.list(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, sysUser.getUserId()));
            List<String> roleNames = new ArrayList<>();
            for (SysUserRole sysUserRole : list1) {
               SysRole sysRole = sysRoleService.selectRoleById(sysUserRole.getRoleId());
               if(null == sysRole){
                  continue;
               }
               roleNames.add(sysRole.getRoleName());
            }
            Long[] roleIds = new Long[]{};
            sysUser.setRoleIds(list1.stream().map(SysUserRole::getRoleId).collect(Collectors.toList()).toArray(roleIds));
            sysUser.setRoleNames(roleNames);
            SysDept sysDept = deptService.selectDeptById(sysUser.getDeptId());
            sysUser.setDept(sysDept);
         }
      }
      return pageInfo.setRecords(list);
   }
   
@@ -535,6 +605,11 @@
   
   @Override
   public PageInfo<SysUser> getChangeUserList(ChangeUserQuery query) {
      Long userid = tokenService.getLoginUser().getUserid();
      SysUser sysUser1 = this.getById(userid);
      if(sysUser1.getRoleType() == 2){
         query.setObjectId(sysUser1.getObjectId());
      }
      PageInfo<SysUser> pageInfo = new PageInfo<>(query.getPageCurr(), query.getPageSize());
      List<SysUser> list = this.baseMapper.getChangeUserList(pageInfo, query);
      return pageInfo.setRecords(list);