20260922172938
This commit is contained in:
1 parent
583984c24f
commit
c8dad8d4a6
46 files changed
+3366
-1246
No files matched your search
@@ -40,6 +40,7 @@
|
||||
|
||||
- 启用和停用统一使用 `b_canuse`,取值为 `0/1`。
|
||||
- 排序字段统一使用 `b_xh`,默认值为 `0`;需要稳定排序时增加业务主键作为次排序字段。
|
||||
- 最后修改时间统一使用 `b_updated_at`、修改人使用 `b_updated_by`(均为 `datetime2` / `varchar`,可空);不建触发器,由写入方维护。
|
||||
- 名称、备注和多语言文本使用 `nvarchar`;编码、状态、类型和 SQL 标识类字段使用 `varchar`。
|
||||
- 日期时间优先使用 `datetime2`;金额、数量等数值字段根据业务精度明确设置 `precision` 和 `scale`。
|
||||
- 是否允许为空及默认值应根据业务语义明确设置,不能无理由全部允许为空或全部设置默认值。
|
||||
@@ -191,12 +192,14 @@ create table dbo.s_module (
|
||||
b_view_table varchar(128) null, -- 默认查询表或视图
|
||||
b_save_table varchar(128) null, -- 默认保存目标表
|
||||
b_key_field varchar(50) null, -- 主键字段
|
||||
b_scope_field varchar(50) null, -- 数据范围字段(记录归属人字段,如 b_inputuser_id)
|
||||
b_order_sql varchar(500) null, -- 默认排序 SQL
|
||||
b_query_sql nvarchar(max) null, -- 可选查询 SQL 或 SQL 模板
|
||||
b_config_json nvarchar(max) null, -- 低频模块扩展配置
|
||||
b_canuse tinyint not null default 1, -- 是否启用(0/1)
|
||||
b_xh int not null default 0, -- 同级显示顺序
|
||||
b_bz nvarchar(2000) null -- 备注
|
||||
b_bz nvarchar(2000) null, -- 备注
|
||||
b_updated_at datetime2 null -- 最后保存时间(本模块任意配置保存时刷新,含字段 / 界面配置等子表)
|
||||
);
|
||||
|
||||
create index ix_s_module_parent
|
||||
@@ -253,6 +256,7 @@ create index ix_s_module_save_table
|
||||
- 数据之间的主子表、引用和多对多关系统一由 `s_relation` 表达。
|
||||
- 多对多的中间表模块(`data` 模块)在模块树中统一挂在所属业务域 `module` 节点下,与参与多对多的主表模块平级;不挂在任一参与多对多的主表模块下——模块树只表达业务组织,不表达数据关系,混入会污染 `b_path` 子树查询、菜单挂载与权限继承。
|
||||
- 模块级扩展配置使用 `b_config_json`,只保存低频、非核心的扩展属性,不重复保存字段定义、权限或界面布局。
|
||||
- `b_scope_field` 是本模块的数据范围字段(记录归属人字段,如 `b_inputuser_id`),只对 `data` / `virtual` 有意义,取值必须来自 `s_field`;它是数据范围判定的唯一字段来源,配在模块上而不是配在用户授权行上——同一个模块的所有用户必须用同一字段判范围。`self` 直接比该字段,`dept` / `dept_tree` 由当前用户反查 `b_user.b_dept_id` 得到部门再来比(见 §14.4);为空表示该模块不按字段判范围。
|
||||
|
||||
### 4.4 查询来源优先级
|
||||
|
||||
@@ -991,7 +995,8 @@ b_condition_sql = 'b_salesman_id = {userId}'
|
||||
### 14.6 与模块、菜单和关系的关系
|
||||
|
||||
- `s_power` 中的 `menu.*` 对应 `s_menu`,`module.*` 对应 `s_module`,`action.*` 对应业务动作;权限点编码与对象编码的对应关系由业务层维护,不建立外键;
|
||||
- `s_user_field_power.b_module_id`、`s_user_data_power.b_module_id` 指向 `s_module.b_id`,字段还需在 `s_field` 中存在;
|
||||
- 授权行只能引用存在的权限点:删 `s_power` 行时用 `dependent_deletes` 声明(`{table:'s_user_power', key_field:'b_power_id', source_field:'b_id'}`),保存层在同一事务里按同一组条件查出权限编码并连带删除授权行,调用方不需要先查编码(《FMS删除策略重构设计》§6.2);
|
||||
- `s_user_field_power.b_module_id`、`s_user_data_power.b_module_id` 指向 `s_module.b_id`,字段还需在 `s_field` 中存在;删除模块时随模块一起删除 `s_user_field_power`、`s_user_data_power` 行,删除字段定义时删除该字段的 `s_user_field_power` 行;
|
||||
- 数据范围只作用于本表的 `b_user_id + b_module_id + b_operation`;是否向关联模块延伸(例如子表、明细模块)由权限引擎根据业务语义决定,不依赖 `s_relation` 自动传播;
|
||||
- 权限缓存、批量校验和 SQL 条件注入点由权限引擎实现,业务 SQL 生成时统一追加范围条件。
|
||||
|
||||
|
||||
Reference in new issue
Block a user