@specpow/framework 0.5.20 → 0.5.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/builtin/schemas/bug-fix/templates/tasks.md +46 -15
- package/builtin/schemas/crud-module/templates/tasks.md +120 -57
- package/builtin/schemas/mes-crud-module/schema.yaml +158 -0
- package/builtin/schemas/mes-crud-module/templates/api-docs.md +238 -0
- package/builtin/schemas/mes-crud-module/templates/design.md +422 -0
- package/builtin/schemas/mes-crud-module/templates/menu-register.md +126 -0
- package/builtin/schemas/mes-crud-module/templates/proposal.md +64 -0
- package/builtin/schemas/mes-crud-module/templates/spec.md +94 -0
- package/builtin/schemas/mes-crud-module/templates/tasks.md +208 -0
- package/builtin/schemas/spec-driven/templates/tasks.md +40 -98
- package/dist/core/parsers/index.d.ts.map +1 -1
- package/dist/core/parsers/index.js +4 -0
- package/dist/core/parsers/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,21 +1,52 @@
|
|
|
1
1
|
# 修复任务: {{title}}
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
---
|
|
4
|
+
tasks:
|
|
5
|
+
- number: 1
|
|
6
|
+
title: 编写失败测试(复现 Bug)
|
|
7
|
+
files:
|
|
8
|
+
- <测试文件路径>
|
|
9
|
+
description: |
|
|
10
|
+
编写单元测试复现 Bug: {{title}}
|
|
11
|
+
根因: {{root_cause}}
|
|
12
|
+
测试应当验证修复后的正确行为。
|
|
13
|
+
verification: 测试失败(确认 Bug 可复现)
|
|
14
|
+
dependsOn: []
|
|
15
|
+
estimatedEffort: S
|
|
8
16
|
|
|
17
|
+
- number: 2
|
|
18
|
+
title: 修复代码
|
|
19
|
+
files:
|
|
20
|
+
{{#each steps}}
|
|
21
|
+
- {{this.file}}
|
|
22
|
+
{{/each}}
|
|
23
|
+
description: |
|
|
24
|
+
根据根因分析修复代码:
|
|
9
25
|
{{#each steps}}
|
|
10
|
-
-
|
|
11
|
-
- 文件: `{{this.file}}`
|
|
12
|
-
- 描述: {{this.description}}
|
|
13
|
-
- 验证: {{this.verification}}
|
|
26
|
+
- {{this.title}}: {{this.description}}
|
|
14
27
|
{{/each}}
|
|
28
|
+
verification: 测试全部通过
|
|
29
|
+
dependsOn: [1]
|
|
30
|
+
estimatedEffort: M
|
|
31
|
+
|
|
32
|
+
- number: 3
|
|
33
|
+
title: 回归验证
|
|
34
|
+
files: []
|
|
35
|
+
description: |
|
|
36
|
+
运行回归测试确保修复未引入新问题。
|
|
37
|
+
verification: 全部测试通过,包括回归测试
|
|
38
|
+
dependsOn: [2]
|
|
39
|
+
estimatedEffort: S
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 字段说明
|
|
15
43
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
44
|
+
| 字段 | 必填 | 说明 |
|
|
45
|
+
|------|------|------|
|
|
46
|
+
| number | 是 | 任务编号,从 1 开始递增 |
|
|
47
|
+
| title | 是 | 简短任务标题 |
|
|
48
|
+
| files | 是 | 涉及的文件路径列表 |
|
|
49
|
+
| description | 是 | 精确的实现指令(支持多行) |
|
|
50
|
+
| verification | 是 | 验证步骤 |
|
|
51
|
+
| dependsOn | 否 | 依赖的任务编号列表 |
|
|
52
|
+
| estimatedEffort | 否 | 工作量估算:`S` / `M` / `L`,默认 `M` |
|
|
@@ -1,57 +1,120 @@
|
|
|
1
|
-
# CRUD
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
1
|
+
# CRUD 任务列表: {{Entity}}
|
|
2
|
+
|
|
3
|
+
> 分支: feature/{{branch}} | 基础: main 分支最新代码
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
tasks:
|
|
7
|
+
- number: 1
|
|
8
|
+
title: 创建 {{Entity}} 实体类
|
|
9
|
+
files:
|
|
10
|
+
- modules-center/{{module}}-center/{{module}}-service/src/main/java/com/company/mes/{{module}}/entity/{{Entity}}.java
|
|
11
|
+
- modules-center/{{module}}-center/{{module}}-service/src/main/java/com/company/mes/{{module}}/entity/dto/{{Entity}}DTO.java
|
|
12
|
+
- modules-center/{{module}}-center/{{module}}-service/src/main/java/com/company/mes/{{module}}/entity/vo/{{Entity}}VO.java
|
|
13
|
+
description: |
|
|
14
|
+
创建三个实体类:
|
|
15
|
+
1. {{Entity}}.java — 数据库实体,使用 @Data @TableName("{{table_name}}")
|
|
16
|
+
2. {{Entity}}DTO.java — 请求 DTO,包含校验注解
|
|
17
|
+
3. {{Entity}}VO.java — 响应 VO
|
|
18
|
+
字段参考 proposal.md 字段清单。
|
|
19
|
+
verification: 编译通过,实体字段与 proposal 字段清单一致
|
|
20
|
+
dependsOn: []
|
|
21
|
+
estimatedEffort: S
|
|
22
|
+
|
|
23
|
+
- number: 2
|
|
24
|
+
title: 创建 Mapper 接口 + XML
|
|
25
|
+
files:
|
|
26
|
+
- modules-center/{{module}}-center/{{module}}-service/src/main/java/com/company/mes/{{module}}/mapper/{{Entity}}Mapper.java
|
|
27
|
+
- modules-center/{{module}}-center/{{module}}-service/src/main/resources/mapper/{{Entity}}Mapper.xml
|
|
28
|
+
description: |
|
|
29
|
+
1. {{Entity}}Mapper 继承 BaseMapper<{{Entity}}>
|
|
30
|
+
2. XML 中定义分页查询(支持模糊查询、精确查询)
|
|
31
|
+
3. 使用 LambdaQueryWrapper
|
|
32
|
+
verification: Mapper 编译通过,XML namespace 正确
|
|
33
|
+
dependsOn: [1]
|
|
34
|
+
estimatedEffort: S
|
|
35
|
+
|
|
36
|
+
- number: 3
|
|
37
|
+
title: 创建 Service 接口 + 实现
|
|
38
|
+
files:
|
|
39
|
+
- modules-center/{{module}}-center/{{module}}-service/src/main/java/com/company/mes/{{module}}/service/I{{Entity}}Service.java
|
|
40
|
+
- modules-center/{{module}}-center/{{module}}-service/src/main/java/com/company/mes/{{module}}/service/impl/{{Entity}}ServiceImpl.java
|
|
41
|
+
description: |
|
|
42
|
+
实现 CRUD 业务逻辑:分页查询、详情、新增、修改、删除。
|
|
43
|
+
包含唯一性校验和关联数据检查。
|
|
44
|
+
verification: Service 编译通过,方法签名与接口一致
|
|
45
|
+
dependsOn: [1, 2]
|
|
46
|
+
estimatedEffort: M
|
|
47
|
+
|
|
48
|
+
- number: 4
|
|
49
|
+
title: 创建 Controller
|
|
50
|
+
files:
|
|
51
|
+
- modules-center/{{module}}-center/{{module}}-service/src/main/java/com/company/mes/{{module}}/controller/{{Entity}}Controller.java
|
|
52
|
+
description: |
|
|
53
|
+
创建 RESTful 接口:GET /page、GET /{id}、POST /、PUT /{id}、DELETE /{id}
|
|
54
|
+
返回统一响应格式 R<T>。
|
|
55
|
+
verification: Controller 编译通过,接口路径与设计文档一致
|
|
56
|
+
dependsOn: [3]
|
|
57
|
+
estimatedEffort: S
|
|
58
|
+
|
|
59
|
+
- number: 5
|
|
60
|
+
title: 创建 Feign API 接口
|
|
61
|
+
files:
|
|
62
|
+
- modules-center/{{module}}-center/{{module}}-api/src/main/java/com/company/mes/{{module}}/api/{{Entity}}Api.java
|
|
63
|
+
description: |
|
|
64
|
+
定义 Feign 接口供其他微服务调用。
|
|
65
|
+
verification: API 模块编译通过
|
|
66
|
+
dependsOn: [4]
|
|
67
|
+
estimatedEffort: S
|
|
68
|
+
|
|
69
|
+
- number: 6
|
|
70
|
+
title: 创建前端 API 模块
|
|
71
|
+
files:
|
|
72
|
+
- implat-ui/src/api/{{module}}.js
|
|
73
|
+
description: |
|
|
74
|
+
封装 CRUD API 请求函数,禁止在组件中直接写 axios。
|
|
75
|
+
verification: API 文件语法正确,函数命名规范
|
|
76
|
+
dependsOn: [4]
|
|
77
|
+
estimatedEffort: S
|
|
78
|
+
|
|
79
|
+
- number: 7
|
|
80
|
+
title: 创建前端列表页
|
|
81
|
+
files:
|
|
82
|
+
- implat-ui/src/views/{{module}}/{{Entity}}/index.vue
|
|
83
|
+
description: |
|
|
84
|
+
列表页:VXE-Table 展示 + 搜索 + 分页 + 操作按钮。
|
|
85
|
+
使用 Vue 2 Options API + View Design 组件。
|
|
86
|
+
verification: Vue 文件语法正确,页面可渲染
|
|
87
|
+
dependsOn: [6]
|
|
88
|
+
estimatedEffort: M
|
|
89
|
+
|
|
90
|
+
- number: 8
|
|
91
|
+
title: 创建前端表单组件
|
|
92
|
+
files:
|
|
93
|
+
- implat-ui/src/views/{{module}}/{{Entity}}/components/{{Entity}}Form.vue
|
|
94
|
+
description: |
|
|
95
|
+
新增/编辑共用的表单弹窗组件,使用 iView Form 校验。
|
|
96
|
+
verification: 表单校验规则与 proposal 字段清单一致
|
|
97
|
+
dependsOn: [7]
|
|
98
|
+
estimatedEffort: M
|
|
99
|
+
|
|
100
|
+
- number: 9
|
|
101
|
+
title: 注册路由和菜单
|
|
102
|
+
files:
|
|
103
|
+
- implat-ui/src/router/modules/{{module}}.js
|
|
104
|
+
description: |
|
|
105
|
+
配置路由 + 执行菜单 SQL 插入语句(参考 menu-register.md)。
|
|
106
|
+
verification: 路由配置正确,菜单可见
|
|
107
|
+
dependsOn: [7]
|
|
108
|
+
estimatedEffort: S
|
|
109
|
+
|
|
110
|
+
- number: 10
|
|
111
|
+
title: 编写单元测试
|
|
112
|
+
files:
|
|
113
|
+
- modules-center/{{module}}-center/{{module}}-service/src/test/java/com/company/mes/{{module}}/service/{{Entity}}ServiceTest.java
|
|
114
|
+
description: |
|
|
115
|
+
覆盖核心业务逻辑:新增成功、唯一性校验、删除检查。
|
|
116
|
+
使用 JUnit 5 + Mockito。
|
|
117
|
+
verification: 测试全部通过
|
|
118
|
+
dependsOn: [3, 4]
|
|
119
|
+
estimatedEffort: M
|
|
120
|
+
---
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# MES CRUD Module Schema
|
|
2
|
+
# 基于 MES 项目(mom-master + implat-ui)真实代码模式定制
|
|
3
|
+
# 工件流: proposal → specs → design → tasks → api-docs → menu-register → apply
|
|
4
|
+
|
|
5
|
+
name: mes-crud-module
|
|
6
|
+
description: |
|
|
7
|
+
MES 系统专属 CRUD 模块生成器。
|
|
8
|
+
基于 mom-master(Spring Boot + MyBatis-Plus + Oracle)后端
|
|
9
|
+
和 implat-ui(Vue2 + ViewUI + VXETable)前端的真实代码模式。
|
|
10
|
+
生成的代码直接匹配项目约定,无需二次适配。
|
|
11
|
+
|
|
12
|
+
apply:
|
|
13
|
+
requires:
|
|
14
|
+
- tasks # 实施前必须完成所有工件
|
|
15
|
+
|
|
16
|
+
artifacts:
|
|
17
|
+
- id: proposal
|
|
18
|
+
name: 模块提案
|
|
19
|
+
description: 描述要生成的 CRUD 模块(实体、字段、业务规则)
|
|
20
|
+
requires: []
|
|
21
|
+
template: proposal.md
|
|
22
|
+
instruction: |
|
|
23
|
+
根据用户描述,生成 MES CRUD 模块提案。
|
|
24
|
+
包含:模块名称、所属业务中心(modules-center)、核心实体、表名、
|
|
25
|
+
CRUD 操作列表、字段清单、业务规则。
|
|
26
|
+
|
|
27
|
+
注意 MES 项目约定:
|
|
28
|
+
- 后端位于 modules-center/{module}-center/
|
|
29
|
+
- 包名: com.twsz.mom.{module}
|
|
30
|
+
- 实体继承 BaseModel(雪花 ID + 审计字段自动填充)
|
|
31
|
+
- 表名使用下划线命名,可选模块前缀
|
|
32
|
+
- 状态字段统一用 is_effect (1=启用, 0=停用)
|
|
33
|
+
output: proposal.md
|
|
34
|
+
|
|
35
|
+
- id: specs
|
|
36
|
+
name: 接口规范
|
|
37
|
+
description: 定义 MES 标准 CRUD 接口行为契约
|
|
38
|
+
requires: [proposal]
|
|
39
|
+
template: spec.md
|
|
40
|
+
instruction: |
|
|
41
|
+
创建 MES 标准 CRUD 接口规范。使用 Delta Spec 格式。
|
|
42
|
+
|
|
43
|
+
MES 项目接口约定(必须遵守):
|
|
44
|
+
- POST /{entity}/search — 分页查询(请求体: PageForm<{Entity}>)
|
|
45
|
+
- POST /{entity}/add — 新增(请求体: Entity)
|
|
46
|
+
- PUT /{entity}/update — 修改(请求体: Entity)
|
|
47
|
+
- DELETE /{entity}/delete — 批量删除(请求体: Long[] ids)
|
|
48
|
+
- GET /{entity}/get/{id} — 详情查询
|
|
49
|
+
- POST /{entity}/list — 不分页列表(请求体: Entity)
|
|
50
|
+
- POST /{entity}/export — Excel 导出(EasyExcel)
|
|
51
|
+
|
|
52
|
+
响应统一使用 ResponseWrapper<T>。
|
|
53
|
+
分页使用 PageForm<T>(size + current + condition)。
|
|
54
|
+
|
|
55
|
+
前端接口约定:
|
|
56
|
+
- API 文件位于 src/api/{domain}/{entity}.js
|
|
57
|
+
- 使用 import axios from '@/libs/request'
|
|
58
|
+
- search 发送 { size, current, condition } 接收 { records, total }
|
|
59
|
+
- delete 传 ID 数组(支持批量)
|
|
60
|
+
|
|
61
|
+
规范是行为契约,描述系统做什么,不描述怎么做。
|
|
62
|
+
每个需求必须可验证(Given/When/Then)。
|
|
63
|
+
output: specs/{{entity}}/spec.md
|
|
64
|
+
|
|
65
|
+
- id: design
|
|
66
|
+
name: 模块设计
|
|
67
|
+
description: 数据库表设计 + 前后端代码结构 + 接口定义
|
|
68
|
+
requires: [proposal, specs]
|
|
69
|
+
template: design.md
|
|
70
|
+
instruction: |
|
|
71
|
+
创建 MES CRUD 模块设计文档。包含:
|
|
72
|
+
|
|
73
|
+
1. 数据库设计(Oracle)
|
|
74
|
+
- 表结构(遵循 BaseModel 审计字段约定)
|
|
75
|
+
- 主键: id NUMBER(19) 雪花算法
|
|
76
|
+
- 审计字段: created_by, created_date, last_updated_by, last_updated_date
|
|
77
|
+
- 状态字段: is_effect NUMBER(1) DEFAULT 1
|
|
78
|
+
|
|
79
|
+
2. 后端代码结构
|
|
80
|
+
- Entity: 继承 BaseModel,@TableName,@Data
|
|
81
|
+
- Mapper: 继承 BaseMapper<T>,XML 含 Columns/Where/Joins 片段
|
|
82
|
+
- Service: 继承 IService<T>
|
|
83
|
+
- ServiceImpl: 继承 ServiceImpl<Mapper, Entity>
|
|
84
|
+
- Controller: @RestController,返回 ResponseWrapper<T>
|
|
85
|
+
|
|
86
|
+
3. 前端代码结构
|
|
87
|
+
- API: src/api/{domain}/{entity}.js
|
|
88
|
+
- 列表页: src/views/{domain}/{entity}/index.vue(indexPage mixin + search-table)
|
|
89
|
+
- 表单页: src/views/{domain}/{entity}/{entity}-form.vue(master-sub + BaseMixin)
|
|
90
|
+
|
|
91
|
+
4. 接口定义表
|
|
92
|
+
|
|
93
|
+
如果变更较小(< 3 个文件),可以跳过此工件。
|
|
94
|
+
output: design.md
|
|
95
|
+
conditional: true
|
|
96
|
+
|
|
97
|
+
- id: tasks
|
|
98
|
+
name: 任务列表
|
|
99
|
+
description: 按 MES 项目约定拆分的实现任务(SDD 引擎逐个执行)
|
|
100
|
+
requires: [proposal, specs, design]
|
|
101
|
+
template: tasks.md
|
|
102
|
+
instruction: |
|
|
103
|
+
创建 MES CRUD 模块实现任务列表。每个任务应:
|
|
104
|
+
1. 包含精确的文件路径(匹配项目包结构)
|
|
105
|
+
2. 包含完整的代码模板或明确的修改指令
|
|
106
|
+
3. 包含验证步骤
|
|
107
|
+
4. 任务之间尽量独立(便于 SDD 并行)
|
|
108
|
+
|
|
109
|
+
MES 后端任务顺序:
|
|
110
|
+
1. 建表 SQL(Oracle 语法)
|
|
111
|
+
2. Entity 实体类(继承 BaseModel)
|
|
112
|
+
3. Mapper 接口 + XML(含 Columns/Where/Joins 片段)
|
|
113
|
+
4. Service 接口 + 实现
|
|
114
|
+
5. Controller
|
|
115
|
+
|
|
116
|
+
MES 前端任务顺序:
|
|
117
|
+
6. API 接口文件
|
|
118
|
+
7. 列表页(index.vue + indexPage mixin)
|
|
119
|
+
8. 表单页({entity}-form.vue + master-sub)
|
|
120
|
+
9. 菜单注册(c_sys_resource SQL)
|
|
121
|
+
|
|
122
|
+
格式:
|
|
123
|
+
- [ ] Task N: <标题>
|
|
124
|
+
<详细描述,包含精确文件路径和代码>
|
|
125
|
+
验证: <如何验证>
|
|
126
|
+
output: tasks.md
|
|
127
|
+
|
|
128
|
+
- id: api-docs
|
|
129
|
+
name: API 接口文档
|
|
130
|
+
description: MES 标准 RESTful 接口文档(含请求/响应示例)
|
|
131
|
+
requires: [design]
|
|
132
|
+
template: api-docs.md
|
|
133
|
+
instruction: |
|
|
134
|
+
生成 MES 标准 API 接口文档:
|
|
135
|
+
- 接口概览表
|
|
136
|
+
- 每个接口的请求参数和响应示例(JSON 格式)
|
|
137
|
+
- 使用 ResponseWrapper 包装格式
|
|
138
|
+
- PageForm 分页请求格式
|
|
139
|
+
- 通用错误码说明(使用 HttpStatus 枚举)
|
|
140
|
+
output: api-docs.md
|
|
141
|
+
|
|
142
|
+
- id: menu-register
|
|
143
|
+
name: 菜单注册
|
|
144
|
+
description: c_sys_resource 表菜单 + 按钮权限注册 SQL
|
|
145
|
+
requires: [tasks]
|
|
146
|
+
template: menu-register.md
|
|
147
|
+
instruction: |
|
|
148
|
+
生成 MES 菜单注册配置:
|
|
149
|
+
- c_sys_resource 表 INSERT 语句(菜单 + 按钮权限)
|
|
150
|
+
- 前端路由配置参考
|
|
151
|
+
- 权限标识约定: {module}:{entity}:{action}
|
|
152
|
+
|
|
153
|
+
MES 菜单注册约定:
|
|
154
|
+
- type=1 路由菜单, type=2 按钮权限, type=3 API 资源
|
|
155
|
+
- component 字段为 Vue 组件路径(如 "pm/entity/index")
|
|
156
|
+
- permission 字段为权限标识(如 "pm:entity:add")
|
|
157
|
+
- 路由由后端动态返回,前端通过 addRoutes 注册
|
|
158
|
+
output: menu-register.md
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
# MES API 接口文档: {{Entity}}
|
|
2
|
+
|
|
3
|
+
> 模块: {{module}} | 实体: {{Entity}} | 基础路径: `/{{entity}}`
|
|
4
|
+
> 响应格式: `ResponseWrapper<T>` | 分页格式: `PageForm<T>`
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 接口概览
|
|
9
|
+
|
|
10
|
+
| Method | Path | 描述 | 认证 |
|
|
11
|
+
|--------|------|------|------|
|
|
12
|
+
| POST | `/{{entity}}/search` | 分页查询 | 需要 |
|
|
13
|
+
| GET | `/{{entity}}/get/{id}` | 详情查询 | 需要 |
|
|
14
|
+
| POST | `/{{entity}}/add` | 新增 | 需要 |
|
|
15
|
+
| PUT | `/{{entity}}/update` | 修改 | 需要 |
|
|
16
|
+
| DELETE | `/{{entity}}/delete` | 批量删除 | 需要 |
|
|
17
|
+
| POST | `/{{entity}}/list` | 不分页列表 | 需要 |
|
|
18
|
+
| POST | `/{{entity}}/export` | Excel 导出 | 需要 |
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 1. 分页查询
|
|
23
|
+
|
|
24
|
+
**请求**: `POST /{{entity}}/search`
|
|
25
|
+
|
|
26
|
+
**请求体** (`PageForm<{{Entity}}>`):
|
|
27
|
+
```json
|
|
28
|
+
{
|
|
29
|
+
"size": 20,
|
|
30
|
+
"current": 1,
|
|
31
|
+
"condition": {
|
|
32
|
+
"isEffect": 1
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
38
|
+
|------|------|------|------|
|
|
39
|
+
| size | number | 否 | 每页条数,默认 20 |
|
|
40
|
+
| current | number | 否 | 页码,默认 1 |
|
|
41
|
+
| condition | object | 否 | 查询条件(实体字段) |
|
|
42
|
+
|
|
43
|
+
**响应示例**:
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"code": 200,
|
|
47
|
+
"message": "操作成功",
|
|
48
|
+
"data": {
|
|
49
|
+
"records": [
|
|
50
|
+
{
|
|
51
|
+
"id": "1234567890123456789",
|
|
52
|
+
"isEffect": 1,
|
|
53
|
+
"createdBy": "admin",
|
|
54
|
+
"createdDate": "2025/01/01 00:00:00",
|
|
55
|
+
"lastUpdatedBy": "admin",
|
|
56
|
+
"lastUpdatedDate": "2025/01/01 00:00:00"
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"total": 100,
|
|
60
|
+
"size": 20,
|
|
61
|
+
"current": 1
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
> **注意**: id 为 Long 类型,序列化为字符串(`@JsonSerialize(using = ToStringSerializer.class)`)避免 JS 精度丢失。
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## 2. 详情查询
|
|
71
|
+
|
|
72
|
+
**请求**: `GET /{{entity}}/get/{id}`
|
|
73
|
+
|
|
74
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
75
|
+
|------|------|------|------|
|
|
76
|
+
| id | number | 是 | 记录 ID(路径参数) |
|
|
77
|
+
|
|
78
|
+
**响应示例**:
|
|
79
|
+
```json
|
|
80
|
+
{
|
|
81
|
+
"code": 200,
|
|
82
|
+
"message": "操作成功",
|
|
83
|
+
"data": {
|
|
84
|
+
"id": "1234567890123456789",
|
|
85
|
+
"isEffect": 1,
|
|
86
|
+
"createdBy": "admin",
|
|
87
|
+
"createdDate": "2025/01/01 00:00:00",
|
|
88
|
+
"lastUpdatedBy": "admin",
|
|
89
|
+
"lastUpdatedDate": "2025/01/01 00:00:00"
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## 3. 新增
|
|
97
|
+
|
|
98
|
+
**请求**: `POST /{{entity}}/add`
|
|
99
|
+
|
|
100
|
+
**请求体**:
|
|
101
|
+
```json
|
|
102
|
+
{
|
|
103
|
+
"isEffect": 1
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
> id、createdBy、createdDate、lastUpdatedBy、lastUpdatedDate 由系统自动填充,无需传入。
|
|
108
|
+
|
|
109
|
+
**响应示例**:
|
|
110
|
+
```json
|
|
111
|
+
{
|
|
112
|
+
"code": 200,
|
|
113
|
+
"message": "操作成功",
|
|
114
|
+
"data": null
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 4. 修改
|
|
121
|
+
|
|
122
|
+
**请求**: `PUT /{{entity}}/update`
|
|
123
|
+
|
|
124
|
+
**请求体**:
|
|
125
|
+
```json
|
|
126
|
+
{
|
|
127
|
+
"id": "1234567890123456789",
|
|
128
|
+
"isEffect": 1
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
> lastUpdatedBy、lastUpdatedDate 由系统自动更新。
|
|
133
|
+
|
|
134
|
+
**响应示例**:
|
|
135
|
+
```json
|
|
136
|
+
{
|
|
137
|
+
"code": 200,
|
|
138
|
+
"message": "操作成功",
|
|
139
|
+
"data": null
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## 5. 批量删除
|
|
146
|
+
|
|
147
|
+
**请求**: `DELETE /{{entity}}/delete`
|
|
148
|
+
|
|
149
|
+
**请求体**:
|
|
150
|
+
```json
|
|
151
|
+
[1, 2, 3]
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
155
|
+
|------|------|------|------|
|
|
156
|
+
| body | Long[] | 是 | 待删除记录 ID 数组 |
|
|
157
|
+
|
|
158
|
+
**响应示例**:
|
|
159
|
+
```json
|
|
160
|
+
{
|
|
161
|
+
"code": 200,
|
|
162
|
+
"message": "操作成功",
|
|
163
|
+
"data": null
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## 6. 不分页列表
|
|
170
|
+
|
|
171
|
+
**请求**: `POST /{{entity}}/list`
|
|
172
|
+
|
|
173
|
+
**请求体**:
|
|
174
|
+
```json
|
|
175
|
+
{
|
|
176
|
+
"isEffect": 1
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
**响应示例**:
|
|
181
|
+
```json
|
|
182
|
+
{
|
|
183
|
+
"code": 200,
|
|
184
|
+
"message": "操作成功",
|
|
185
|
+
"data": [
|
|
186
|
+
{ "id": "1234567890123456789", "isEffect": 1 }
|
|
187
|
+
]
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
> 默认限制最多返回 10000 条(可通过 entity.rowNum 覆盖)。
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## 7. Excel 导出
|
|
196
|
+
|
|
197
|
+
**请求**: `POST /{{entity}}/export`
|
|
198
|
+
|
|
199
|
+
**请求体**: 同查询条件(实体字段)
|
|
200
|
+
|
|
201
|
+
**响应**: Excel 文件流(`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`)
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## 通用错误码(HttpStatus 枚举)
|
|
206
|
+
|
|
207
|
+
| 错误码 | 常量名 | 说明 |
|
|
208
|
+
|--------|--------|------|
|
|
209
|
+
| 200 | SUCCESS | 操作成功 |
|
|
210
|
+
| 600 | ERROR | 系统错误 |
|
|
211
|
+
| 601 | UNAUTHORIZED | 未认证 |
|
|
212
|
+
| 608 | PARAM_NULL | 参数为空 |
|
|
213
|
+
| 620 | OBJECT_EXIST | 对象已存在 |
|
|
214
|
+
| 621 | OBJECT_INSERT_FAIL | 新增失败 |
|
|
215
|
+
| 622 | OBJECT_UPDATE_FAIL | 修改失败 |
|
|
216
|
+
| 623 | OBJECT_DELETE_FAIL | 删除失败 |
|
|
217
|
+
| 634 | OBJECT_NOT_EXIST | 对象不存在 |
|
|
218
|
+
|
|
219
|
+
**错误响应格式**:
|
|
220
|
+
```json
|
|
221
|
+
{
|
|
222
|
+
"code": 621,
|
|
223
|
+
"message": "新增失败",
|
|
224
|
+
"data": null
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## ResponseWrapper 结构
|
|
231
|
+
|
|
232
|
+
```java
|
|
233
|
+
{
|
|
234
|
+
"code": 200, // int — HttpStatus 枚举值
|
|
235
|
+
"message": "操作成功", // String — 提示信息
|
|
236
|
+
"data": T // 泛型 — 业务数据
|
|
237
|
+
}
|
|
238
|
+
```
|