# Java 模块分层与引用关系

## 1. 分层结构（先看层次）

### L0：根聚合层

- `storlead-saas-platform`：全项目根 `pom`，负责聚合所有 Java 模块。

### L1：平台基础层

- `java/storlead-dependencies`：统一管理依赖版本（BOM）。
- `java/storlead-framework`：基础框架层，提供公共能力（`common`、`core`、`auth`、`mybatis`、`redis`、`web`）。

### L2：平台能力域

- `java/storlead-system`：系统模块（角色、模块、权限、设置等）。
- `java/storlead-user`：用户模块聚合（子模块 `storlead-user-core`、`storlead-user-spi`、`storlead-user-biz`、`storlead-user-api`）。
- `java/storlead-knowledge`：知识库模块聚合（子模块 `storlead-knowledge-core`、`storlead-knowledge-spi`、`storlead-knowledge-biz`、`storlead-knowledge-api`）。
- `java/storlead-thirdparty`：第三方公共模块（企微、钉钉、支付宝等能力接入）。
- `java/storlead-account`：账户业务模块。

### L3：业务能力域

- `java/storlead-sms`：手机短信模块（子模块 `storlead-sms-core`、`storlead-sms-spi`、`storlead-sms-biz`、`storlead-sms-api`）。
- `java/storlead-message`：站内消息模块（站内、邮箱、企微消息发送）。
- `java/storlead-es`：ES 搜索模块。
- `java/storlead-sasa`：子业务聚合模块（各业务线）。

### L4：应用接入层

- `java/storlead-api`：主 API 应用入口（当前启动类所在模块）。

## 2. 聚合树（父子关系）

```text
storlead-saas-platform
├─ storlead-dependencies
├─ storlead-framework
│  ├─ storlead-common
│  ├─ storlead-core
│  ├─ storlead-auth
│  ├─ storlead-mybatis
│  ├─ storlead-redis
│  └─ storlead-web
├─ storlead-system
├─ storlead-user
│  ├─ storlead-user-core
│  ├─ storlead-user-spi
│  ├─ storlead-user-biz
│  └─ storlead-user-api
├─ storlead-knowledge
│  ├─ storlead-knowledge-core
│  ├─ storlead-knowledge-spi
│  ├─ storlead-knowledge-biz
│  └─ storlead-knowledge-api
├─ storlead-thirdparty
│  ├─ storlead-thirdparty-api
│  ├─ storlead-thirdparty-spi
│  ├─ storlead-thirdparty-biz
│  └─ storlead-thirdparty-dingtalk
├─ storlead-account
│  ├─ storlead-account-api
│  └─ storlead-account-biz
├─ storlead-sms
│  ├─ storlead-sms-core
│  ├─ storlead-sms-spi
│  ├─ storlead-sms-biz
│  └─ storlead-sms-api
├─ storlead-message
│  ├─ storlead-message-core
│  ├─ storlead-message-api
│  └─ storlead-message-biz
├─ storlead-es
│  ├─ storlead-es-core
│  ├─ storlead-es-api
│  └─ storlead-es-biz
├─ storlead-sasa
│  ├─ storlead-trade
│  │  ├─ storlead-customer
│  │  ├─ storlead-marketing
│  │  └─ storlead-acquisition
│  ├─ storlead-salary
│  ├─ storlead-sales
│  ├─ storlead-okr
│  └─ storlead-project
└─ storlead-api
```

## 3. 模块引用关系（依赖方向）

### 3.1 框架内部主链

- `storlead-core` -> `storlead-common`
- `storlead-auth` -> `storlead-common`、`storlead-core`
- `storlead-redis` -> `storlead-common`
- `storlead-mybatis` -> `storlead-common`、`storlead-core`、`storlead-auth`
- `storlead-web` -> `storlead-common`、`storlead-core`、`storlead-redis`、`storlead-mybatis`

### 3.2 业务模块主链

- `storlead-sms-spi` -> `storlead-common`（对外契约与 `BizResult`）
- `storlead-sms-biz` -> `storlead-sms-spi`、`storlead-sms-core`、`storlead-common`、`storlead-redis`、`storlead-mybatis`
- `storlead-sms-api` -> `storlead-sms-spi`、`storlead-sms-biz`、`storlead-web`（HTTP Controller）
- `storlead-message-core` -> `storlead-common`、`storlead-user-spi`（间接依赖 `storlead-user-core`）
- `storlead-message-biz` -> `storlead-message-core`、`storlead-common`、`storlead-mybatis`、`storlead-web`、`storlead-user-biz`
- `storlead-es-biz` -> `storlead-es-api`、`storlead-es-core`
- `storlead-user-spi` -> `storlead-user-core`、`storlead-common`、`storlead-mybatis`
- `storlead-user-biz` -> `storlead-user-spi`、`storlead-common`、`storlead-mybatis`、`storlead-thirdparty-api` 等
- `storlead-user-api` -> `storlead-user-spi`、`storlead-user-biz`、`storlead-web`（HTTP Controller 接入层）
- `storlead-knowledge-spi` -> `storlead-knowledge-core`、`storlead-common`、`storlead-mybatis`
- `storlead-knowledge-biz` -> `storlead-knowledge-spi`、`storlead-common`、`storlead-mybatis`
- `storlead-knowledge-api` -> `storlead-knowledge-spi`、`storlead-knowledge-biz`、`storlead-web`、`storlead-auth`
- `storlead-system` -> `storlead-common`
- `storlead-customer`、`storlead-marketing`、`storlead-acquisition` -> `storlead-common`、`storlead-web`
- `storlead-salary`、`storlead-sales`、`storlead-okr`、`storlead-project` -> `storlead-common`
- `storlead-api` -> `storlead-common`、`storlead-web`、`storlead-account-api`、`storlead-customer`

### 3.3 第三方主链

- `storlead-thirdparty-spi` -> `storlead-thirdparty-api`（对外扩展契约：`com.storlead.thirdparty.spi`）
- `storlead-thirdparty-biz` -> `storlead-thirdparty-api`、`storlead-thirdparty-spi`（默认聚合实现与自动配置）
- `storlead-thirdparty-dingtalk` -> `storlead-thirdparty-spi`
- `storlead-thirdparty-wecom`（目录存在）-> `storlead-thirdparty-spi`、`storlead-common`、`storlead-web`、`storlead-redis`、`storlead-mybatis`

## 4. 补充说明

- 当前启动类：`com.storlead.api.StorleadTradeApplication`（位于 `java/storlead-api`）。
- `storlead-thirdparty-wecom` 目录存在，但未在 `java/storlead-thirdparty/pom.xml` 的 `<modules>` 中声明；如需纳入聚合构建，需要补充声明。

## 5. `storlead-user` 子模块与包结构

根包均为 `com.storlead.user`。**仅模型 + 业务接口** 依赖 `storlead-user-spi`（传递 `storlead-user-core`）；**实现与数据访问** 依赖 `storlead-user-biz`；**需要用户域 REST Controller** 时再依赖 `storlead-user-api`（已含 spi、biz、web）。

| 子模块 | Maven artifact | 典型内容 |
|--------|----------------|----------|
| core | `storlead-user-core` | `pojo`（entity/dto/vo）、`model` |
| spi | `storlead-user-spi` | 对外业务契约：`service` 下各 `I*` 接口 |
| biz | `storlead-user-biz` | `mapper` 与 XML、`service.impl`、`util`、`property`、`task`；`META-INF/spring.factories`（`UserSystemConfigProperties`） |
| api | `storlead-user-api` | `com.storlead.user.api` 下 **Controller** 等 HTTP 接入 |

## 6. `storlead-knowledge` 子模块与包结构

根包为 `com.storlead.knowledge`。**模型 + 业务接口** 依赖 `storlead-knowledge-spi`（传递 `storlead-knowledge-core`）；**实现与 Mapper** 依赖 `storlead-knowledge-biz`；**REST 接入** 依赖 `storlead-knowledge-api`。

| 子模块 | Maven artifact | 典型内容 |
|--------|----------------|----------|
| core | `storlead-knowledge-core` | `pojo`、`model` |
| spi | `storlead-knowledge-spi` | `com.storlead.knowledge.service` 下 `I*` 接口 |
| biz | `storlead-knowledge-biz` | `mapper`、XML、`service.impl`、自动配置等 |
| api | `storlead-knowledge-api` | `com.storlead.knowledge.api` 下 **Controller** |


