feat:(REQ-2699) 支持查询页面元素时查询菜单信息
This commit is contained in:
parent
dfec87ee3b
commit
2b3d7e5219
@ -1,5 +1,6 @@
|
||||
package cn.axzo.tyr.client.feign;
|
||||
|
||||
import cn.axzo.framework.domain.page.Page;
|
||||
import cn.axzo.framework.domain.web.result.ApiPageResult;
|
||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||
import cn.axzo.tyr.client.model.req.*;
|
||||
@ -41,4 +42,7 @@ public interface PageElementApi {
|
||||
/** 根据用户传入的页面code,查询用户有权限的元素code **/
|
||||
@PostMapping("/api/pageElement/getUserHasPermissionPageElement")
|
||||
ApiResult<GetUserHasPermissionPageElementResp> getUserHasPermissionPageElement(@RequestBody @Valid GetUserHasPermissionPageElementReq req);
|
||||
|
||||
@PostMapping("/api/pageElement/list")
|
||||
ApiResult<List<PageElementResp>> list(PageElementReq param);
|
||||
}
|
||||
|
||||
@ -31,4 +31,7 @@ public class PageElementReq implements IPageReq {
|
||||
|
||||
@CriteriaField(field = "code", operator = Operator.IN)
|
||||
private Set<String> codes;
|
||||
|
||||
@CriteriaField(ignore = true)
|
||||
private Boolean needFeatureSource;
|
||||
}
|
||||
@ -71,4 +71,9 @@ public class PageElementResp {
|
||||
* 子元素(只包含一级)
|
||||
*/
|
||||
private List<PageElementResp> children;
|
||||
|
||||
/**
|
||||
* 元素对应的菜单信息,可能会存在多个
|
||||
*/
|
||||
private List<SaasFeatureResourceResp> featureResources;
|
||||
}
|
||||
|
||||
@ -3,7 +3,12 @@ package cn.axzo.tyr.server.controller.permission;
|
||||
import cn.axzo.framework.domain.web.result.ApiPageResult;
|
||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||
import cn.axzo.tyr.client.feign.PageElementApi;
|
||||
import cn.axzo.tyr.client.model.req.*;
|
||||
import cn.axzo.tyr.client.model.req.GetPageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.GetUserHasPermissionPageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
|
||||
import cn.axzo.tyr.client.model.req.PageElementReportReq;
|
||||
import cn.axzo.tyr.client.model.req.PageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.PageQueryElementReq;
|
||||
import cn.axzo.tyr.client.model.res.GetUserHasPermissionPageElementResp;
|
||||
import cn.axzo.tyr.client.model.res.PageElementResp;
|
||||
import cn.axzo.tyr.server.service.SaasPageElementService;
|
||||
@ -51,4 +56,9 @@ public class PageElementController implements PageElementApi {
|
||||
public ApiResult<GetUserHasPermissionPageElementResp> getUserHasPermissionPageElement(GetUserHasPermissionPageElementReq req) {
|
||||
return ApiResult.ok(saasPageElementService.getUserHasPermissionPageElement(req));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<List<PageElementResp>> list(PageElementReq param) {
|
||||
return ApiResult.ok(saasPageElementService.list(param));
|
||||
}
|
||||
}
|
||||
|
||||
@ -19,13 +19,16 @@ import cn.axzo.tyr.client.model.req.GetPageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.GetUserHasPermissionPageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.IdentityAuthReq;
|
||||
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
|
||||
import cn.axzo.tyr.client.model.req.PageElementFeatureResourceRelationReq;
|
||||
import cn.axzo.tyr.client.model.req.PageElementReportReq;
|
||||
import cn.axzo.tyr.client.model.req.PageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.PageQueryElementReq;
|
||||
import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq;
|
||||
import cn.axzo.tyr.client.model.res.GetUserHasPermissionPageElementResp;
|
||||
import cn.axzo.tyr.client.model.res.IdentityAuthRes;
|
||||
import cn.axzo.tyr.client.model.res.PageElementBasicDTO;
|
||||
import cn.axzo.tyr.client.model.res.PageElementResp;
|
||||
import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp;
|
||||
import cn.axzo.tyr.server.config.MqProducer;
|
||||
import cn.axzo.tyr.server.event.payload.PageElementFeatureResourceUpsertPayload;
|
||||
import cn.axzo.tyr.server.model.RelationOperateLogResourceBindElementDO;
|
||||
@ -37,6 +40,8 @@ import cn.axzo.tyr.server.repository.entity.SaasPageElement;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelationOperateLog;
|
||||
import cn.axzo.tyr.server.repository.mapper.SaasPageElementMapper;
|
||||
import cn.axzo.tyr.server.service.SaasFeatureResourceService;
|
||||
import cn.axzo.tyr.server.service.SaasPageElementFeatureResourceRelationService;
|
||||
import cn.axzo.tyr.server.service.SaasPageElementService;
|
||||
import cn.axzo.tyr.server.service.SaasPgroupPermissionRelationOperateLogService;
|
||||
import cn.axzo.tyr.server.service.TyrSaasAuthService;
|
||||
@ -53,6 +58,7 @@ import com.google.common.collect.Maps;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
@ -84,8 +90,7 @@ import static cn.axzo.tyr.server.event.inner.EventTypeEnum.PAGE_ELEMENT_FEATURE_
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SaasPageElementServiceImpl
|
||||
extends ServiceImpl<SaasPageElementMapper, SaasPageElement>
|
||||
public class SaasPageElementServiceImpl extends ServiceImpl<SaasPageElementMapper, SaasPageElement>
|
||||
implements SaasPageElementService {
|
||||
|
||||
private final SaasPageElementDao saasPageElementDao;
|
||||
@ -95,6 +100,8 @@ public class SaasPageElementServiceImpl
|
||||
private final SaasPgroupPermissionRelationOperateLogService saasPgroupPermissionRelationOperateLogService;
|
||||
private final UserProfileServiceApi userProfileServiceApi;
|
||||
private final MqProducer mqProducer;
|
||||
private final SaasFeatureResourceService saasFeatureResourceService;
|
||||
private final SaasPageElementFeatureResourceRelationService saasPageElementFeatureResourceRelationService;
|
||||
|
||||
@Qualifier("asyncExecutor")
|
||||
@Autowired
|
||||
@ -491,13 +498,55 @@ public class SaasPageElementServiceImpl
|
||||
|
||||
IPage<SaasPageElement> page = this.page(PageConverter.toMybatis(param, SaasPageElement.class), wrapper);
|
||||
|
||||
return PageConverter.toResp(page, this::from);
|
||||
Map<String, List<SaasFeatureResourceResp>> featureResources = listFeatureResource(page.getRecords(), param);
|
||||
|
||||
return PageConverter.toResp(page, e -> from(e, featureResources));
|
||||
}
|
||||
|
||||
private PageElementResp from(SaasPageElement saasPageElement) {
|
||||
private PageElementResp from(SaasPageElement saasPageElement,
|
||||
Map<String, List<SaasFeatureResourceResp>> featureResources) {
|
||||
PageElementResp pageElementResp = PageElementResp.builder().build();
|
||||
|
||||
BeanUtils.copyProperties(saasPageElement, pageElementResp);
|
||||
pageElementResp.setFeatureResources(featureResources.get(saasPageElement.getCode()));
|
||||
return pageElementResp;
|
||||
}
|
||||
|
||||
private Map<String, List<SaasFeatureResourceResp>> listFeatureResource(List<SaasPageElement> pageElements,
|
||||
PageElementReq param) {
|
||||
|
||||
if (CollectionUtils.isEmpty(pageElements) || BooleanUtils.isNotTrue(param.getNeedFeatureSource())) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
Set<String> pageElementCodes = pageElements.stream()
|
||||
.map(SaasPageElement::getCode)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
|
||||
PageElementFeatureResourceRelationReq elementFeatureResourceRelationReq = PageElementFeatureResourceRelationReq
|
||||
.builder()
|
||||
.pageElementCodes(pageElementCodes)
|
||||
.build();
|
||||
List<SaasPageElementFeatureResourceRelation> elementFeatureResourceRelations = saasPageElementFeatureResourceRelationService.list(elementFeatureResourceRelationReq);
|
||||
|
||||
Set<String> uniCodes = elementFeatureResourceRelations.stream()
|
||||
.map(SaasPageElementFeatureResourceRelation::getFeatureResourceUniCode)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
if (CollectionUtils.isEmpty(uniCodes)) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
PageSaasFeatureResourceReq pageSaasFeatureResourceReq = PageSaasFeatureResourceReq
|
||||
.builder()
|
||||
.uniCodes(uniCodes)
|
||||
.build();
|
||||
Map<String, SaasFeatureResourceResp> featureResources = saasFeatureResourceService.list(pageSaasFeatureResourceReq).stream()
|
||||
.collect(Collectors.toMap(SaasFeatureResourceResp::getUniCode, Function.identity()));
|
||||
|
||||
return elementFeatureResourceRelations.stream()
|
||||
.collect(Collectors.groupingBy(SaasPageElementFeatureResourceRelation::getPageElementCode,
|
||||
Collectors.mapping(e -> featureResources.get(e.getFeatureResourceUniCode()), Collectors.toList())));
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user