G. ModuleSpec 声明速查
:::tip 说明
ModuleSpec[Item, LItem, DRes] 全部声明字段速查。泛型三参数:行结构、列表元素(树形可不同)、详情结构。
:::
数据源与查询(applyFilters 固定顺序生效)
| 字段 |
序 |
行为 |
| Model |
1 |
数据源工厂(必填),通常 NewXxxRepo().Ctx(ctx) |
| LikeFields |
2 |
逐列 LIKE 请求同名字段,空串跳过 |
| EqFields |
3 |
等值过滤(列名转 lowerCamel),零值跳过 |
| KeywordFields |
4 |
keyword 对多列 LIKE,括号包成单个 AND |
| Filter |
5 |
复杂条件追加(勿重复前四项已覆盖条件) |
| DataScope |
6 |
数据权限(ApplyDataScope 工厂),最后一步 |
排序:请求 orderField 命中 OrderableFields 白名单时前端排序生效;否则 OrderBy(List 专属可用 ListOrderBy)。
输出声明
| 字段 |
行为 |
| IsTree + ParentOf |
树形输出(仅 List 建树;ParentOf 返回 0 表根) |
| ChildSetter |
子级写入器(缺省反射写 Children 字段) |
| SerializeMaps |
枚举 → 字典编码,读侧回填 {field}Text |
| FileFields |
单文件:写侧转正、读侧补域名 |
| MultiFileFields |
逗号分隔多文件 |
| ContentFields |
富文本:写侧占位符化、读侧还原 |
| FileSaveDir |
三类文件共用的转正子目录 |
| FieldLabels |
唯一校验提示标签覆盖 |
业务规则
| 字段 |
行为 |
| UniqueFields |
Add/Update 前逐条预检(并发以 uk 索引为准) |
| ToData |
req → 落库 map(不映射审计字段) |
钩子(错误原样上抛;禁 HTTP/IO、禁 append)
| 钩子 |
时机 |
| BeforeAdd / AfterAdd |
新增前后 |
| BeforeUpdate / AfterUpdate |
修改前后 |
| BeforeDelete / AfterDelete |
删除前后 |
| BeforeBatchDelete / AfterBatchDelete |
批量删除前后 |
| AfterPageList |
分页查询后 |
| AfterDetail |
详情查询后 |
标准方法签名
使用要点
- 声明变量命名
{模块}Spec,包级 var
- 手写方法可复用
spec.applyFilters(ctx, spec.Model(ctx), req)(导出场景)
- 钩子内修改 data/元素可以,append 不行
相关