Selaa lähdekoodia

feature: 230306服务授权修改审批内容,角色授权api接口开发

mazq 2 vuotta sitten
vanhempi
sitoutus
298f8ac5d2

+ 66 - 16
src/main/java/com/dragoninfo/dcuc/authweb/restcontroller/api/authservice/v1/controller/StaffRoleAuthController.java

@@ -1,19 +1,25 @@
 package com.dragoninfo.dcuc.authweb.restcontroller.api.authservice.v1.controller;
 
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.dragoninfo.dcuc.app.entity.ApplyInfo;
 import com.dragoninfo.dcuc.app.facade.IApplyInfoFacade;
+import com.dragoninfo.dcuc.auth.auth.dto.StaffAssignDTO;
 import com.dragoninfo.dcuc.auth.auth.entity.RoleInfo;
 import com.dragoninfo.dcuc.auth.auth.facade.IRoleFacade;
 import com.dragoninfo.dcuc.auth.auth.facade.IStaffAssignAuthInfoFacade;
 import com.dragoninfo.dcuc.auth.auth.vo.RoleInfoApiVo;
 import com.dragoninfo.dcuc.auth.auth.vo.StaffRoleAuthApiVo;
+import com.dragoninfo.dcuc.auth.sub.dto.AuthUserDTO;
+import com.dragoninfo.dcuc.auth.sub.facade.IAuthUserInfoFacade;
 import com.dragoninfo.dcuc.authweb.restcontroller.api.authservice.v1.vo.UserRoleAuthReqVO;
 import com.dragoninfo.dcuc.authweb.util.VersionUtils;
 import com.dragoninfo.dcuc.common.entity.ApiResult;
 import com.dragoninfo.dcuc.common.entity.ApiSearchReq;
+import com.dragoninfo.dcuc.common.utils.ResponseUtil;
 import com.dragoninfo.dcuc.common.utils.SearchableUtil;
+import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
 import com.dragonsoft.duceap.base.enums.BooleanEnum;
 import com.dragonsoft.duceap.core.search.Searchable;
 import com.dragonsoft.duceap.core.search.enums.SearchOperator;
@@ -26,10 +32,7 @@ import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -51,6 +54,9 @@ public class StaffRoleAuthController {
     @Autowired
     private IStaffAssignAuthInfoFacade staffAssignAuthInfoFacade;
 
+    @Autowired
+    private IAuthUserInfoFacade userInfoFacad;
+
     @ApiOperation("应用下的角色列表查询(不分页)")
     @PostMapping("role/search")
     public ApiResult roleInfoList(@RequestBody ApiSearchReq apiSearchReq) {
@@ -124,25 +130,69 @@ public class StaffRoleAuthController {
     @ApiOperation("修改人员对应的应用角色")
     @PutMapping("role/users")
     public ApiResult userRoleSave(@Valid @RequestBody UserRoleAuthReqVO userRoleAuthReqVO) {
-        List<String> roleCodeList = userRoleAuthReqVO.getRoleCodeList();
+        List<String> roleCodeList = Optional
+                .ofNullable(userRoleAuthReqVO.getRoleCodeList())
+                .orElse(Collections.emptyList());
         String idcard = userRoleAuthReqVO.getIdcard();
         String appCode = userRoleAuthReqVO.getAppCode();
-        if (CollUtil.isEmpty(roleCodeList)) {
-            // todo 去除该应用对应的角色权限
+
+        // 查询人员信息
+        AuthUserDTO userDTO = userInfoFacad.findByIdcard(idcard);
+        if (null == userDTO) {
+            return ApiResult.setFailMessage("人员不存在");
         }
 
-        List<RoleInfo> roleInfoList = new ArrayList<>(roleCodeList.size());
-        for (String roleCode : roleCodeList) {
-            RoleInfo roleInfo = roleFacade.roleByCode(roleCode, appCode);
-            if (ObjectUtil.isNull(roleInfo)) {
-                return ApiResult.setFailMessage(String.format("AppCode %s, roleCode %s , can't find", appCode, roleCode));
+        ApplyInfo appInfo = applyInfoFacade.getAppByCode(appCode);
+        if (null == appInfo) {
+            return ApiResult.setFailMessage("应用资源不存在");
+        }
+
+        // 查询应用角色信息
+        List<RoleInfo> roleInfos = roleFacade.getRolesByAppId(appInfo.getId());
+
+        // 过滤角色信息
+        List<String> roleIds = roleInfos.stream()
+                .filter(e -> roleCodeList.contains(e.getCode()))
+                .map(RoleInfo::getId)
+                .collect(Collectors.toList());
+
+        // 删除应用下的角色信息
+        StaffAssignDTO dto = new StaffAssignDTO();
+        dto.setUserId(userDTO.getId());
+        dto.setOrgId(userDTO.getOrgId());
+
+        List<JSONObject> collect = roleIds.stream()
+                .map(e -> {
+                    JSONObject json = new JSONObject();
+                    json.put("id", e);
+                    json.put("appId", appInfo.getId());
+                    return json;
+                }).collect(Collectors.toList());
+
+        String arrs = JSON.toJSONString(collect);
+        String empStr = JSON.toJSONString(Collections.emptyList());
+
+
+        if (CollUtil.isNotEmpty(roleCodeList)) {
+            dto.setDeleteIds(arrs);
+            dto.setSaveIds(empStr);
+            ResponseStatus status = staffAssignAuthInfoFacade.saveStaff(dto);
+            if (ResponseUtil.isSuccess(status)) {
+                return ApiResult.setSuccess();
+            } else {
+                return ApiResult.setFailMessage(status.getMessage());
             }
-            roleInfoList.add(roleInfo);
         }
 
-        // todo 设置对应角色权限
+        dto.setDeleteIds(empStr);
+        dto.setSaveIds(arrs);
 
+        ResponseStatus status = staffAssignAuthInfoFacade.saveStaff(dto);
+        if (ResponseUtil.isSuccess(status)) {
+            return ApiResult.setSuccess();
+        } else {
+            return ApiResult.setFailMessage(status.getMessage());
+        }
 
-        return ApiResult.setSuccess();
     }
 }