TRX před 1 rokem
rodič
revize
1dfe7b637c

+ 22 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/base/SortParam.java

@@ -0,0 +1,22 @@
+package com.zhongshu.card.client.model.base;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.HashMap;
+
+/**
+ * @author TRX
+ * @date 2024/11/22
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SortParam {
+
+    @Schema(description = "排序数据,如: {'id1': 1, 'id2': 3, 'id3': 2}")
+    private HashMap<String, Long> data = new HashMap<>();
+
+}

+ 26 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/scene/RoleBindSceneParam.java

@@ -0,0 +1,26 @@
+package com.zhongshu.card.client.model.scene;
+
+import com.zhongshu.card.client.model.base.ProjectOidParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/11/22
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class RoleBindSceneParam {
+
+    @Schema(description = "场景数据id")
+    @NotEmpty
+    private String id;
+
+    @Schema(description = "角色ID")
+    private String roleId;
+
+}

+ 10 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/scene/RoleSceneInfoModel.java

@@ -15,7 +15,16 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 public class RoleSceneInfoModel extends SuperModel {
 
-    @Schema(description = "场景信息")
+    @Schema(description = "项目场景信息")
     private ProjectSceneInfoModel sceneInfoModel;
 
+    @Schema(description = "场景信息")
+    private SceneInfoModel sceneInfo;
+
+    @Schema(description = "项目管理的场景ID")
+    private String projectSceneInfoId;
+
+    @Schema(description = "角色ID")
+    private String roleId;
+
 }

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

@@ -0,0 +1,70 @@
+package com.zhongshu.card.server.core.controller.scene;
+
+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.base.SortParam;
+import com.zhongshu.card.client.model.scene.RoleBindSceneParam;
+import com.zhongshu.card.client.model.scene.RoleSceneInfoModel;
+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;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * @author TRX
+ * @date 2024/6/5
+ */
+@RestController
+@RequestMapping("/roleSceneInfo")
+@Tag(name = "场景--角色场景管理")
+public class RoleSceneInfoController {
+
+    @Autowired
+    private RoleSceneInfoService roleSceneInfoService;
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "角色场景列表", description = "角色场景列表")
+    @RequestMapping(value = {"list"}, method = {RequestMethod.POST})
+    public ResultContent<List<RoleSceneInfoModel>> list(@RequestBody IDParam param) {
+        return roleSceneInfoService.list(param.getId());
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "角色绑定场景", description = "角色绑定场景")
+    @RequestMapping(value = "bindScene", method = {RequestMethod.POST})
+    public ResultContent bindScene(@RequestBody @Valid RoleBindSceneParam param) {
+        return this.roleSceneInfoService.bindScene(param);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "根据场景数据ID 场景详情", description = "根据场景数据ID 场景详情")
+    @RequestMapping(value = "getDetailById", method = {RequestMethod.POST})
+    public ResultContent<RoleSceneInfoModel> getDetailById(@RequestBody IDParam param) {
+        return this.roleSceneInfoService.getDetailById(param.getId());
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "角色删除场景", description = "角色删除场景")
+    @RequestMapping(value = "deleteById", method = {RequestMethod.POST})
+    public ResultContent deleteById(@RequestBody IDParam param) {
+        return this.roleSceneInfoService.deleteById(param.getId());
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "排序", description = "排序")
+    @RequestMapping(value = "sort", method = {RequestMethod.POST})
+    public ResultContent sort(@RequestBody SortParam param) {
+        return this.roleSceneInfoService.sort(param);
+    }
+
+}

+ 9 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/scene/RoleSceneInfoDao.java

@@ -4,8 +4,16 @@ import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
 import com.zhongshu.card.server.core.domain.scene.RoleSceneInfo;
 import com.zhongshu.card.server.core.domain.scene.SceneInfo;
 
+import java.util.List;
+
 public interface RoleSceneInfoDao extends MongoDao<RoleSceneInfo> {
 
-    SceneInfo findTopById(String id);
+    RoleSceneInfo findTopById(String id);
+
+    RoleSceneInfo findTopByProjectSceneInfoIdAndRoleId(String projectSceneInfoId, String roleId);
+
+    long countByRoleId(String roleId);
+
+    List<RoleSceneInfo> findByRoleIdOrderBySortAsc(String roleId);
 
 }

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

@@ -61,6 +61,7 @@ public class ProjectSceneInfoService extends SuperService {
         projectSceneInfo.setName(entity.getName());
         projectSceneInfo.setSceneType(entity.getSceneType());
         projectSceneInfo.setSceneState(entity.getState());
+        projectSceneInfo.setState(DataState.Enable);
         projectSceneInfoDao.save(projectSceneInfo);
         return ResultContent.buildSuccess();
     }

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

@@ -1,13 +1,28 @@
 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.RoleBindSceneParam;
+import com.zhongshu.card.client.model.scene.RoleSceneInfoModel;
+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;
 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.service.base.SuperService;
+import com.zhongshu.card.server.core.util.BeanUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * @author TRX
  * @date 2024/11/22
@@ -25,4 +40,85 @@ public class RoleSceneInfoService extends SuperService {
     @Autowired
     private RoleSceneInfoDao roleSceneInfoDao;
 
+    @Autowired
+    private RoleDao roleDao;
+
+    public ResultContent bindScene(RoleBindSceneParam param) {
+        ProjectSceneInfo entity = projectSceneInfoDao.findTopById(param.getId());
+        if (ObjectUtils.isEmpty(entity)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
+        }
+        Role role = roleDao.findTopById(param.getRoleId());
+        if (ObjectUtils.isEmpty(role)) {
+            return ResultContent.buildFail("角色不存在");
+        }
+
+        RoleSceneInfo roleSceneInfo = roleSceneInfoDao.findTopByProjectSceneInfoIdAndRoleId(entity.getId(), role.getId());
+        if (ObjectUtils.isNotEmpty(roleSceneInfo)) {
+            return ResultContent.buildFail(String.format("角色已存在场景:%s", entity.getName()));
+        }
+        roleSceneInfo = new RoleSceneInfo();
+        roleSceneInfo.setSceneInfo(entity.getSceneInfo());
+        roleSceneInfo.setSceneInfoId(entity.getId());
+
+        roleSceneInfo.setProjectSceneInfo(entity);
+        roleSceneInfo.setProjectSceneInfoId(entity.getId());
+
+        roleSceneInfo.setRole(role);
+        roleSceneInfo.setRoleId(role.getId());
+
+        long index = roleSceneInfoDao.countByRoleId(role.getId());
+        roleSceneInfo.setSort(index + 1);
+        roleSceneInfoDao.save(roleSceneInfo);
+        return ResultContent.buildSuccess();
+    }
+
+    public ResultContent<List<RoleSceneInfoModel>> list(String roleId) {
+        List<RoleSceneInfoModel> models = new ArrayList<>();
+        List<RoleSceneInfo> list = roleSceneInfoDao.findByRoleIdOrderBySortAsc(roleId);
+        if (ObjectUtils.isNotEmpty(list)) {
+            models = list.stream().map(this::toModel).collect(Collectors.toUnmodifiableList());
+        }
+        return ResultContent.buildSuccess(models);
+    }
+
+    public ResultContent<RoleSceneInfoModel> getDetailById(String id) {
+        RoleSceneInfo entity = roleSceneInfoDao.findTopById(id);
+        if (ObjectUtils.isEmpty(entity)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
+        }
+        return ResultContent.buildSuccess(toModel(entity));
+    }
+
+    public ResultContent deleteById(String id) {
+        RoleSceneInfo entity = roleSceneInfoDao.findTopById(id);
+        if (ObjectUtils.isEmpty(entity)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
+        }
+        // 判断是否可以删除
+        roleSceneInfoDao.delete(entity);
+        // 删除关联的信息
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 数据排序
+     *
+     * @param param
+     * @return
+     */
+    public ResultContent sort(SortParam param) {
+
+
+        return ResultContent.buildSuccess();
+    }
+
+    public RoleSceneInfoModel toModel(RoleSceneInfo entity) {
+        RoleSceneInfoModel model = new RoleSceneInfoModel();
+        if (ObjectUtils.isNotEmpty(entity)) {
+            BeanUtils.copyProperties(entity, model);
+        }
+        return model;
+    }
+
 }