TRX преди 1 година
родител
ревизия
43fb0e8418

+ 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<>();
+}

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

@@ -5,6 +5,7 @@ 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.RoleBindAllParam;
 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;
@@ -46,6 +47,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})

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

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

@@ -3,6 +3,7 @@ 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.server.core.dao.org.RoleDao;
@@ -18,6 +19,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 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;
@@ -58,7 +60,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 +76,46 @@ 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;
+    }
+
     public ResultContent<List<RoleSceneInfoModel>> list(String roleId) {
         List<RoleSceneInfoModel> models = new ArrayList<>();
         List<RoleSceneInfo> list = roleSceneInfoDao.findByRoleIdOrderBySortAsc(roleId);

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

@@ -30,8 +30,10 @@ import com.zhongshu.card.server.core.domain.org.Organization;
 import com.zhongshu.card.server.core.domain.org.OrganizationUser;
 import com.zhongshu.card.server.core.domain.org.Role;
 import com.zhongshu.card.server.core.domain.org.UserAccount;
+import com.zhongshu.card.server.core.domain.scene.RoleSceneInfo;
 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 +79,8 @@ public class RoleServiceImpl extends SuperService {
     @Autowired
     private OrganizationServiceImpl organizationService;
 
+    @Autowired
+    private RoleSceneInfoService roleSceneInfoService;
 
     /**
      * 添加/编辑角色
@@ -196,6 +200,7 @@ public class RoleServiceImpl extends SuperService {
         // 删除权限中心角色
         roleService.removeRole(role.getRoleId());
         roleService.removeRoleGroup(role.getRoleGroupId());
+        roleSceneInfoService.deleteByRoleId(role.getId());
         return ResultContent.buildSuccess();
     }