2022/3/21 实现了getRolesResourceList方法

master
GPU is all you need 4 years ago
parent 7a93069c2f
commit 1e2dc59b06
  1. 94
      awardBE/src/main/java/edu/ncst/award/model/system/Resource.java
  2. 7
      awardBE/src/main/java/edu/ncst/award/service/IProjectService.java
  3. 4
      awardBE/src/main/java/edu/ncst/award/service/IResourceService.java
  4. 35
      awardBE/src/main/java/edu/ncst/award/service/impl/system/ResourceServiceImpl.java
  5. 3
      awardBE/src/main/java/edu/ncst/award/service/impl/system/SystemService.java

@ -4,55 +4,91 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.List;
@ApiModel(value="Resource", description="资源")
@Data
@EqualsAndHashCode(callSuper = false)
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @author <a href="https://www.fengwenyi.com?code">Erwin Feng</a>
* @since 2022-03-16
*/
@Getter
@Setter
@Accessors(chain = true)
@TableName("sys_resource")
@ApiModel(value = "SysResourceEntity对象")
public class Resource implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "资源ID")
@ApiModelProperty("资源ID")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "显示文本")
private String label;
@ApiModelProperty(value = "资源名称(方法签名)")
@ApiModelProperty("资源名称")
@TableField("name")
private String name;
@ApiModelProperty(value = "请求方法类型")
@ApiModelProperty("显示文本")
@TableField("label")
private String label;
@ApiModelProperty("请求方法")
@TableField("method")
private String method;
@ApiModelProperty(value = "链接")
private String url;
@ApiModelProperty("允许所有访问")
@TableField("permit_all")
private Boolean permitAll;
@ApiModelProperty(value = "允许所有访问", notes = "不需要用户登录")
private Boolean permitAll = false;
@ApiModelProperty("路径")
@TableField("url")
private String url;
@ApiModelProperty(value = "用户作用域")
private Boolean userScope = false;
@ApiModelProperty("排序")
@TableField("sort")
private Integer sort;
@ApiModelProperty(value = "上级菜单ID")
@ApiModelProperty("上级资源ID")
@TableField("parent_id")
private Integer parentId;
@ApiModelProperty(value = "上级菜单ID")
@TableField(exist = false)
private List<Resource> children;
@ApiModelProperty("启用与否")
@TableField("enable")
private Boolean enable;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty("创建者")
@TableField("create_user_id")
private Integer createUserId;
@ApiModelProperty("创建时间")
@TableField("create_time")
private LocalDateTime createTime;
@ApiModelProperty("最后修改者")
@TableField("last_modify_user_id")
private Integer lastModifyUserId;
@ApiModelProperty("最后修改时间")
@TableField("last_modify_time")
private LocalDateTime lastModifyTime;
@ApiModelProperty("删除者")
@TableField("delete_user_id")
private Integer deleteUserId;
@ApiModelProperty("删除时间")
@TableField("delete_time")
private LocalDate deleteTime;
@ApiModelProperty(value = "是否對所有角色開放")
private Boolean isForAll = true;
}

@ -1,2 +1,7 @@
package edu.ncst.award.service.impl;public interface IProjectService {
package edu.ncst.award.service;
import com.baomidou.mybatisplus.extension.service.IService;
import edu.ncst.award.model.project.Project;
public interface IProjectService extends IService<Project> {
}

@ -1,5 +1,7 @@
package edu.ncst.award.service;
import com.baomidou.mybatisplus.extension.service.IService;
import edu.ncst.award.mapper.system.ResourceMapper;
import edu.ncst.award.model.system.Resource;
import edu.ncst.award.vo.ListResultVO;
import edu.ncst.award.vo.Query;
@ -7,7 +9,7 @@ import org.springframework.stereotype.Service;
import java.util.List;
public interface IResourceService {
public interface IResourceService extends IService<Resource> {
void reimportInterfaceMeta();
ListResultVO<Resource> getResourceList(Query query);

@ -2,6 +2,7 @@ package edu.ncst.award.service.impl.system;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import edu.ncst.award.exception.BusinessException;
import edu.ncst.award.exception.CodeMsg;
import edu.ncst.award.mapper.system.ResourceMapper;
@ -11,6 +12,7 @@ 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;
@ -28,12 +30,16 @@ 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 implements IResourceService {
public class ResourceServiceImpl extends ServiceImpl<ResourceMapper, Resource> implements IResourceService {
@Autowired
private ResourceMapper resourceMapper;
// @Autowired
// private IResourceService iResourceService;
// 欲扫描的包路径
private static final String SCAN_PACKAGE = "edu.ncst.equmanager.controller";
@ -42,12 +48,12 @@ public class ResourceServiceImpl implements IResourceService {
* 重新导入接口元信息
*/
@Caching(
evict = {
@CacheEvict(cacheNames = "permitAllResourceList"),
@CacheEvict(cacheNames = "userScopeResourceList"),
@CacheEvict(cacheNames = "permitAllResourceURLs"),
@CacheEvict(cacheNames = "userScopeResourceURLs")
}
evict = {
@CacheEvict(cacheNames = "permitAllResourceList"),
@CacheEvict(cacheNames = "userScopeResourceList"),
@CacheEvict(cacheNames = "permitAllResourceURLs"),
@CacheEvict(cacheNames = "userScopeResourceURLs")
}
)
@Transactional
@Override
@ -159,7 +165,7 @@ public class ResourceServiceImpl implements IResourceService {
}
ApiOperation operationAnnotation = method.getAnnotation(ApiOperation.class);
// LoginUserScope scopeAnnotation = method.getAnnotation(LoginUserScope.class);
// LoginUserScope scopeAnnotation = method.getAnnotation(LoginUserScope.class);
PermitAll permitAllAnnotation = method.getAnnotation(PermitAll.class);
if (operationAnnotation == null || operationAnnotation.hidden()) {
@ -213,8 +219,8 @@ public class ResourceServiceImpl implements IResourceService {
!Objects.equals(newResource.getLabel(), oldResource.getLabel()) ||
!Objects.equals(newResource.getMethod(), oldResource.getMethod()) ||
!Objects.equals(newResource.getPermitAll(), oldResource.getPermitAll()) ||
!Objects.equals(newResource.getUrl(), oldResource.getUrl()) ||
!Objects.equals(newResource.getUserScope(), oldResource.getUserScope());
!Objects.equals(newResource.getUrl(), oldResource.getUrl());
// || !Objects.equals(newResource.getUserScope(), oldResource.getUserScope());
}
/**
@ -274,6 +280,7 @@ public class ResourceServiceImpl implements IResourceService {
/**
* 扫描指定包下的所有类
*
* @return 类对象列表
*/
private List<Class<?>> findClassLocal() {
@ -354,11 +361,15 @@ public class ResourceServiceImpl implements IResourceService {
/**
* 获取多个角色能够访问的资源列表
*
* @return 返回一组路径 {/api,"/api/project"}
*/
@Override
public List<String> getRolesResourceList(List<String> roleNames) {
//resourceMapper.getRolesResourceUrls(roleNames);
return null;
val strings = new ArrayList<String>();
roleNames.forEach(roleName -> list(new QueryWrapper<Resource>().eq("name", roleName)).forEach(Resource -> strings.add(Resource.getUrl())));
System.out.println("hello");
return strings;
}
/**

@ -9,7 +9,4 @@ import org.springframework.stereotype.Service;
@Service
public class SystemService implements ISystemService {
}

Loading…
Cancel
Save