Commit 1b8c79da authored by tianyiming's avatar tianyiming

工作台权限卡片相关查询

parent 6cc7bdea
......@@ -4,6 +4,7 @@ package com.yeejoin.amos.boot.module.jg.biz.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapBuilder;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -669,6 +670,23 @@ public class CommonController extends BaseController {
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/workbench/permission/V2")
@ApiOperation(httpMethod = "POST", value = "结合传入卡片获取菜单", notes = "结合传入卡片获取菜单")
public ResponseModel<Object> permissionTreeV2(@RequestParam String menuAgent,
@RequestParam String permissionType,
@RequestParam(required = false) String path,
@RequestBody JSONArray params) {
return ResponseHelper.buildResponse(commonService.getPermissionTreeWithCompanyV2(menuAgent, permissionType, path, getSelectedOrgInfo().getCompany(), params));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "all/workbench/permission")
@ApiOperation(httpMethod = "GET", value = "查询业务类型下的所有菜单", notes = "查询业务类型下的所有菜单")
public ResponseModel<Object> allWorkbenchPermission(@RequestParam String businessType, @RequestParam String appCode ) {
return ResponseHelper.buildResponse(commonService.allWorkbenchPermission(businessType, appCode));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/equOnJgServiceOperationRecords")
@ApiOperation(httpMethod = "GET", value = "查询设备在jg业务中的记录", notes = "查询设备在jg业务中的记录")
public ResponseModel<List<Map<String, String>>> equOnJgServiceOperationRecords(@RequestParam(value = "record") String record) {
......
......@@ -275,4 +275,8 @@ public interface ICommonService {
* @return
*/
Boolean checkRecordUniqueness(String record);
JSONArray getPermissionTreeWithCompanyV2(String menuAgent, String permissionType, String path, CompanyBo company, JSONArray params);
JSONArray allWorkbenchPermission(String businessType, String appCode);
}
......@@ -521,6 +521,79 @@ public class CommonServiceImpl implements ICommonService {
return result;
}
@Override
public JSONArray allWorkbenchPermission(String businessType, String appCode) {
Collection<PermissionModel> permissionModels = FeignUtil.remoteCall(() -> Privilege.permissionClient.queryPermissionTree(null, null, null, null, appCode));
List<PermissionModel> allFilterChildren = flattenChildren(permissionModels);
List<PermissionModel> collect = allFilterChildren.stream().filter(permissionModel -> permissionModel.getExtraIcon() != null && permissionModel.getExtraIcon().startsWith(businessType)).collect(Collectors.toList());
JSONArray result = new JSONArray();
for (PermissionModel permissionModel : collect) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("code", permissionModel.getExtraIcon());
jsonObject.put("name", permissionModel.getPermissionName());
jsonObject.put("permissionName", permissionModel.getPermissionName());
jsonObject.put("path", permissionModel.getPath());
result.add(jsonObject);
}
return result;
}
@Override
public JSONArray getPermissionTreeWithCompanyV2(String menuAgent, String permissionType, String path, CompanyBo company, JSONArray params) {
Object roleSeqs = redisUtils.get(getSelectedRoleRedisKey());
Collection<PermissionModel> permissionModels;
// 监管单位
if (!"company".equals(company.getLevel()) || null == roleSeqs) {
permissionModels = FeignUtil.remoteCall(() -> Privilege.permissionClient.currentPermissionTree(menuAgent, permissionType, null, path));
} else {
permissionModels = FeignUtil.remoteCall(() -> Privilege.permissionClient.treeByRoles(roleSeqs.toString(), menuAgent, permissionType, path, RequestContext.getAppKey()));
}
// 过滤非快捷菜单
permissionModels = filterNonWrapPermission(permissionModels);
// 根据权限过滤菜单
JSONArray filterMenu = filterMenuByPermission(permissionModels, params);
return filterMenu;
}
private JSONArray filterMenuByPermission(Collection<PermissionModel> permissionModels, JSONArray params) {
JSONArray result = new JSONArray();
if (!ValidationUtil.isEmpty(permissionModels)) {
List<PermissionModel> allFilterChildren = new ArrayList<>();
for (PermissionModel permissionModel : permissionModels) {
if (!ObjectUtils.isEmpty(permissionModel.getChildren())) {
List<PermissionModel> children = flattenChildren(permissionModel.getChildren());
List<PermissionModel> filterChildren = children.stream().filter(child -> child.getExtraIcon() != null).collect(Collectors.toList());
allFilterChildren.addAll(filterChildren);
}
}
for (PermissionModel permissionModel : allFilterChildren) {
Object object = params.stream().filter(param -> permissionModel.getExtraIcon().equals(JSONObject.parseObject(JSONObject.toJSONString(param)).get("code"))).findFirst().get();
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(object));
jsonObject.put("path",permissionModel.getPath());
jsonObject.put("href",permissionModel.getPath());
result.add(jsonObject);
}
}
return result;
}
private List<PermissionModel> flattenChildren(Collection<PermissionModel> permissionModels) {
List<PermissionModel> flattenedList = new ArrayList<>();
if (!ValidationUtil.isEmpty(permissionModels)) {
for (PermissionModel permissionModel : permissionModels) {
// 将当前节点添加到列表中(如果需要)
flattenedList.add(permissionModel);
// 如果有子节点,则递归调用flattenChildren方法
if (!ObjectUtils.isEmpty(permissionModel.getChildren())) {
flattenedList.addAll(flattenChildren(permissionModel.getChildren()));
}
}
}
return flattenedList;
}
private Collection<PermissionModel> filterNonWrapPermission(Collection<PermissionModel> permissionModels) {
if (!ValidationUtil.isEmpty(permissionModels)) {
permissionModels.forEach(permissionModel -> {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment