fix: 修复数据权限和操作日志IP记录问题

1. 学校管理使用带数据权限的查询方法
2. 修复操作日志IP地址无法记录的问题(异步线程获取不到请求上下文)
This commit is contained in:
神码-方晓辉 2026-02-03 22:07:11 +08:00
parent 6f47adf86e
commit 730f27c55e
2 changed files with 18 additions and 7 deletions

View File

@ -26,20 +26,29 @@ public class PgMemberLogServiceImpl implements IPgMemberLogService {
private final PgMemberLogMapper memberLogMapper; private final PgMemberLogMapper memberLogMapper;
@Override @Override
@Async
public void log(Long memberId, String operType, String operTitle, String operDesc) { public void log(Long memberId, String operType, String operTitle, String operDesc) {
// 在当前线程HTTP请求线程中获取IP然后异步写入日志
String operIp = null; String operIp = null;
try { try {
operIp = ServletUtils.getClientIP(); operIp = ServletUtils.getClientIP();
} catch (Exception e) { } catch (Exception e) {
// 获取IP失败时忽略 // 获取IP失败时忽略
} }
log(memberId, operType, operTitle, operDesc, operIp); // 调用异步方法写入日志
asyncLog(memberId, operType, operTitle, operDesc, operIp);
} }
@Override @Override
@Async
public void log(Long memberId, String operType, String operTitle, String operDesc, String operIp) { 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 { try {
PgMemberLog logEntity = new PgMemberLog(); PgMemberLog logEntity = new PgMemberLog();
logEntity.setMemberId(memberId); logEntity.setMemberId(memberId);

View File

@ -51,7 +51,8 @@ public class PgSchoolServiceImpl implements IPgSchoolService {
@Override @Override
public TableDataInfo<PgSchool> selectPageList(PgSchool school, PageQuery pageQuery) { public TableDataInfo<PgSchool> selectPageList(PgSchool school, PageQuery pageQuery) {
LambdaQueryWrapper<PgSchool> lqw = buildQueryWrapper(school); LambdaQueryWrapper<PgSchool> lqw = buildQueryWrapper(school);
Page<PgSchool> page = baseMapper.selectPage(pageQuery.build(), lqw); // 使用带数据权限的查询方法
Page<PgSchool> page = baseMapper.selectPageSchoolList(pageQuery.build(), lqw);
// 填充区域名称 // 填充区域名称
fillRegionName(page.getRecords()); fillRegionName(page.getRecords());
return TableDataInfo.build(page); return TableDataInfo.build(page);
@ -59,7 +60,8 @@ public class PgSchoolServiceImpl implements IPgSchoolService {
@Override @Override
public List<PgSchool> selectList(PgSchool school) { public List<PgSchool> selectList(PgSchool school) {
List<PgSchool> list = baseMapper.selectList(buildQueryWrapper(school)); // 使用带数据权限的查询方法
List<PgSchool> list = baseMapper.selectSchoolList(buildQueryWrapper(school));
fillRegionName(list); fillRegionName(list);
return list; return list;
} }
@ -300,8 +302,8 @@ public class PgSchoolServiceImpl implements IPgSchoolService {
@Override @Override
public List<SchoolTreeNode> selectSchoolTree(PgSchool school) { public List<SchoolTreeNode> selectSchoolTree(PgSchool school) {
// 查询学校列表 // 查询学校列表使用带数据权限的查询方法
List<PgSchool> schools = baseMapper.selectList(buildQueryWrapper(school)); List<PgSchool> schools = baseMapper.selectSchoolList(buildQueryWrapper(school));
fillRegionName(schools); fillRegionName(schools);
if (schools.isEmpty()) { if (schools.isEmpty()) {