diff --git a/README.md b/README.md index e69de29..622ed00 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,120 @@ +# 项目概述 +- 项目名称:Orgmanax:“Org” 代表 `organization(组织)`,`man` 表示 “人”,`ax` 象征对这些元素进行整合. +- 项目简介:维护单位、部门、人员、岗位相关的业务及数据,比如:通讯录、项目添加人员、添加班组、更换班组长等 + +# 项目约束 +- 引用外部(其它域、第三方)SDK时,需要与Leader确认,禁止私自引入 +- service分为`basic`(基础功能)与`biz`(业务功能)。`basic`不可依赖`biz`,`biz`应依赖`basic`完成部分功能。原则上`biz`与`biz`也不应该互相依赖 +- 代码风格: + - 命名规范:采用驼峰命名法,如:`orgmanaxDomain` + - 代码注释: + - 类注释:类名、功能、作者、创建时间、修改时间等 + - 方法注释:方法名、功能、参数、返回值、作者、创建时间、修改时间等 + - 代码风格: + - 缩进:4个空格 + - 换行:每行不超过120个字符 + - 空格: + - 关键字前后:`if`、`for`、`while`、`switch`、`case`等前后各一个空格 + +# 项目结构 +## 模块层级 +![img.png](img.png) + +## 模块描述 + +模块名称 | 功能 | 依赖 +------ |-----------------------------------------------------| ---- +`orgmanax-api` | API层,提供给二方的SDK,方便二方快速接入人岗架相关功能 |无 +`orgmanax-common`| 公共组件、UTIL等 |无 +`orgmanax-domain`| 领域层,核心业务逻辑 | 无 +`orgmanax-infra` | 基础设施层,隔离非业务变化,防止外部变化引起内部业务变更。
对接二方依赖,数据库,MQ等中件间 | `orgmanax-domain` `orgmanax-common` +`orgmanax-server`| 业务层,调用domain与infra实现业务逻辑的编排 | `orgmanax-api` `orgmanax-common` `orgmanax-infra` `orgmanax-domain` + +## 目录层级 +``` +. +├── orgmanax-api #提供给二方的功能,包括基础功能、业务功能。 +│   └── src +│   ├── main +│   │   └── java +│   │   └── cn +│   │   └── axzo +│   │   └── orgmanax +│   │   └── api +│   │   ├── config #配置,如:将Feign接口托管至spring +│   │   ├── node #部门相关接口 +│   │   │   ├── feign #API +│   │   │   │   ├── basic #部门基础API,如:创建部门、通过ID查询部门、更新部门、删除部门 +│   │   │   │   └── biz #部门业务相关API,具体的实现可以依赖基础API的功能如:创建班组部门依赖创建部门等 +│   │   │   ├── req #请求入参 +│   │   │   └── resp #请求出参 +│   │   └── unit #单位相关接口 +│   │   └── feign #API +│   │   ├── basic #单位基础API +│   │   └── biz #单位业务相关API +│   └── resources +│   └── META-INF #SPI(service provider interface) +| +├── orgmanax-common #公共包 +│   └── src +│   └── main +│   └── java +│   └── cn +│   └── axzo +│   └── orgmanax +│   └── common +│   ├── config +│   └── entity +| +├── orgmanax-domain #领域层 +│   └── src +│   ├── main +│   │   └── java +│   │   └── cn +│   │   └── axzo +│   │   └── orgmanax +│   │   └── domain +│   │   └── node #部门域 +│   │   ├── entity #实体 可以提供部门的属性(字段)及业务行为(接口),注意:会发生属性变更的操作才适合定义为行为 +│   │   └── gateway #部门相关的操作接口,只定义接口,具体的实现由infra层实现 +│   │   └── addregate #聚合多个实体的对象和业务操作可以放到该目录下 + +├── orgmanax-infra #基础设施层,主要是对接二方依赖,数据库,MQ等中件间。依赖domain层 +│   └── src +│   ├── main +│   │   ├── java +│   │   │   └── cn +│   │   │   └── axzo +│   │   │   └── orgmanax +│   │   │   └── infra +│   │   │   ├── config #基础配置,如MYBATISPLUS的配置 +│   │   │   └── dao #数据访问层 +│   │   │   └── node #部门相关 +│   │   │   ├── convert #数据转换相关,比如将entity转换为数据实体do +│   │   │   ├── dao #mybatisplus的service实现,用于CRUD,可与Lambda表达式配合使用。 +│   │   │   ├── DO #数据实体 +│   │   │   ├── gateway # 业务查询防腐层,提供给service层使用,用于隔离service层与dao层 +│   │   │   │   └── impl #gateway的具体实现可以调用dao完成相关功能,也可以作为聚合根获取数据的实现 +│   │   │   └── mapper +| +└── orgmanax-server #包含mvc的controller与service + └── src + ├── main + │   ├── java + │   │   └── cn + │   │   └── axzo + │   │   └── orgmanax + │   │   └── server + │   │   ├── controller #API + │   │   │   ├── node #部门API + │   │   │   └── unit #单位API + │   │   └── service #业务层,调用infra层与domain层完成业务流程的编排 + │   │   └── node #部门相关业务 + │   │   ├── basic #基础的公共相关业务功能实现 + │   │   ├── biz #基础的业务功能,可以依赖basic里面的接口 + │   │   ├── check #业务校验相关 + │   │   └── convert #数据转换,如将请求REQ转换为领域对象 + │   └── resources + └── test + └── java +``` diff --git a/img.png b/img.png new file mode 100644 index 0000000..c1e16c8 Binary files /dev/null and b/img.png differ diff --git a/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/config/OrgmanaxApiConfig.java b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/config/OrgmanaxApiConfig.java index 6580f64..305b1ab 100644 --- a/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/config/OrgmanaxApiConfig.java +++ b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/config/OrgmanaxApiConfig.java @@ -8,6 +8,6 @@ import org.springframework.context.annotation.Configuration; * @date 2022/4/25 10:48 */ @Configuration -@EnableFeignClients(basePackages = "cn.axzo.orgmanax.api.feign") +@EnableFeignClients(basePackages = "cn.axzo.orgmanax.api.**.feign") public class OrgmanaxApiConfig { } diff --git a/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/node/feign/basic/OrganizationalNodeBasicApi.java b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/node/feign/basic/OrganizationalNodeBasicApi.java index 2acf3ab..f2d4a25 100644 --- a/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/node/feign/basic/OrganizationalNodeBasicApi.java +++ b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/node/feign/basic/OrganizationalNodeBasicApi.java @@ -7,8 +7,6 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; -import java.util.List; - /** * 部门相关基础API * @author tanjie@axzo.cn diff --git a/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/node/resp/OrganizationalNodeInfoResp.java b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/node/resp/OrganizationalNodeInfoResp.java index 920499f..8125a35 100644 --- a/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/node/resp/OrganizationalNodeInfoResp.java +++ b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/node/resp/OrganizationalNodeInfoResp.java @@ -1,6 +1,9 @@ package cn.axzo.orgmanax.api.node.resp; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import java.util.Date; @@ -10,7 +13,15 @@ import java.util.Date; * @date 2024/12/2 16:20 */ @Data +@Builder +@AllArgsConstructor +@NoArgsConstructor public class OrganizationalNodeInfoResp { + + /** + * 部门ID + */ + private Long id; /** * 单位id */ @@ -55,4 +66,5 @@ public class OrganizationalNodeInfoResp { * 创建时间 */ private Date createAt; + } diff --git a/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/unit/req/OrganizationalUnitQueryReq.java b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/unit/req/OrganizationalUnitQueryReq.java new file mode 100644 index 0000000..65fb285 --- /dev/null +++ b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/unit/req/OrganizationalUnitQueryReq.java @@ -0,0 +1,8 @@ +package cn.axzo.orgmanax.api.unit.req; + +/** + * @author tanjie@axzo.cn + * @date 2024/12/3 14:23 + */ +public class OrganizationalUnitQueryReq { +} diff --git a/orgmanax-common/src/main/java/cn/axzo/orgmanax/common/entity/BizErrorInfo.java b/orgmanax-common/src/main/java/cn/axzo/orgmanax/common/entity/BizErrorInfo.java new file mode 100644 index 0000000..72a3a13 --- /dev/null +++ b/orgmanax-common/src/main/java/cn/axzo/orgmanax/common/entity/BizErrorInfo.java @@ -0,0 +1,23 @@ +package cn.axzo.orgmanax.common.entity; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 业务异常信息 + * @author tanjie@axzo.cn + * @date 2024/12/2 20:20 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class BizErrorInfo { + + private boolean isSuccess; + + private String errorMsg; + +} diff --git a/orgmanax-domain/src/main/java/cn/axzo/orgmanax/domain/addregate/package-info.java b/orgmanax-domain/src/main/java/cn/axzo/orgmanax/domain/addregate/package-info.java new file mode 100644 index 0000000..bd75efd --- /dev/null +++ b/orgmanax-domain/src/main/java/cn/axzo/orgmanax/domain/addregate/package-info.java @@ -0,0 +1,8 @@ +package cn.axzo.orgmanax.domain.addregate; +/** + * @(package: cn.axzo.orgmanax.domain.addregate) + * + * 聚合多个实体的根对象 + * 如: NodeUnit聚合了OrganizationalNode、OrganizationalUnit + * + */ \ No newline at end of file diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/config/Config.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/config/Config.java index 61da658..71f42e2 100644 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/config/Config.java +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/config/Config.java @@ -8,6 +8,7 @@ import cn.axzo.foundation.web.support.exception.AbstractExceptionHandler; import cn.axzo.foundation.web.support.log.RequestLogAspect; import cn.axzo.foundation.web.support.rpc.RpcClient; import cn.axzo.foundation.web.support.rpc.RpcClientImpl; +import cn.axzo.orgmanax.infra.event.config.RocketMQEventConfig; import com.google.common.collect.ImmutableMap; import com.google.common.util.concurrent.ThreadFactoryBuilder; import lombok.extern.slf4j.Slf4j; diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/entity/OrganizationalNodeDo.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/DO/OrganizationalNodeDo.java similarity index 78% rename from orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/entity/OrganizationalNodeDo.java rename to orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/DO/OrganizationalNodeDo.java index 5165136..555863b 100644 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/entity/OrganizationalNodeDo.java +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/DO/OrganizationalNodeDo.java @@ -1,13 +1,17 @@ -package cn.axzo.orgmanax.infra.dao.node.entity; +package cn.axzo.orgmanax.infra.dao.node.DO; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; import lombok.*; import lombok.experimental.Accessors; import java.io.Serializable; +import java.util.Date; /** * 组织节点表表实体类 @@ -17,12 +21,19 @@ import java.io.Serializable; */ @TableName(value = "organizational_node", autoResultMap = true) @Data -@EqualsAndHashCode(callSuper = true) @Accessors(chain = true) -public class OrganizationalNodeDo extends BaseEntity implements Serializable { +@NoArgsConstructor +@AllArgsConstructor +@Builder +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = false) +public class OrganizationalNodeDo implements Serializable { private static final long serialVersionUID = -14708237380609631L; - + @TableId( + type = IdType.AUTO + ) + protected Long id; /** * 上级id,为0时为顶级节点 */ @@ -113,15 +124,13 @@ public class OrganizationalNodeDo extends BaseEntity imple private JSONObject profile; - /** - * 获取主键值 - * - * @return 主键值 - */ - @Override - protected Serializable pkVal() { - return this.id; - } + protected Date createAt; + protected Long createBy; + protected Date updateAt; + protected Long updateBy; + @TableField("is_delete") + protected Long isDelete = 0L; + } diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/convert/NodeInfraConvert.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/convert/NodeInfraConvert.java index c6c7310..d02a38e 100644 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/convert/NodeInfraConvert.java +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/convert/NodeInfraConvert.java @@ -1,7 +1,7 @@ package cn.axzo.orgmanax.infra.dao.node.convert; import cn.axzo.orgmanax.domain.node.entity.OrganizationalNode; -import cn.axzo.orgmanax.infra.dao.node.entity.OrganizationalNodeDo; +import cn.axzo.orgmanax.infra.dao.node.DO.OrganizationalNodeDo; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/dao/NodeDao.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/dao/NodeDao.java index 6920e56..b8c6d1a 100644 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/dao/NodeDao.java +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/dao/NodeDao.java @@ -2,7 +2,7 @@ package cn.axzo.orgmanax.infra.dao.node.dao; import cn.axzo.orgmanax.domain.node.entity.OrganizationalNode; import cn.axzo.orgmanax.infra.dao.node.convert.NodeInfraConvert; -import cn.axzo.orgmanax.infra.dao.node.entity.OrganizationalNodeDo; +import cn.axzo.orgmanax.infra.dao.node.DO.OrganizationalNodeDo; import cn.axzo.orgmanax.infra.dao.node.mapper.OrganizationalNodeMapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Repository; diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/entity/BaseEntity.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/entity/BaseEntity.java deleted file mode 100644 index f490bb1..0000000 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/entity/BaseEntity.java +++ /dev/null @@ -1,37 +0,0 @@ -// -// Source code recreated from a .class file by IntelliJ IDEA -// (powered by FernFlower decompiler) -// - -package cn.axzo.orgmanax.infra.dao.node.entity; - -import com.baomidou.mybatisplus.annotation.FieldFill; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NonNull; - -import java.io.Serializable; -import java.util.Date; - -@Data -public abstract class BaseEntity> extends Model implements Serializable { - @TableId( - type = IdType.AUTO - ) - protected Long id; - @TableField( - fill = FieldFill.INSERT - ) - protected Date createAt; - @TableField( - fill = FieldFill.UPDATE - ) - protected Date updateAt; - @TableField("is_delete") - protected Long isDelete = 0L; - -} diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/gateway/impl/NodeQueryGatewayImpl.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/gateway/impl/NodeQueryGatewayImpl.java index ddc3214..9a45047 100644 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/gateway/impl/NodeQueryGatewayImpl.java +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/gateway/impl/NodeQueryGatewayImpl.java @@ -1,6 +1,8 @@ package cn.axzo.orgmanax.infra.dao.node.gateway.impl; +import cn.axzo.foundation.web.support.rpc.RpcClient; import cn.axzo.orgmanax.domain.node.entity.OrganizationalNode; +import cn.axzo.orgmanax.infra.client.RpcClientHolder; import cn.axzo.orgmanax.infra.dao.node.dao.NodeDao; import cn.axzo.orgmanax.infra.dao.node.gateway.NodeQueryGateway; import lombok.RequiredArgsConstructor; @@ -17,6 +19,8 @@ public class NodeQueryGatewayImpl implements NodeQueryGateway { private final NodeDao nodeDao; @Override public OrganizationalNode findById(Long id) { + return nodeDao.findById(id); } + } diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/gateway/impl/NodeUpsertGatewayImpl.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/gateway/impl/NodeUpsertGatewayImpl.java index 3f32c5d..d915b84 100644 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/gateway/impl/NodeUpsertGatewayImpl.java +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/gateway/impl/NodeUpsertGatewayImpl.java @@ -4,7 +4,7 @@ import cn.axzo.orgmanax.domain.node.entity.OrganizationalNode; import cn.axzo.orgmanax.domain.node.gateway.NodeUpsertGateway; import cn.axzo.orgmanax.infra.dao.node.convert.NodeInfraConvert; import cn.axzo.orgmanax.infra.dao.node.dao.NodeDao; -import cn.axzo.orgmanax.infra.dao.node.entity.OrganizationalNodeDo; +import cn.axzo.orgmanax.infra.dao.node.DO.OrganizationalNodeDo; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/mapper/OrganizationalNodeMapper.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/mapper/OrganizationalNodeMapper.java index ca2f00e..70db364 100644 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/mapper/OrganizationalNodeMapper.java +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/mapper/OrganizationalNodeMapper.java @@ -1,7 +1,7 @@ package cn.axzo.orgmanax.infra.dao.node.mapper; -import cn.axzo.orgmanax.infra.dao.node.entity.OrganizationalNodeDo; +import cn.axzo.orgmanax.infra.dao.node.DO.OrganizationalNodeDo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/event/config/MQEventProducer.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/event/config/MQEventProducer.java new file mode 100644 index 0000000..1ab7e21 --- /dev/null +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/event/config/MQEventProducer.java @@ -0,0 +1,23 @@ +package cn.axzo.orgmanax.infra.event.config; + +import cn.axzo.foundation.event.support.producer.EventProducer; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +/** + * @author tanjie@axzo.cn + * @date 2024/12/3 14:27 + */ +@Component +@RequiredArgsConstructor +public class MQEventProducer { + + /** + * rocket + */ + private final EventProducer eventProducer; + + + + +} diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/config/RocketMQEventConfig.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/event/config/RocketMQEventConfig.java similarity index 99% rename from orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/config/RocketMQEventConfig.java rename to orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/event/config/RocketMQEventConfig.java index 675ad2f..4567ba1 100644 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/config/RocketMQEventConfig.java +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/event/config/RocketMQEventConfig.java @@ -1,4 +1,4 @@ -package cn.axzo.orgmanax.infra.config; +package cn.axzo.orgmanax.infra.event.config; import cn.axzo.foundation.event.support.consumer.*; import cn.axzo.foundation.event.support.producer.EventProducer; diff --git a/orgmanax-server/pom.xml b/orgmanax-server/pom.xml index a4f4861..99709dd 100644 --- a/orgmanax-server/pom.xml +++ b/orgmanax-server/pom.xml @@ -35,6 +35,11 @@ orgmanax-api ${project.version} + + cn.axzo.orgmanax + orgmanax-common + ${project.version} + com.alibaba.cloud diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/controller/node/OrganizationalNodeBasicController.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/controller/node/OrganizationalNodeBasicController.java index 7a6aae5..6b3862f 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/controller/node/OrganizationalNodeBasicController.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/controller/node/OrganizationalNodeBasicController.java @@ -4,7 +4,7 @@ import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.orgmanax.api.node.feign.basic.OrganizationalNodeBasicApi; import cn.axzo.orgmanax.api.node.req.OrganizationalNodeCreateReq; import cn.axzo.orgmanax.api.node.resp.OrganizationalNodeInfoResp; -import cn.axzo.orgmanax.server.service.node.NodeBasicService; +import cn.axzo.orgmanax.server.service.node.basic.NodeBasicService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/node/NodeBasicService.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/node/basic/NodeBasicService.java similarity index 69% rename from orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/node/NodeBasicService.java rename to orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/node/basic/NodeBasicService.java index ac85ad7..e73b95f 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/node/NodeBasicService.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/node/basic/NodeBasicService.java @@ -1,11 +1,14 @@ -package cn.axzo.orgmanax.server.service.node; +package cn.axzo.orgmanax.server.service.node.basic; import cn.axzo.orgmanax.api.node.req.OrganizationalNodeCreateReq; import cn.axzo.orgmanax.api.node.resp.OrganizationalNodeInfoResp; +import cn.axzo.orgmanax.common.entity.BizErrorInfo; import cn.axzo.orgmanax.domain.node.entity.OrganizationalNode; import cn.axzo.orgmanax.domain.node.gateway.NodeUpsertGateway; import cn.axzo.orgmanax.infra.dao.node.gateway.NodeQueryGateway; +import cn.axzo.orgmanax.server.service.node.check.NodeBasicCheck; import cn.axzo.orgmanax.server.service.node.convert.NodeConvert; +import cn.hutool.core.lang.Assert; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -18,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional; @RequiredArgsConstructor public class NodeBasicService { + private final NodeBasicCheck nodeBasicCheck; private final NodeQueryGateway nodeQueryGateway; private final NodeUpsertGateway nodeUpsertGateway; @@ -30,9 +34,12 @@ public class NodeBasicService { */ @Transactional public OrganizationalNodeInfoResp create(OrganizationalNodeCreateReq organizationalNodeCreateReq) { - OrganizationalNode node = NodeConvert.INSTANCE.toNode(organizationalNodeCreateReq); - // 业务校验 + OrganizationalNode node = NodeConvert.INSTANCE.toNodeDomain(organizationalNodeCreateReq); + // 业务校验 + BizErrorInfo bizErrorInfo = nodeBasicCheck.createNodeCheck(node); + Assert.isTrue(bizErrorInfo.isSuccess(), bizErrorInfo.getErrorMsg()); + // 转换为领域对象 // 持久化 nodeUpsertGateway.create(node); @@ -49,6 +56,10 @@ public class NodeBasicService { // 返回结果 - return null; + return OrganizationalNodeInfoResp.builder() + .id(node.getId()) + // .... + .build(); } + } diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/node/check/NodeBasicCheck.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/node/check/NodeBasicCheck.java new file mode 100644 index 0000000..f7df1bb --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/node/check/NodeBasicCheck.java @@ -0,0 +1,34 @@ +package cn.axzo.orgmanax.server.service.node.check; + +import cn.axzo.framework.domain.web.BizException; +import cn.axzo.orgmanax.common.entity.BizErrorInfo; +import cn.axzo.orgmanax.domain.node.entity.OrganizationalNode; +import cn.axzo.orgmanax.infra.dao.node.gateway.NodeQueryGateway; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author tanjie@axzo.cn + * @date 2024/12/2 20:17 + */ +@Service +@RequiredArgsConstructor +public class NodeBasicCheck { + + private final NodeQueryGateway nodeQueryGateway; + + /** 返回值也可以封装成对象 + * @param organizationalNode + * @return + */ + public BizErrorInfo createNodeCheck(OrganizationalNode organizationalNode) { + // 重名校验 + // nodeQueryGateway.find(organizationalNode.getOrganizationalNodeName()); + + return BizErrorInfo.builder() + .isSuccess(true) + .build(); + } +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/node/convert/NodeConvert.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/node/convert/NodeConvert.java index 7e54145..74c1e86 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/node/convert/NodeConvert.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/node/convert/NodeConvert.java @@ -13,6 +13,6 @@ import org.mapstruct.factory.Mappers; public interface NodeConvert { NodeConvert INSTANCE = Mappers.getMapper(NodeConvert.class); - OrganizationalNode toNode(OrganizationalNodeCreateReq req); + OrganizationalNode toNodeDomain(OrganizationalNodeCreateReq req); }