TRX před 1 rokem
rodič
revize
b9a71daf24

+ 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;
 

+ 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;
 

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

@@ -8,8 +8,8 @@ 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.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;
@@ -40,6 +40,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})

+ 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;
 

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

@@ -6,6 +6,8 @@ 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;
@@ -13,10 +15,12 @@ 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;
@@ -43,6 +47,9 @@ public class RoleSceneInfoService extends SuperService {
     @Autowired
     private RoleSceneInfoDao roleSceneInfoDao;
 
+    @Autowired
+    private SceneInfoService sceneInfoService;
+
     @Autowired
     private RoleDao roleDao;
 
@@ -116,6 +123,12 @@ public class RoleSceneInfoService extends SuperService {
         return roleSceneInfo;
     }
 
+    /**
+     * 查询角色绑定的所有的数据
+     *
+     * @param roleId
+     * @return
+     */
     public ResultContent<List<RoleSceneInfoModel>> list(String roleId) {
         List<RoleSceneInfoModel> models = new ArrayList<>();
         List<RoleSceneInfo> list = roleSceneInfoDao.findByRoleIdOrderBySortAsc(roleId);
@@ -125,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);
         }