diff --git a/README.md b/README.md index 622ed00..3abe32a 100644 --- a/README.md +++ b/README.md @@ -4,17 +4,13 @@ # 项目约束 - 引用外部(其它域、第三方)SDK时,需要与Leader确认,禁止私自引入 -- service分为`basic`(基础功能)与`biz`(业务功能)。`basic`不可依赖`biz`,`biz`应依赖`basic`完成部分功能。原则上`biz`与`biz`也不应该互相依赖 -- 代码风格: - - 命名规范:采用驼峰命名法,如:`orgmanaxDomain` - - 代码注释: - - 类注释:类名、功能、作者、创建时间、修改时间等 - - 方法注释:方法名、功能、参数、返回值、作者、创建时间、修改时间等 - - 代码风格: - - 缩进:4个空格 - - 换行:每行不超过120个字符 - - 空格: - - 关键字前后:`if`、`for`、`while`、`switch`、`case`等前后各一个空格 +- service分为`foundation`(基础功能)与`biz`(业务功能)。`foundation`不可依赖`biz`,`biz`应依赖`foundation`完成部分功能。原则上`biz`与`biz`也不应该互相依赖 +- 枚举不要做成参数的返回值。防止使用方不发布版本,解析失败的问题。 +- 为每个接口定义自己的出入参,不要复用出入参 +- 所有接口统一采用POST,列表接口需要带上分页且设置默认大小1000条 +- 接口URL使用 【-】符号进行分割,比如: /orgmanax/node/create-team +- service层提供的出参与入参不能包含ApiResult; +- 提供出去的feign api,要自己注入spring容器 # 项目结构 ## 模块层级 @@ -22,13 +18,12 @@ ## 模块描述 -模块名称 | 功能 | 依赖 ------- |-----------------------------------------------------| ---- -`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` | API层,提供给二方的SDK,方便二方快速接入人岗架相关功能 |无 +`orgmanax-common`| 公共组件、UTIL等 |无 +`orgmanax-infra` | 基础设施层,隔离非业务变化,防止外部变化引起内部业务变更。
对接外部依赖,数据库,MQ等中件间 | `orgmanax-common` +`orgmanax-server`| 业务层,核心分为两层:
1、基础业务层:`foundation`
2、业务层:`biz`
`foundation`依赖`biz`完成业务编排 | `orgmanax-api` `orgmanax-common` `orgmanax-infra` ## 目录层级 ``` @@ -42,16 +37,20 @@ │   │   └── orgmanax │   │   └── api │   │   ├── config #配置,如:将Feign接口托管至spring -│   │   ├── node #部门相关接口 -│   │   │   ├── feign #API -│   │   │   │   ├── basic #部门基础API,如:创建部门、通过ID查询部门、更新部门、删除部门 -│   │   │   │   └── biz #部门业务相关API,具体的实现可以依赖基础API的功能如:创建班组部门依赖创建部门等 -│   │   │   ├── req #请求入参 -│   │   │   └── resp #请求出参 -│   │   └── unit #单位相关接口 -│   │   └── feign #API -│   │   ├── basic #单位基础API -│   │   └── biz #单位业务相关API +│   │   ├── foundation # 人岗架通用接口 +│   │   |   ├── node #部门相关接口 +│   │   │   |   ├── feign #API +│   │   │   |   ├── req #请求入参 +│   │   │   |   └── resp #请求出参 +│   │   |   ├── unit #单位相关接口 +│   │   │   |   ├── feign #API +│   │   │   |   ├── req #请求入参 +│   │   │   |   └── resp #请求出参 +│   │   ├── biz # 人岗架业务相关接口 +│   │   |   ├── team #班组业务相关接口 +│   │   │   |   ├── feign #API +│   │   │   |   ├── req #请求入参 +│   │   │   |   └── resp #请求出参 │   └── resources │   └── META-INF #SPI(service provider interface) | @@ -64,21 +63,7 @@ │   └── orgmanax │   └── common │   ├── config -│   └── entity | -├── orgmanax-domain #领域层 -│   └── src -│   ├── main -│   │   └── java -│   │   └── cn -│   │   └── axzo -│   │   └── orgmanax -│   │   └── domain -│   │   └── node #部门域 -│   │   ├── entity #实体 可以提供部门的属性(字段)及业务行为(接口),注意:会发生属性变更的操作才适合定义为行为 -│   │   └── gateway #部门相关的操作接口,只定义接口,具体的实现由infra层实现 -│   │   └── addregate #聚合多个实体的对象和业务操作可以放到该目录下 - ├── orgmanax-infra #基础设施层,主要是对接二方依赖,数据库,MQ等中件间。依赖domain层 │   └── src │   ├── main @@ -87,17 +72,18 @@ │   │   │   └── axzo │   │   │   └── orgmanax │   │   │   └── infra -│   │   │   ├── config #基础配置,如MYBATISPLUS的配置 -│   │   │   └── dao #数据访问层 +│   │   │   ├── client #外部API防腐层 +│   │   │   ├── config #基础配置,如mybatis_plus的配置 +│   │   │   └── dao #数据访问层 │   │   │   └── node #部门相关 │   │   │   ├── convert #数据转换相关,比如将entity转换为数据实体do │   │   │   ├── dao #mybatisplus的service实现,用于CRUD,可与Lambda表达式配合使用。 │   │   │   ├── DO #数据实体 -│   │   │   ├── gateway # 业务查询防腐层,提供给service层使用,用于隔离service层与dao层 +│   │   │   ├── repos # 业务查询防腐层,提供给service层使用,用于隔离service层与dao层 │   │   │   │   └── impl #gateway的具体实现可以调用dao完成相关功能,也可以作为聚合根获取数据的实现 │   │   │   └── mapper | -└── orgmanax-server #包含mvc的controller与service +└── orgmanax-server └── src ├── main │   ├── java @@ -105,16 +91,19 @@ │   │   └── axzo │   │   └── orgmanax │   │   └── server - │   │   ├── controller #API - │   │   │   ├── node #部门API - │   │   │   └── unit #单位API - │   │   └── service #业务层,调用infra层与domain层完成业务流程的编排 - │   │   └── node #部门相关业务 - │   │   ├── basic #基础的公共相关业务功能实现 - │   │   ├── biz #基础的业务功能,可以依赖basic里面的接口 - │   │   ├── check #业务校验相关 - │   │   └── convert #数据转换,如将请求REQ转换为领域对象 - │   └── resources - └── test - └── java -``` + │   │   ├── controller# 继承API实现 + │   │   │   ├── biz #业务接口 + │   │   │   │   └── team #班组业务接口 + │   │   │   └── foundation #基础接口 + │   │   │   ├── node #部门基础接口 + │   │   │   └── unit #单位基础接口 + │   │   └── service # 业务实现 + │   │   ├── biz #业务接口 + │   │   │   └── team # 班组相关API + │   │   └── foundation #基础接口 + │   │   └── node #部门 + │   │   ├── check #校验 + │   │   ├── convert # 转换 + │   │   ├── entity #foundation的业务入参指定为XXXQuery、XXXCreate + │   │   └── service #基础接口的业务实现 + diff --git a/img.png b/img.png index c1e16c8..fa77915 100644 Binary files a/img.png and b/img.png differ diff --git a/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/biz/team/OrgTeamApi.java b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/biz/team/OrgTeamApi.java new file mode 100644 index 0000000..585aff8 --- /dev/null +++ b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/biz/team/OrgTeamApi.java @@ -0,0 +1,29 @@ +package cn.axzo.orgmanax.api.biz.team; + +import cn.axzo.framework.domain.web.result.ApiResult; +import cn.axzo.orgmanax.api.biz.team.req.OrgCreateTeamReq; +import cn.axzo.orgmanax.api.biz.team.resp.OrgCreateTeamResp; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * 班组相关API + * @author tanjie@axzo.cn + * @date 2024/12/2 15:40 + */ +@FeignClient( + value = "orgmanax", + url = "${axzo.service.orgmanax:http://orgmanax:8080}") +public interface OrgTeamApi { + + + /** + * 创建项目班组 + * @param organizationalNodeCreateReq + * @return + */ + @PostMapping("/api/org/project/create-team") + ApiResult createProjectTeam(@RequestBody OrgCreateTeamReq organizationalNodeCreateReq); + +} diff --git a/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/biz/team/req/OrgCreateTeamReq.java b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/biz/team/req/OrgCreateTeamReq.java new file mode 100644 index 0000000..e2d88ad --- /dev/null +++ b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/biz/team/req/OrgCreateTeamReq.java @@ -0,0 +1,44 @@ +package cn.axzo.orgmanax.api.biz.team.req; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 创建班组请求实体 + * @author tanjie@axzo.cn + * @date 2024/12/5 10:46 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class OrgCreateTeamReq { + + /** + * + */ + private String name; + + /** + * + */ + private Long teamLeaderPersonId; + + private Long inviteOuId; + + private Long inviteWorkspaceId; + + /** + * 单位班组的节点ID + */ + private Long ouTeamNodeId; + + + /** + * 操作人ID: person id + */ + private Long operatorId; + +} diff --git a/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/biz/team/resp/OrgCreateTeamResp.java b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/biz/team/resp/OrgCreateTeamResp.java new file mode 100644 index 0000000..d3eca5a --- /dev/null +++ b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/biz/team/resp/OrgCreateTeamResp.java @@ -0,0 +1,14 @@ +package cn.axzo.orgmanax.api.biz.team.resp; + +/** + * @author tanjie@axzo.cn + * @date 2024/12/5 10:55 + */ +public class OrgCreateTeamResp { + + private Long projectTeamId; + + private String teamName; + private Long organizationalNodeId; + +} 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/foundation/node/feign/OrganizationalNodeBasicApi.java similarity index 78% rename from orgmanax-api/src/main/java/cn/axzo/orgmanax/api/node/feign/basic/OrganizationalNodeBasicApi.java rename to orgmanax-api/src/main/java/cn/axzo/orgmanax/api/foundation/node/feign/OrganizationalNodeBasicApi.java index f2d4a25..588fc4c 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/foundation/node/feign/OrganizationalNodeBasicApi.java @@ -1,8 +1,8 @@ -package cn.axzo.orgmanax.api.node.feign.basic; +package cn.axzo.orgmanax.api.foundation.node.feign; import cn.axzo.framework.domain.web.result.ApiResult; -import cn.axzo.orgmanax.api.node.req.OrganizationalNodeCreateReq; -import cn.axzo.orgmanax.api.node.resp.OrganizationalNodeInfoResp; +import cn.axzo.orgmanax.api.foundation.node.req.OrganizationalNodeCreateReq; +import cn.axzo.orgmanax.api.foundation.node.resp.OrganizationalNodeInfoResp; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; diff --git a/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/node/req/OrganizationalNodeCreateReq.java b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/foundation/node/req/OrganizationalNodeCreateReq.java similarity index 93% rename from orgmanax-api/src/main/java/cn/axzo/orgmanax/api/node/req/OrganizationalNodeCreateReq.java rename to orgmanax-api/src/main/java/cn/axzo/orgmanax/api/foundation/node/req/OrganizationalNodeCreateReq.java index 3fe9515..16ea9a0 100644 --- a/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/node/req/OrganizationalNodeCreateReq.java +++ b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/foundation/node/req/OrganizationalNodeCreateReq.java @@ -1,4 +1,4 @@ -package cn.axzo.orgmanax.api.node.req; +package cn.axzo.orgmanax.api.foundation.node.req; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/foundation/node/req/package-info.java b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/foundation/node/req/package-info.java new file mode 100644 index 0000000..1470de3 --- /dev/null +++ b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/foundation/node/req/package-info.java @@ -0,0 +1 @@ +package cn.axzo.orgmanax.api.foundation.node.req; \ No newline at end of file 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/foundation/node/resp/OrganizationalNodeInfoResp.java similarity index 95% rename from orgmanax-api/src/main/java/cn/axzo/orgmanax/api/node/resp/OrganizationalNodeInfoResp.java rename to orgmanax-api/src/main/java/cn/axzo/orgmanax/api/foundation/node/resp/OrganizationalNodeInfoResp.java index 8125a35..ab75d4e 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/foundation/node/resp/OrganizationalNodeInfoResp.java @@ -1,4 +1,4 @@ -package cn.axzo.orgmanax.api.node.resp; +package cn.axzo.orgmanax.api.foundation.node.resp; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/node/feign/biz/OrganizationalNodeBizApi.java b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/node/feign/biz/OrganizationalNodeBizApi.java deleted file mode 100644 index 57c42dd..0000000 --- a/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/node/feign/biz/OrganizationalNodeBizApi.java +++ /dev/null @@ -1,18 +0,0 @@ -package cn.axzo.orgmanax.api.node.feign.biz; - -import org.springframework.cloud.openfeign.FeignClient; - -/** - * business-oriented api related to node - * @author tanjie@axzo.cn - * @date 2024/12/2 15:40 - */ -@FeignClient( - value = "orgmanax", - url = "${axzo.service.orgmanax:http://orgmanax:8080}") -public interface OrganizationalNodeBizApi { - - - - -} diff --git a/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/node/req/package-info.java b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/node/req/package-info.java deleted file mode 100644 index 40f0690..0000000 --- a/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/node/req/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package cn.axzo.orgmanax.api.node.req; \ No newline at end of file diff --git a/orgmanax-domain/pom.xml b/orgmanax-domain/pom.xml deleted file mode 100644 index 04d14cb..0000000 --- a/orgmanax-domain/pom.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - 4.0.0 - - cn.axzo.orgmanax - orgmanax - ${revision} - - - orgmanax-domain - - - 8 - 8 - UTF-8 - - - - - cn.hutool - hutool-all - - - \ No newline at end of file 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 deleted file mode 100644 index bd75efd..0000000 --- a/orgmanax-domain/src/main/java/cn/axzo/orgmanax/domain/addregate/package-info.java +++ /dev/null @@ -1,8 +0,0 @@ -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-domain/src/main/java/cn/axzo/orgmanax/domain/node/entity/OrganizationalNode.java b/orgmanax-domain/src/main/java/cn/axzo/orgmanax/domain/node/entity/OrganizationalNode.java deleted file mode 100644 index 204c1e0..0000000 --- a/orgmanax-domain/src/main/java/cn/axzo/orgmanax/domain/node/entity/OrganizationalNode.java +++ /dev/null @@ -1,80 +0,0 @@ -package cn.axzo.orgmanax.domain.node.entity; - -import cn.hutool.core.lang.Assert; -import lombok.Data; - -import java.util.Date; -import java.util.Objects; - -/** - * 领域对象 - * @author tanjie@axzo.cn - * @date 2024/12/2 17:08 - */ -@Data -public class OrganizationalNode { - - - private Long id; - /** - * 单位id - */ - private Long organizationalUnitId; - /** - * 部门名称 - */ - private String organizationalNodeName; - - /** - * 节点类型 节点类型 1.部门 2.班组 3.小组 - */ - private Integer nodeType; - - /** - * 上级部门ID - */ - private Long parentId; - /** - * 顶级部门ID - */ - private Long topNodeId; - /** - * 层级信息 - */ - private String path; - - /** - * 状态 - */ - private Integer status; - /** - * 扩展信息 - */ - private String extra; - - /** - * 创建人。自然人ID - */ - private Long createBy; - /** - * 创建时间 - */ - private Date createAt; - - /** - * 计算path、topNodeId等信息 - * - * @param parentNode 父节点 - */ - public void calcPath(OrganizationalNode parentNode) { - if (Objects.equals(this.getParentId(), 0L)) { - this.topNodeId = id; - this.path = id + ","; - return; - } - - Assert.notNull(parentNode, "重置路径时,父节点不能为空"); - this.topNodeId = parentNode.getTopNodeId(); - this.path = parentNode.path + id + ","; - } -} diff --git a/orgmanax-domain/src/main/java/cn/axzo/orgmanax/domain/pakcage-info.java b/orgmanax-domain/src/main/java/cn/axzo/orgmanax/domain/pakcage-info.java deleted file mode 100644 index 174404d..0000000 --- a/orgmanax-domain/src/main/java/cn/axzo/orgmanax/domain/pakcage-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * @#{(#)package-info.java } - * 领域层 - */ \ No newline at end of file diff --git a/orgmanax-infra/pom.xml b/orgmanax-infra/pom.xml index fb26153..812c1b5 100644 --- a/orgmanax-infra/pom.xml +++ b/orgmanax-infra/pom.xml @@ -17,11 +17,7 @@ UTF-8 - - cn.axzo.orgmanax - orgmanax-domain - ${project.version} - + org.apache.rocketmq @@ -36,7 +32,10 @@ com.baomidou mybatis-plus-boot-starter - + + + cn.hutool + hutool-all @@ -82,5 +81,9 @@ mapstruct-processor + + cn.hutool + hutool-all + \ No newline at end of file diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/RpcClientHolder.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/RpcClientHolder.java deleted file mode 100644 index 11e33c5..0000000 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/RpcClientHolder.java +++ /dev/null @@ -1,39 +0,0 @@ -package cn.axzo.orgmanax.infra.client; - -import cn.axzo.foundation.web.support.apps.AppCenter; -import cn.axzo.foundation.web.support.rpc.RpcClient; -import cn.axzo.foundation.web.support.rpc.RpcClientWrapper; -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Component; - -import java.util.Objects; -import java.util.concurrent.TimeUnit; - -@Component -@RequiredArgsConstructor -public class RpcClientHolder { - final AppCenter appCenter; - private final RpcClient rpcClient; - - private final LoadingCache rpcClientCache = CacheBuilder.newBuilder() - .maximumSize(50) - .expireAfterAccess(10, TimeUnit.MINUTES) - .build(new CacheLoader() { - @Override - public RpcClient load(String key) { - return RpcClientWrapper.builder() - .normalRpcClient(rpcClient) - .appResolver(() -> appCenter.getByName(key)) - .build(); - } - }); - - public RpcClient getRpcClient(String appName) { - RpcClient result = rpcClientCache.getUnchecked(appName); - Objects.requireNonNull(result); - return result; - } -} 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 71f42e2..a1ca86b 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 @@ -35,22 +35,11 @@ import static org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfi MybatisPlusConfig.class, RocketMQEventConfig.class}) public class Config { - @Value("${web.debug.host:}") - private String debugHost; - @Bean - public ScheduledThreadPoolExecutor scheduledThreadPoolExecutor(AppRuntime appRuntime) { - // bfs-client会使用这个scheduler - ScheduledThreadPoolExecutor scheduledThreadPoolExecutor = - new ScheduledThreadPoolExecutor(1, new ThreadFactoryBuilder() - .setNameFormat(appRuntime.getAppName() + "-%d").build()); - scheduledThreadPoolExecutor.setMaximumPoolSize(8); - return scheduledThreadPoolExecutor; - } + /** * XXX Spring默认配置当有Executor的bean后不再装载TaskExecutor, 这里因为手动注册了 - * {@link #scheduledThreadPoolExecutor}会导致spring不再自动注册TaskExecutor, 因此需要去掉ConditionalOnMissingBean的限制. * 参考{@link TaskExecutionAutoConfiguration#applicationTaskExecutor} */ @Bean(name = {APPLICATION_TASK_EXECUTOR_BEAN_NAME, @@ -64,22 +53,11 @@ public class Config { return executor; } - @Bean - AppRuntime appRuntime(ApplicationContext applicationContext) { - return AppRuntime.builder().applicationContext(applicationContext).build(); - } - @Bean public RequestLogAspect requestLogAspect() { return RequestLogAspect.builder().build(); } - @Bean - @Primary - public RpcClient rpcClient() { - return RpcClientImpl.builder().build(); - } - @Bean @Profile({"!unittest && !local"}) AbstractExceptionHandler.ExceptionHandlerHook exceptionHandlerHook() { @@ -92,13 +70,4 @@ public class Config { }; } - @Bean - AppCenter appCenter(ScheduledThreadPoolExecutor scheduledThreadPoolExecutor) { - return AppCenterImpl.builder() - .executor(scheduledThreadPoolExecutor) - .debugHost(debugHost) - //本地调试 需要特殊映射的路径 key=服务名 value = host后的映射的服务路径 - .debugAppRoutes(ImmutableMap.of("data-collection", "dataCollection")) - .build(); - } } diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/DO/OrganizationalNodeDo.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/DO/OrganizationalNode.java similarity index 83% rename from orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/DO/OrganizationalNodeDo.java rename to orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/DO/OrganizationalNode.java index 555863b..882b70c 100644 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/DO/OrganizationalNodeDo.java +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/DO/OrganizationalNode.java @@ -1,7 +1,7 @@ package cn.axzo.orgmanax.infra.dao.node.DO; +import cn.hutool.core.lang.Assert; 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; @@ -12,6 +12,7 @@ import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; +import java.util.Objects; /** * 组织节点表表实体类 @@ -27,7 +28,7 @@ import java.util.Date; @Builder @ToString(callSuper = true) @EqualsAndHashCode(callSuper = false) -public class OrganizationalNodeDo implements Serializable { +public class OrganizationalNode implements Serializable { private static final long serialVersionUID = -14708237380609631L; @TableId( @@ -132,5 +133,21 @@ public class OrganizationalNodeDo implements Serializable { protected Long isDelete = 0L; + /** + * 计算节点路径 + * @param parentNode + */ + public void calcPath(OrganizationalNode parentNode) { + if (Objects.equals(this.getParentId(), 0L)) { + this.topNodeId = id; + this.path = id + ","; + return; + } + Assert.notNull(parentNode, "重置路径时,父节点不能为空"); + this.topNodeId = parentNode.getTopNodeId(); + this.path = parentNode.path + id + ","; + } + + } 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 d02a38e..548ac35 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,5 @@ package cn.axzo.orgmanax.infra.dao.node.convert; -import cn.axzo.orgmanax.domain.node.entity.OrganizationalNode; -import cn.axzo.orgmanax.infra.dao.node.DO.OrganizationalNodeDo; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; @@ -14,7 +12,4 @@ public interface NodeInfraConvert { NodeInfraConvert INSTANCE = Mappers.getMapper(NodeInfraConvert.class); - OrganizationalNode toDomain(OrganizationalNodeDo doo); - - OrganizationalNodeDo toEntity(OrganizationalNode doo); } 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 b8c6d1a..6eb28e7 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 @@ -1,8 +1,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.DO.OrganizationalNodeDo; +import cn.axzo.orgmanax.infra.dao.node.DO.OrganizationalNode; import cn.axzo.orgmanax.infra.dao.node.mapper.OrganizationalNodeMapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Repository; @@ -12,10 +11,10 @@ import org.springframework.stereotype.Repository; * @date 2024/12/2 18:10 */ @Repository -public class NodeDao extends ServiceImpl { +public class NodeDao extends ServiceImpl { public OrganizationalNode findById(Long id) { - return NodeInfraConvert.INSTANCE.toDomain(getById(id)); + return (getById(id)); } } diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/gateway/NodeQueryGateway.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/gateway/NodeQueryGateway.java index a2978a3..fc02c05 100644 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/gateway/NodeQueryGateway.java +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/gateway/NodeQueryGateway.java @@ -1,6 +1,7 @@ package cn.axzo.orgmanax.infra.dao.node.gateway; -import cn.axzo.orgmanax.domain.node.entity.OrganizationalNode; + +import cn.axzo.orgmanax.infra.dao.node.DO.OrganizationalNode; /** * @author tanjie@axzo.cn diff --git a/orgmanax-domain/src/main/java/cn/axzo/orgmanax/domain/node/gateway/NodeUpsertGateway.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/gateway/NodeUpsertGateway.java similarity index 58% rename from orgmanax-domain/src/main/java/cn/axzo/orgmanax/domain/node/gateway/NodeUpsertGateway.java rename to orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/gateway/NodeUpsertGateway.java index 1174b56..eea9424 100644 --- a/orgmanax-domain/src/main/java/cn/axzo/orgmanax/domain/node/gateway/NodeUpsertGateway.java +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/gateway/NodeUpsertGateway.java @@ -1,13 +1,13 @@ -package cn.axzo.orgmanax.domain.node.gateway; +package cn.axzo.orgmanax.infra.dao.node.gateway; -import cn.axzo.orgmanax.domain.node.entity.OrganizationalNode; + +import cn.axzo.orgmanax.infra.dao.node.DO.OrganizationalNode; /** * @author tanjie@axzo.cn - * @date 2024/12/2 18:21 + * @date 2024/12/4 18:25 */ public interface NodeUpsertGateway { - OrganizationalNode create(OrganizationalNode node); OrganizationalNode update(OrganizationalNode node); 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 9a45047..14ef2b2 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,8 +1,6 @@ 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.DO.OrganizationalNode; import cn.axzo.orgmanax.infra.dao.node.dao.NodeDao; import cn.axzo.orgmanax.infra.dao.node.gateway.NodeQueryGateway; import lombok.RequiredArgsConstructor; 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 d915b84..3ddccc3 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 @@ -1,10 +1,9 @@ package cn.axzo.orgmanax.infra.dao.node.gateway.impl; -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.DO.OrganizationalNodeDo; +import cn.axzo.orgmanax.infra.dao.node.DO.OrganizationalNode; +import cn.axzo.orgmanax.infra.dao.node.gateway.NodeUpsertGateway; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; @@ -20,16 +19,14 @@ public class NodeUpsertGatewayImpl implements NodeUpsertGateway { private final NodeDao nodeDao; @Override public OrganizationalNode create(OrganizationalNode node) { - OrganizationalNodeDo nodeEntity = NodeInfraConvert.INSTANCE.toEntity(node); - nodeDao.save(nodeEntity); - node.setId(nodeEntity.getId()); + nodeDao.save(node); + node.setId(node.getId()); return node; } @Override public OrganizationalNode update(OrganizationalNode node) { - OrganizationalNodeDo nodeEntity = NodeInfraConvert.INSTANCE.toEntity(node); - nodeDao.updateById(nodeEntity); + nodeDao.updateById(node); return node; } } 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 70db364..f15dc68 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.DO.OrganizationalNodeDo; +import cn.axzo.orgmanax.infra.dao.node.DO.OrganizationalNode; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; @@ -13,7 +13,7 @@ import org.apache.ibatis.annotations.Mapper; * @since 2022-05-21 18:53:19 */ @Mapper -public interface OrganizationalNodeMapper extends BaseMapper { +public interface OrganizationalNodeMapper extends BaseMapper { } diff --git a/orgmanax-server/pom.xml b/orgmanax-server/pom.xml index 99709dd..b9a05fb 100644 --- a/orgmanax-server/pom.xml +++ b/orgmanax-server/pom.xml @@ -19,11 +19,6 @@ - - cn.axzo.orgmanax - orgmanax-domain - ${project.version} - cn.axzo.orgmanax diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/controller/biz/team/OrgCreateTeamController.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/controller/biz/team/OrgCreateTeamController.java new file mode 100644 index 0000000..f3f5a63 --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/controller/biz/team/OrgCreateTeamController.java @@ -0,0 +1,44 @@ +package cn.axzo.orgmanax.server.controller.biz.team; + +import cn.axzo.framework.domain.web.result.ApiResult; +import cn.axzo.orgmanax.api.biz.team.OrgTeamApi; +import cn.axzo.orgmanax.api.biz.team.req.OrgCreateTeamReq; +import cn.axzo.orgmanax.api.biz.team.resp.OrgCreateTeamResp; +import cn.axzo.orgmanax.server.service.foundation.node.service.NodeFoundationServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +/** + * @author tanjie@axzo.cn + * @date 2024/12/5 10:59 + */ +@Component +@RequiredArgsConstructor +public class OrgCreateTeamController implements OrgTeamApi{ + // 部门基础方法 + private final NodeFoundationServiceImpl nodeBasicService; + // 协同关系基础方法 +// private final CooperShipFoundationService cooperShipFoundateionService; + + // 消息发送器 + + + @Override + public ApiResult createProjectTeam(OrgCreateTeamReq organizationalNodeCreateReq) { + + // 校验 + + // 创建部门 + nodeBasicService.create(null); + + // 创建协同关系 + + // 设置角色 + + + // 发送消息 + + // 返回结果 + return null; + } +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/controller/foundation/node/OrganizationalNodeBasicController.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/controller/foundation/node/OrganizationalNodeBasicController.java new file mode 100644 index 0000000..98a4c55 --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/controller/foundation/node/OrganizationalNodeBasicController.java @@ -0,0 +1,37 @@ +package cn.axzo.orgmanax.server.controller.foundation.node; + +import cn.axzo.framework.domain.web.result.ApiResult; +import cn.axzo.orgmanax.api.foundation.node.feign.OrganizationalNodeBasicApi; +import cn.axzo.orgmanax.api.foundation.node.req.OrganizationalNodeCreateReq; +import cn.axzo.orgmanax.api.foundation.node.resp.OrganizationalNodeInfoResp; +import cn.axzo.orgmanax.server.controller.foundation.node.convert.NodeApiConvert; +import cn.axzo.orgmanax.server.service.foundation.node.service.NodeFoundationServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author tanjie@axzo.cn + * @date 2024/12/2 16:47 + */ +@RestController +@RequestMapping +@RequiredArgsConstructor +public class OrganizationalNodeBasicController implements OrganizationalNodeBasicApi { + + private final NodeFoundationServiceImpl nodeBasicService; + + /** + * 创建部门 + * + * @param organizationalNodeCreateReq 创建部门参数 + * @return + */ + @Override + public ApiResult create(OrganizationalNodeCreateReq organizationalNodeCreateReq) { + + return ApiResult.ok(nodeBasicService.create(NodeApiConvert.INSTANCE.toFoundation(organizationalNodeCreateReq))); + } + + +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/controller/foundation/node/convert/NodeApiConvert.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/controller/foundation/node/convert/NodeApiConvert.java new file mode 100644 index 0000000..2396b51 --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/controller/foundation/node/convert/NodeApiConvert.java @@ -0,0 +1,17 @@ +package cn.axzo.orgmanax.server.controller.foundation.node.convert; + +import cn.axzo.orgmanax.api.foundation.node.req.OrganizationalNodeCreateReq; +import cn.axzo.orgmanax.server.service.foundation.node.entity.OrganizationalNodeCreate; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +/** + * @author tanjie@axzo.cn + * @date 2024/12/5 10:32 + */ +@Mapper +public interface NodeApiConvert { + + NodeApiConvert INSTANCE = Mappers.getMapper(NodeApiConvert.class); + OrganizationalNodeCreate toFoundation(OrganizationalNodeCreateReq req); +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/controller/unit/OrganizationalUnit.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/controller/foundation/unit/OrganizationalUnit.java similarity index 82% rename from orgmanax-server/src/main/java/cn/axzo/orgmanax/server/controller/unit/OrganizationalUnit.java rename to orgmanax-server/src/main/java/cn/axzo/orgmanax/server/controller/foundation/unit/OrganizationalUnit.java index db80f47..d9d80a4 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/controller/unit/OrganizationalUnit.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/controller/foundation/unit/OrganizationalUnit.java @@ -1,4 +1,4 @@ -package cn.axzo.orgmanax.server.controller.unit; +package cn.axzo.orgmanax.server.controller.foundation.unit; 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/controller/node/OrganizationalNodeBasicController.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/controller/node/OrganizationalNodeBasicController.java deleted file mode 100644 index 6b3862f..0000000 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/controller/node/OrganizationalNodeBasicController.java +++ /dev/null @@ -1,34 +0,0 @@ -package cn.axzo.orgmanax.server.controller.node; - -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.basic.NodeBasicService; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * @author tanjie@axzo.cn - * @date 2024/12/2 16:47 - */ -@RestController -@RequestMapping -@RequiredArgsConstructor -public class OrganizationalNodeBasicController implements OrganizationalNodeBasicApi { - - private final NodeBasicService nodeBasicService; - - /** - * 创建部门 - * @param organizationalNodeCreateReq 创建部门参数 - * @return - */ - @Override - public ApiResult create(OrganizationalNodeCreateReq organizationalNodeCreateReq) { - return ApiResult.ok(nodeBasicService.create(organizationalNodeCreateReq)); - } - - -} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/biz/package-info.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/biz/package-info.java new file mode 100644 index 0000000..b5407ff --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/biz/package-info.java @@ -0,0 +1,6 @@ +package cn.axzo.orgmanax.server.service.biz; +/** + * 业务层 + * + * + */ \ No newline at end of file diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/biz/team/service/TeamServiceImpl.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/biz/team/service/TeamServiceImpl.java new file mode 100644 index 0000000..0ad2062 --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/biz/team/service/TeamServiceImpl.java @@ -0,0 +1,12 @@ +package cn.axzo.orgmanax.server.service.biz.team.service; + +import org.springframework.stereotype.Service; + +/** + * @author tanjie@axzo.cn + * @date 2024/12/4 18:07 + */ +@Service +public class TeamServiceImpl { + +} 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/foundation/node/check/NodeBasicCheck.java similarity index 72% rename from orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/node/check/NodeBasicCheck.java rename to orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/foundation/node/check/NodeBasicCheck.java index f7df1bb..e5bedfe 100644 --- 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/foundation/node/check/NodeBasicCheck.java @@ -1,14 +1,11 @@ -package cn.axzo.orgmanax.server.service.node.check; +package cn.axzo.orgmanax.server.service.foundation.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 cn.axzo.orgmanax.server.service.foundation.node.entity.OrganizationalNodeCreate; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.List; - /** * @author tanjie@axzo.cn * @date 2024/12/2 20:17 @@ -23,7 +20,7 @@ public class NodeBasicCheck { * @param organizationalNode * @return */ - public BizErrorInfo createNodeCheck(OrganizationalNode organizationalNode) { + public BizErrorInfo createNodeCheck(OrganizationalNodeCreate organizationalNode) { // 重名校验 // nodeQueryGateway.find(organizationalNode.getOrganizationalNodeName()); diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/foundation/node/convert/NodeConvert.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/foundation/node/convert/NodeConvert.java new file mode 100644 index 0000000..c8cbd67 --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/foundation/node/convert/NodeConvert.java @@ -0,0 +1,18 @@ +package cn.axzo.orgmanax.server.service.foundation.node.convert; + +import cn.axzo.orgmanax.infra.dao.node.DO.OrganizationalNode; +import cn.axzo.orgmanax.server.service.foundation.node.entity.OrganizationalNodeCreate; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +/** + * @author tanjie@axzo.cn + * @date 2024/12/2 17:26 + */ +@Mapper +public interface NodeConvert { + NodeConvert INSTANCE = Mappers.getMapper(NodeConvert.class); + + OrganizationalNode toDo(OrganizationalNodeCreate req); + +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/foundation/node/entity/OrganizationalNodeCreate.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/foundation/node/entity/OrganizationalNodeCreate.java new file mode 100644 index 0000000..12c99fa --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/foundation/node/entity/OrganizationalNodeCreate.java @@ -0,0 +1,42 @@ +package cn.axzo.orgmanax.server.service.foundation.node.entity; + +/** + * 部门相关操作 + * @author tanjie@axzo.cn + * @date 2024/12/5 10:28 + */ +public class OrganizationalNodeCreate { + + + /** + * 单位ID + */ + private Long organizationalUnitId; + + /** + * 部门名称 + */ + private String organizationalNodeName; + + /** + * 部门类型 + */ + private Integer nodeType; + + /** + * 上级部门ID + */ + private Long parentId; + + /** + * 简介 + */ + private String remark; + + /** + * 创建人 + */ + private Long crateBy; + + +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/node/basic/NodeBasicService.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/foundation/node/service/NodeFoundationServiceImpl.java similarity index 56% rename from orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/node/basic/NodeBasicService.java rename to orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/foundation/node/service/NodeFoundationServiceImpl.java index e73b95f..444f11a 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/node/basic/NodeBasicService.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/foundation/node/service/NodeFoundationServiceImpl.java @@ -1,13 +1,13 @@ -package cn.axzo.orgmanax.server.service.node.basic; +package cn.axzo.orgmanax.server.service.foundation.node.service; -import cn.axzo.orgmanax.api.node.req.OrganizationalNodeCreateReq; -import cn.axzo.orgmanax.api.node.resp.OrganizationalNodeInfoResp; +import cn.axzo.orgmanax.api.foundation.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.DO.OrganizationalNode; 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.axzo.orgmanax.infra.dao.node.gateway.NodeUpsertGateway; +import cn.axzo.orgmanax.server.service.foundation.node.check.NodeBasicCheck; +import cn.axzo.orgmanax.server.service.foundation.node.convert.NodeConvert; +import cn.axzo.orgmanax.server.service.foundation.node.entity.OrganizationalNodeCreate; import cn.hutool.core.lang.Assert; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -19,7 +19,7 @@ import org.springframework.transaction.annotation.Transactional; */ @Service @RequiredArgsConstructor -public class NodeBasicService { +public class NodeFoundationServiceImpl { private final NodeBasicCheck nodeBasicCheck; private final NodeQueryGateway nodeQueryGateway; @@ -27,37 +27,37 @@ public class NodeBasicService { /** - * 创建部门 + * 创建部门标准接口 * - * @param organizationalNodeCreateReq 创建部门参数 + * @param * @return */ @Transactional - public OrganizationalNodeInfoResp create(OrganizationalNodeCreateReq organizationalNodeCreateReq) { - OrganizationalNode node = NodeConvert.INSTANCE.toNodeDomain(organizationalNodeCreateReq); + public OrganizationalNodeInfoResp create(OrganizationalNodeCreate organizationalNodeCreate) { // 业务校验 - BizErrorInfo bizErrorInfo = nodeBasicCheck.createNodeCheck(node); + BizErrorInfo bizErrorInfo = nodeBasicCheck.createNodeCheck(organizationalNodeCreate); Assert.isTrue(bizErrorInfo.isSuccess(), bizErrorInfo.getErrorMsg()); // 转换为领域对象 // 持久化 - nodeUpsertGateway.create(node); + OrganizationalNode organizationalNode = NodeConvert.INSTANCE.toDo(organizationalNodeCreate); + nodeUpsertGateway.create(organizationalNode); // 获取上级节点,为了重新计算path、topNodeId等数据 - OrganizationalNode parentNode = nodeQueryGateway.findById(node.getParentId()); + OrganizationalNode parentNode = nodeQueryGateway.findById(organizationalNode.getParentId()); // 重新计算path、topNodeId等数据。 未来也可以添加workspaceId等信息 - node.calcPath(parentNode); + organizationalNode.calcPath(parentNode); //更新数据 - nodeUpsertGateway.update(node); + nodeUpsertGateway.update(organizationalNode); // 发送消息 // 返回结果 return OrganizationalNodeInfoResp.builder() - .id(node.getId()) + .id(organizationalNode.getId()) // .... .build(); } diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/foundation/package-info.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/foundation/package-info.java new file mode 100644 index 0000000..c2be192 --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/foundation/package-info.java @@ -0,0 +1,8 @@ +package cn.axzo.orgmanax.server.service.foundation; + + +/** + * 基础方法层 + * 涉及到单域的业务操作都封装到该层 + * 所以的读写操作都需要经过该层 + */ \ No newline at end of file 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 deleted file mode 100644 index 74c1e86..0000000 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/service/node/convert/NodeConvert.java +++ /dev/null @@ -1,18 +0,0 @@ -package cn.axzo.orgmanax.server.service.node.convert; - -import cn.axzo.orgmanax.api.node.req.OrganizationalNodeCreateReq; -import cn.axzo.orgmanax.domain.node.entity.OrganizationalNode; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -/** - * @author tanjie@axzo.cn - * @date 2024/12/2 17:26 - */ -@Mapper -public interface NodeConvert { - NodeConvert INSTANCE = Mappers.getMapper(NodeConvert.class); - - OrganizationalNode toNodeDomain(OrganizationalNodeCreateReq req); - -} diff --git a/pom.xml b/pom.xml index 63f0cbd..18a4f81 100644 --- a/pom.xml +++ b/pom.xml @@ -117,7 +117,6 @@ orgmanax-api orgmanax-common - orgmanax-domain orgmanax-server orgmanax-infra