diff --git a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/project/vo/ProjectBaseVO.java b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/project/vo/ProjectBaseVO.java index a1e8b55f..c3c833a8 100644 --- a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/project/vo/ProjectBaseVO.java +++ b/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 actions; + + public Map getActions() { + + actions = Maps.newHashMap(); + // 当前用户是否有资格编辑删除这个项目 + + RoleService roleService = SpringUtil.getBean("roleServiceImpl"); + + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + assert loginUser != null; + List roles = roleService.getRolesFromCache(loginUser.getRoleIds()); + + Optional 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; + } + }