Procházet zdrojové kódy

Merge remote-tracking branch 'origin/master'

wujiefeng před 1 rokem
rodič
revize
3086d93529
14 změnil soubory, kde provedl 234 přidání a 21 odebrání
  1. 28 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/role/RoleSimpleModel.java
  2. 25 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/scene/RoleBindAllParam.java
  3. 3 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/scene/SceneInfoModel.java
  4. 3 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/scene/SceneInfoParam.java
  5. 3 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/scene/SceneInfoSearch.java
  6. 9 4
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/orgManager/RoleController.java
  7. 3 5
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/scene/ProjectSceneInfoController.java
  8. 17 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/scene/RoleSceneInfoController.java
  9. 2 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/scene/SceneInfoDao.java
  10. 3 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/scene/SceneInfo.java
  11. 7 3
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/scene/ProjectSceneInfoService.java
  12. 81 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/scene/RoleSceneInfoService.java
  13. 8 3
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/scene/SceneInfoService.java
  14. 42 4
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/user/RoleServiceImpl.java

+ 28 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/role/RoleSimpleModel.java

@@ -0,0 +1,28 @@
+package com.zhongshu.card.client.model.org.role;
+
+import com.github.microservice.auth.security.type.AuthType;
+import com.zhongshu.card.client.model.base.SuperModel;
+import com.zhongshu.card.client.type.DataState;
+import com.zhongshu.card.client.type.RoleType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Set;
+
+/**
+ * @author TRX
+ * @date 2024/5/31
+ */
+@Data
+public class RoleSimpleModel {
+
+    @Schema(description = "数据ID")
+    private String id;
+
+    @Schema(description = "名称")
+    private String name;
+
+    @Schema(description = "角色编码")
+    private String code;
+
+}

+ 25 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/scene/RoleBindAllParam.java

@@ -0,0 +1,25 @@
+package com.zhongshu.card.client.model.scene;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author TRX
+ * @date 2024/11/22
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class RoleBindAllParam {
+
+    @Schema(description = "角色数据id")
+    private String roleId;
+
+    @Schema(description = "项目上的场景数据ID集合(顺序)")
+    private List<String> projectSceneInfoIds = new ArrayList<>();
+}

+ 3 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/scene/SceneInfoModel.java

@@ -20,6 +20,9 @@ public class SceneInfoModel extends SuperModel {
     @Schema(description = "场景名称")
     private String name;
 
+    @Schema(description = "编码")
+    private String code;
+
     @Schema(description = "图标")
     private String logo;
 

+ 3 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/scene/SceneInfoParam.java

@@ -23,6 +23,9 @@ public class SceneInfoParam extends SuperParam {
     @NotEmpty
     private String name;
 
+    @Schema(description = "编码")
+    private String code;
+
     @NotEmpty
     @Schema(description = "图标")
     private String logo;

+ 3 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/scene/SceneInfoSearch.java

@@ -20,6 +20,9 @@ public class SceneInfoSearch extends SuperSearch {
     @Schema(description = "场景名称")
     private String name;
 
+    @Schema(description = "编码")
+    private String code;
+
     @Schema(description = "类型")
     private SceneType sceneType;
 

+ 9 - 4
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/orgManager/RoleController.java

@@ -7,10 +7,7 @@ import com.github.microservice.net.ResultContent;
 import com.zhongshu.card.client.model.base.IDParam;
 import com.zhongshu.card.client.model.base.OidModel;
 import com.zhongshu.card.client.model.org.EditAuthParam;
-import com.zhongshu.card.client.model.org.role.RoleAddParam;
-import com.zhongshu.card.client.model.org.role.RoleModel;
-import com.zhongshu.card.client.model.org.role.RoleQueryParam;
-import com.zhongshu.card.client.model.org.role.RoleSearchParam;
+import com.zhongshu.card.client.model.org.role.*;
 import com.zhongshu.card.server.core.service.user.RoleServiceImpl;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
@@ -22,6 +19,7 @@ import org.springframework.data.web.PageableDefault;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * @author TRX
@@ -97,6 +95,13 @@ public class RoleController {
         return this.roleService.getAllRoles(param.getOid());
     }
 
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "小程序-得到当前用户所有的角色", description = "小程序-得到当前用户所有的角色")
+    @RequestMapping(value = {"xcxGetCurrentRoles"}, method = {RequestMethod.GET})
+    public ResultContent<List<RoleSimpleModel>> xcxGetCurrentRoles() {
+        return roleService.xcxGetCurrentRoles();
+    }
+
     //---------------------------角色权限 start -----------------------
 
     @Operation(summary = "获取角色的权限列表", description = "获取角色的权限列表")

+ 3 - 5
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/scene/ProjectSceneInfoController.java

@@ -4,10 +4,11 @@ import com.github.microservice.auth.security.annotations.ResourceAuth;
 import com.github.microservice.auth.security.type.AuthType;
 import com.github.microservice.net.ResultContent;
 import com.zhongshu.card.client.model.base.IDParam;
-import com.zhongshu.card.client.model.scene.*;
+import com.zhongshu.card.client.model.scene.ProjectBindSceneParam;
+import com.zhongshu.card.client.model.scene.ProjectSceneInfoModel;
+import com.zhongshu.card.client.model.scene.ProjectSceneInfoSearch;
 import com.zhongshu.card.client.type.DataState;
 import com.zhongshu.card.server.core.service.scene.ProjectSceneInfoService;
-import com.zhongshu.card.server.core.service.scene.SceneInfoService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -32,9 +33,6 @@ import javax.validation.Valid;
 @Tag(name = "场景--项目场景管理")
 public class ProjectSceneInfoController {
 
-    @Autowired
-    private SceneInfoService sceneInfoService;
-
     @Autowired
     private ProjectSceneInfoService projectSceneInfoService;
 

+ 17 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/scene/RoleSceneInfoController.java

@@ -5,10 +5,12 @@ import com.github.microservice.auth.security.type.AuthType;
 import com.github.microservice.net.ResultContent;
 import com.zhongshu.card.client.model.base.IDParam;
 import com.zhongshu.card.client.model.base.SortParam;
+import com.zhongshu.card.client.model.org.role.RoleSimpleModel;
+import com.zhongshu.card.client.model.scene.RoleBindAllParam;
 import com.zhongshu.card.client.model.scene.RoleBindSceneParam;
 import com.zhongshu.card.client.model.scene.RoleSceneInfoModel;
+import com.zhongshu.card.client.model.scene.SceneInfoModel;
 import com.zhongshu.card.server.core.service.scene.RoleSceneInfoService;
-import com.zhongshu.card.server.core.service.scene.SceneInfoService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,6 +41,13 @@ public class RoleSceneInfoController {
         return roleSceneInfoService.list(param.getId());
     }
 
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "得到角色所有已启用的场景列表", description = "得到角色所有已启用的场景列表")
+    @RequestMapping(value = {"getRoleAllEnableScenes"}, method = {RequestMethod.POST})
+    public ResultContent<List<SceneInfoModel>> getRoleAllEnableScenes(@RequestBody IDParam param) {
+        return ResultContent.buildSuccess(roleSceneInfoService.getAllEnableScenes(param.getId()));
+    }
+
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "角色绑定场景", description = "角色绑定场景")
     @RequestMapping(value = "bindScene", method = {RequestMethod.POST})
@@ -46,6 +55,13 @@ public class RoleSceneInfoController {
         return this.roleSceneInfoService.bindScene(param);
     }
 
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "一次绑定多个(以前的删除)", description = "一次绑定多个(以前的删除)")
+    @RequestMapping(value = "bindList", method = {RequestMethod.POST})
+    public ResultContent bindList(@RequestBody @Valid RoleBindAllParam param) {
+        return this.roleSceneInfoService.bindList(param);
+    }
+
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "根据场景数据ID 场景详情", description = "根据场景数据ID 场景详情")
     @RequestMapping(value = "getDetailById", method = {RequestMethod.POST})

+ 2 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/scene/SceneInfoDao.java

@@ -12,4 +12,6 @@ public interface SceneInfoDao extends MongoDao<SceneInfo>, SceneInfoDaoExtend {
 
     SceneInfo findTopByName(String sceneName);
 
+    SceneInfo findTopByCode(String code);
+
 }

+ 3 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/scene/SceneInfo.java

@@ -26,6 +26,9 @@ public class SceneInfo extends SuperMain {
     @Schema(description = "场景名称")
     private String name;
 
+    @Schema(description = "编码")
+    private String code;
+
     @Schema(description = "图标")
     private String logo;
 

+ 7 - 3
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/scene/ProjectSceneInfoService.java

@@ -6,6 +6,7 @@ import com.github.microservice.net.ResultMessage;
 import com.zhongshu.card.client.model.scene.ProjectBindSceneParam;
 import com.zhongshu.card.client.model.scene.ProjectSceneInfoModel;
 import com.zhongshu.card.client.model.scene.ProjectSceneInfoSearch;
+import com.zhongshu.card.client.model.scene.RoleBindAllParam;
 import com.zhongshu.card.client.type.DataState;
 import com.zhongshu.card.server.core.dao.org.OrganizationDao;
 import com.zhongshu.card.server.core.dao.scene.ProjectSceneInfoDao;
@@ -42,9 +43,6 @@ public class ProjectSceneInfoService extends SuperService {
     @Autowired
     private ProjectSceneInfoDao projectSceneInfoDao;
 
-    @Autowired
-    private RoleSceneInfoDao roleSceneInfoDao;
-
     @Autowired
     private OrganizationDao organizationDao;
 
@@ -158,6 +156,12 @@ public class ProjectSceneInfoService extends SuperService {
         return ResultContent.buildSuccess();
     }
 
+    /**
+     * 删除平台的场景数据时,关联删除项目上的数据
+     *
+     * @param sceneInfoId
+     * @return
+     */
     public ResultContent deleteBySceneInfoId(String sceneInfoId) {
         if (ObjectUtils.isNotEmpty(sceneInfoId)) {
             projectSceneInfoDao.deleteBySceneInfoId(sceneInfoId);

+ 81 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/scene/RoleSceneInfoService.java

@@ -3,8 +3,11 @@ package com.zhongshu.card.server.core.service.scene;
 import com.github.microservice.net.ResultContent;
 import com.github.microservice.net.ResultMessage;
 import com.zhongshu.card.client.model.base.SortParam;
+import com.zhongshu.card.client.model.scene.RoleBindAllParam;
 import com.zhongshu.card.client.model.scene.RoleBindSceneParam;
 import com.zhongshu.card.client.model.scene.RoleSceneInfoModel;
+import com.zhongshu.card.client.model.scene.SceneInfoModel;
+import com.zhongshu.card.client.type.DataState;
 import com.zhongshu.card.server.core.dao.org.RoleDao;
 import com.zhongshu.card.server.core.dao.scene.ProjectSceneInfoDao;
 import com.zhongshu.card.server.core.dao.scene.RoleSceneInfoDao;
@@ -12,12 +15,15 @@ import com.zhongshu.card.server.core.dao.scene.SceneInfoDao;
 import com.zhongshu.card.server.core.domain.org.Role;
 import com.zhongshu.card.server.core.domain.scene.ProjectSceneInfo;
 import com.zhongshu.card.server.core.domain.scene.RoleSceneInfo;
+import com.zhongshu.card.server.core.domain.scene.SceneInfo;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import com.zhongshu.card.server.core.util.BeanUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -41,6 +47,9 @@ public class RoleSceneInfoService extends SuperService {
     @Autowired
     private RoleSceneInfoDao roleSceneInfoDao;
 
+    @Autowired
+    private SceneInfoService sceneInfoService;
+
     @Autowired
     private RoleDao roleDao;
 
@@ -58,7 +67,7 @@ public class RoleSceneInfoService extends SuperService {
         if (ObjectUtils.isNotEmpty(roleSceneInfo)) {
             return ResultContent.buildFail(String.format("角色已存在场景:%s", entity.getName()));
         }
-        roleSceneInfo = new RoleSceneInfo();
+        roleSceneInfo = buildProjectSceneInfo(entity);
         roleSceneInfo.setSceneInfo(entity.getSceneInfo());
         roleSceneInfo.setSceneInfoId(entity.getId());
 
@@ -74,6 +83,52 @@ public class RoleSceneInfoService extends SuperService {
         return ResultContent.buildSuccess();
     }
 
+    @Transactional
+    public ResultContent bindList(RoleBindAllParam param) {
+        Role role = roleDao.findTopById(param.getRoleId());
+        if (ObjectUtils.isEmpty(role)) {
+            return ResultContent.buildFail("角色不存在");
+        }
+        roleSceneInfoDao.deleteByRoleId(role.getId());
+        List<RoleSceneInfo> list = new ArrayList<>();
+        List<String> projectSceneInfoIds = param.getProjectSceneInfoIds();
+        if (ObjectUtils.isNotEmpty(projectSceneInfoIds)) {
+            long i = 1;
+            for (String projectSceneInfoId : projectSceneInfoIds) {
+                ProjectSceneInfo projectSceneInfo = projectSceneInfoDao.findTopById(projectSceneInfoId);
+                if (ObjectUtils.isNotEmpty(projectSceneInfo)) {
+                    RoleSceneInfo roleSceneInfo = buildProjectSceneInfo(projectSceneInfo);
+                    roleSceneInfo.setRole(role);
+                    roleSceneInfo.setRoleId(role.getId());
+                    roleSceneInfo.setSort(i);
+                    list.add(roleSceneInfo);
+                    i++;
+                }
+            }
+        }
+        if (ObjectUtils.isNotEmpty(list)) {
+            roleSceneInfoDao.saveAll(list);
+        }
+        return ResultContent.buildSuccess();
+    }
+
+    public RoleSceneInfo buildProjectSceneInfo(ProjectSceneInfo projectSceneInfo) {
+        RoleSceneInfo roleSceneInfo = new RoleSceneInfo();
+        roleSceneInfo.setSceneInfo(projectSceneInfo.getSceneInfo());
+        roleSceneInfo.setSceneInfoId(projectSceneInfo.getId());
+
+        roleSceneInfo.setProjectSceneInfo(projectSceneInfo);
+        roleSceneInfo.setProjectSceneInfoId(projectSceneInfo.getId());
+
+        return roleSceneInfo;
+    }
+
+    /**
+     * 查询角色绑定的所有的数据
+     *
+     * @param roleId
+     * @return
+     */
     public ResultContent<List<RoleSceneInfoModel>> list(String roleId) {
         List<RoleSceneInfoModel> models = new ArrayList<>();
         List<RoleSceneInfo> list = roleSceneInfoDao.findByRoleIdOrderBySortAsc(roleId);
@@ -83,6 +138,31 @@ public class RoleSceneInfoService extends SuperService {
         return ResultContent.buildSuccess(models);
     }
 
+    /**
+     * 查询角色可用的场景
+     *
+     * @param roleId
+     * @return
+     */
+    public List<SceneInfoModel> getAllEnableScenes(String roleId) {
+        List<SceneInfoModel> models = new ArrayList<>();
+        if (StringUtils.isNotEmpty(roleId)) {
+            List<RoleSceneInfo> list = roleSceneInfoDao.findByRoleIdOrderBySortAsc(roleId);
+            if (ObjectUtils.isNotEmpty(list)) {
+                list.stream().forEach(it -> {
+                    SceneInfo sceneInfo = it.getSceneInfo();
+                    ProjectSceneInfo projectSceneInfo = it.getProjectSceneInfo();
+                    if (ObjectUtils.isNotEmpty(projectSceneInfo) && ObjectUtils.isNotEmpty(sceneInfo)) {
+                        if (projectSceneInfo.getState() == DataState.Enable && sceneInfo.getState() == DataState.Enable) {
+                            models.add(sceneInfoService.toModel(sceneInfo));
+                        }
+                    }
+                });
+            }
+        }
+        return models;
+    }
+
     public ResultContent<RoleSceneInfoModel> getDetailById(String id) {
         RoleSceneInfo entity = roleSceneInfoDao.findTopById(id);
         if (ObjectUtils.isEmpty(entity)) {

+ 8 - 3
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/scene/SceneInfoService.java

@@ -7,10 +7,7 @@ import com.zhongshu.card.client.model.scene.SceneInfoModel;
 import com.zhongshu.card.client.model.scene.SceneInfoParam;
 import com.zhongshu.card.client.model.scene.SceneInfoSearch;
 import com.zhongshu.card.client.type.DataState;
-import com.zhongshu.card.server.core.dao.scene.ProjectSceneInfoDao;
-import com.zhongshu.card.server.core.dao.scene.RoleSceneInfoDao;
 import com.zhongshu.card.server.core.dao.scene.SceneInfoDao;
-import com.zhongshu.card.server.core.domain.scene.ProjectSceneInfo;
 import com.zhongshu.card.server.core.domain.scene.SceneInfo;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import com.zhongshu.card.server.core.util.BeanUtils;
@@ -43,7 +40,9 @@ public class SceneInfoService extends SuperService {
     public ResultContent saveInfo(SceneInfoParam param) {
         boolean isAdd = true;
         SceneInfo entity = null;
+
         SceneInfo temp = sceneInfoDao.findTopByName(param.getName());
+        SceneInfo codeTemp = sceneInfoDao.findTopByCode(param.getCode());
         if (StringUtils.isNotEmpty(param.getId())) {
             entity = sceneInfoDao.findTopById(param.getId());
             if (ObjectUtils.isEmpty(entity)) {
@@ -52,12 +51,18 @@ public class SceneInfoService extends SuperService {
             if (ObjectUtils.isNotEmpty(temp) && !temp.getId().equals(entity.getId())) {
                 return ResultContent.buildFail(String.format("名称已存在:%s", param.getName()));
             }
+            if (ObjectUtils.isNotEmpty(codeTemp) && !codeTemp.getId().equals(entity.getId())) {
+                return ResultContent.buildFail(String.format("code已存在:%s", param.getName()));
+            }
             initUpdateEntity(entity);
             isAdd = false;
         } else {
             if (ObjectUtils.isNotEmpty(temp)) {
                 return ResultContent.buildFail(String.format("名称已存在:%s", param.getName()));
             }
+            if (ObjectUtils.isNotEmpty(codeTemp)) {
+                return ResultContent.buildFail(String.format("code已存在:%s", param.getName()));
+            }
             entity = new SceneInfo();
             initEntityNoCheckOid(entity);
         }

+ 42 - 4
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/user/RoleServiceImpl.java

@@ -13,10 +13,7 @@ import com.google.common.collect.Lists;
 import com.zhongshu.card.client.model.org.AuthModel;
 import com.zhongshu.card.client.model.org.EditAuthParam;
 import com.zhongshu.card.client.model.org.ModularModel;
-import com.zhongshu.card.client.model.org.role.RoleAddParam;
-import com.zhongshu.card.client.model.org.role.RoleModel;
-import com.zhongshu.card.client.model.org.role.RoleQueryParam;
-import com.zhongshu.card.client.model.org.role.RoleSearchParam;
+import com.zhongshu.card.client.model.org.role.*;
 import com.zhongshu.card.client.type.DataState;
 import com.zhongshu.card.client.type.EditType;
 import com.zhongshu.card.client.type.PermissionPointType;
@@ -32,6 +29,7 @@ import com.zhongshu.card.server.core.domain.org.Role;
 import com.zhongshu.card.server.core.domain.org.UserAccount;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import com.zhongshu.card.server.core.service.org.OrganizationServiceImpl;
+import com.zhongshu.card.server.core.service.scene.RoleSceneInfoService;
 import com.zhongshu.card.server.core.util.AesUtils;
 import com.zhongshu.card.server.core.util.BeanUtils;
 import com.zhongshu.card.server.core.util.CommonUtil;
@@ -77,6 +75,8 @@ public class RoleServiceImpl extends SuperService {
     @Autowired
     private OrganizationServiceImpl organizationService;
 
+    @Autowired
+    private RoleSceneInfoService roleSceneInfoService;
 
     /**
      * 添加/编辑角色
@@ -196,6 +196,7 @@ public class RoleServiceImpl extends SuperService {
         // 删除权限中心角色
         roleService.removeRole(role.getRoleId());
         roleService.removeRoleGroup(role.getRoleGroupId());
+        roleSceneInfoService.deleteByRoleId(role.getId());
         return ResultContent.buildSuccess();
     }
 
@@ -797,6 +798,35 @@ public class RoleServiceImpl extends SuperService {
         return ResultContent.buildSuccess();
     }
 
+    public ResultContent<List<RoleSimpleModel>> xcxGetCurrentRoles() {
+        String projectOid = getCurrentProjectOid();
+        String userId = getCurrentUserId();
+        return ResultContent.buildSuccess(getUserInProjectRoles(projectOid, userId));
+    }
+
+    /**
+     * 得到用户在项目下所有的角色信息
+     *
+     * @param projectOid
+     * @param userId
+     */
+    public List<RoleSimpleModel> getUserInProjectRoles(String projectOid, String userId) {
+        List<RoleSimpleModel> models = new ArrayList<>();
+        if (StringUtils.isNotEmpty(projectOid) && ObjectUtils.isNotEmpty(userId)) {
+            List<OrganizationUser> list = organizationUserDao.findByUserIdAndProjectOidAndIsOrg(userId, projectOid, Boolean.TRUE);
+            List<Role> roles = new ArrayList<>();
+            if (ObjectUtils.isNotEmpty(list)) {
+                list.stream().forEach(it -> {
+                    if (ObjectUtils.isNotEmpty(it.getRoles())) {
+                        roles.addAll(it.getRoles());
+                    }
+                });
+            }
+            models = roles.stream().map(this::toSimpleModel).collect(Collectors.toList());
+        }
+        return models;
+    }
+
     //--------------------------模型转换 start---------------------
 
     public List<RoleModel> toModels(List<Role> roles) {
@@ -814,4 +844,12 @@ public class RoleServiceImpl extends SuperService {
         return roleModel;
     }
 
+    public RoleSimpleModel toSimpleModel(Role role) {
+        RoleSimpleModel roleModel = new RoleSimpleModel();
+        if (ObjectUtils.isNotEmpty(role)) {
+            BeanUtils.copyProperties(role, roleModel);
+        }
+        return roleModel;
+    }
+
 }