Browse Source

数据权限过滤

dev-V1.0.1
庄锐波 4 months ago
parent
commit
1b093f0c8c
  1. 42
      doc/庄锐波-工作周报.md
  2. 20
      zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/TestEnfDemoMapper.xml
  3. 6
      zdxt-web-server/zdxt-admin-web-server/src/test/java/com/zdxt/service/test/TestEnfDemoServiceTest.java

42
doc/庄锐波-工作周报.md

@ -97,3 +97,45 @@
├── [❌] 前置库
└── [❌] DataX任务备注
```
## 时间:2026-05-11 至 2026-05-17
**本周工作:**
* 了解计划,预约,任务,预告的需求,准备下周的开发工作
* 完成数据权限过滤的功能开发,增加了注解和数据过滤的工具类.后续开发可以直接使用,对于复杂的查询仍需开发的时候自行处理.
```text
后台管理
├── [❌] 系统设置
│ ├── [❌] 菜单管理
│ ├── [❌] 数据字典
│ ├── [❌] 参数设置
│ ├── [❌] 文件管理
│ └── [❌] 客户端管理
├── [✅] 机构与权限管理
│ ├── [✅] 市认证单位与人员
│ ├── [✅] 执法码单位与人员
│ │ ├── [✅] 执法单位设置
│ │ └── [✅] 执法人员设置
│ └── [❌] 角色设置
├── [❌] 日志管理
│ ├── [❌] 操作日志
│ └── [❌] 登陆日志
├── [✅] 系统工具
│ └── [✅] 代码生成
├── [❌] 系统监控
│ ├── [❌] 任务调度
│ ├── [❌] 缓存监控
│ ├── [❌] 在线认证用户
│ └── [❌] 在线企业用户
├── [❌] 系统对接
├── [❌] 密钥管理
├── [❌] 接口管理
├── [❌] 前置库
└── [❌] DataX任务备注
```
**下周工作:**
* 暂停后台管理的功能开发,开始进行计划,预约,任务,预告功能的开发.
* 预计:计划,预约,任务,预告 app端完成的时间,5-31号前.
* 计划,预约,任务,预告 web端不在初验的验收要求里边,暂不开发.

20
zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/TestEnfDemoMapper.xml

@ -4,25 +4,37 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zdxt.enforcementcode.mapper.TestEnfDemoMapper">
<!-- 自定义SQL分页查询demo -->
<!-- 自定义SQL分页查询demo(手动添加 del_flag=0 逻辑删除条件,因为自定义SQL不会被@TableLogic自动处理) -->
<select id="customPageList" resultType="com.zdxt.enforcementcode.domain.vo.TestEnfDemoVo">
SELECT id, enf_text, enf_content, dept_id, user_id, order_num, test_key, value
FROM test_enf_demo
${ew.customSqlSegment}
WHERE del_flag = 0
<if test="ew != null and ew.sqlSegment != null and ew.sqlSegment != ''">
<if test="ew.nonEmptyOfNormal"> AND </if>
${ew.sqlSegment}
</if>
</select>
<!-- 方案A: 手动分页 - 自定义count查询 -->
<select id="manualCount" resultType="java.lang.Long">
SELECT COUNT(*)
FROM test_enf_demo
${ew.customSqlSegment}
WHERE del_flag = 0
<if test="ew != null and ew.sqlSegment != null and ew.sqlSegment != ''">
<if test="ew.nonEmptyOfNormal"> AND </if>
${ew.sqlSegment}
</if>
</select>
<!-- 方案A: 手动分页 - 自带LIMIT的数据查询 -->
<select id="manualSelectList" resultType="com.zdxt.enforcementcode.domain.vo.TestEnfDemoVo">
SELECT id, enf_text, enf_content, dept_id, user_id, order_num, test_key, value
FROM test_enf_demo
${ew.customSqlSegment}
WHERE del_flag = 0
<if test="ew != null and ew.sqlSegment != null and ew.sqlSegment != ''">
<if test="ew.nonEmptyOfNormal"> AND </if>
${ew.sqlSegment}
</if>
LIMIT #{offset}, #{pageSize}
</select>

6
zdxt-web-server/zdxt-admin-web-server/src/test/java/com/zdxt/service/test/TestEnfDemoServiceTest.java

@ -880,7 +880,7 @@ public class TestEnfDemoServiceTest {
@Test
@Order(37)
@DisplayName("queryPageList - 超出页码验证:超过最后一页返回空")
@DisplayName("queryPageList - 超出页码验证:分页合理化(overflow=true)会回退到第1页")
public void testQueryPageList_BeyondLastPage() {
loginAsSuperAdmin();
TestEnfDemoBo bo = new TestEnfDemoBo();
@ -890,7 +890,9 @@ public class TestEnfDemoServiceTest {
TableDataInfo<TestEnfDemoVo> result = testEnfDemoService.queryPageList(bo, new PageQuery(pageSize, beyondPageNum));
assertNotNull(result);
System.out.println("[超出页码] 第" + beyondPageNum + "页: records=" + result.getRows().size() + ", total=" + result.getTotal());
assertEquals(0, result.getRows().size(), "超出最后一页应返回0条记录");
// PaginationInnerInterceptor.setOverflow(true) 开启了分页合理化:
// 当 pageNum > totalPages 时,自动回退到第1页,所以会返回第1页的数据
assertEquals(pageSize, result.getRows().size(), "分页合理化开启时,超出页码应回退到第1页返回" + pageSize + "条记录");
assertEquals(TOTAL_RECORDS, result.getTotal(), "total应始终等于 " + TOTAL_RECORDS);
}
}

Loading…
Cancel
Save