ycl-common/src/main/java/com/ycl/bo/AdminUserDetails.java
@@ -1,7 +1,7 @@ package com.ycl.bo; import com.ycl.entity.user.UmsAdmin; import com.ycl.entity.user.UmsResource; import com.ycl.entity.user.UmsMenu; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; @@ -15,8 +15,9 @@ */ public class AdminUserDetails implements UserDetails { private UmsAdmin umsAdmin; private List<UmsResource> resourceList; public AdminUserDetails(UmsAdmin umsAdmin, List<UmsResource> resourceList) { private List<UmsMenu> resourceList; public AdminUserDetails(UmsAdmin umsAdmin, List<UmsMenu> resourceList) { this.umsAdmin = umsAdmin; this.resourceList = resourceList; } @@ -25,7 +26,7 @@ public Collection<? extends GrantedAuthority> getAuthorities() { //返回当前用户的角色 return resourceList.stream() .map(role ->new SimpleGrantedAuthority(role.getId()+":"+role.getName())) .map(role -> new SimpleGrantedAuthority(role.getId() + ":" + role.getTitle())) .collect(Collectors.toList()); } @@ -59,7 +60,7 @@ return umsAdmin.getStatus().equals(1); } public Long getUserId(){ public Long getUserId() { return umsAdmin.getId(); } } ycl-common/src/main/java/com/ycl/service/user/UmsAdminCacheService.java
@@ -4,6 +4,7 @@ import com.ycl.entity.user.UmsAdmin; import com.ycl.entity.user.UmsMenu; import com.ycl.entity.user.UmsResource; import java.util.List; @@ -50,12 +51,12 @@ /** * 获取缓存后台用户资源列表 */ List<UmsResource> getResourceList(Long adminId); List<UmsMenu> getResourceList(Long adminId); /** * 设置后台后台用户资源列表 */ void setResourceList(Long adminId, List<UmsResource> resourceList); void setResourceList(Long adminId, List<UmsMenu> umsMenuList); /** * 批量删除缓存用户 ycl-common/src/main/java/com/ycl/service/user/UmsAdminService.java
@@ -6,6 +6,7 @@ import com.ycl.dto.UmsAdminParam; import com.ycl.dto.UpdateAdminPasswordParam; import com.ycl.entity.user.UmsAdmin; import com.ycl.entity.user.UmsMenu; import com.ycl.entity.user.UmsResource; import com.ycl.entity.user.UmsRole; import com.ycl.vo.user.UserVO; @@ -72,7 +73,7 @@ /** * 获取指定用户的可访问资源 */ List<UmsResource> getResourceList(Long adminId); List<UmsMenu> getResourceList(Long adminId); /** * 修改密码 ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminCacheServiceImpl.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ycl.entity.user.UmsAdmin; import com.ycl.entity.user.UmsAdminRoleRelation; import com.ycl.entity.user.UmsMenu; import com.ycl.entity.user.UmsResource; import com.ycl.mapper.user.UmsAdminMapper; import com.ycl.service.redis.RedisService; @@ -106,18 +107,18 @@ } @Override public List<UmsResource> getResourceList(Long adminId) { public List<UmsMenu> getResourceList(Long adminId) { String key = REDIS_DATABASE + ":" + REDIS_KEY_RESOURCE_LIST + ":" + adminId; String s = (String) redisService.get(key); // return (List<UmsResource>) redisService.get(key); List<UmsResource> umsResources = JSON.parseArray(s, UmsResource.class); List<UmsMenu> umsResources = JSON.parseArray(s, UmsMenu.class); return umsResources; } @Override public void setResourceList(Long adminId, List<UmsResource> resourceList) { public void setResourceList(Long adminId, List<UmsMenu> menuList) { String key = REDIS_DATABASE + ":" + REDIS_KEY_RESOURCE_LIST + ":" + adminId; redisService.set(key, JSON.toJSONString(resourceList), REDIS_EXPIRE); redisService.set(key, JSON.toJSONString(menuList), REDIS_EXPIRE); } @Override ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java
@@ -288,16 +288,14 @@ } @Override public List<UmsResource> getResourceList(Long adminId) { List<UmsResource> resourceList = getCacheService().getResourceList(adminId); if (CollUtil.isNotEmpty(resourceList)) { return resourceList; public List<UmsMenu> getResourceList(Long adminId) { List<UmsMenu> umsMenuList = getCacheService().getResourceList(adminId); if (CollUtil.isNotEmpty(umsMenuList)) { return umsMenuList; } resourceList = umsResourceMapper.getResourceList(adminId); if (CollUtil.isNotEmpty(resourceList)) { getCacheService().setResourceList(adminId, resourceList); } return resourceList; umsMenuList = umsMenuMapper.getMenuList(adminId); getCacheService().setResourceList(adminId, umsMenuList); return umsMenuList; } @Override @@ -328,7 +326,7 @@ //获取用户信息 UmsAdmin admin = getAdminByUsername(username); if (admin != null) { List<UmsResource> resourceList = getResourceList(admin.getId()); List<UmsMenu> resourceList = getResourceList(admin.getId()); return new AdminUserDetails(admin, resourceList); } throw new UsernameNotFoundException("用户名或密码错误"); ycl-platform/src/main/java/com/ycl/config/YclSecurityConfig.java
@@ -1,8 +1,10 @@ package com.ycl.config; import com.ycl.component.DynamicSecurityService; import com.ycl.entity.user.UmsMenu; import com.ycl.entity.user.UmsResource; import com.ycl.service.user.UmsAdminService; import com.ycl.service.user.UmsMenuService; import com.ycl.service.user.UmsResourceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; @@ -24,7 +26,7 @@ @Autowired private UmsAdminService adminService; @Autowired private UmsResourceService resourceService; private UmsMenuService umsMenuService; @Bean public UserDetailsService userDetailsService() { @@ -38,9 +40,9 @@ @Override public Map<String, ConfigAttribute> loadDataSource() { Map<String, ConfigAttribute> map = new ConcurrentHashMap<>(); List<UmsResource> resourceList = resourceService.list(); for (UmsResource resource : resourceList) { map.put(resource.getUrl(), new org.springframework.security.access.SecurityConfig(resource.getId() + ":" + resource.getName())); List<UmsMenu> resourceList = umsMenuService.list(); for (UmsMenu resource : resourceList) { map.put(resource.getTitle(), new org.springframework.security.access.SecurityConfig(resource.getId() + ":" + resource.getTitle())); } return map; } ycl-platform/src/main/resources/application.yml
@@ -36,7 +36,7 @@ database: sccg key: admin: 'ums:admin' resourceList: 'ums:resourceList' resourceList: 'ums:menuList' expire: common: 86400 # 24小时 ycl-platform/src/main/resources/mapper/caseHandler/DisposeRecordMapper.xml
@@ -33,8 +33,8 @@ t2.limit_time FROM ums_admin_role_relation t1 JOIN ums_dispose_record t2 ON t1.role_id = t2.handler_role_id JOIN ums_base_case t3 ON t2.base_case_id=t3.id left JOIN ums_dispose_record t2 ON t1.role_id = t2.handler_role_id left JOIN ums_base_case t3 ON t2.base_case_id=t3.id <where> t1.admin_id = #{id} AND ISNULL( t2.end_time )