浏览代码

更新!

TRX 1 年之前
父节点
当前提交
2706132e43

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

@@ -17,6 +17,9 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 public class ProjectSceneInfoModel extends SuperModel {
 
+    @Schema(description = "平台场景信息")
+    private SceneInfoModel sceneInfo;
+
     @Schema(description = "关联的数据ID")
     private String sceneInfoId;
 

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

@@ -15,9 +15,6 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 public class RoleSceneInfoModel extends SuperModel {
 
-    @Schema(description = "项目场景信息")
-    private ProjectSceneInfoModel sceneInfoModel;
-
     @Schema(description = "场景信息")
     private SceneInfoModel sceneInfo;
 

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

@@ -16,4 +16,10 @@ public interface RoleSceneInfoDao extends MongoDao<RoleSceneInfo> {
 
     List<RoleSceneInfo> findByRoleIdOrderBySortAsc(String roleId);
 
+    long deleteByProjectSceneInfoId(String projectSceneInfoId);
+
+    long deleteBySceneInfoId(String sceneInfoId);
+
+    long deleteByRoleId(String roleId);
+
 }

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

@@ -3,7 +3,9 @@ package com.zhongshu.card.server.core.service.scene;
 import com.github.microservice.components.data.base.util.PageEntityUtil;
 import com.github.microservice.net.ResultContent;
 import com.github.microservice.net.ResultMessage;
-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.dao.org.OrganizationDao;
 import com.zhongshu.card.server.core.dao.scene.ProjectSceneInfoDao;
@@ -12,6 +14,7 @@ import com.zhongshu.card.server.core.dao.scene.SceneInfoDao;
 import com.zhongshu.card.server.core.domain.org.Organization;
 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.CommonService;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import com.zhongshu.card.server.core.util.BeanUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -22,6 +25,9 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * @author TRX
  * @date 2024/11/22
@@ -42,6 +48,15 @@ public class ProjectSceneInfoService extends SuperService {
     @Autowired
     private OrganizationDao organizationDao;
 
+    @Autowired
+    private SceneInfoService sceneInfoService;
+
+    @Autowired
+    private RoleSceneInfoService roleSceneInfoService;
+
+    @Autowired
+    private CommonService commonService;
+
     public ResultContent bindScene(ProjectBindSceneParam param) {
         SceneInfo entity = sceneInfoDao.findTopById(param.getId());
         if (ObjectUtils.isEmpty(entity)) {
@@ -61,7 +76,8 @@ public class ProjectSceneInfoService extends SuperService {
         projectSceneInfo.setName(entity.getName());
         projectSceneInfo.setSceneType(entity.getSceneType());
         projectSceneInfo.setSceneState(entity.getState());
-        projectSceneInfo.setState(DataState.Enable);
+
+        projectSceneInfo.setState(entity.getState());
         projectSceneInfoDao.save(projectSceneInfo);
         return ResultContent.buildSuccess();
     }
@@ -88,6 +104,7 @@ public class ProjectSceneInfoService extends SuperService {
         projectSceneInfoDao.delete(entity);
 
         // 删除关联的信息
+        roleSceneInfoService.deleteByProjectSceneId(entity.getId());
         return ResultContent.buildSuccess();
     }
 
@@ -96,16 +113,63 @@ public class ProjectSceneInfoService extends SuperService {
         if (ObjectUtils.isEmpty(entity)) {
             return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
         }
+        if (state == DataState.Enable) {
+            DataState sceneState = entity.getSceneInfo().getState();
+            if (sceneState == DataState.Disable) {
+                return ResultContent.buildFail("平台上的场景已禁用,不能启用");
+            }
+        }
         entity.setState(state);
         projectSceneInfoDao.save(entity);
         return ResultContent.buildSuccess();
     }
 
+    public ResultContent changeStateBySceneInfoId(String sceneInfoId, DataState state) {
+        if (StringUtils.isNotEmpty(sceneInfoId)) {
+            Map<String, Object> where = new HashMap<>();
+            where.put("sceneInfoId", sceneInfoId);
+
+            Map<String, Object> standardData = new HashMap<>();
+            standardData.put("sceneState", state);
+
+            commonService.updateData(where, standardData, ProjectSceneInfo.class.getSimpleName());
+        }
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 场景信息发送变化,编辑项目上的关联数据
+     *
+     * @param sceneInfo
+     * @return
+     */
+    public ResultContent updateAllSceneInfo(SceneInfo sceneInfo) {
+        if (ObjectUtils.isNotEmpty(sceneInfo)) {
+            Map<String, Object> where = new HashMap<>();
+            where.put("sceneInfoId", sceneInfo.getId());
+
+            Map<String, Object> standardData = new HashMap<>();
+            standardData.put("name", sceneInfo.getName());
+            standardData.put("sceneType", sceneInfo.getSceneType());
+            standardData.put("sceneState", sceneInfo.getState());
+
+            commonService.updateData(where, standardData, ProjectSceneInfo.class.getSimpleName());
+        }
+        return ResultContent.buildSuccess();
+    }
+
+    public ResultContent deleteBySceneInfoId(String sceneInfoId) {
+        if (ObjectUtils.isNotEmpty(sceneInfoId)) {
+            projectSceneInfoDao.deleteBySceneInfoId(sceneInfoId);
+        }
+        return ResultContent.buildSuccess();
+    }
+
     public ProjectSceneInfoModel toModel(ProjectSceneInfo entity) {
         ProjectSceneInfoModel model = new ProjectSceneInfoModel();
         if (ObjectUtils.isNotEmpty(entity)) {
             BeanUtils.copyProperties(entity, model);
-
+            model.setSceneInfo(sceneInfoService.toModel(entity.getSceneInfo()));
         }
         return model;
     }

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

@@ -20,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -108,8 +109,59 @@ public class RoleSceneInfoService extends SuperService {
      * @return
      */
     public ResultContent sort(SortParam param) {
+        HashMap<String, Long> data = param.getData();
+        if (data != null && !data.isEmpty()) {
+            List<RoleSceneInfo> list = new ArrayList<>();
+            data.keySet().stream().forEach(it -> {
+                RoleSceneInfo entity = roleSceneInfoDao.findTopById(it);
+                if (ObjectUtils.isNotEmpty(entity)) {
+                    entity.setSort(data.get(it));
+                    list.add(entity);
+                }
+            });
+            if (ObjectUtils.isNotEmpty(list)) {
+                roleSceneInfoDao.saveAll(list);
+            }
+        }
+        return ResultContent.buildSuccess();
+    }
 
+    /**
+     * 根据项目的场景id删除角色的
+     *
+     * @param projectSceneInfoId
+     * @return
+     */
+    public ResultContent deleteByProjectSceneId(String projectSceneInfoId) {
+        if (ObjectUtils.isNotEmpty(projectSceneInfoId)) {
+            roleSceneInfoDao.deleteByProjectSceneInfoId(projectSceneInfoId);
+        }
+        return ResultContent.buildSuccess();
+    }
 
+    /**
+     * 根据平台的场景id删除
+     *
+     * @param sceneInfoId
+     * @return
+     */
+    public ResultContent deleteBySceneInfoId(String sceneInfoId) {
+        if (ObjectUtils.isNotEmpty(sceneInfoId)) {
+            roleSceneInfoDao.deleteBySceneInfoId(sceneInfoId);
+        }
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 根据角色id删除数据
+     *
+     * @param roleId
+     * @return
+     */
+    public ResultContent deleteByRoleId(String roleId) {
+        if (ObjectUtils.isNotEmpty(roleId)) {
+            roleSceneInfoDao.deleteByRoleId(roleId);
+        }
         return ResultContent.buildSuccess();
     }
 

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

@@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * @author TRX
@@ -34,12 +35,13 @@ public class SceneInfoService extends SuperService {
     private SceneInfoDao sceneInfoDao;
 
     @Autowired
-    private ProjectSceneInfoDao projectSceneInfoDao;
+    private RoleSceneInfoService roleSceneInfoService;
 
     @Autowired
-    private RoleSceneInfoDao roleSceneInfoDao;
+    private ProjectSceneInfoService projectSceneInfoService;
 
     public ResultContent saveInfo(SceneInfoParam param) {
+        boolean isAdd = true;
         SceneInfo entity = null;
         SceneInfo temp = sceneInfoDao.findTopByName(param.getName());
         if (StringUtils.isNotEmpty(param.getId())) {
@@ -51,6 +53,7 @@ public class SceneInfoService extends SuperService {
                 return ResultContent.buildFail(String.format("名称已存在:%s", param.getName()));
             }
             initUpdateEntity(entity);
+            isAdd = false;
         } else {
             if (ObjectUtils.isNotEmpty(temp)) {
                 return ResultContent.buildFail(String.format("名称已存在:%s", param.getName()));
@@ -62,7 +65,9 @@ public class SceneInfoService extends SuperService {
         sceneInfoDao.save(entity);
 
         // 编辑关联的信息
-
+        if (!isAdd) {
+            projectSceneInfoService.updateAllSceneInfo(entity);
+        }
         return ResultContent.buildSuccess();
     }
 
@@ -88,17 +93,22 @@ public class SceneInfoService extends SuperService {
         sceneInfoDao.delete(entity);
 
         // 删除关联的信息
-
+        projectSceneInfoService.deleteBySceneInfoId(entity.getId());
+        roleSceneInfoService.deleteBySceneInfoId(entity.getId());
         return ResultContent.buildSuccess();
     }
 
+    @Transactional
     public ResultContent changeState(String id, DataState state) {
-        ProjectSceneInfo entity = projectSceneInfoDao.findTopById(id);
+        SceneInfo entity = sceneInfoDao.findTopById(id);
         if (ObjectUtils.isEmpty(entity)) {
             return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
         }
         entity.setState(state);
-        projectSceneInfoDao.save(entity);
+        sceneInfoDao.save(entity);
+
+        // 改变项目已绑定的场景状态
+        projectSceneInfoService.changeStateBySceneInfoId(entity.getId(), state);
         return ResultContent.buildSuccess();
     }