From 730f27c55ec3374b0352fefda6379d9411738c9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E7=A0=81-=E6=96=B9=E6=99=93=E8=BE=89?= Date: Tue, 3 Feb 2026 22:07:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9D=83=E9=99=90=E5=92=8C=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97?= =?UTF-8?q?IP=E8=AE=B0=E5=BD=95=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 学校管理使用带数据权限的查询方法 2. 修复操作日志IP地址无法记录的问题(异步线程获取不到请求上下文) --- .../service/impl/PgMemberLogServiceImpl.java | 15 ++++++++++++--- .../school/service/impl/PgSchoolServiceImpl.java | 10 ++++++---- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/backend/pangu-modules/pangu-business/src/main/java/org/dromara/pangu/member/service/impl/PgMemberLogServiceImpl.java b/backend/pangu-modules/pangu-business/src/main/java/org/dromara/pangu/member/service/impl/PgMemberLogServiceImpl.java index baa2dcf..3c8b06c 100644 --- a/backend/pangu-modules/pangu-business/src/main/java/org/dromara/pangu/member/service/impl/PgMemberLogServiceImpl.java +++ b/backend/pangu-modules/pangu-business/src/main/java/org/dromara/pangu/member/service/impl/PgMemberLogServiceImpl.java @@ -26,20 +26,29 @@ public class PgMemberLogServiceImpl implements IPgMemberLogService { private final PgMemberLogMapper memberLogMapper; @Override - @Async public void log(Long memberId, String operType, String operTitle, String operDesc) { + // 在当前线程(HTTP请求线程)中获取IP,然后异步写入日志 String operIp = null; try { operIp = ServletUtils.getClientIP(); } catch (Exception e) { // 获取IP失败时忽略 } - log(memberId, operType, operTitle, operDesc, operIp); + // 调用异步方法写入日志 + asyncLog(memberId, operType, operTitle, operDesc, operIp); } @Override - @Async public void log(Long memberId, String operType, String operTitle, String operDesc, String operIp) { + // 调用异步方法写入日志 + asyncLog(memberId, operType, operTitle, operDesc, operIp); + } + + /** + * 异步写入日志 + */ + @Async + public void asyncLog(Long memberId, String operType, String operTitle, String operDesc, String operIp) { try { PgMemberLog logEntity = new PgMemberLog(); logEntity.setMemberId(memberId); diff --git a/backend/pangu-modules/pangu-business/src/main/java/org/dromara/pangu/school/service/impl/PgSchoolServiceImpl.java b/backend/pangu-modules/pangu-business/src/main/java/org/dromara/pangu/school/service/impl/PgSchoolServiceImpl.java index 1715bb4..c5b13ec 100644 --- a/backend/pangu-modules/pangu-business/src/main/java/org/dromara/pangu/school/service/impl/PgSchoolServiceImpl.java +++ b/backend/pangu-modules/pangu-business/src/main/java/org/dromara/pangu/school/service/impl/PgSchoolServiceImpl.java @@ -51,7 +51,8 @@ public class PgSchoolServiceImpl implements IPgSchoolService { @Override public TableDataInfo selectPageList(PgSchool school, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(school); - Page page = baseMapper.selectPage(pageQuery.build(), lqw); + // 使用带数据权限的查询方法 + Page page = baseMapper.selectPageSchoolList(pageQuery.build(), lqw); // 填充区域名称 fillRegionName(page.getRecords()); return TableDataInfo.build(page); @@ -59,7 +60,8 @@ public class PgSchoolServiceImpl implements IPgSchoolService { @Override public List selectList(PgSchool school) { - List list = baseMapper.selectList(buildQueryWrapper(school)); + // 使用带数据权限的查询方法 + List list = baseMapper.selectSchoolList(buildQueryWrapper(school)); fillRegionName(list); return list; } @@ -300,8 +302,8 @@ public class PgSchoolServiceImpl implements IPgSchoolService { @Override public List selectSchoolTree(PgSchool school) { - // 查询学校列表 - List schools = baseMapper.selectList(buildQueryWrapper(school)); + // 查询学校列表(使用带数据权限的查询方法) + List schools = baseMapper.selectSchoolList(buildQueryWrapper(school)); fillRegionName(schools); if (schools.isEmpty()) {