From 189849927e37278c8bc03202bd714aca7a0f8f7d Mon Sep 17 00:00:00 2001
From: heheng <475597332@qq.com>
Date: 星期三, 10 十二月 2025 11:10:03 +0800
Subject: [PATCH] 修改功能

---
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java |  389 ++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 314 insertions(+), 75 deletions(-)

diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java
index bd08a00..c96fc70 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java
@@ -2,11 +2,14 @@
 
 import cn.hutool.core.codec.Base64;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gkhy.exam.common.annotation.DataScope;
 import com.gkhy.exam.common.api.CommonPage;
 import com.gkhy.exam.common.constant.CacheConstant;
 import com.gkhy.exam.common.constant.UserConstant;
+import com.gkhy.exam.common.domain.entity.SysRole;
 import com.gkhy.exam.common.domain.entity.SysUser;
 import com.gkhy.exam.common.enums.UserTypeEnum;
 import com.gkhy.exam.common.exception.ApiException;
@@ -14,8 +17,14 @@
 import com.gkhy.exam.common.utils.RedisUtils;
 import com.gkhy.exam.common.utils.SecurityUtils;
 import com.gkhy.exam.common.utils.StringUtils;
+import com.gkhy.exam.system.domain.EmployeeRecord;
 import com.gkhy.exam.system.domain.ExStudent;
 import com.gkhy.exam.system.domain.SysUserRole;
+import com.gkhy.exam.system.domain.req.EmployeeRecordReq;
+import com.gkhy.exam.system.domain.vo.EmployeeRecordVO;
+import com.gkhy.exam.system.domain.vo.SpSysUser;
+import com.gkhy.exam.system.mapper.EmployeeRecordMapper;
+import com.gkhy.exam.system.mapper.ExStudentMapper;
 import com.gkhy.exam.system.mapper.SysUserMapper;
 import com.gkhy.exam.system.mapper.SysUserRoleMapper;
 import com.gkhy.exam.system.service.ExStudentService;
@@ -26,11 +35,10 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.validation.Validator;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.time.LocalDateTime;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 
 /**
@@ -56,22 +64,47 @@
     @Autowired
     private ExStudentService exStudentService;
 
+    @Autowired
+    private EmployeeRecordMapper employeeRecordMapper;
+
+    @Autowired
+    private ExStudentMapper exStudentMapper;
+
+
     @Override
     public CommonPage<SysUser> selectUserList(SysUser user) {
-        SysUser currentUser=SecurityUtils.getLoginUser().getUser();
-        List<SysUser> users=new ArrayList<>();
-        if(!currentUser.getUserType().equals(UserTypeEnum.WORKSHOP_USER.getCode())){
-            if(!currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){
+        SysUser currentUser = SecurityUtils.getLoginUser().getUser();
+        List<SysUser> users = new ArrayList<>();
+        if (!currentUser.getUserType().equals(UserTypeEnum.WORKSHOP_USER.getCode())) {
+            if (!currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())) {
                 user.setCompanyId(currentUser.getCompanyId());
-                Map<String,Object> paramsMap=new HashMap<>();
+                Map<String, Object> paramsMap = new HashMap<>();
 //                paramsMap.put("userType",currentUser.getUserType());
                 user.setParams(paramsMap);
             }
             PageUtils.startPage();
-            users=baseMapper.userList(user);
+            users = baseMapper.userList(user);
         }
         return CommonPage.restPage(users);
     }
+
+    @Override
+    public CommonPage selectSpUserList(SysUser user) {
+        SysUser currentUser = SecurityUtils.getLoginUser().getUser();
+        List<SpSysUser> users = new ArrayList<>();
+        if (!currentUser.getUserType().equals(UserTypeEnum.WORKSHOP_USER.getCode())) {
+            if (!currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())) {
+                user.setCompanyId(currentUser.getCompanyId());
+                Map<String, Object> paramsMap = new HashMap<>();
+//                paramsMap.put("userType",currentUser.getUserType());
+                user.setParams(paramsMap);
+            }
+            PageUtils.startPage();
+            users = baseMapper.userSpList(user);
+        }
+        return CommonPage.restPage(users);
+    }
+
     /**
      * 根据条件分页查询已分配用户角色列表
      *
@@ -79,9 +112,8 @@
      * @return 用户信息集合信息
      */
     @Override
-    @DataScope( userAlias = "u")
-    public List<SysUser> selectAllocatedList(SysUser user)
-    {
+    @DataScope(userAlias = "u")
+    public List<SysUser> selectAllocatedList(SysUser user) {
         return baseMapper.selectAllocatedList(user);
     }
 
@@ -92,28 +124,27 @@
      * @return 用户信息集合信息
      */
     @Override
-    @DataScope( userAlias = "u")
-    public List<SysUser> selectUnallocatedList(SysUser user)
-    {
+    @DataScope(userAlias = "u")
+    public List<SysUser> selectUnallocatedList(SysUser user) {
         return baseMapper.selectUnallocatedList(user);
     }
 
 
     @Override
     public SysUser selectUserByUsername(String username) {
-        String key=redisUtils.generateKey(CacheConstant.SYS_ADMIN_USER_NAME+username);
-        SysUser sysUser =null;
-        if(redisUtils.hasKey(key)){
-            sysUser= (SysUser) redisUtils.get(key);
-        }else {
+        String key = redisUtils.generateKey(CacheConstant.SYS_ADMIN_USER_NAME + username);
+        SysUser sysUser = null;
+        if (redisUtils.hasKey(key)) {
+            sysUser = (SysUser) redisUtils.get(key);
+        } else {
             sysUser = baseMapper.getUserByUsername(username);
-            redisUtils.set(key,sysUser,10, TimeUnit.MINUTES);
+            redisUtils.set(key, sysUser, 10, TimeUnit.MINUTES);
         }
         return sysUser;
     }
 
-    public void delCacheByUsername(String username){
-        String key=redisUtils.generateKey(CacheConstant.SYS_ADMIN_USER_NAME+username);
+    public void delCacheByUsername(String username) {
+        String key = redisUtils.generateKey(CacheConstant.SYS_ADMIN_USER_NAME + username);
         redisUtils.del(key);
     }
 
@@ -124,95 +155,196 @@
 
     @Override
     public SysUser selectUserById(Long userId) {
+
+
         return baseMapper.getUserById(userId);
     }
 
     @Override
     public int deleteUserById(Long userId) {
-        SysUser user=checkUserDataScope(userId);
-        if (user.getId().toString().equals("1")){
+        SysUser user = checkUserDataScope(userId);
+        if (user.getId().toString().equals("1")) {
             throw new ApiException("管理员用户不能被删除");
         }
         delCacheByUsername(user.getUsername());
-        return baseMapper.deleteUserById(userId);
+        int i = baseMapper.deleteUserById(userId);
+        if (i > 0) {
+            delEmployeeRecord(userId);
+        }
+        return i;
     }
 
     @Override
     @Transactional(rollbackFor = RuntimeException.class)
     public int addUser(SysUser user) {
-        ExStudent exStudent = new ExStudent();
-        exStudent.setCompanyId(user.getCompanyId());
-        exStudent.setName(user.getName());
-        exStudent.setPassword(user.getPassword());
-        exStudent.setDeptId(user.getDeptId());
-        exStudent.setDuty(user.getDuty());
-        exStudent.setSex(user.getSex());
-        exStudent.setPhone(user.getPhone());
+
+
         checkRequestData(user);
         checkUserAllowed(user);
         user.setCreateBy(SecurityUtils.getUsername());
         user.setPassword(SecurityUtils.encryptPassword(Base64.decodeStr(user.getPassword())));
-        int row=baseMapper.insert(user);
-        List<SysUserRole> userRoleList = new ArrayList<>();
-        SysUserRole sysUserRole = new SysUserRole();
-        sysUserRole.setUserId(user.getId());
-        sysUserRole.setRoleId(2L);
-        userRoleList.add(sysUserRole);
-        userRoleMapper.batchUserRole(userRoleList);
+        int row = baseMapper.insert(user);
 
-        exStudentService.insertStudent(exStudent);
+        batchSaveRole(user.getRoles(), user.getId(), false);
 
-        if(row<1){
+        if (user.getCompanyId() != null) {
+            ExStudent exStudent = new ExStudent();
+            exStudent.setCompanyId(user.getCompanyId());
+            exStudent.setName(user.getName());
+            exStudent.setPassword(user.getPassword());
+            exStudent.setDeptId(user.getDeptId());
+            exStudent.setDuty(user.getDuty());
+            exStudent.setSex(user.getSex());
+            exStudent.setPhone(user.getPhone());
+            exStudent.setUserId(user.getId());
+            exStudentService.insertStudent(exStudent);
+            Integer internal = user.getInternal();
+            if (internal == 0) {
+                EmployeeRecord employeeRecord = new EmployeeRecord();
+                employeeRecord.setCompanyId(user.getCompanyId());
+                employeeRecord.setUserId(user.getId());
+                employeeRecord.setCreateBy(SecurityUtils.getUsername());
+                employeeRecord.setCreateTime(LocalDateTime.now());
+                saveEmployeeRecord(employeeRecord);
+            }
+        }
+
+
+        if (row < 1) {
             throw new ApiException("新增用户失败");
         }
         return row;
     }
 
+    private void saveEmployeeRecord(EmployeeRecord employeeRecord) {
+        employeeRecordMapper.insert(employeeRecord);
+    }
+
+    private void delEmployeeRecord(Long userId) {
+        LambdaUpdateWrapper<EmployeeRecord> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.eq(EmployeeRecord::getUserId, userId).set(EmployeeRecord::getDelFlag, 1)
+                .set(EmployeeRecord::getUpdateBy, SecurityUtils.getUsername()).set(EmployeeRecord::getUpdateTime, LocalDateTime.now());
+        employeeRecordMapper.update(new EmployeeRecord(), updateWrapper);
+    }
+
+
+    public void batchSaveRole(List<SysRole> roleIds, Long userId, boolean isUpdate) {
+
+        if (isUpdate) {
+            userRoleMapper.deleteUserRoleByUserId(userId);
+        }
+
+        List<SysUserRole> userRoleList = new ArrayList<>();
+        if (roleIds != null && !roleIds.isEmpty()) {
+
+            for (SysRole roleId : roleIds) {
+                SysUserRole sysUserRole = new SysUserRole();
+                sysUserRole.setUserId(userId);
+                sysUserRole.setRoleId(roleId.getRoleId());
+                userRoleList.add(sysUserRole);
+            }
+        } else {
+            SysUserRole sysUserRole = new SysUserRole();
+            sysUserRole.setUserId(userId);
+            sysUserRole.setRoleId(2L);
+            userRoleList.add(sysUserRole);
+        }
+        userRoleMapper.batchUserRole(userRoleList);
+    }
+
     @Override
     public int updateUser(SysUser user) {
+        SysUser sysUser = selectUserById(user.getId());
         checkRequestData(user);
         checkUserAllowed(user);
         user.setUpdateBy(SecurityUtils.getUsername());
-        user.setPassword(null);
-        int row=baseMapper.updateById(user);
-        if(row<1){
+
+        if (StringUtils.isNotEmpty(user.getPassword())) {
+            user.setPassword(SecurityUtils.encryptPassword(Base64.decodeStr(user.getPassword())));
+        } else {
+            user.setPassword(null);
+        }
+        if (sysUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode()) && !user.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){
+            if (user.getCompanyId() == null){
+                throw new ApiException("请选择所属公司");
+            }
+        }
+        if (user.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode()) && !sysUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){
+           user.setCompanyId(null);
+           delEmployeeRecord(user.getId());
+            LambdaUpdateWrapper<ExStudent> updateWrapper = new LambdaUpdateWrapper<>();
+            updateWrapper.eq(ExStudent::getUserId, user.getId()).set(ExStudent::getDelFlag, 1)
+                    .set(ExStudent::getUpdateBy, SecurityUtils.getUsername()).set(ExStudent::getUpdateTime, LocalDateTime.now());
+            exStudentMapper.update(new ExStudent(),updateWrapper);
+        }
+
+        int row = baseMapper.updateById(user);
+        batchSaveRole(user.getRoles(), user.getId(), true);
+        if (user.getCompanyId() != null){
+            if (sysUser.getInternal() == 0 && sysUser.getInternal() == 1) {
+                delEmployeeRecord(user.getId());
+            } else if (sysUser.getInternal() == 1 && user.getInternal() == 0) {
+                EmployeeRecord employeeRecord = new EmployeeRecord();
+                employeeRecord.setCompanyId(user.getCompanyId());
+                employeeRecord.setUserId(user.getId());
+                employeeRecord.setCreateBy(SecurityUtils.getUsername());
+                employeeRecord.setCreateTime(LocalDateTime.now());
+                saveEmployeeRecord(employeeRecord);
+            }
+        }
+
+
+        if (row < 1) {
             throw new ApiException("更新用户信息失败");
         }
         delCacheByUsername(user.getUsername());
         return row;
     }
 
-    public void checkRequestData(SysUser user){
-        if(!user.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())&&user.getCompanyId()==null){
+    public void checkRequestData(SysUser user) {
+        if (!user.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode()) && user.getCompanyId() == null) {
             throw new ApiException("所属公司不能为空");
         }
-        if(!checkUsernameUnique(user)){
+        if (!checkUsernameUnique(user)) {
             throw new ApiException("登录账号已存在");
         }
-        if(StringUtils.isNotBlank(user.getPhone())&&!checkPhoneUnique(user)){
+        if (StringUtils.isNotBlank(user.getPhone()) && !checkPhoneUnique(user)) {
             throw new ApiException("手机号已存在");
         }
     }
 
     @Override
     public int updateUserStatus(SysUser user) {
-        SysUser existUser=checkUserDataScope(user.getId());
-        SysUser su=new SysUser().setId(user.getId()).setStatus(user.getStatus());
+        SysUser existUser = checkUserDataScope(user.getId());
+        SysUser su = new SysUser().setId(user.getId()).setStatus(user.getStatus());
         su.setUpdateBy(SecurityUtils.getUsername());
 
-        int row= baseMapper.updateById(su);
-        if(row<1){
+        int row = baseMapper.updateById(su);
+        if (row < 1) {
             throw new ApiException("更新用户状态失败");
         }
         delCacheByUsername(existUser.getUsername());
         return row;
     }
 
+    @Override
+    public int updateSpecialCertificate(SysUser user) {
+        SysUser existUser = checkUserDataScope(user.getId());
+        SysUser su = new SysUser().setId(user.getId()).setOperationCertificate(user.getOperationCertificate());
+        su.setUpdateBy(SecurityUtils.getUsername());
+
+        int row = baseMapper.updateById(su);
+        if (row < 1) {
+            throw new ApiException("更新用户状态失败");
+        }
+        return row;
+    }
+
 
     @Override
     public boolean resetUserPwd(SysUser user) {
-        SysUser existUser=checkUserDataScope(user.getId());
-        SysUser su=new SysUser().setId(user.getId()).setPassword(SecurityUtils.encryptPassword(Base64.decodeStr(user.getPassword())));
+        SysUser existUser = checkUserDataScope(user.getId());
+        SysUser su = new SysUser().setId(user.getId()).setPassword(SecurityUtils.encryptPassword(Base64.decodeStr(user.getPassword())));
         su.setUpdateBy(SecurityUtils.getUsername());
         delCacheByUsername(existUser.getUsername());
         return updateById(su);
@@ -220,21 +352,129 @@
 
     @Override
     public boolean checkUsernameUnique(SysUser user) {
-        Long userId = user.getId()==null? -1L : user.getId();
+        Long userId = user.getId() == null ? -1L : user.getId();
         SysUser info = baseMapper.checkLoginNameUnique(user.getUsername());
-        if (info!=null && info.getId().longValue() != userId.longValue())
-        {
+        if (info != null && info.getId().longValue() != userId.longValue()) {
             return UserConstant.NOT_UNIQUE;
         }
         return UserConstant.UNIQUE;
     }
 
     @Override
+    public Map<String, Object> getUserData(Long companyId) {
+        EmployeeRecordReq req = new EmployeeRecordReq();
+        req.setCompanyId(companyId);
+        List<EmployeeRecordVO> sysUsers = employeeRecordMapper.selectEmployeeRecordList(req);
+        int totalUser = sysUsers.size();
+
+        Map<String, Object> map = new HashMap<>();
+        //总人数
+        map.put("totalUser", totalUser);
+        //专业
+        map.put("post", sysUsers.stream()
+                .map(EmployeeRecordVO::getPost)
+                .filter(Objects::nonNull)
+                .distinct()
+                .collect(Collectors.joining(",")));
+        //学历硕士以上
+        // 统计学历为硕士(4)和博士及以上(5)的人数
+        long count = sysUsers.stream()
+                .filter(user -> user.getQualification() != null)
+                .filter(user -> user.getQualification() >= 4)  // 4: 硕士, 5: 博士及以上
+                .count();
+        map.put("qualification", count);
+
+        long qualification1 = sysUsers.stream()
+                .filter(user -> user.getQualification() != null)
+                .filter(user -> ("1").equals(user.getQualification().toString()))
+                .count();
+        map.put("qualification1", qualification1);//学历1、高中及以下
+        long qualification2 = sysUsers.stream()
+                .filter(user -> user.getQualification() != null)
+                .filter(user -> ("2").equals(user.getQualification().toString()))
+                .count();
+        map.put("qualification2", qualification2);//学历2、专科
+        long qualification3 = sysUsers.stream()
+                .filter(user -> user.getQualification() != null)
+                .filter(user -> ("3").equals(user.getQualification().toString()))
+                .count();
+        map.put("qualification3", qualification3);//学历3本科
+        long qualification4 = sysUsers.stream()
+                .filter(user -> user.getQualification() != null)
+                .filter(user -> ("4").equals(user.getQualification().toString()))
+                .count();
+        map.put("qualification4", qualification4);//学历4硕士
+
+        long qualification5 = sysUsers.stream()
+                .filter(user -> user.getQualification() != null)
+                .filter(user -> ("5").equals(user.getQualification().toString()))
+                .count();
+        map.put("qualification5", qualification5);//学历5博士及以上
+
+        //高级职称人数
+        long positionalCount = sysUsers.stream()
+                .filter(user -> user.getPositional() != null)
+                .filter(user -> user.getPositional().equals("3"))  // 4: 硕士, 5: 博士及以上
+                .count();
+        map.put("positional3", positionalCount);
+        long positionalCount2 = sysUsers.stream()
+                .filter(user -> user.getPositional() != null)
+                .filter(user -> user.getPositional().equals("2"))  // 4: 硕士, 5: 博士及以上
+                .count();
+        map.put("positional2", positionalCount2);//中级
+        long positionalCount1 = sysUsers.stream()
+                .filter(user -> user.getPositional() != null)
+                .filter(user -> user.getPositional().equals("1"))  // 4: 硕士, 5: 博士及以上
+                .count();
+        map.put("positional1", positionalCount1);//初级
+
+        map.put("positional12", positionalCount2 + positionalCount1);//中级+初级
+
+        long countBk = sysUsers.stream()
+                .filter(user -> user.getQualification() != null)
+                .filter(user -> user.getQualification() >= 3)  // 本科以上
+                .count();
+        //本科人数
+        map.put("qualificationBK", countBk);
+        double bachelorRatio = totalUser > 0 ? (double) countBk / totalUser * 100 : 0;
+        //本科占比
+        map.put("qualificationBKRatio", String.format("%.2f", bachelorRatio));
+
+        long countJS = sysUsers.stream()
+                .filter(user -> user.getPersonType() != null)
+                .filter(user -> user.getPersonType() == 1)  // 技术类
+                .count();
+        map.put("personTypeJS", countJS);
+        double jsRatio = totalUser > 0 ? (double) countJS / totalUser * 100 : 0;
+        map.put("jsRatio", String.format("%.2f", jsRatio));
+        double averageAge = sysUsers.stream()
+                .filter(user -> user.getAge() != null)  // 过滤年龄为null的用户
+                .mapToInt(EmployeeRecordVO::getAge)              // 提取年龄值
+                .average()                              // 计算平均值
+                .orElse(0.0);
+        map.put("avgAge", String.format("%.1f", averageAge));//平均年龄
+
+        long countAge40 = sysUsers.stream()
+                .filter(user -> user.getAge() != null)
+                .filter(user -> user.getAge() >= 40)  // 40以上人数
+                .count();
+        map.put("age40", countAge40);
+        double age40Ratio = totalUser > 0 ? (double) countAge40 / totalUser * 100 : 0;
+        map.put("age40Ratio", String.format("%.2f", age40Ratio));
+        long countAge30 = totalUser - countAge40;
+        map.put("age1840", countAge30);//18-40
+        double age30Ratio = totalUser > 0 ? (double) countAge30 / totalUser * 100 : 0;
+        map.put("age1840Ratio", String.format("%.2f", age30Ratio));
+
+        return map;
+    }
+
+
+    @Override
     public boolean checkPhoneUnique(SysUser user) {
-        Long userId = user.getId()==null ? -1L : user.getId();
+        Long userId = user.getId() == null ? -1L : user.getId();
         SysUser info = baseMapper.checkPhoneUnique(user.getPhone());
-        if (info!=null && info.getId().longValue() != userId.longValue())
-        {
+        if (info != null && info.getId().longValue() != userId.longValue()) {
             return UserConstant.NOT_UNIQUE;
         }
         return UserConstant.UNIQUE;
@@ -243,9 +483,9 @@
 
     @Override
     public void checkUserAllowed(SysUser user) {
-        SysUser currentUser=SecurityUtils.getLoginUser().getUser();
-        Integer currentUserType=currentUser.getUserType();
-        Integer userType=user.getUserType();
+        SysUser currentUser = SecurityUtils.getLoginUser().getUser();
+        Integer currentUserType = currentUser.getUserType();
+        Integer userType = user.getUserType();
         //校验权限,规则:上一级用户可以增加下一级用户类型的用户
 //        if(currentUserType.equals(UserTypeEnum.SYSTEM_USER.getCode())){
 //            if( !userType.equals(UserTypeEnum.SYSTEM_USER.getCode())&&!userType.equals(UserTypeEnum.OTHER_USER.getCode()) &&!userType.equals(UserTypeEnum.COMPANY_USER.getCode())){
@@ -255,16 +495,16 @@
 //                throw new ApiException("管理员用户不能被删除");
 //            }
 //        }else{
-        if(!currentUserType.equals(UserTypeEnum.SYSTEM_USER.getCode())){
-            if(userType.equals(UserTypeEnum.OTHER_USER.getCode())){
+        if (!currentUserType.equals(UserTypeEnum.SYSTEM_USER.getCode())) {
+            if (userType.equals(UserTypeEnum.OTHER_USER.getCode())) {
                 throw new ApiException("没有权限操作或者更新上级用户类型的用户");
             }
-            if(currentUserType.equals(UserTypeEnum.OTHER_USER.getCode()) || currentUserType.equals(UserTypeEnum.COMPANY_ADMIN.getCode())){
-                if(userType<=UserTypeEnum.COMPANY_USER.getCode() && !currentUserType.equals(UserTypeEnum.COMPANY_ADMIN.getCode())){
+            if (currentUserType.equals(UserTypeEnum.OTHER_USER.getCode()) || currentUserType.equals(UserTypeEnum.COMPANY_ADMIN.getCode())) {
+                if (userType <= UserTypeEnum.COMPANY_USER.getCode() && !currentUserType.equals(UserTypeEnum.COMPANY_ADMIN.getCode())) {
                     throw new ApiException("没有权限操作或者更新上级用户类型的用户");
                 }
-            }else{
-                if(userType<currentUserType){
+            } else {
+                if (userType < currentUserType) {
                     throw new ApiException("没有权限操作或者更新上级用户类型的用户");
                 }
             }
@@ -273,12 +513,11 @@
 
     @Override
     public SysUser checkUserDataScope(Long userId) {
-        if(userId==null){
+        if (userId == null) {
             throw new ApiException("用户id为空!");
         }
         SysUser user = getById(userId);
-        if (ObjectUtil.isNull(user))
-        {
+        if (ObjectUtil.isNull(user)) {
             throw new ApiException("用户数据不存在!");
         }
         checkUserAllowed(user);

--
Gitblit v1.9.2