feat(REQ-2545): 修改页面绑定元素接口
This commit is contained in:
parent
7f735f2b4f
commit
6b10eacdd7
@ -2,6 +2,7 @@ package cn.axzo.tyr.client.feign;
|
|||||||
|
|
||||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||||
import cn.axzo.tyr.client.model.req.GetPageElementReq;
|
import cn.axzo.tyr.client.model.req.GetPageElementReq;
|
||||||
|
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
|
||||||
import cn.axzo.tyr.client.model.req.PageElementReportReq;
|
import cn.axzo.tyr.client.model.req.PageElementReportReq;
|
||||||
import cn.axzo.tyr.client.model.res.PageElementResp;
|
import cn.axzo.tyr.client.model.res.PageElementResp;
|
||||||
import org.springframework.cloud.openfeign.FeignClient;
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
@ -28,4 +29,8 @@ public interface PageElementApi {
|
|||||||
/** 查询页面资源 **/
|
/** 查询页面资源 **/
|
||||||
@PostMapping("/api/pageElement/getPageElement")
|
@PostMapping("/api/pageElement/getPageElement")
|
||||||
ApiResult<List<PageElementResp>> getPageElement(@RequestBody @Valid GetPageElementReq req);
|
ApiResult<List<PageElementResp>> getPageElement(@RequestBody @Valid GetPageElementReq req);
|
||||||
|
|
||||||
|
/** 查询页面资源 **/
|
||||||
|
@PostMapping("/api/pageElement/modifyPageElementRelation")
|
||||||
|
ApiResult<Void> modifyPageElementRelation(@RequestBody @Valid ModifyPageElementRelationDTO req);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,8 @@ import lombok.Data;
|
|||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.experimental.SuperBuilder;
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@SuperBuilder
|
@SuperBuilder
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@ -25,7 +27,7 @@ public class BaseFeatureResourceDO {
|
|||||||
private Integer featureType;
|
private Integer featureType;
|
||||||
|
|
||||||
/** 资源编码 **/
|
/** 资源编码 **/
|
||||||
private String featureCode;
|
private String uniCode;
|
||||||
|
|
||||||
/** 状态 0-隐藏 1-显示 **/
|
/** 状态 0-隐藏 1-显示 **/
|
||||||
private Integer status;
|
private Integer status;
|
||||||
@ -38,4 +40,7 @@ public class BaseFeatureResourceDO {
|
|||||||
|
|
||||||
/** 组件类型 **/
|
/** 组件类型 **/
|
||||||
private Integer componentType;
|
private Integer componentType;
|
||||||
|
|
||||||
|
/** 组件元素的code列表 */
|
||||||
|
private List<String> pageElementCodes;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,40 @@
|
|||||||
|
package cn.axzo.tyr.client.model.req;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author likunpeng
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2024/6/19
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class ModifyPageElementRelationDTO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作人ID
|
||||||
|
*/
|
||||||
|
private Long operatorId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 组件所属端
|
||||||
|
*/
|
||||||
|
private String terminal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 组件code
|
||||||
|
*/
|
||||||
|
private String featureResourceUniCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面元素编码列表
|
||||||
|
*/
|
||||||
|
private List<String> pageElementCodes;
|
||||||
|
}
|
||||||
@ -151,4 +151,9 @@ public class FeatureResourceDTO implements Serializable {
|
|||||||
* 唯一编码,用于pre环境菜单同步
|
* 唯一编码,用于pre环境菜单同步
|
||||||
*/
|
*/
|
||||||
private String uniCode;
|
private String uniCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面元素对象
|
||||||
|
*/
|
||||||
|
private PageElementBasicDTO pageElement;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,33 @@
|
|||||||
|
package cn.axzo.tyr.client.model.res;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author likunpeng
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2024/6/19
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class PageElementBasicDTO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面、元素ID
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面、元素编码
|
||||||
|
*/
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面、元素名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
}
|
||||||
@ -3,6 +3,7 @@ package cn.axzo.tyr.server.controller.permission;
|
|||||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||||
import cn.axzo.tyr.client.feign.PageElementApi;
|
import cn.axzo.tyr.client.feign.PageElementApi;
|
||||||
import cn.axzo.tyr.client.model.req.GetPageElementReq;
|
import cn.axzo.tyr.client.model.req.GetPageElementReq;
|
||||||
|
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
|
||||||
import cn.axzo.tyr.client.model.req.PageElementReportReq;
|
import cn.axzo.tyr.client.model.req.PageElementReportReq;
|
||||||
import cn.axzo.tyr.client.model.res.PageElementResp;
|
import cn.axzo.tyr.client.model.res.PageElementResp;
|
||||||
import cn.axzo.tyr.server.service.SaasPageElementService;
|
import cn.axzo.tyr.server.service.SaasPageElementService;
|
||||||
@ -34,4 +35,10 @@ public class PageElementController implements PageElementApi {
|
|||||||
public ApiResult<List<PageElementResp>> getPageElement(GetPageElementReq req) {
|
public ApiResult<List<PageElementResp>> getPageElement(GetPageElementReq req) {
|
||||||
return ApiResult.ok(saasPageElementService.getPageElement(req));
|
return ApiResult.ok(saasPageElementService.getPageElement(req));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ApiResult<Void> modifyPageElementRelation(ModifyPageElementRelationDTO req) {
|
||||||
|
saasPageElementService.modifyPageElementRelation(req);
|
||||||
|
return ApiResult.ok();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author likunpeng
|
* @author likunpeng
|
||||||
@ -22,11 +23,20 @@ public class SaasPageElementFeatureResourceRelationDao extends ServiceImpl<SaasP
|
|||||||
.eq(SaasPageElementFeatureResourceRelation::getPageElementCode, pageElementCode)
|
.eq(SaasPageElementFeatureResourceRelation::getPageElementCode, pageElementCode)
|
||||||
.list();
|
.list();
|
||||||
}
|
}
|
||||||
public List<SaasPageElementFeatureResourceRelation> listByFeatureUniCodeAndTerminal(String featureResourceUniCode, String terminal) {
|
public List<SaasPageElementFeatureResourceRelation> listByUniCodeAndTerminal(String featureResourceUniCode, String terminal) {
|
||||||
return lambdaQuery()
|
return lambdaQuery()
|
||||||
.eq(SaasPageElementFeatureResourceRelation::getIsDelete, DeleteEnum.NORMAL.getValue())
|
.eq(SaasPageElementFeatureResourceRelation::getIsDelete, DeleteEnum.NORMAL.getValue())
|
||||||
.eq(SaasPageElementFeatureResourceRelation::getFeatureResourceUniCode, featureResourceUniCode)
|
.eq(SaasPageElementFeatureResourceRelation::getFeatureResourceUniCode, featureResourceUniCode)
|
||||||
.eq(SaasPageElementFeatureResourceRelation::getTerminal, terminal)
|
.eq(SaasPageElementFeatureResourceRelation::getTerminal, terminal)
|
||||||
.list();
|
.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void deleteByTerminalAndUniCodes(String terminal, List<String> featureResourceUniCodes, Long operatorId) {
|
||||||
|
lambdaUpdate()
|
||||||
|
.eq(SaasPageElementFeatureResourceRelation::getTerminal, terminal)
|
||||||
|
.in(SaasPageElementFeatureResourceRelation::getFeatureResourceUniCode, featureResourceUniCodes)
|
||||||
|
.set(SaasPageElementFeatureResourceRelation::getIsDelete, DeleteEnum.DELETE.getValue())
|
||||||
|
.set(Objects.nonNull(operatorId), SaasPageElementFeatureResourceRelation::getUpdateBy, operatorId)
|
||||||
|
.update();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,10 +3,7 @@ package cn.axzo.tyr.server.repository.entity;
|
|||||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.*;
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.Setter;
|
|
||||||
import lombok.ToString;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 页面元素与菜单组件关系表
|
* 页面元素与菜单组件关系表
|
||||||
@ -18,6 +15,7 @@ import lombok.ToString;
|
|||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@ToString
|
@ToString
|
||||||
|
@Builder
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@TableName("saas_page_element_feature_resource_relation")
|
@TableName("saas_page_element_feature_resource_relation")
|
||||||
public class SaasPageElementFeatureResourceRelation extends BaseEntity<SaasPageElementFeatureResourceRelation> {
|
public class SaasPageElementFeatureResourceRelation extends BaseEntity<SaasPageElementFeatureResourceRelation> {
|
||||||
|
|||||||
@ -1,8 +1,10 @@
|
|||||||
package cn.axzo.tyr.server.service;
|
package cn.axzo.tyr.server.service;
|
||||||
|
|
||||||
import cn.axzo.tyr.client.model.req.GetPageElementReq;
|
import cn.axzo.tyr.client.model.req.GetPageElementReq;
|
||||||
|
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
|
||||||
import cn.axzo.tyr.client.model.req.PageElementReportReq;
|
import cn.axzo.tyr.client.model.req.PageElementReportReq;
|
||||||
import cn.axzo.tyr.client.model.res.PageElementResp;
|
import cn.axzo.tyr.client.model.res.PageElementResp;
|
||||||
|
import cn.axzo.tyr.server.repository.entity.SaasPageElement;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -27,4 +29,29 @@ public interface SaasPageElementService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<PageElementResp> getPageElement(GetPageElementReq request);
|
List<PageElementResp> getPageElement(GetPageElementReq request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过组件code查询页面元素
|
||||||
|
*
|
||||||
|
* @param terminal 组件所属端
|
||||||
|
* @param featureResourceUniCode 组件code
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<SaasPageElement> getByTerminalAndUniCode(String terminal, String featureResourceUniCode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增页面组件与页面元素关系
|
||||||
|
*
|
||||||
|
* @param modifyPageElementRelation 关系对象
|
||||||
|
*/
|
||||||
|
void modifyPageElementRelation(ModifyPageElementRelationDTO modifyPageElementRelation);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过组件code删除绑定关系
|
||||||
|
*
|
||||||
|
* @param terminal 组件所属端
|
||||||
|
* @param featureResourceUniCodes 组件code
|
||||||
|
* @param operatorId 操作人
|
||||||
|
*/
|
||||||
|
void deleteRelationByTerminalAndUniCodes(String terminal, List<String> featureResourceUniCodes, Long operatorId);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,16 +11,20 @@ import cn.axzo.tyr.client.common.enums.FeatureResourceType;
|
|||||||
import cn.axzo.tyr.client.model.req.FeatureComponentSaveReq;
|
import cn.axzo.tyr.client.model.req.FeatureComponentSaveReq;
|
||||||
import cn.axzo.tyr.client.model.req.FeatureResourceTreeSaveReq;
|
import cn.axzo.tyr.client.model.req.FeatureResourceTreeSaveReq;
|
||||||
import cn.axzo.tyr.client.model.req.GetFeatureResourceTreeReq;
|
import cn.axzo.tyr.client.model.req.GetFeatureResourceTreeReq;
|
||||||
|
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
|
||||||
import cn.axzo.tyr.client.model.res.FeatureResourceDTO;
|
import cn.axzo.tyr.client.model.res.FeatureResourceDTO;
|
||||||
import cn.axzo.tyr.client.model.res.FeatureResourceTreeNode;
|
import cn.axzo.tyr.client.model.res.FeatureResourceTreeNode;
|
||||||
|
import cn.axzo.tyr.client.model.res.PageElementBasicDTO;
|
||||||
import cn.axzo.tyr.server.common.util.Throws;
|
import cn.axzo.tyr.server.common.util.Throws;
|
||||||
import cn.axzo.tyr.server.model.ResourcePermission;
|
import cn.axzo.tyr.server.model.ResourcePermission;
|
||||||
import cn.axzo.tyr.server.model.ResourcePermissionQueryDTO;
|
import cn.axzo.tyr.server.model.ResourcePermissionQueryDTO;
|
||||||
import cn.axzo.tyr.server.model.convert.SaasFeatureResourceConvert;
|
import cn.axzo.tyr.server.model.convert.SaasFeatureResourceConvert;
|
||||||
import cn.axzo.tyr.server.repository.dao.SaasFeatureResourceDao;
|
import cn.axzo.tyr.server.repository.dao.SaasFeatureResourceDao;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasFeatureResource;
|
import cn.axzo.tyr.server.repository.entity.SaasFeatureResource;
|
||||||
|
import cn.axzo.tyr.server.repository.entity.SaasPageElement;
|
||||||
import cn.axzo.tyr.server.service.SaasCommonDictService;
|
import cn.axzo.tyr.server.service.SaasCommonDictService;
|
||||||
import cn.axzo.tyr.server.service.SaasFeatureResourceService;
|
import cn.axzo.tyr.server.service.SaasFeatureResourceService;
|
||||||
|
import cn.axzo.tyr.server.service.SaasPageElementService;
|
||||||
import cn.axzo.tyr.server.service.SaasPgroupPermissionRelationService;
|
import cn.axzo.tyr.server.service.SaasPgroupPermissionRelationService;
|
||||||
import cn.azxo.framework.common.utils.StringUtils;
|
import cn.azxo.framework.common.utils.StringUtils;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
@ -66,6 +70,7 @@ public class SaasFeatureResourceServiceImpl implements SaasFeatureResourceServic
|
|||||||
private final SaasCommonDictService saasCommonDictService;
|
private final SaasCommonDictService saasCommonDictService;
|
||||||
|
|
||||||
private final SaasPgroupPermissionRelationService pgroupPermissionRelationService;
|
private final SaasPgroupPermissionRelationService pgroupPermissionRelationService;
|
||||||
|
private final SaasPageElementService saasPageElementService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<SaasFeatureResource> listNavByIds(List<Long> featureIds, List<Integer> featureTypes) {
|
public List<SaasFeatureResource> listNavByIds(List<Long> featureIds, List<Integer> featureTypes) {
|
||||||
@ -167,7 +172,9 @@ public class SaasFeatureResourceServiceImpl implements SaasFeatureResourceServic
|
|||||||
.map(SaasFeatureResourceConvert.INSTANCE::convert)
|
.map(SaasFeatureResourceConvert.INSTANCE::convert)
|
||||||
.sorted(Comparator.comparing(FeatureResourceDTO::getDisplayOrder))
|
.sorted(Comparator.comparing(FeatureResourceDTO::getDisplayOrder))
|
||||||
.collect(Collectors.toList()));
|
.collect(Collectors.toList()));
|
||||||
return treeList.get(0);
|
FeatureResourceTreeNode featureResourceTreeNode = treeList.get(0);
|
||||||
|
fillPageElement2PageFeatureResource(featureResourceTreeNode);
|
||||||
|
return featureResourceTreeNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -189,14 +196,22 @@ public class SaasFeatureResourceServiceImpl implements SaasFeatureResourceServic
|
|||||||
baseResource.setDisplayOrder(maxOrderResource.getDisplayOrder() + 1);
|
baseResource.setDisplayOrder(maxOrderResource.getDisplayOrder() + 1);
|
||||||
}
|
}
|
||||||
// 生成唯一编码,用于pre菜单同步
|
// 生成唯一编码,用于pre菜单同步
|
||||||
baseResource.setUniCode(UuidUtils.generateUuid());
|
baseResource.setFeatureCode(req.getUniCode());
|
||||||
newResource(baseResource, parent == null ? "" : parent.getPath());
|
newResource(baseResource, parent == null ? "" : parent.getPath());
|
||||||
} else {
|
} else {
|
||||||
//补充path
|
//补充path
|
||||||
SaasFeatureResource dbResource = featureResourceDao.getById(req.getId());
|
SaasFeatureResource dbResource = featureResourceDao.getById(req.getId());
|
||||||
baseResource.setPath(dbResource.getPath());
|
baseResource.setPath(dbResource.getPath());
|
||||||
|
baseResource.setFeatureCode(req.getUniCode());
|
||||||
featureResourceDao.updateById(baseResource);
|
featureResourceDao.updateById(baseResource);
|
||||||
}
|
}
|
||||||
|
// 保存组件与页面元素关系
|
||||||
|
saasPageElementService.modifyPageElementRelation(ModifyPageElementRelationDTO.builder()
|
||||||
|
.operatorId(req.getOperatorId())
|
||||||
|
.terminal(req.getTerminal())
|
||||||
|
.featureResourceUniCode(req.getUniCode())
|
||||||
|
.pageElementCodes(req.getPageElementCodes())
|
||||||
|
.build());
|
||||||
|
|
||||||
if (CollectionUtil.isNotEmpty(req.getComponentSaveReqList())) {
|
if (CollectionUtil.isNotEmpty(req.getComponentSaveReqList())) {
|
||||||
List<FeatureComponentSaveReq> components = req.getComponentSaveReqList();
|
List<FeatureComponentSaveReq> components = req.getComponentSaveReqList();
|
||||||
@ -245,11 +260,20 @@ public class SaasFeatureResourceServiceImpl implements SaasFeatureResourceServic
|
|||||||
if (saasFeatureResource.getId() != null) {
|
if (saasFeatureResource.getId() != null) {
|
||||||
SaasFeatureResource dbResource = featureResourceDao.getById(saasFeatureResource.getId());
|
SaasFeatureResource dbResource = featureResourceDao.getById(saasFeatureResource.getId());
|
||||||
saasFeatureResource.setPath(dbResource.getPath());
|
saasFeatureResource.setPath(dbResource.getPath());
|
||||||
|
saasFeatureResource.setFeatureCode(featureComponentSaveReq.getUniCode());
|
||||||
featureResourceDao.updateById(saasFeatureResource);
|
featureResourceDao.updateById(saasFeatureResource);
|
||||||
} else {
|
} else {
|
||||||
saasFeatureResource.setCreateBy(operatorId);
|
saasFeatureResource.setCreateBy(operatorId);
|
||||||
|
saasFeatureResource.setFeatureCode(featureComponentSaveReq.getUniCode());
|
||||||
newResource(saasFeatureResource, parentPath);
|
newResource(saasFeatureResource, parentPath);
|
||||||
}
|
}
|
||||||
|
// 保存组件与页面元素关系
|
||||||
|
saasPageElementService.modifyPageElementRelation(ModifyPageElementRelationDTO.builder()
|
||||||
|
.operatorId(operatorId)
|
||||||
|
.terminal(featureComponentSaveReq.getTerminal())
|
||||||
|
.featureResourceUniCode(featureComponentSaveReq.getUniCode())
|
||||||
|
.pageElementCodes(featureComponentSaveReq.getPageElementCodes())
|
||||||
|
.build());
|
||||||
|
|
||||||
List<FeatureComponentSaveReq> children = featureComponentSaveReq.getChildren();
|
List<FeatureComponentSaveReq> children = featureComponentSaveReq.getChildren();
|
||||||
// 删除前端没带但数据库中有的组件。
|
// 删除前端没带但数据库中有的组件。
|
||||||
@ -280,21 +304,29 @@ public class SaasFeatureResourceServiceImpl implements SaasFeatureResourceServic
|
|||||||
.eq(SaasFeatureResource::getParentId, resourceId)
|
.eq(SaasFeatureResource::getParentId, resourceId)
|
||||||
.list();
|
.list();
|
||||||
List<Long> updateChildIds = submitChildren.stream().map(FeatureComponentSaveReq::getId).filter(Objects::nonNull).collect(Collectors.toList());
|
List<Long> updateChildIds = submitChildren.stream().map(FeatureComponentSaveReq::getId).filter(Objects::nonNull).collect(Collectors.toList());
|
||||||
List<String> updateChildCodes = submitChildren.stream().map(FeatureComponentSaveReq::getFeatureCode).collect(Collectors.toList());
|
List<String> updateChildCodes = submitChildren.stream().map(FeatureComponentSaveReq::getUniCode).collect(Collectors.toList());
|
||||||
List<SaasFeatureResource> deleteChildren = existChild.stream()
|
List<SaasFeatureResource> deleteChildren = existChild.stream()
|
||||||
.filter(item -> (!updateChildIds.contains(item.getId()) && !updateChildCodes.contains(item.getFeatureCode())))
|
.filter(item -> (!updateChildIds.contains(item.getId()) && !updateChildCodes.contains(item.getFeatureCode())))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
// 前端没传但是数据库中有的,需要删除
|
// 前端没传但是数据库中有的,需要删除
|
||||||
if (!CollectionUtil.isEmpty(deleteChildren)) {
|
if (!CollectionUtil.isEmpty(deleteChildren)) {
|
||||||
for (SaasFeatureResource deleteChild : deleteChildren) {
|
for (SaasFeatureResource deleteChild : deleteChildren) {
|
||||||
// 删除自己及自己的子集组件
|
// 查询数据库要删除的组件
|
||||||
featureResourceDao.lambdaUpdate()
|
List<SaasFeatureResource> deletedResources = featureResourceDao.lambdaQuery()
|
||||||
.eq(BaseEntity::getIsDelete,0)
|
.eq(BaseEntity::getIsDelete,0)
|
||||||
.eq(SaasFeatureResource::getFeatureType, FeatureResourceType.COMPONENT.getCode())
|
.eq(SaasFeatureResource::getFeatureType, FeatureResourceType.COMPONENT.getCode())
|
||||||
.apply("FIND_IN_SET('" + deleteChild.getId() + "', path)")
|
.apply("FIND_IN_SET('" + deleteChild.getId() + "', path)")
|
||||||
.set(SaasFeatureResource::getUpdateBy, operatorId)
|
.list();
|
||||||
.set(BaseEntity::getIsDelete,1)
|
if (!CollectionUtil.isEmpty(deletedResources)) {
|
||||||
.update();
|
// 删除自己及自己的子集组件
|
||||||
|
featureResourceDao.lambdaUpdate()
|
||||||
|
.in(BaseEntity::getId, deletedResources.stream().map(BaseEntity::getId).collect(Collectors.toList()))
|
||||||
|
.set(SaasFeatureResource::getUpdateBy, operatorId)
|
||||||
|
.set(BaseEntity::getIsDelete,1)
|
||||||
|
.update();
|
||||||
|
// 删除组件与页面元素的绑定关系
|
||||||
|
saasPageElementService.deleteRelationByTerminalAndUniCodes(deleteChild.getTerminal(), deletedResources.stream().map(SaasFeatureResource::getUniCode).collect(Collectors.toList()), operatorId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -445,15 +477,10 @@ public class SaasFeatureResourceServiceImpl implements SaasFeatureResourceServic
|
|||||||
* @param featureResource
|
* @param featureResource
|
||||||
*/
|
*/
|
||||||
void validFeatureCode(SaasFeatureResource featureResource) {
|
void validFeatureCode(SaasFeatureResource featureResource) {
|
||||||
|
Assert.notNull(featureResource.getUniCode(), "权限码code不能为空");
|
||||||
if (Objects.equals(FeatureResourceType.COMPONENT.getCode(), featureResource.getFeatureType())) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Assert.notNull(featureResource.getFeatureCode(), "权限码code不能为空");
|
|
||||||
SaasFeatureResource exist = featureResourceDao.lambdaQuery()
|
SaasFeatureResource exist = featureResourceDao.lambdaQuery()
|
||||||
.eq(SaasFeatureResource::getTerminal, featureResource.getTerminal())
|
.eq(SaasFeatureResource::getTerminal, featureResource.getTerminal())
|
||||||
.eq(SaasFeatureResource::getFeatureCode, featureResource.getFeatureCode())
|
.eq(SaasFeatureResource::getUniCode, featureResource.getUniCode())
|
||||||
.eq(BaseEntity::getIsDelete, 0)
|
.eq(BaseEntity::getIsDelete, 0)
|
||||||
.one();
|
.one();
|
||||||
if (exist != null && !exist.getId().equals(featureResource.getId())) {
|
if (exist != null && !exist.getId().equals(featureResource.getId())) {
|
||||||
@ -509,4 +536,20 @@ public class SaasFeatureResourceServiceImpl implements SaasFeatureResourceServic
|
|||||||
.in(CollectionUtil.isNotEmpty(featureIds), SaasFeatureResource::getId, featureIds)
|
.in(CollectionUtil.isNotEmpty(featureIds), SaasFeatureResource::getId, featureIds)
|
||||||
.list();
|
.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void fillPageElement2PageFeatureResource(FeatureResourceTreeNode featureResourceTreeNode) {
|
||||||
|
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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
|||||||
import cn.axzo.tyr.client.common.enums.FeatureResourceType;
|
import cn.axzo.tyr.client.common.enums.FeatureResourceType;
|
||||||
import cn.axzo.tyr.client.common.enums.PageElementTypeEnum;
|
import cn.axzo.tyr.client.common.enums.PageElementTypeEnum;
|
||||||
import cn.axzo.tyr.client.model.req.GetPageElementReq;
|
import cn.axzo.tyr.client.model.req.GetPageElementReq;
|
||||||
|
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
|
||||||
import cn.axzo.tyr.client.model.req.PageElementReportReq;
|
import cn.axzo.tyr.client.model.req.PageElementReportReq;
|
||||||
import cn.axzo.tyr.client.model.res.PageElementResp;
|
import cn.axzo.tyr.client.model.res.PageElementResp;
|
||||||
import cn.axzo.tyr.server.repository.dao.SaasFeatureResourceDao;
|
import cn.axzo.tyr.server.repository.dao.SaasFeatureResourceDao;
|
||||||
@ -15,6 +16,7 @@ import cn.axzo.tyr.server.repository.entity.SaasFeatureResource;
|
|||||||
import cn.axzo.tyr.server.repository.entity.SaasPageElement;
|
import cn.axzo.tyr.server.repository.entity.SaasPageElement;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
|
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
|
||||||
import cn.axzo.tyr.server.service.SaasPageElementService;
|
import cn.axzo.tyr.server.service.SaasPageElementService;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -76,7 +78,7 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
|
|||||||
.one();
|
.one();
|
||||||
AssertUtil.notNull(saasFeatureResource, "页面或组件信息不存在");
|
AssertUtil.notNull(saasFeatureResource, "页面或组件信息不存在");
|
||||||
|
|
||||||
List<SaasPageElementFeatureResourceRelation> relations = saasPageElementFeatureResourceRelationDao.listByFeatureUniCodeAndTerminal(saasFeatureResource.getUniCode(), saasFeatureResource.getTerminal());
|
List<SaasPageElementFeatureResourceRelation> relations = saasPageElementFeatureResourceRelationDao.listByUniCodeAndTerminal(saasFeatureResource.getUniCode(), saasFeatureResource.getTerminal());
|
||||||
if (CollectionUtils.isEmpty(relations)) {
|
if (CollectionUtils.isEmpty(relations)) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
@ -97,6 +99,48 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
|
|||||||
return change2PageElementResp(selectedPageElements, selectedIds);
|
return change2PageElementResp(selectedPageElements, selectedIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SaasPageElement> getByTerminalAndUniCode(String terminal, String featureResourceUniCode) {
|
||||||
|
List<SaasPageElementFeatureResourceRelation> relations = saasPageElementFeatureResourceRelationDao.listByUniCodeAndTerminal(featureResourceUniCode, terminal);
|
||||||
|
if (CollectionUtils.isEmpty(relations)) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
return saasPageElementDao.listByCodes(relations.stream().map(SaasPageElementFeatureResourceRelation::getPageElementCode).collect(Collectors.toList()), terminal);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void modifyPageElementRelation(ModifyPageElementRelationDTO modifyPageElementRelation) {
|
||||||
|
if (StringUtils.isBlank(modifyPageElementRelation.getTerminal())
|
||||||
|
|| StringUtils.isBlank(modifyPageElementRelation.getFeatureResourceUniCode())) {
|
||||||
|
log.warn("addPageElementRelation param error, param:{}", JSONUtil.toJsonStr(modifyPageElementRelation));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除组件已有的绑定关系
|
||||||
|
saasPageElementFeatureResourceRelationDao.deleteByTerminalAndUniCodes(modifyPageElementRelation.getTerminal(),
|
||||||
|
Lists.newArrayList(modifyPageElementRelation.getFeatureResourceUniCode()), modifyPageElementRelation.getOperatorId());
|
||||||
|
|
||||||
|
// 保存新的绑定关系
|
||||||
|
if (CollectionUtils.isNotEmpty(modifyPageElementRelation.getPageElementCodes())) {
|
||||||
|
List<SaasPageElementFeatureResourceRelation> relations = modifyPageElementRelation.getPageElementCodes().stream().map(e -> SaasPageElementFeatureResourceRelation.builder()
|
||||||
|
.pageElementCode(e)
|
||||||
|
.featureResourceUniCode(modifyPageElementRelation.getFeatureResourceUniCode())
|
||||||
|
.terminal(modifyPageElementRelation.getTerminal())
|
||||||
|
.createBy(modifyPageElementRelation.getOperatorId())
|
||||||
|
.build()).collect(Collectors.toList());
|
||||||
|
saasPageElementFeatureResourceRelationDao.saveBatch(relations);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteRelationByTerminalAndUniCodes(String terminal, List<String> featureResourceUniCodes, Long operatorId) {
|
||||||
|
if (StringUtils.isBlank(terminal) || CollectionUtils.isEmpty(featureResourceUniCodes)) {
|
||||||
|
log.warn("deleteRelationByTerminalAndUniCode param error, terminal:{}, uniCodes:{}", terminal, featureResourceUniCodes);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
saasPageElementFeatureResourceRelationDao.deleteByTerminalAndUniCodes(terminal, featureResourceUniCodes, operatorId);
|
||||||
|
}
|
||||||
|
|
||||||
private List<SaasPageElement> processParam2Entities(PageElementReportReq request) {
|
private List<SaasPageElement> processParam2Entities(PageElementReportReq request) {
|
||||||
List<SaasPageElement> saasPageElements = Lists.newArrayList();
|
List<SaasPageElement> saasPageElements = Lists.newArrayList();
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user