feature(REQ-3282): Node基于Processor方式写收口的方法demo step2

This commit is contained in:
周敏 2024-12-09 09:58:19 +08:00
parent 6baeb19d40
commit 1e2af942a5
3 changed files with 32 additions and 5 deletions

View File

@ -6,6 +6,9 @@ import cn.axzo.foundation.dao.support.wrapper.Operator;
import cn.axzo.foundation.page.IPageReq;
import cn.axzo.foundation.page.PageResp;
import cn.axzo.orgmanax.infra.dao.node.DO.OrganizationalNode;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.google.common.base.Preconditions;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -26,8 +29,25 @@ public interface NodeQueryRepository {
PageResp<NodeResp> page(PageReq req);
default Optional<NodeResp> oneOpt(ListReq req) {
return list(req).stream().findFirst();
default Optional<NodeResp> oneOpt(OneReq req) {
req.check();
PageReq page = BeanUtil.toBean(req, PageReq.class);
page.setPage(1);
page.setPageSize(1);
return page(page).getData().stream().findFirst();
}
@NoArgsConstructor
@AllArgsConstructor
@Data
@SuperBuilder
class OneReq {
private Long id;
private Set<Long> ids;
public void check() {
Preconditions.checkArgument(id != null || CollUtil.isNotEmpty(ids), "参数异常");
}
}
@NoArgsConstructor

View File

@ -26,7 +26,7 @@ public class NodeServiceImpl implements NodeService {
req.check();
// 如果指定了id校验部门是否存在并加载出node以便后续使用
NodeQueryRepository.NodeResp current = req.getId() == null ? null
: nodeQueryRepository.oneOpt(NodeQueryRepository.ListReq.builder().id(req.getId()).build())
: nodeQueryRepository.oneOpt(NodeQueryRepository.OneReq.builder().id(req.getId()).build())
.orElseThrow(BizResultCode.ENTITY_NOT_FOUND::toException);
// 构建processor所需上下文

View File

@ -1,6 +1,8 @@
package cn.axzo.orgmanax.server.node.service.processor.impl;
import cn.axzo.foundation.event.support.producer.EventProducer;
import cn.axzo.framework.domain.data.AssertUtil;
import cn.axzo.orgmanax.common.config.BizResultCode;
import cn.axzo.orgmanax.infra.dao.node.DO.OrganizationalNode;
import cn.axzo.orgmanax.infra.dao.node.repository.NodeQueryRepository;
import cn.axzo.orgmanax.infra.dao.node.repository.NodeUpsertRepository;
@ -14,6 +16,8 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.Optional;
/**
* 创建普通部门
*/
@ -34,9 +38,12 @@ public class CreateNodeProcessor implements NodeProcessor {
// additional check
if (param.getParentId() != null && param.getParentId() > 0) {
nodeQueryRepository.oneOpt(NodeQueryRepository.ListReq.builder()
// check parent exists and other restrictions
NodeQueryRepository.NodeResp parentNode = nodeQueryRepository.oneOpt(NodeQueryRepository.OneReq.builder()
.id(param.getParentId())
.build());
.build()).orElseThrow(BizResultCode.ENTITY_NOT_FOUND::toException);
// other restrictions
// AssertUtil.isTrue(xxx,xx);
}
// 创建普通部门数据