From 3a9c730cc6615493e4ceb785874f060bbac77010 Mon Sep 17 00:00:00 2001 From: GPU is all you need <2778335106@qq.com> Date: Thu, 19 May 2022 20:12:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E4=BA=86=E5=AF=B9resource?= =?UTF-8?q?=E7=9A=84=E6=89=B9=E9=87=8F=E5=88=A0=E9=99=A4=EF=BC=8C=E7=AD=89?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../award/mapper/system/ResourceMapper.java | 7 ++- .../impl/system/ResourceServiceImpl.java | 34 ++++++------- .../resources/mapper/SysResourceMapper.xml | 51 +++++++++++++++++++ 3 files changed, 72 insertions(+), 20 deletions(-) create mode 100644 awardBE/src/main/resources/mapper/SysResourceMapper.xml diff --git a/awardBE/src/main/java/edu/ncst/award/mapper/system/ResourceMapper.java b/awardBE/src/main/java/edu/ncst/award/mapper/system/ResourceMapper.java index 4f722b1..babc293 100644 --- a/awardBE/src/main/java/edu/ncst/award/mapper/system/ResourceMapper.java +++ b/awardBE/src/main/java/edu/ncst/award/mapper/system/ResourceMapper.java @@ -6,7 +6,6 @@ import org.springframework.stereotype.Repository; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; - @Repository public interface ResourceMapper extends BaseMapper { @@ -26,9 +25,13 @@ public interface ResourceMapper extends BaseMapper { List getResourceTree(); + /** + * 约定mysql数据库中permitAll值bit 若b'0'表示not permitAll 返回null + * @return 公开的资源 + */ List getPermitAllResourceList(); - List getUserScopeResourceList(); + List getUserScopeResourceList(List roleNames); List getPermitAllResourceURLs(); diff --git a/awardBE/src/main/java/edu/ncst/award/service/impl/system/ResourceServiceImpl.java b/awardBE/src/main/java/edu/ncst/award/service/impl/system/ResourceServiceImpl.java index 3cbff3e..65d8f37 100644 --- a/awardBE/src/main/java/edu/ncst/award/service/impl/system/ResourceServiceImpl.java +++ b/awardBE/src/main/java/edu/ncst/award/service/impl/system/ResourceServiceImpl.java @@ -1,5 +1,7 @@ package edu.ncst.award.service.impl.system; +import cn.hutool.core.date.LocalDateTimeUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -12,7 +14,6 @@ import edu.ncst.award.vo.ListResultVO; import edu.ncst.award.vo.Query; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import lombok.val; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; @@ -30,7 +31,6 @@ import java.lang.reflect.Modifier; import java.net.URI; import java.net.URISyntaxException; import java.util.*; -import java.util.function.Consumer; @Service public class ResourceServiceImpl extends ServiceImpl implements IResourceService { @@ -42,7 +42,7 @@ public class ResourceServiceImpl extends ServiceImpl i // 欲扫描的包路径 - private static final String SCAN_PACKAGE = "edu.ncst.equmanager.controller"; + private static final String SCAN_PACKAGE = "edu.ncst.award.controller"; /** * 重新导入接口元信息 @@ -50,9 +50,9 @@ public class ResourceServiceImpl extends ServiceImpl i @Caching( evict = { @CacheEvict(cacheNames = "permitAllResourceList"), - @CacheEvict(cacheNames = "userScopeResourceList"), +// @CacheEvict(cacheNames = "userScopeResourceList"), @CacheEvict(cacheNames = "permitAllResourceURLs"), - @CacheEvict(cacheNames = "userScopeResourceURLs") +// @CacheEvict(cacheNames = "userScopeResourceURLs") } ) @Transactional @@ -137,6 +137,9 @@ public class ResourceServiceImpl extends ServiceImpl i if (apiAnnotation != null && !apiAnnotation.hidden()) { parentResource = new Resource(); + parentResource.setCreateUserId(1) + .setCreateTime(LocalDateTimeUtil.now()); + groupName = aClass.getName(); parentResource.setLabel(apiAnnotation.description()); @@ -145,8 +148,10 @@ public class ResourceServiceImpl extends ServiceImpl i parentResource.setMethod("ALL"); Integer parentResourceId = resourceMapper.getIdByName(groupName); + boolean isExistItSelf = resourceMapper.exists(new LambdaQueryWrapper().eq(Resource::getName, groupName)); - if (parentResourceId == null) { + // 若当前resource没有父节点并且自身不存在就插入,否则就修改 + if (parentResourceId == null && !isExistItSelf) { resourceMapper.insert(parentResource); } else { parentResource.setId(parentResourceId); @@ -361,15 +366,12 @@ public class ResourceServiceImpl extends ServiceImpl i /** * 获取多个角色能够访问的资源列表 - * - * @return 返回一组路径 {”/api“,"/api/project"} + *k + * @return 返回一组Resource 对象 */ @Override - public List getRolesResourceList(List roleNames) { - val strings = new ArrayList(); - roleNames.forEach(roleName -> list(new QueryWrapper().eq("name", roleName)).forEach(Resource -> strings.add(Resource.getUrl()))); - System.out.println("hello"); - return strings; + public List getUserScopeResourceList(List roleNames) { + return resourceMapper.getUserScopeResourceList(roleNames); } /** @@ -388,11 +390,7 @@ public class ResourceServiceImpl extends ServiceImpl i @Cacheable(cacheNames = "permitAllResourceURLs") @Override public List getPermitAllResourceURLs() { - List strings = new ArrayList<>(); - strings.add("/api/user/current"); - strings.add("/api/auth/logout"); - //resourceMapper.getPermitAllResourceURLs(); - return strings; + return resourceMapper.getPermitAllResourceURLs(); } } diff --git a/awardBE/src/main/resources/mapper/SysResourceMapper.xml b/awardBE/src/main/resources/mapper/SysResourceMapper.xml new file mode 100644 index 0000000..2b83afa --- /dev/null +++ b/awardBE/src/main/resources/mapper/SysResourceMapper.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + insert into sys_resource (id, name, label, method, permit_all, url, sort, parent_id, enable, create_user_id, + create_time, last_modify_user_id, last_modify_time, delete_user_id, delete_time) values + + (#{item.id},#{item.name},#{item.label} + ,#{item.method},b'0',#{item.url},#{item.sort} + ,#{item.parentId},b'1', + 1 + ,now(), + 1 + ,#{item.lastModifyTime},#{item.deleteUserId},#{item.deleteTime}) + + + \ No newline at end of file