wangliang 3 lat temu
rodzic
commit
ef38ab6c7a

+ 2 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/SysRoleController.java

@@ -13,6 +13,7 @@ import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.security.NoSuchAlgorithmException;
 import java.util.List;
 
 /**
@@ -83,7 +84,7 @@ public class SysRoleController {
      */
     @ApiOperation(value = "启用/禁用")
     @RequestMapping(value = "/enable", method = RequestMethod.POST)
-    public Result enable(@RequestBody SysRole role) {
+    public Result enable(@RequestBody SysRole role) throws NoSuchAlgorithmException {
         return ResultUtil.ok(sysRoleService.enable(role));
     }
 

+ 2 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysRoleService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.common.entity.SysRole;
 
+import java.security.NoSuchAlgorithmException;
 import java.util.List;
 
 /**
@@ -29,7 +30,7 @@ public interface SysRoleService extends IService<SysRole> {
      */
     boolean saveRoleNew(SysRole role);
 
-    boolean enable(SysRole role);
+    boolean enable(SysRole role) throws NoSuchAlgorithmException;
 
     boolean remove(Long id);
 

+ 18 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysRoleServiceImpl.java

@@ -24,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional;
 import sun.misc.Request;
 
 import javax.annotation.Resource;
+import java.security.NoSuchAlgorithmException;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
@@ -52,6 +53,9 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
     @Resource
     SysRoleService sysRoleService;
 
+    @Resource
+    TeachcloudCommonService commonService;
+
     @Override
     public IPage<SysRole> list(String name, Boolean enable, Integer pageNumber, Integer pageSize) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
@@ -139,6 +143,11 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
                     sysRolePrivilegeService.removeByRoleId(role.getId());
                     sysRolePrivilegeService.saveBatch(role);//角色权限
                     cacheService.updateRolePrivilegeCache(role.getId());
+                    //绑定该角色的用户都需要清除鉴权缓存
+                    List<SysUserRole> sysUserRoleList = sysUserRoleService.listByRoleId(role.getId());
+                    for (SysUserRole s : sysUserRoleList) {
+                        commonService.removeUserInfo(s.getUserId());
+                    }
                 }
             } else {
                 role.setCreateId(sysUser.getId());
@@ -160,11 +169,18 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
     }
 
     @Override
-    public boolean enable(SysRole role) {
+    public boolean enable(SysRole role) throws NoSuchAlgorithmException {
         UpdateWrapper<SysRole> updateWrapper = new UpdateWrapper<>();
         updateWrapper.lambda().set(SysRole::getEnable, role.getEnable()).eq(SysRole::getId, role.getId());
         this.update(updateWrapper);
-        cacheService.roleCache(role.getId());
+        cacheService.updateRoleCache(role.getId());
+        //如果状态为禁用,需要踢下线重新登录
+        if (!role.getEnable()) {
+            List<SysUserRole> sysUserRoleList = sysUserRoleService.listByRoleId(role.getId());
+            for (SysUserRole s : sysUserRoleList) {
+                commonService.removeUserInfo(s.getUserId());
+            }
+        }
         return true;
     }
 

+ 1 - 8
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserRoleServiceImpl.java

@@ -17,7 +17,6 @@ import com.qmth.teachcloud.common.enums.RoleTypeEnum;
 import com.qmth.teachcloud.common.mapper.SysUserRoleMapper;
 import com.qmth.teachcloud.common.service.CacheService;
 import com.qmth.teachcloud.common.service.SysRolePrivilegeService;
-import com.qmth.teachcloud.common.service.SysRoleService;
 import com.qmth.teachcloud.common.service.SysUserRoleService;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -42,12 +41,6 @@ import java.util.stream.Collectors;
 @Service
 public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUserRole> implements SysUserRoleService {
 
-    @Autowired
-    private SysRoleService sysRoleService;
-
-    @Autowired
-    private SysRolePrivilegeService sysRolePrivilegeService;
-
     @Resource
     CacheService cacheService;
 
@@ -147,7 +140,7 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
         for (Long userId : userIds) {
             List<SysRole> sysRoles = this.listRoleByUserId(userId);
             for (SysRole role : sysRoles) {
-                List<SysRolePrivilege> rolePrivileges = sysRolePrivilegeService.listByRoleId(role.getId());
+                List<SysRolePrivilege> rolePrivileges = cacheService.rolePrivilegeCache(role.getId());
                 for (SysRolePrivilege rolePrivilege : rolePrivileges) {
                     SysUserRole userRole = new SysUserRole();
                     userRole.setUserId(userId);

+ 1 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -101,7 +101,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     public boolean enable(SysUser user) throws NoSuchAlgorithmException {
         UpdateWrapper<SysUser> updateWrapper = new UpdateWrapper<>();
         updateWrapper.lambda().set(SysUser::getEnable, user.getEnable()).eq(SysUser::getId, user.getId());
-
+        cacheService.updateUserCache(user.getId());
         boolean success = this.update(updateWrapper);
         //如果状态为禁用,需要踢下线重新登录
         if (!user.getEnable()) {