Browse Source

角色修改

wangliang 3 years ago
parent
commit
9719e357a0

+ 23 - 9
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysRoleServiceImpl.java

@@ -7,10 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.boot.api.exception.ApiException;
 import com.qmth.boot.api.exception.ApiException;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
-import com.qmth.teachcloud.common.entity.SysRole;
-import com.qmth.teachcloud.common.entity.SysRolePrivilege;
-import com.qmth.teachcloud.common.entity.SysUser;
-import com.qmth.teachcloud.common.entity.SysUserRole;
+import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.FieldUniqueEnum;
 import com.qmth.teachcloud.common.enums.FieldUniqueEnum;
 import com.qmth.teachcloud.common.mapper.SysRoleMapper;
 import com.qmth.teachcloud.common.mapper.SysRoleMapper;
@@ -24,9 +21,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import java.security.NoSuchAlgorithmException;
 import java.security.NoSuchAlgorithmException;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 /**
 /**
@@ -55,6 +50,9 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
     @Resource
     @Resource
     TeachcloudCommonService commonService;
     TeachcloudCommonService commonService;
 
 
+    @Resource
+    SysPrivilegeService sysPrivilegeService;
+
     @Override
     @Override
     public IPage<SysRole> list(String name, Boolean enable, Integer pageNumber, Integer pageSize) {
     public IPage<SysRole> list(String name, Boolean enable, Integer pageNumber, Integer pageSize) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
@@ -134,11 +132,27 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
             }
             }
             if (Objects.nonNull(role.getId())) {//编辑
             if (Objects.nonNull(role.getId())) {//编辑
                 List<SysRolePrivilege> sysRolePrivilegeList = commonCacheService.rolePrivilegeCache(role.getId());
                 List<SysRolePrivilege> sysRolePrivilegeList = commonCacheService.rolePrivilegeCache(role.getId());
-                int count = (int) sysRolePrivilegeList.stream().filter(s -> Arrays.asList(role.getPrivilegeIds()).contains(s.getPrivilegeId())).count();
+                QueryWrapper<SysPrivilege> sysPrivilegeQueryWrapper = new QueryWrapper<>();
+                sysPrivilegeQueryWrapper.lambda().in(SysPrivilege::getId, role.getPrivilegeIds());
+                List<SysPrivilege> sysPrivilegeList = sysPrivilegeService.list(sysPrivilegeQueryWrapper);
+                Set<String> relatedSet = sysPrivilegeList.stream().filter(s -> Objects.nonNull(s.getRelated())).map(s -> s.getRelated()).collect(Collectors.toSet());
+                Set<Long> finalRelatedSet = new HashSet<>(Arrays.asList(role.getPrivilegeIds()));
+                for (String s : relatedSet) {
+                    if (s.contains(",")) {
+                        String[] arrays = s.split(",");
+                        for (int i = 0; i < arrays.length; i++) {
+                            finalRelatedSet.add(Long.parseLong(arrays[i].trim()));
+                        }
+                    } else {
+                        finalRelatedSet.add(Long.parseLong(s));
+                    }
+                }
+                List<Long> relatedList = new ArrayList<>(finalRelatedSet);
+                int count = (int) sysRolePrivilegeList.stream().filter(s -> relatedList.contains(s.getPrivilegeId())).count();
                 role.updateInfo(sysUser.getId());
                 role.updateInfo(sysUser.getId());
                 sysRoleService.updateById(role);
                 sysRoleService.updateById(role);
                 commonCacheService.updateRoleCache(role.getId());
                 commonCacheService.updateRoleCache(role.getId());
-                if (count != sysRolePrivilegeList.size() || count != role.getPrivilegeIds().length) {
+                if (count != sysRolePrivilegeList.size() || count != finalRelatedSet.size()) {
                     sysRolePrivilegeService.removeByRoleId(role.getId());
                     sysRolePrivilegeService.removeByRoleId(role.getId());
                     sysRolePrivilegeService.saveBatch(role);//角色权限
                     sysRolePrivilegeService.saveBatch(role);//角色权限
                     commonCacheService.updateRolePrivilegeCache(role.getId());
                     commonCacheService.updateRolePrivilegeCache(role.getId());