|
@@ -7,10 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.qmth.boot.api.exception.ApiException;
|
|
|
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.FieldUniqueEnum;
|
|
|
import com.qmth.teachcloud.common.mapper.SysRoleMapper;
|
|
@@ -24,9 +21,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.security.NoSuchAlgorithmException;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -55,6 +50,9 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
|
|
@Resource
|
|
|
TeachcloudCommonService commonService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ SysPrivilegeService sysPrivilegeService;
|
|
|
+
|
|
|
@Override
|
|
|
public IPage<SysRole> list(String name, Boolean enable, Integer pageNumber, Integer pageSize) {
|
|
|
Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
|
|
@@ -134,11 +132,27 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
|
|
}
|
|
|
if (Objects.nonNull(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());
|
|
|
sysRoleService.updateById(role);
|
|
|
commonCacheService.updateRoleCache(role.getId());
|
|
|
- if (count != sysRolePrivilegeList.size() || count != role.getPrivilegeIds().length) {
|
|
|
+ if (count != sysRolePrivilegeList.size() || count != finalRelatedSet.size()) {
|
|
|
sysRolePrivilegeService.removeByRoleId(role.getId());
|
|
|
sysRolePrivilegeService.saveBatch(role);//角色权限
|
|
|
commonCacheService.updateRolePrivilegeCache(role.getId());
|