183 Commits

Author SHA1 Message Date
oyo
e6be173673 更新 knowledge.md 2025-10-29 16:35:27 +08:00
oyo
510309832f 更新 knowledge.md 2025-10-29 16:16:04 +08:00
oyo
d15bb5e10f 更新 knowledge.md 2025-10-29 16:14:55 +08:00
oyo
06f315a654 更新 knowledge.md 2025-10-29 16:01:30 +08:00
oyo
245551961d 更新 knowledge.md 2025-10-29 15:51:16 +08:00
oyo
636ae4d415 更新 knowledge.md 2025-10-29 15:40:11 +08:00
oyo
3a2f856eff 更新 knowledge.md 2025-10-29 15:29:49 +08:00
oyo
eb5d055e14 更新 knowledge.md 2025-10-29 15:26:22 +08:00
oyo
5771ffe388 更新 knowledge.md 2025-10-29 15:15:09 +08:00
oyo
d59e59c17c 更新 knowledge.md 2025-10-29 13:54:23 +08:00
oyo
4b2bba2ae9 更新 knowledge.md 2025-10-27 17:01:19 +08:00
oyo
bebfcfa3f1 更新 knowledge.md 2025-10-27 15:20:12 +08:00
oyo
41489ba150 更新 knowledge.md 2025-10-27 15:16:49 +08:00
oyo
6c8032e25c 更新 knowledge.md 2025-10-27 15:03:37 +08:00
oyo
9edce3e80c 更新 knowledge.md 2025-10-27 14:58:00 +08:00
oyo
29570e7156 更新 knowledge.md 2025-10-27 11:04:22 +08:00
oyo
4be514aff0 更新 knowledge.md 2025-10-23 14:11:54 +08:00
oyo
bad7025b00 更新 knowledge.md 2025-10-22 19:27:53 +08:00
oyo
a3947239ad 更新 knowledge.md 2025-10-22 19:15:24 +08:00
oyo
f1ec30a7dd 更新 knowledge.md 2025-10-22 18:46:01 +08:00
oyo
3699f4833c 更新 knowledge.md 2025-10-22 17:21:58 +08:00
oyo
8ecdfbab6e 更新 knowledge.md
去掉 "可以作为静态自定义字段逻辑编写位置(复用性好,被其他convert方法调用,但处于底层,不建议在内部进行数据库查询等操作,只建议做静态计算)"
2025-10-22 15:44:56 +08:00
oyo
57c4fcc6bc 更新 knowledge.md
放开自定义字段的实现位置
2025-10-22 15:03:30 +08:00
oyo
a5e38099c6 更新 knowledge.md 2025-10-21 15:33:53 +08:00
oyo
854275fbda 更新 knowledge.md 2025-10-21 15:26:08 +08:00
oyo
2794f1e10e 更新 knowledge.md 2025-10-20 19:39:06 +08:00
oyo
50898d781e 更新 knowledge.md 2025-10-20 19:36:55 +08:00
oyo
19efc38e5a 更新 knowledge.md 2025-10-20 19:29:36 +08:00
oyo
9bc4cbf799 更新 knowledge.md 2025-10-20 19:29:27 +08:00
ycl
49a8165aff 更新 knowledge.md 2025-10-20 19:14:11 +08:00
oyo
ba9318c2ba 更新 knowledge.md 2025-10-20 14:01:45 +08:00
oyo
c50bb46f20 更新 knowledge.md 2025-10-19 17:57:24 +08:00
ycl
9042527142 更新 knowledge.md 2025-10-15 18:43:49 +08:00
ycl
1bf734f700 更新 knowledge.md 2025-10-15 18:20:07 +08:00
ycl
49ca7a2e72 更新 knowledge.md 2025-10-15 11:30:32 +08:00
ycl
44f7ffda1d 更新 knowledge.md 2025-10-15 11:22:54 +08:00
ycl
ec56219b83 更新 knowledge.md 2025-10-15 10:53:12 +08:00
ycl
4f3ca7936b 更新 knowledge.md 2025-10-14 11:21:48 +08:00
oyo
44cc048899 更新 knowledge.md 2025-10-13 11:13:35 +08:00
oyo
3c00525d67 更新 knowledge.md 2025-09-29 15:14:46 +08:00
ycl
e44351a362 更新 knowledge.md 2025-09-25 15:53:00 +08:00
ycl
51c2b14694 更新 knowledge.md 2025-09-25 15:07:49 +08:00
ycl
7eac1bbeb6 更新 knowledge.md 2025-09-25 15:05:19 +08:00
oyo
546e45aa97 更新 knowledge.md 2025-09-25 10:04:26 +08:00
oyo
7da8e3eb34 更新 knowledge.md 2025-09-23 10:59:37 +08:00
oyo
2384649928 更新 knowledge.md 2025-09-22 10:41:21 +08:00
oyo
2e2cb599cb 更新 knowledge.md 2025-09-19 18:10:12 +08:00
oyo
00cf12ea3c 删除 knowledge-design.md 2025-09-19 18:06:42 +08:00
oyo
b870568483 更新 knowledge.md 2025-09-18 11:52:37 +08:00
ycl
ce7c0ad997 更新 knowledge.md 2025-09-18 10:11:42 +08:00
oyo
7e07894422 更新 knowledge-brief.md 2025-09-12 17:04:24 +08:00
oyo
c3aaa9d2c0 更新 knowledge-brief.md 2025-09-12 16:26:00 +08:00
oyo
73c82a4f97 更新 knowledge.md 2025-09-10 15:37:08 +08:00
ycl
dcff8d4701 更新 knowledge-brief.md 2025-09-07 15:51:18 +08:00
ycl
040a1999e3 更新 knowledge.md 2025-09-07 14:33:01 +08:00
ycl
636cb8a226 更新 knowledge.md 2025-09-07 14:30:26 +08:00
ycl
b8255ca3a0 更新 knowledge.md 2025-09-04 16:43:02 +08:00
ycl
e839e1e8a0 更新 knowledge.md 2025-09-04 11:56:02 +08:00
ycl
5d89a2907b 更新 knowledge.md 2025-09-04 11:53:34 +08:00
ycl
db667aefda 更新 knowledge.md 2025-09-04 11:23:07 +08:00
ycl
25b04583e8 更新 knowledge.md 2025-09-04 11:19:26 +08:00
ycl
506b07d1ac 更新 knowledge-brief.md 2025-09-03 19:18:13 +08:00
ycl
555f1767a9 更新 knowledge.md 2025-09-03 19:16:54 +08:00
ycl
f8d5a68fbc 更新 knowledge.md 2025-09-03 19:02:14 +08:00
oyo
8dd43e784f 更新 knowledge.md 2025-09-03 18:50:12 +08:00
oyo
eb2bb0b62f 更新 knowledge.md 2025-09-03 10:07:07 +08:00
oyo
f945ec49bb 更新 knowledge.md 2025-09-01 20:09:51 +08:00
oyo
6026fa7774 更新 knowledge.md 2025-09-01 17:03:59 +08:00
oyo
b049e69454 更新 knowledge.md 2025-08-31 16:02:26 +08:00
oyo
e9a6bc4d7e 更新 knowledge-design.md 2025-08-28 15:22:43 +08:00
oyo
b54b3149a2 更新 knowledge.md 2025-08-27 15:57:52 +08:00
ycl
e448e3a9e1 更新 knowledge.md 2025-08-25 16:07:01 +08:00
dayjoy
f86f1b74e4 feat: 知识库前缀 2025-08-21 11:11:27 +08:00
oyo
23706f21b2 更新 knowledge.md 2025-08-21 10:18:10 +08:00
oyo
b4569dffb0 添加 knowledge-design.md 2025-08-20 13:57:42 +08:00
ycl
f2764cefc9 更新 knowledge.md 2025-08-20 11:57:23 +08:00
dayjoy
e4225795f9 fix: 项目结构 2025-08-20 11:46:16 +08:00
dayjoy
73803542ea fix: 代码格式问题 2025-08-20 11:37:57 +08:00
dayjoy
a3afd54f97 feat: 简化文字 2025-08-20 11:25:21 +08:00
dayjoy
8d028d116c feat: 简化技术描述语言(3~4) 2025-08-20 11:20:58 +08:00
dayjoy
47199b895c feat: 简化技术描述语言(2.12~2.16) 2025-08-20 11:18:10 +08:00
dayjoy
f253b4f628 feat: 简化技术描述语言(2.10~2.11) 2025-08-20 11:02:31 +08:00
dayjoy
1dcb2ce6a0 feat: 简化技术描述语言(2.9) 2025-08-20 10:44:36 +08:00
dayjoy
11eb3f3b37 feat: 简化技术描述语言(2.8) 2025-08-20 10:36:53 +08:00
dayjoy
9d0ccd1372 feat: 简化技术描述语言(2.7) 2025-08-20 10:28:34 +08:00
dayjoy
bd1cf2a5a4 feat: 简化技术描述语言(1~2.6) 2025-08-19 18:51:41 +08:00
dayjoy
10af7636a9 feat: 文件改名 2025-08-19 16:45:57 +08:00
dayjoy
ea16681047 feat: 文件改名 2025-08-19 16:44:22 +08:00
dayjoy
132e666a65 feat: 更新TOCO平台简介 2025-08-18 16:43:31 +08:00
dayjoy
5cb4d8c451 feat: 添加TOCO平台简介 2025-08-18 16:40:17 +08:00
oyo
0337f669ea 更新 llms-full.txt 2025-08-17 14:10:46 +08:00
ycl
191ef8c1eb 更新 llms-full.txt 2025-08-15 18:08:07 +08:00
ycl
341eae8c7b 更新 llms-full.txt 2025-08-15 18:03:21 +08:00
ycl
73ccf32447 更新 llms-full.txt 2025-08-14 11:07:23 +08:00
oyo
337ba0ea99 更新 llms-full.txt 2025-08-14 10:45:02 +08:00
ycl
66568700de 更新 llms-full.txt 2025-08-12 14:48:49 +08:00
oyo
de30f67e50 更新 llms-full.txt 2025-08-11 18:19:46 +08:00
oyo
8dddf1b5c0 更新 llms-full.txt 2025-08-11 17:41:13 +08:00
oyo
627fd79c46 更新 llms-full.txt 2025-08-11 12:13:28 +08:00
ycl
be247c12cf 更新 llms-full.txt 2025-08-10 16:34:51 +08:00
ycl
cae9ef9ca5 更新 llms-full.txt 2025-08-10 15:16:29 +08:00
ycl
02533b17e2 更新 llms-full.txt 2025-08-10 11:15:03 +08:00
oyo
d99985b72e 更新 llms-full.txt 2025-08-08 17:40:19 +08:00
oyo
d77d0366da 更新 llms-full.txt 2025-08-08 17:38:48 +08:00
oyo
4143c28560 更新 llms-full.txt 2025-08-08 12:10:23 +08:00
oyo
b72d9dd628 更新 llms-full.txt 2025-08-08 11:52:48 +08:00
oyo
aa8b21bb5f 更新 llms-full.txt 2025-08-08 11:48:34 +08:00
oyo
35fc099370 更新 llms-full.txt 2025-08-07 12:32:34 +08:00
oyo
b0d1c9e402 更新 llms-full.txt 2025-08-07 12:26:45 +08:00
ycl
3ab49979d3 更新 llms-full.txt 2025-08-07 12:16:49 +08:00
oyo
c6fd6daed5 更新 llms-full.txt 2025-08-07 12:05:30 +08:00
ycl
d59871ad21 更新 llms-full.txt 2025-08-07 11:29:28 +08:00
oyo
29666b7b9b 更新 llms-full.txt 2025-08-07 11:26:23 +08:00
oyo
979ee3a745 更新 llms-full.txt 2025-08-06 14:25:33 +08:00
oyo
207e18835a 更新 llms-full.txt 2025-08-06 11:28:03 +08:00
oyo
eac3a4fb93 更新 llms-full.txt 2025-08-05 14:56:51 +08:00
oyo
0cfeabcb16 更新 llms-full.txt 2025-08-05 14:37:26 +08:00
oyo
7ae8d80e31 更新 llms-full.txt 2025-08-05 14:05:45 +08:00
ycl
a139300b9e 更新 llms-full.txt 2025-08-05 12:05:20 +08:00
ycl
cdecfa028b 更新 llms-full.txt 2025-08-05 11:45:20 +08:00
oyo
3f81639b9b 更新 llms-full.txt 2025-08-05 10:11:04 +08:00
ycl
e36464eabc 更新 llms-full.txt 2025-08-01 18:30:31 +08:00
oyo
08760b6f57 更新 llms-full.txt 2025-08-01 16:53:33 +08:00
oyo
479548b334 更新 llms-full.txt 2025-07-31 10:22:29 +08:00
1b7022466d 更新 coding-llms-full.txt 2025-07-29 14:37:20 +08:00
oyo
9daa17519d 更新 llms-full.txt 2025-07-28 19:18:21 +08:00
oyo
5671a0d36e 更新 llms-full.txt 2025-07-28 19:17:52 +08:00
oyo
d025d0db49 更新 llms-full.txt 2025-07-28 18:26:03 +08:00
ycl
8916d2bdb0 更新 llms-full.txt 2025-07-28 14:51:41 +08:00
oyo
45ac3fd8ef 更新 llms-full.txt 2025-07-28 10:55:53 +08:00
oyo
5268e1f170 更新 llms-full.txt 2025-07-28 10:44:46 +08:00
oyo
ff58ff2fd7 更新 llms-full.txt 2025-07-27 16:00:14 +08:00
ycl
b75b4c9229 更新 llms-full.txt 2025-07-25 16:16:23 +08:00
ycl
120b7ee161 更新 llms-full.txt 2025-07-25 15:59:06 +08:00
ycl
2c18cb147c 更新 llms-full.txt 2025-07-25 10:16:43 +08:00
ycl
97083d3272 更新 llms-full.txt 2025-07-24 14:50:16 +08:00
ycl
b575f39854 更新 llms-full.txt 2025-07-23 10:52:03 +08:00
ycl
33662b2e33 更新 llms-full.txt 2025-07-23 10:17:23 +08:00
ycl
1246cf4ff7 更新 llms-full.txt 2025-07-23 10:14:12 +08:00
ycl
3569493428 更新 llms-full.txt 2025-07-23 09:58:30 +08:00
ycl
398ddd673f 更新 llms-full.txt 2025-07-22 16:54:24 +08:00
ycl
cff7c151d9 更新 llms-full.txt 2025-07-22 16:13:34 +08:00
ycl
0f9d1774e6 更新 llms-full.txt 2025-07-22 16:04:55 +08:00
ycl
2e396f0100 更新 llms-full.txt 2025-07-22 15:53:22 +08:00
ycl
8e6968c27c 更新 llms-full.txt 2025-07-22 15:24:02 +08:00
ycl
e90f882b9a 更新 llms-full.txt 2025-07-22 14:51:28 +08:00
c08274d900 Add coding-llms-full.txt 2025-07-22 13:48:08 +08:00
ycl
1dc3af15f4 更新 llms-full.txt 2025-07-21 10:15:27 +08:00
ycl
952c8d0b64 更新 llms-full.txt 2025-07-21 10:07:24 +08:00
oyo
34c1c48f14 更新 llms-full.txt 2025-07-20 15:53:28 +08:00
ycl
99581be3cb 更新 llms-full.txt 2025-07-17 14:07:21 +08:00
ycl
18f7ad590e 更新 llms-full.txt 2025-07-17 14:01:37 +08:00
ycl
59b601fede 更新 llms-full.txt 2025-07-17 12:18:12 +08:00
ycl
ded0c82d6f 更新 llms-full.txt 2025-07-17 11:00:51 +08:00
oyo
939726f0fd 更新 llms-full.txt 2025-07-16 19:11:31 +08:00
oyo
7c9168318f 更新 llms-full.txt 2025-07-16 19:08:36 +08:00
oyo
662ebf1215 更新 llms-full.txt 2025-07-14 19:28:47 +08:00
oyo
512df24380 更新 llms-full.txt 2025-07-14 19:27:15 +08:00
ycl
f23ecb3f2f 更新 llms-full.txt 2025-07-14 19:03:22 +08:00
oyo
a6e460a05c 更新 llms-full.txt 2025-07-14 17:14:47 +08:00
ycl
39de528ba1 更新 llms-full.txt 2025-07-13 17:39:43 +08:00
oyo
02b6befd21 更新 llms-full.txt 2025-07-11 11:33:22 +08:00
oyo
996d9cceb9 更新 llms-full.txt 2025-07-11 11:24:31 +08:00
oyo
b8a7593a6a 更新 llms-full.txt 2025-07-10 19:15:48 +08:00
ycl
69c7ab9f36 更新 llms-full.txt 2025-07-04 16:11:38 +08:00
oyo
4bc07060f2 更新 llms-full.txt 2025-07-04 15:56:22 +08:00
a29f87d0a3 强调IgnoredException的引用路径 2025-07-04 15:53:49 +08:00
oyo
810d43314c 更新 llms-full.txt 2025-07-04 15:51:32 +08:00
ycl
d61c04064c 更新 llms-full.txt 2025-07-04 14:25:48 +08:00
ycl
6fe83d6d11 更新 llms-full.txt 2025-07-04 13:58:02 +08:00
oyo
a6ae76b458 更新 llms-full.txt 2025-07-04 11:25:23 +08:00
oyo
891caae79c 更新 llms-full.txt 2025-07-03 15:22:29 +08:00
ycl
0ec32c2239 更新 llms-full.txt 2025-07-02 18:48:49 +08:00
ycl
d4705d7717 更新 llms-full.txt 2025-07-02 18:45:52 +08:00
ycl
fba0efd2dc 更新 llms-full.txt 2025-07-02 15:47:19 +08:00
oyo
8a2f4ccb41 更新 llms-full.txt 2025-07-02 15:33:14 +08:00
oyo
02c5047071 更新 llms-full.txt 2025-07-02 15:21:49 +08:00
ycl
31dc91447d 更新 llms-full.txt 2025-07-02 15:07:32 +08:00
ycl
b60d6eca30 更新 llms-full.txt 2025-07-02 15:03:36 +08:00
ycl
cd88bd34d2 更新 llms-full.txt 2025-06-30 11:26:24 +08:00
ycl
a093b0f5d3 更新 llms-full.txt 2025-06-30 10:39:33 +08:00
ycl
f39b0b2125 更新 llms-full.txt 2025-06-29 17:24:56 +08:00
oyo
599df72e5f Merge pull request 'main' (#1) from main into release
Reviewed-on: #1
2025-06-27 15:15:53 +08:00
5 changed files with 2055 additions and 1265 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/.idea

0
code-guidelines.md Normal file
View File

226
knowledge-brief.md Normal file
View File

@@ -0,0 +1,226 @@
# TOCO平台简介
## 平台概述
TOCO是一个基于DDD、分层设计、CQRS等理论的专业研发平台主要目标是提供软件设计能力设计结果可直接转换为标准格式的代码。平台覆盖从数据库到API的全链路能够显著提升开发设计和编程效率。
## 核心设计理念
TOCO采用严格的分层架构
- **entrance层**API控制器层
- **service层**:服务层,处理业务逻辑
- **manager层**管理层处理DTO相关逻辑
- **persist层**:持久化层,处理数据访问
- **common层**:公共层,存放枚举、工具类等
技术栈Java + SpringBoot + MyBatis-plus+ Hibernate
##平台能力边界说明:
TOCO的设计模型旨在规范系统结构、统一数据契约与接口形态自动生成约80%的基础代码框架如控制器签名、DTO转换、读写方案执行器等
然而,业务行为逻辑(如条件判断、动态路由、状态流转、异常处理、多源聚合、性能优化路径等)无法由设计自动推导或生成,必须由人工编码实现。
因此:
设计元素仅表达“系统能做什么”(接口定义、数据结构、依赖关系);
**代码实现才是“系统正在做什么”**的唯一真实来源;
设计与代码之间存在不可逾越的行为鸿沟——设计不记录实现细节,代码不反馈回设计;
任何对系统行为的分析、影响评估或变更决策,都必须同时考察结构层面的设计信息与行为层面的代码实现,二者缺一不可。
## 重要设计元素详解
### 1. 模块Module
- **作用**系统领域的具体细分映射为Java工程中的module
- **命名规则**:小写英文字母+下划线,如`meeting``user_detail`,全局唯一
- **代码结构**每个Module生成独立的Java Module采用entrance、service、manager、persist、common分层
### 2. 枚举Enum
- **作用**:表达常量值集合,可被其他模块使用
- **命名规则**:以`_enum`结尾,全局唯一
- **生成位置**`**.common.enums`包路径下
- **修改建议**:不建议修改
### 3. 值对象EO
- **作用**POJO对象结构可被其他模块使用
- **命名规则**:以`_eo`结尾,全局唯一
- **字段限制**只能为基本类型、EO、Enum类型
- **生成位置**`**.persist.eo`包路径下
### 4. 实体关系Entity
- **作用**:对应数据库表,定义实体间的外键依赖关系
- **生成产物**
- 结构定义类:`**.persist.dos`
- Mapper类`**.persist.mapper.mybatis`
- Dao接口`**.persist.mapper`
- Dao实现`**.persist.mapper`
### 5. 聚合对象BO
- **核心概念**:封装一组密切关联的实体,以聚合根为起点,按层级关系组装其他实体
- **重要特性**
- 提供数据操作入口和内存一致性视图
- 只能在单一模块中组合
- 一个实体只能属于一个聚合对象
- **生成位置**`**.manager.bo`包路径下
- **修改建议**建议修改BO中的`validateAggregate``valid`方法进行业务不变性校验
### 6. 数据传输对象DTO
- **核心概念**以某个Entity为基础通过外键关系关联多个Entity的数据结构
- **分类**
- **BaseDTO**每个Entity自动生成一个包含Entity全部字段
- **普通DTO**派生自BaseDTO可增加扩展字段或自定义字段
- **字段扩展方式**
- **正向替换**将外键字段替换为对应Entity的DTO对象
- **反向注入**在当前Entity中注入其他Entity的DTO对象或列表
- **预定义方法**TOCO自动为每个DTO生成基于唯一索引的RPC方法
- **生成产物**
- 结构定义:`**.manager.dto`
- Manager`**.manager`
- Converter`**.manager.converter`
### 7. 视图对象VO
- **作用**用于视图层与前端数据传输作为HTTP API返回值
- **派生关系**通常派生自BaseDTO或其他DTO
- **分类**
- **根VO**需要创建有uuid标识
- **子VO**自动创建附属于根VO
- **与DTO区别**VO更接近UI展示可裁剪冗余字段DTO更接近数据模型复用性强
- **转换方法**
- 基础转换:`convertTo${VoName}`
- 带数据拼装:`convertAndAssembleData`
### 8. 查询对象WO
- **作用**表达以某Entity为基础通过外键关系关联多个Entity的查询结构
- **用途**作为ReadPlan的查询上下文使用
### 9. 读方案ReadPlan
- **作用**描述如何基于查询对象从数据库获取DTO/VO列表数据
- **核心能力**
- 复杂查询条件组合
- 数据拼装和过滤
- 分页和排序
- **能力边界**
- 支持等值、模糊、范围、包含查询
- 支持列表属性过滤
- 不支持复杂统计和聚合计算
- **使用原则**根据主键或唯一索引查询时优先使用DTO预定义方法其他复杂查询使用读方案
- **生成产物**自动生成RPC方法和对应的QTO
### 10. 写方案WritePlan
- **重要限制**:一个写方案只能操作一个聚合内的表,无法跨聚合操作
- **操作类型**
- `CREATE`:创建单个实体
- `UPDATE`:更新单个实体
- `DELETE`:删除单个实体
- `CREATE_ON_DUPLICATE_UPDATE`:创建或更新单个实体
- `FULL_MERGE`:批量更新列表数据(全量替换)
- `PARTIAL_MERGE`:批量更新列表数据(部分更新)
- **生成产物**自动生成RPC方法和对应的BTO
### 11. 查询传输对象QTO
- **作用**:读方案的查询参数结构
- **使用场景**作为API参数禁止用作写参数
### 12. 业务变更传输对象BTO
- **作用**:写方案的参数结构
- **特点**:树形结构,最外层为聚合根
- **使用场景**作为API参数禁止用作查询参数
### 13. 服务层方法RPC
- **分类**
- **公开RPC**:可被其他模块订阅调用
- **非公开RPC**:只能被当前模块调用
- **创建方式**
- DTO创建后自动生成
- 读方案自动生成
- 写方案自动生成
- 手动创建自定义RPC
- **参数限制**只能为QTO、BTO、Enum、基本类型
- **返回值限制**只能为DTO、Enum、基本类型
- **存储特点**: TOCO只存储RPC的方法签名不存储执行逻辑。了解API内部具体实现需阅读对应代码
### 14. 应用程序接口API
- **作用**定义对外暴露的HTTP接口
- **URI规范**:一般为`/api/${moduleName}/xxx`格式
- **参数限制**只能为QTO、BTO、EO、Enum、基本类型
- **返回值限制**只能为VO、Enum、基本类型
- **分页处理**框架自动包装返回值code、message、data
- **存储特点**: TOCO只存储API的URI和方法签名不存储执行逻辑。了解API内部具体实现需阅读对应代码
### 15. 流程服务FunctionFlow
- **使用场景**
- API/RPC涉及超过3个写服务时必须使用
- 用户明确要求时使用
- **节点类型**
- 顺序节点:封装业务逻辑
- 条件节点:封装判断逻辑
- 选择节点:封装分支选择逻辑
- 开始节点:流程起点
- **设计原则**:以数据内聚为首要考虑,每个节点围绕核心写服务
16. 领域消息 DomainMessage
可以监听聚合对象实体的创建、删除、更新事件;通过事件驱动的方式实现异步解耦;也是一种跨模块通信的方式;消息驱动的一种实现;
17. 普通消息 (CommonMessage)
自定义字段,自持事务、延时特性;是对领域消息的补充
## 数据获取流程
### DTO获取流程
1. **主键/唯一索引查询**:使用预定义方法
2. **复杂查询条件**:使用读方案
### VO获取流程
1. **主键/唯一索引查询**预定义方法获取DTO → convert方法转换为VO
2. **复杂查询有对应DTO读方案**读方案获取DTO → convert方法转换为VO
3. **复杂查询无对应DTO读方案**直接使用VO读方案
## 接口设计最佳实践
### 参数类型选择优先级
1. **读场景**优先使用QTO
2. **写场景**优先使用BTO
3. **补充参数**基本类型、Enum、EO
### 返回值类型选择
1. **RPC返回值**DTO、Enum、基本类型
2. **API返回值**VO、Enum、基本类型
### 绝对禁止的用法
- DTO、VO不能作为参数类型
- QTO、BTO不能作为返回值类型
- Service层不能返回VO
- VO不能作为RPC返回值
## 代码修改指南
### 推荐修改的位置
1. **BO类**`validateAggregate``valid`方法中添加业务校验
2. **Converter类**:自定义字段的数据获取逻辑
3. **Service类**:业务逻辑实现
4. **API Controller**:接口实现逻辑
### 禁止修改的内容
1. 带有`@AutoGenerated(locked=true)`的类和方法
2. DTO、VO的结构定义
3. Manager类的系统生成方法
4. Mapper类的结构定义
## 并发控制最佳实践
在处理先读后更新的场景时,为避免并发引起的数据脏写:
1. **写方案中使用incr字段**
2. **BoService中添加校验**:如`if(userBo.getBalance() >= 0)`
3. **聚合校验**在BO的业务不变性校验中添加约束条件
## 项目结构导航
标准查找流程:
- **API查找**`modules/{模块名}/entrance/web/controller/`
- **DTO查找**`modules/{模块名}/manager/dto/`
- **Service查找**`modules/{模块名}/service/`
- **数据层查找**`modules/{模块名}/persist/`
## 重要注意事项
1. **跨模块调用**必须通过订阅RPC使用RpcAdapter进行调用
2. **变量命名**RpcAdapter注入时变量名必须是类名首字母小写
3. **自定义字段逻辑**必须在BaseConverter的Map转换方法中实现
4. **读写分离**读操作使用MyBatis-plus写操作使用Hibernate
5. **严格分层**:各层职责明确,不能越层调用

1828
knowledge.md Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff