Browse Source

给项目增加权限字典,用于小程序展示按钮。

zyh
Loki 3 years ago
parent
commit
4d7af16b05
  1. 37
      zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/project/vo/ProjectBaseVO.java

37
zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/project/vo/ProjectBaseVO.java

@ -1,12 +1,21 @@
package cn.iocoder.yudao.module.farm.controller.admin.project.vo;
import cn.hutool.json.JSON;
import cn.hutool.extra.spring.SpringUtil;
import cn.iocoder.yudao.framework.security.core.LoginUser;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.farm.dal.dataobject.project.ProjectDO;
import cn.iocoder.yudao.module.farm.enums.ProjectStateEnum;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
import cn.iocoder.yudao.module.system.service.permission.RoleService;
import cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl;
import com.alibaba.fastjson.JSONArray;
import com.google.common.collect.Maps;
import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import javax.validation.constraints.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ -16,7 +25,8 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
* 如果子 VO 存在差异的字段请不要添加到这里影响 Swagger 文档生成
*/
@Data
public class ProjectBaseVO {
public class ProjectBaseVO extends ProjectDO {
@ApiModelProperty(value = "")
private String name;
@ -54,4 +64,27 @@ public class ProjectBaseVO {
private Boolean pretendDelete;
private Map<String, Boolean> actions;
public Map<String, Boolean> getActions() {
actions = Maps.newHashMap();
// 当前用户是否有资格编辑删除这个项目
RoleService roleService = SpringUtil.getBean("roleServiceImpl");
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
assert loginUser != null;
List<RoleDO> roles = roleService.getRolesFromCache(loginUser.getRoleIds());
Optional<RoleDO> admin = roles.stream().filter(roleDO -> roleDO.getName().contains("管理员") || roleDO.getCode().contains("admin")).findAny();
// 是创建者 或者 是 租户的管理员,可以更改项目
actions.put("edit",getCreator().equals(loginUser.getId().toString()) || admin.isPresent());
// 应该加上,项目下面没有运行中的任务才可以删除 ,或者是在删除部分再做判断 ,此处只做权限显示
actions.put("delete",getCreator().equals(loginUser.getId().toString()) || admin.isPresent());
return actions;
}
}

Loading…
Cancel
Save