generated from dxfeng/secondev-wugang-dxfeng
feat(entry): 新增权限转移功能
- 实现了权限转移操作人员和离职员工权限数据的查询 - 新增角色明细数据的查询功能
This commit is contained in:
parent
b5ae3b1780
commit
0ab804b400
|
|
@ -0,0 +1,176 @@
|
|||
package com.weaver.seconddev.entry.action;
|
||||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.weaver.common.base.entity.result.WeaResult;
|
||||
import com.weaver.esb.api.rpc.EsbServerlessRpcRemoteInterface;
|
||||
import com.weaver.seconddev.entry.entity.PermissionTransferModule;
|
||||
import com.weaver.seconddev.entry.entity.RoleDetail;
|
||||
import com.weaver.seconddev.portal.constant.ApplicationConfigConstant;
|
||||
import com.weaver.seconddev.portal.util.PapiUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author:dxfeng
|
||||
* @createTime: 2025/08/04
|
||||
* @version: 1.0
|
||||
*/
|
||||
@Slf4j
|
||||
@Service("PermissionTransferAction")
|
||||
public class PermissionTransferAction implements EsbServerlessRpcRemoteInterface {
|
||||
@Override
|
||||
public WeaResult<Map<String, Object>> execute(Map<String, Object> params) {
|
||||
Map<String, Object> returnMap = new HashMap<>();
|
||||
// 离职员工ID
|
||||
String employeeId = Convert.toStr(params.get("employeeId"), null);
|
||||
|
||||
// 权限转移操作人员ID
|
||||
String optUserId = Convert.toStr(params.get("optUserId"), null);
|
||||
|
||||
String papiCode = PapiUtil.getPapiCode(ApplicationConfigConstant.APP_URL, ApplicationConfigConstant.CORP_ID, "B2b");
|
||||
String papiToken = PapiUtil.getPapiToken(ApplicationConfigConstant.APP_URL, ApplicationConfigConstant.ORGANIZATION_APP_KEY, ApplicationConfigConstant.ORGANIZATION_APP_SECRET, papiCode);
|
||||
|
||||
// 查询某个人员组织的可以转移的权限数据
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
// {"type":"resource","opt":"1","targetId":"959466419596591105"}
|
||||
jsonObject.put("type", "resource");
|
||||
jsonObject.put("opt", "1");
|
||||
jsonObject.put("targetId", employeeId);
|
||||
jsonObject.put("access_token", papiToken);
|
||||
|
||||
log.error("jsonObject===" + jsonObject);
|
||||
String response = HttpRequest.post(ApplicationConfigConstant.APP_URL + "/papi/openapi/api/architecture/permission/transfer/query/v1/module")
|
||||
.header("Content-Type", "application/json")
|
||||
.header("optUserId", optUserId)
|
||||
.body(jsonObject.toJSONString())
|
||||
.execute()
|
||||
.body();
|
||||
log.error("response===" + response);
|
||||
|
||||
JSONObject responseJson = JSONObject.parseObject(response);
|
||||
if (responseJson.getIntValue("code") != 200) {
|
||||
// 请求失败直接响应失败数据
|
||||
return WeaResult.fail(response, true);
|
||||
}
|
||||
JSONObject data = responseJson.getJSONObject("data");
|
||||
List<PermissionTransferModule> permissionTransferModuleList = new ArrayList<>();
|
||||
PermissionTransferModule roleModule = null;
|
||||
if (data != null) {
|
||||
JSONArray permissionTransferModules = data.getJSONArray("permissionTransferModules");
|
||||
for (Object permissionTransferModule : permissionTransferModules) {
|
||||
JSONObject permissionTransferModuleJson = (JSONObject) permissionTransferModule;
|
||||
PermissionTransferModule module = PermissionTransferModule.builder()
|
||||
.deleteType(permissionTransferModuleJson.getInteger("deleteType"))
|
||||
.opt(permissionTransferModuleJson.getInteger("opt"))
|
||||
.module(permissionTransferModuleJson.getString("module"))
|
||||
.moduleName(permissionTransferModuleJson.getString("moduleName"))
|
||||
.subModule(permissionTransferModuleJson.getString("subModule"))
|
||||
.subModuleName(permissionTransferModuleJson.getString("subModuleName"))
|
||||
.type(permissionTransferModuleJson.getString("type"))
|
||||
.content(permissionTransferModuleJson.getString("content"))
|
||||
.count(permissionTransferModuleJson.getInteger("count"))
|
||||
.build();
|
||||
if ("hrm_role".equals(module.getSubModule())) {
|
||||
roleModule = module;
|
||||
} else {
|
||||
permissionTransferModuleList.add(module);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 查询角色明细数据
|
||||
List<RoleDetail> roleDetailList = new ArrayList<>();
|
||||
getRoleDetail(employeeId, optUserId, 1, roleDetailList);
|
||||
|
||||
returnMap.put("permissionTransferModuleList", permissionTransferModuleList);
|
||||
returnMap.put("roleDetailList", roleDetailList);
|
||||
log.error("returnMap==" + JSON.toJSONString(returnMap));
|
||||
return WeaResult.success(returnMap);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取角色明细数据
|
||||
*
|
||||
* @param employeeId 员工ID
|
||||
* @param optUserId 操作用户ID
|
||||
* @param pageNum 当前页码
|
||||
* @param roleDetailList 角色明细列表
|
||||
* @param roleDetailList
|
||||
*/
|
||||
private void getRoleDetail(String employeeId, String optUserId, int pageNum, List<RoleDetail> roleDetailList) {
|
||||
String papiCode = PapiUtil.getPapiCode(ApplicationConfigConstant.APP_URL, ApplicationConfigConstant.CORP_ID, "B3b");
|
||||
String papiToken = PapiUtil.getPapiToken(ApplicationConfigConstant.APP_URL, ApplicationConfigConstant.ORGANIZATION_APP_KEY, ApplicationConfigConstant.ORGANIZATION_APP_SECRET, papiCode);
|
||||
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("access_token", papiToken);
|
||||
jsonObject.put("pageNum", pageNum);
|
||||
jsonObject.put("pageSize", 10);
|
||||
jsonObject.put("targetId", employeeId);
|
||||
jsonObject.put("param", new JSONObject());
|
||||
jsonObject.put("opt", "1");
|
||||
jsonObject.put("module", "hrm");
|
||||
jsonObject.put("subModule", "hrm_role");
|
||||
jsonObject.put("type", "resource");
|
||||
log.error("getRoleDetail>>jsonObject===" + jsonObject);
|
||||
String response = HttpRequest.post(ApplicationConfigConstant.APP_URL + "/papi/openapi/api/architecture/permission/transfer/query/v1/module/content")
|
||||
.header("Content-Type", "application/json")
|
||||
.header("optUserId", optUserId)
|
||||
.body(jsonObject.toJSONString())
|
||||
.execute()
|
||||
.body();
|
||||
log.error("getRoleDetail>>response===" + response);
|
||||
|
||||
JSONObject responseJson = JSONObject.parseObject(response);
|
||||
if (responseJson.getIntValue("code") != 200) {
|
||||
// 请求失败直接响应失败数据
|
||||
log.error("response==" + response);
|
||||
roleDetailList = new ArrayList<>();
|
||||
return;
|
||||
}
|
||||
JSONObject data = responseJson.getJSONObject("data");
|
||||
if (data != null) {
|
||||
JSONObject page = data.getJSONObject("page");
|
||||
JSONArray records = page.getJSONArray("records");
|
||||
if (records.size() > 0) {
|
||||
for (Object record : records) {
|
||||
JSONObject recordJson = (JSONObject) record;
|
||||
JSONArray columnValueList = recordJson.getJSONArray("columnValueList");
|
||||
if (columnValueList.size() > 0) {
|
||||
JSONObject columnValue = columnValueList.getJSONObject(0);
|
||||
RoleDetail roleDetail = RoleDetail.builder()
|
||||
.sourceId(columnValue.getString("sourceId"))
|
||||
.roleName(columnValue.getString("dataIndex_0"))
|
||||
.functionCount(columnValue.getInteger("dataIndex_1"))
|
||||
.memberCount(columnValue.getInteger("dataIndex_2"))
|
||||
.build();
|
||||
roleDetailList.add(roleDetail);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int pages = page.getIntValue("pages");
|
||||
if (pages > pageNum) {
|
||||
getRoleDetail(employeeId, optUserId, pageNum + 1, roleDetailList);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("employeeId", "1147262704872284161");
|
||||
params.put("optUserId", "1147262704872284161");
|
||||
PermissionTransferAction permissionTransferAction = new PermissionTransferAction();
|
||||
WeaResult<Map<String, Object>> execute = permissionTransferAction.execute(params);
|
||||
System.out.println(JSON.toJSONString(execute));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
package com.weaver.seconddev.entry.entity;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @author:dxfeng
|
||||
* @createTime: 2025/08/04
|
||||
* @version: 1.0
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class PermissionTransferModule {
|
||||
private Integer deleteType;
|
||||
private Integer opt;
|
||||
private String module;
|
||||
private String moduleName;
|
||||
private String subModule;
|
||||
private String subModuleName;
|
||||
private String type;
|
||||
private String content;
|
||||
private Integer count;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
package com.weaver.seconddev.entry.entity;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @author:dxfeng
|
||||
* @createTime: 2025/08/04
|
||||
* @version: 1.0
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class RoleDetail {
|
||||
private String sourceId;
|
||||
private String roleName;
|
||||
/**
|
||||
* 功能权限数量
|
||||
*/
|
||||
private Integer functionCount;
|
||||
/**
|
||||
* 成员数量
|
||||
*/
|
||||
private Integer memberCount;
|
||||
}
|
||||
Loading…
Reference in New Issue