# 项目概述 - 项目名称: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 ```