Browse Source

refactor(orm): 优化数据权限规则和部门管理功能

- 在ListDataOrmService中引入FilterParser解析条件表达式
- 修改权限数据规则schema中的form_id字段注释说明
- 移除部门模型中不再使用的type字段定义
- 更新OnlFormHeadController支持子表查询参数控制
- 调整部门控制器中默认类型设置逻辑
- 从SysDeptMapper.xml中移除type字段相关查询条件
feature/form-permission-control
chenchuchuan 1 week ago
parent
commit
bc20c40671
  1. 3
      application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/controller/SysDeptController.java
  2. 4
      application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/dao/mapper/SysDeptMapper.xml
  3. 6
      application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/model/SysDept.java
  4. 3
      application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/service/impl/SysDeptServiceImpl.java
  5. 7
      common/common-generator/src/main/java/apelet/common/generator/controller/OnlFormHeadController.java
  6. 10
      common/common-online/src/main/java/apelet/common/online/abstractplugin/ListDataOrmService.java
  7. 3
      common/common-online/src/main/java/apelet/common/online/model/PermissionDataRuleSchema.java

3
application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/controller/SysDeptController.java

@ -151,9 +151,6 @@ public class SysDeptController { @@ -151,9 +151,6 @@ public class SysDeptController {
if (sysDeptFilter == null){
sysDeptFilter = new SysDept();
}
if (sysDeptFilter.getType() == null){
sysDeptFilter.setType(0);
}
List<SysDept> sysDeptList = sysDeptService.getSysDeptListWithRelation(sysDeptFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(sysDeptList, SysDept.INSTANCE));
}

4
application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/dao/mapper/SysDeptMapper.xml

@ -6,7 +6,6 @@ @@ -6,7 +6,6 @@
<result column="dept_name" jdbcType="VARCHAR" property="deptName"/>
<result column="show_order" jdbcType="INTEGER" property="showOrder"/>
<result column="parent_id" jdbcType="BIGINT" property="parentId"/>
<result column="type" jdbcType="TINYINT" property="type"/>
<result column="deleted_flag" jdbcType="INTEGER" property="deletedFlag"/>
<result column="create_user_id" jdbcType="BIGINT" property="createUserId"/>
<result column="update_user_id" jdbcType="BIGINT" property="updateUserId"/>
@ -56,9 +55,6 @@ @@ -56,9 +55,6 @@
<if test="sysDeptFilter.parentId != null">
AND xy_sys_dept.parent_id = #{sysDeptFilter.parentId}
</if>
<if test="sysDeptFilter.type != null">
AND xy_sys_dept.type = #{sysDeptFilter.type}
</if>
</if>
</sql>

6
application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/model/SysDept.java

@ -41,12 +41,6 @@ public class SysDept { @@ -41,12 +41,6 @@ public class SysDept {
* 父部门Id
*/
private Long parentId;
/**
* 类型0-部门1-组织
*/
private Integer type;
/**
* 逻辑删除标记字段(1: 正常 -1: 已删除)
*/

3
application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/service/impl/SysDeptServiceImpl.java

@ -118,9 +118,6 @@ public class SysDeptServiceImpl extends BaseService<SysDept, Long> implements Sy @@ -118,9 +118,6 @@ public class SysDeptServiceImpl extends BaseService<SysDept, Long> implements Sy
public SysDept saveNew(SysDept sysDept, SysDept parentSysDept) {
sysDept.setDeptId(idGenerator.nextLongId());
sysDept.setDeletedFlag(GlobalDeletedFlag.NORMAL);
if (sysDept.getType() == null) {
sysDept.setType(0);
}
MyModelUtil.fillCommonsForInsert(sysDept);
sysDeptMapper.insert(sysDept);
// 同步插入部门关联关系数据

7
common/common-generator/src/main/java/apelet/common/generator/controller/OnlFormHeadController.java

@ -301,11 +301,12 @@ public class OnlFormHeadController { @@ -301,11 +301,12 @@ public class OnlFormHeadController {
*
* @param name 查询对象name
* @param type 是否查询字段关联的元数据 1: 0:
* @param isChild 是否查询子表 1: 0:
* @return
*/
@GetMapping(value = "/selectOnlFrom")
@Schema(description = "查询对象的所有元数据")
public ResponseResult<?> selectOnlFrom(@RequestParam String name, @RequestParam String type) {
public ResponseResult<?> selectOnlFrom(@RequestParam String name, @RequestParam String type, @RequestParam(required = false) Integer isChild) {
ArrayList<Object> arrayList = new ArrayList<>();
OnlFormHead onlFormHead = onlFormHeadService.getHeadTableNameCache(name);
if (onlFormHead == null) {
@ -321,8 +322,8 @@ public class OnlFormHeadController { @@ -321,8 +322,8 @@ public class OnlFormHeadController {
List list2 = selectRefOnl(list1, type, "1");
head.put("child", list2);
arrayList.add(head);
//关联附表
if (StringUtils.isNotEmpty(onlFormHead.getChildName())) {
//关联附表 并且是否需要附表 为 1 则返回
if (StringUtils.isNotEmpty(onlFormHead.getChildName()) && (isChild == null || isChild == 1)) {
List<String> list = Arrays.asList(onlFormHead.getChildName().split(","));
list.forEach(f -> {
OnlFormHead childOnlForm = onlFormHeadService.getHeadTableNameCache(f);

10
common/common-online/src/main/java/apelet/common/online/abstractplugin/ListDataOrmService.java

@ -11,6 +11,7 @@ import apelet.common.online.model.constant.DataRuleType; @@ -11,6 +11,7 @@ import apelet.common.online.model.constant.DataRuleType;
import apelet.common.online.model.constant.FieldFilterType;
import apelet.common.online.model.constant.RelationType;
import apelet.common.orm.impl.*;
import apelet.common.orm.parser.FilterParser;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
@ -62,7 +63,7 @@ public class ListDataOrmService extends ListDataService { @@ -62,7 +63,7 @@ public class ListDataOrmService extends ListDataService {
OnlineTable masterTable = datasourceResult.getData().getMasterTable();
OnlineForm onlineForm = onlineFormService.getOnlineFormFromCache(dto.getFormId());
// 根据 metaCode 过滤权限规则:非空→基础数据权限,为空→列表权限
List<PermissionDataRuleSchema> ruleSchemaList = permissionDataRuleSchemaService.listByFormId(onlineForm.getFormId());
List<PermissionDataRuleSchema> ruleSchemaList = permissionDataRuleSchemaService.listByFormId(onlFormHead.getId());
String conditionExpression = null;
if (CollUtil.isNotEmpty(ruleSchemaList)) {
List<PermissionDataRuleSchema> filtered = new ArrayList<>();
@ -83,7 +84,12 @@ public class ListDataOrmService extends ListDataService { @@ -83,7 +84,12 @@ public class ListDataOrmService extends ListDataService {
getOrmSelector(widgetList, selectorSet, masterTable, new HashMap<>());
Filter filter = getFilter();
if (StrUtil.isNotBlank(conditionExpression)) {
//todo 这里调用 过滤器
Filter parsed = FilterParser.parse(conditionExpression);
if (CollUtil.isNotEmpty(parsed.getItems())) {
for (FilterItem item : parsed.getItems()) {
filter.add(item);
}
}
}
Sorter sorter = new Sorter();

3
common/common-online/src/main/java/apelet/common/online/model/PermissionDataRuleSchema.java

@ -38,7 +38,7 @@ public class PermissionDataRuleSchema extends BaseModel implements Serializable @@ -38,7 +38,7 @@ public class PermissionDataRuleSchema extends BaseModel implements Serializable
private Long id;
/**
* zz_online_table表Id
* onl_form_head Id
*/
@TableField(value = "form_id")
@NotNull(message = "数据验证失败,form_id不能为空!")
@ -89,7 +89,6 @@ public class PermissionDataRuleSchema extends BaseModel implements Serializable @@ -89,7 +89,6 @@ public class PermissionDataRuleSchema extends BaseModel implements Serializable
* @see apelet.common.online.model.constant.DataRuleType
*/
@TableField(value = "rule_type")
@NotNull(message = "数据验证失败,规则类型不能为空!")
private Integer ruleType;
/**

Loading…
Cancel
Save