feat(REQ-2545): 页面绑定关系增加类型字段。

This commit is contained in:
李昆鹏 2024-07-02 18:25:59 +08:00
parent 603ae3d095
commit ab34d7df79
9 changed files with 87 additions and 24 deletions

View File

@ -0,0 +1,28 @@
package cn.axzo.tyr.client.common.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author likunpeng
* @date 2024/7/2
*/
@Getter
@AllArgsConstructor
public enum PageElementFeatureResourceRelationTypeEnum {
/**
* 默认类型
*/
DEFAULT(0, "默认类型"),
/**
* 页面路由
*/
PAGE_ROUTE(1, "页面路由"),
;
@EnumValue
private final Integer value;
private final String desc;
}

View File

@ -37,4 +37,10 @@ public class ModifyPageElementRelationDTO {
* 页面元素编码列表
*/
private List<String> pageElementCodes;
/**
* 绑定关系
*/
@Builder.Default
private Integer relationType = 0;
}

View File

@ -8,6 +8,7 @@ import lombok.experimental.SuperBuilder;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 功能资源DTO
@ -156,5 +157,5 @@ public class FeatureResourceDTO implements Serializable {
/**
* 页面元素对象
*/
private PageElementBasicDTO pageElement;
private List<PageElementBasicDTO> pageElements;
}

View File

@ -30,4 +30,10 @@ public class PageElementBasicDTO {
* 页面元素名称
*/
private String name;
/**
* 绑定关系
* @see cn.axzo.tyr.client.common.enums.PageElementFeatureResourceRelationTypeEnum
*/
private Integer relationType;
}

View File

@ -5,6 +5,7 @@ import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
import cn.axzo.tyr.server.repository.mapper.SaasPageElementFeatureResourceRelationMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Repository;
import java.util.List;
@ -18,11 +19,12 @@ import java.util.Objects;
@Repository
public class SaasPageElementFeatureResourceRelationDao extends ServiceImpl<SaasPageElementFeatureResourceRelationMapper, SaasPageElementFeatureResourceRelation> {
public List<SaasPageElementFeatureResourceRelation> listByPageElementCode(String pageElementCode, String terminal) {
public List<SaasPageElementFeatureResourceRelation> listByPageElementCode(String pageElementCode, String terminal, List<Integer> types) {
return lambdaQuery()
.eq(SaasPageElementFeatureResourceRelation::getIsDelete, DeleteEnum.NORMAL.getValue())
.eq(SaasPageElementFeatureResourceRelation::getPageElementCode, pageElementCode)
.eq(SaasPageElementFeatureResourceRelation::getTerminal, terminal)
.in(CollectionUtils.isNotEmpty(types), SaasPageElementFeatureResourceRelation::getType, types)
.orderByDesc(BaseEntity::getId)
.list();
}
@ -34,10 +36,11 @@ public class SaasPageElementFeatureResourceRelationDao extends ServiceImpl<SaasP
.list();
}
public void deleteByTerminalAndUniCodes(String terminal, List<String> featureResourceUniCodes, Long operatorId) {
public void deleteByTerminalAndUniCodes(String terminal, List<String> featureResourceUniCodes, List<Integer> types, Long operatorId) {
lambdaUpdate()
.eq(SaasPageElementFeatureResourceRelation::getTerminal, terminal)
.in(SaasPageElementFeatureResourceRelation::getFeatureResourceUniCode, featureResourceUniCodes)
.in(CollectionUtils.isNotEmpty(types), SaasPageElementFeatureResourceRelation::getType, types)
.set(SaasPageElementFeatureResourceRelation::getIsDelete, DeleteEnum.DELETE.getValue())
.set(Objects.nonNull(operatorId), SaasPageElementFeatureResourceRelation::getUpdateBy, operatorId)
.update();

View File

@ -49,4 +49,11 @@ public class SaasPageElementFeatureResourceRelation extends BaseEntity<SaasPageE
*/
@TableField("terminal")
private String terminal;
/**
* 绑定类型0默认类型 1(页面默认路由)
* @see cn.axzo.tyr.client.common.enums.PageElementFeatureResourceRelationTypeEnum
*/
@TableField("type")
private Integer type;
}

View File

@ -3,6 +3,7 @@ package cn.axzo.tyr.server.service;
import cn.axzo.framework.domain.page.PageResp;
import cn.axzo.tyr.client.model.req.*;
import cn.axzo.tyr.client.model.res.GetUserHasPermissionPageElementResp;
import cn.axzo.tyr.client.model.res.PageElementBasicDTO;
import cn.axzo.tyr.client.model.res.PageElementResp;
import cn.axzo.tyr.server.repository.entity.SaasPageElement;
@ -37,7 +38,7 @@ public interface SaasPageElementService {
* @param featureResourceUniCode 组件code
* @return
*/
List<SaasPageElement> getByTerminalAndUniCode(String terminal, String featureResourceUniCode);
List<PageElementBasicDTO> getByTerminalAndUniCode(String terminal, String featureResourceUniCode);
/**
* 新增页面组件与页面元素关系

View File

@ -13,6 +13,7 @@ import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
import cn.axzo.tyr.client.common.enums.FeatureResourceAuthType;
import cn.axzo.tyr.client.common.enums.FeatureResourceStatus;
import cn.axzo.tyr.client.common.enums.FeatureResourceType;
import cn.axzo.tyr.client.common.enums.PageElementFeatureResourceRelationTypeEnum;
import cn.axzo.tyr.client.model.req.DeleteFeatureResourceReq;
import cn.axzo.tyr.client.model.req.FeatureComponentSaveReq;
import cn.axzo.tyr.client.model.req.FeatureResourceTreeSaveReq;
@ -31,7 +32,6 @@ import cn.axzo.tyr.server.model.ResourcePermissionQueryDTO;
import cn.axzo.tyr.server.model.convert.SaasFeatureResourceConvert;
import cn.axzo.tyr.server.repository.dao.SaasFeatureResourceDao;
import cn.axzo.tyr.server.repository.entity.SaasFeatureResource;
import cn.axzo.tyr.server.repository.entity.SaasPageElement;
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation;
import cn.axzo.tyr.server.repository.mapper.SaasFeatureResourceMapper;
@ -228,13 +228,15 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl<SaasFeatureResou
baseResource.setFeatureCode(req.getUniCode());
featureResourceDao.updateById(baseResource);
}
// 保存组件与页面元素关系
saasPageElementService.modifyPageElementRelation(ModifyPageElementRelationDTO.builder()
// 保存组件与页面元素关系如果是页面改的是默认路由
ModifyPageElementRelationDTO modifyPageElementRelation = ModifyPageElementRelationDTO.builder()
.operatorId(req.getOperatorId())
.terminal(req.getTerminal())
.featureResourceUniCode(req.getUniCode())
.relationType(FeatureResourceType.PAGE.getCode().equals(req.getFeatureType()) ? PageElementFeatureResourceRelationTypeEnum.PAGE_ROUTE.getValue() : PageElementFeatureResourceRelationTypeEnum.DEFAULT.getValue())
.pageElementCodes(req.getPageElementCodes())
.build());
.build();
saasPageElementService.modifyPageElementRelation(modifyPageElementRelation);
if (CollectionUtil.isNotEmpty(req.getComponentSaveReqList())) {
List<FeatureComponentSaveReq> components = req.getComponentSaveReqList();
@ -577,16 +579,8 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl<SaasFeatureResou
if (!FeatureResourceType.PAGE.getCode().equals(featureResourceTreeNode.getFeatureType())) {
return;
}
List<SaasPageElement> saasPageElements = saasPageElementService.getByTerminalAndUniCode(featureResourceTreeNode.getTerminal(), featureResourceTreeNode.getUniCode());
if (CollectionUtils.isEmpty(saasPageElements)) {
return;
}
SaasPageElement saasPageElement = saasPageElements.get(0);
featureResourceTreeNode.setPageElement(PageElementBasicDTO.builder()
.id(saasPageElement.getId())
.code(saasPageElement.getCode())
.name(saasPageElement.getName())
.build());
List<PageElementBasicDTO> saasPageElements = saasPageElementService.getByTerminalAndUniCode(featureResourceTreeNode.getTerminal(), featureResourceTreeNode.getUniCode());
featureResourceTreeNode.setPageElements(saasPageElements);
}
@Override

View File

@ -6,10 +6,12 @@ import cn.axzo.basics.common.util.StopWatchUtil;
import cn.axzo.framework.domain.page.PageResp;
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
import cn.axzo.tyr.client.common.enums.FeatureResourceType;
import cn.axzo.tyr.client.common.enums.PageElementFeatureResourceRelationTypeEnum;
import cn.axzo.tyr.client.common.enums.PageElementTypeEnum;
import cn.axzo.tyr.client.model.req.*;
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.server.repository.dao.SaasFeatureResourceDao;
import cn.axzo.tyr.server.repository.dao.SaasPageElementDao;
@ -111,12 +113,26 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
}
@Override
public List<SaasPageElement> getByTerminalAndUniCode(String terminal, String featureResourceUniCode) {
public List<PageElementBasicDTO> getByTerminalAndUniCode(String terminal, String featureResourceUniCode) {
List<SaasPageElementFeatureResourceRelation> relations = saasPageElementFeatureResourceRelationDao.listByUniCodeAndTerminal(Lists.newArrayList(featureResourceUniCode), terminal);
if (CollectionUtils.isEmpty(relations)) {
return Collections.emptyList();
}
return saasPageElementDao.listByCodes(relations.stream().map(SaasPageElementFeatureResourceRelation::getPageElementCode).collect(Collectors.toList()), terminal);
Map<String, SaasPageElement> pageElementMap = saasPageElementDao.listByCodes(relations.stream().map(SaasPageElementFeatureResourceRelation::getPageElementCode).collect(Collectors.toList()), terminal)
.stream().collect(Collectors.toMap(SaasPageElement::getCode, Function.identity(), (v1, v2) -> v1));
return relations.stream().map(e -> {
SaasPageElement pageElement = pageElementMap.get(e.getPageElementCode());
if (Objects.isNull(pageElement)) {
return null;
}
return PageElementBasicDTO.builder()
.id(pageElement.getId())
.code(pageElement.getCode())
.name(pageElement.getName())
.relationType(e.getType())
.build();
}).filter(Objects::nonNull).collect(Collectors.toList());
}
@Override
@ -129,7 +145,7 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
// 删除组件已有的绑定关系
saasPageElementFeatureResourceRelationDao.deleteByTerminalAndUniCodes(modifyPageElementRelation.getTerminal(),
Lists.newArrayList(modifyPageElementRelation.getFeatureResourceUniCode()), modifyPageElementRelation.getOperatorId());
Lists.newArrayList(modifyPageElementRelation.getFeatureResourceUniCode()), Lists.newArrayList(modifyPageElementRelation.getRelationType()), modifyPageElementRelation.getOperatorId());
// 保存新的绑定关系
if (CollectionUtils.isNotEmpty(modifyPageElementRelation.getPageElementCodes())) {
@ -137,6 +153,7 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
.pageElementCode(e)
.featureResourceUniCode(modifyPageElementRelation.getFeatureResourceUniCode())
.terminal(modifyPageElementRelation.getTerminal())
.type(modifyPageElementRelation.getRelationType())
.createBy(modifyPageElementRelation.getOperatorId())
.build()).collect(Collectors.toList());
saasPageElementFeatureResourceRelationDao.saveBatch(relations);
@ -149,7 +166,7 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
log.warn("deleteRelationByTerminalAndUniCode param error, terminal:{}, uniCodes:{}", terminal, featureResourceUniCodes);
return;
}
saasPageElementFeatureResourceRelationDao.deleteByTerminalAndUniCodes(terminal, featureResourceUniCodes, operatorId);
saasPageElementFeatureResourceRelationDao.deleteByTerminalAndUniCodes(terminal, featureResourceUniCodes, Lists.newArrayList(PageElementFeatureResourceRelationTypeEnum.DEFAULT.getValue()), operatorId);
}
@Override
@ -168,7 +185,7 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
@Override
public GetUserHasPermissionPageElementResp getUserHasPermissionPageElement(GetUserHasPermissionPageElementReq request) {
List<SaasPageElementFeatureResourceRelation> relations = saasPageElementFeatureResourceRelationDao.listByPageElementCode(request.getPageElementCode(), request.getTerminal());
List<SaasPageElementFeatureResourceRelation> relations = saasPageElementFeatureResourceRelationDao.listByPageElementCode(request.getPageElementCode(), request.getTerminal(), Lists.newArrayList(PageElementFeatureResourceRelationTypeEnum.PAGE_ROUTE.getValue(), PageElementFeatureResourceRelationTypeEnum.DEFAULT.getValue()));
if (CollectionUtils.isEmpty(relations)) {
log.warn("绑定关系不存在,页面元素编码:{}", request.getPageElementCode());
return null;
@ -237,7 +254,7 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
if (StringUtils.isBlank(pageElement.getLinkUrl())) {
continue;
}
List<SaasPageElementFeatureResourceRelation> relations = saasPageElementFeatureResourceRelationDao.listByPageElementCode(pageElement.getCode(), request.getTerminal());
List<SaasPageElementFeatureResourceRelation> relations = saasPageElementFeatureResourceRelationDao.listByPageElementCode(pageElement.getCode(), request.getTerminal(), Lists.newArrayList(PageElementFeatureResourceRelationTypeEnum.PAGE_ROUTE.getValue()));
if (CollectionUtils.isEmpty(relations)) {
continue;
}