feature(REQ-3282): Node基于Processor方式写收口的方法demo step2
This commit is contained in:
parent
6baeb19d40
commit
1e2af942a5
@ -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
|
||||
|
||||
@ -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所需上下文
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
// 创建普通部门数据
|
||||
|
||||
Loading…
Reference in New Issue
Block a user