From a2371d570725163f3ad9ecee8725f16c839b1e2a Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期二, 27 十月 2026 18:06:53 +0800
Subject: [PATCH] fix(ums): 资料变更列表按提交人过滤,查看全部需审核权限

---
 yudao-module-ums/src/main/java/cn/iocoder/yudao/module/ums/dal/mysql/member/UmsMemberProfileChangeMapper.java    |   13 ++++++++++++-
 yudao-module-ums/src/main/java/cn/iocoder/yudao/module/ums/service/member/UmsMemberProfileChangeServiceImpl.java |   24 +++++++++++++++++++++++-
 2 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/yudao-module-ums/src/main/java/cn/iocoder/yudao/module/ums/dal/mysql/member/UmsMemberProfileChangeMapper.java b/yudao-module-ums/src/main/java/cn/iocoder/yudao/module/ums/dal/mysql/member/UmsMemberProfileChangeMapper.java
index 8c4dc1b..e921d8b 100644
--- a/yudao-module-ums/src/main/java/cn/iocoder/yudao/module/ums/dal/mysql/member/UmsMemberProfileChangeMapper.java
+++ b/yudao-module-ums/src/main/java/cn/iocoder/yudao/module/ums/dal/mysql/member/UmsMemberProfileChangeMapper.java
@@ -27,11 +27,22 @@
         return list.isEmpty() ? null : list.get(0);
     }
 
-    default PageResult<UmsMemberProfileChangeDO> selectPage(UmsMemberProfileChangePageReqVO reqVO) {
+    /**
+     * 鍒嗛〉鏌ヨ璧勬枡鍙樻洿鐢宠
+     *
+     * <p>鏂规硶鍚嶄笉鐢� selectPage 閲嶈浇锛岄伩鍏嶄笌 BaseMapperX.selectPage(PageParam, Wrapper) 鍦ㄤ紶 null 鏃朵簩涔夈��
+     *
+     * @param reqVO            鏌ヨ鏉′欢
+     * @param submitterUserId  鎻愪氦浜虹敤鎴风紪鍙凤紱闈炵┖鏃跺彧鏌ヨ鐢ㄦ埛鎻愪氦鐨勮褰曪紙浼氬憳鑷姪鍦烘櫙锛夛紝
+     *                         涓虹┖琛ㄧず涓嶉檺鍒舵彁浜や汉锛堢鐞嗗憳瀹℃牳鍦烘櫙锛�
+     */
+    default PageResult<UmsMemberProfileChangeDO> selectPageBySubmitter(UmsMemberProfileChangePageReqVO reqVO,
+                                                                      Long submitterUserId) {
         return selectPage(reqVO, new LambdaQueryWrapperX<UmsMemberProfileChangeDO>()
                 .likeIfPresent(UmsMemberProfileChangeDO::getMemberNo, reqVO.getMemberNo())
                 .likeIfPresent(UmsMemberProfileChangeDO::getMemberName, reqVO.getMemberName())
                 .eqIfPresent(UmsMemberProfileChangeDO::getStatus, reqVO.getStatus())
+                .eqIfPresent(UmsMemberProfileChangeDO::getUserId, submitterUserId)
                 .orderByDesc(UmsMemberProfileChangeDO::getId));
     }
 
diff --git a/yudao-module-ums/src/main/java/cn/iocoder/yudao/module/ums/service/member/UmsMemberProfileChangeServiceImpl.java b/yudao-module-ums/src/main/java/cn/iocoder/yudao/module/ums/service/member/UmsMemberProfileChangeServiceImpl.java
index e50cc8f..fb118dc 100644
--- a/yudao-module-ums/src/main/java/cn/iocoder/yudao/module/ums/service/member/UmsMemberProfileChangeServiceImpl.java
+++ b/yudao-module-ums/src/main/java/cn/iocoder/yudao/module/ums/service/member/UmsMemberProfileChangeServiceImpl.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.system.api.permission.PermissionApi;
 import cn.iocoder.yudao.module.ums.controller.admin.member.vo.profile.UmsMemberProfileChangePageReqVO;
 import cn.iocoder.yudao.module.ums.controller.admin.member.vo.profile.UmsMemberProfileChangeSaveReqVO;
 import cn.iocoder.yudao.module.ums.dal.dataobject.member.UmsMemberDO;
@@ -35,11 +36,17 @@
 
     private static final int SUMMARY_MAX_LENGTH = 1000;
 
+    /** 璧勬枡鍙樻洿瀹℃牳鏉冮檺锛氭嫢鏈夎鏉冮檺锛堟垨涓鸿秴绾х鐞嗗憳锛夊嵆鍙煡鐪嬪叏閮ㄧ敵璇� */
+    private static final String PERMISSION_CHANGE_AUDIT = "ums:member:change:audit";
+
     @Resource
     private UmsMemberMapper memberMapper;
 
     @Resource
     private UmsMemberProfileChangeMapper changeMapper;
+
+    @Resource
+    private PermissionApi permissionApi;
 
     @Override
     public UmsMemberDO getMyProfile() {
@@ -75,7 +82,22 @@
 
     @Override
     public PageResult<UmsMemberProfileChangeDO> getChangePage(UmsMemberProfileChangePageReqVO reqVO) {
-        return changeMapper.selectPage(reqVO);
+        Long loginUserId = getLoginUserId();
+        // 鏃犵櫥褰曟�佹椂杩斿洖绌猴紝閬垮厤鎻愪氦浜烘潯浠朵负绌哄鑷撮��鍖栨垚鏌ュ叏閮�
+        if (loginUserId == null) {
+            return PageResult.empty();
+        }
+        // 鏈夊鏍告潈闄愶紙鍚秴绾х鐞嗗憳锛夊彲鏌ョ湅鍏ㄩ儴鐢宠锛涘叾浣欎汉鍙兘鐪嬪埌鑷繁鎻愪氦鐨勮褰曪紝
+        // 鍚﹀垯鏅�氫細鍛樺嚟 ums:member:change:query 灏辫兘缈诲埌鍏朵粬浼氬憳鐨勮仈绯绘柟寮忕瓑璧勬枡銆�
+        if (canViewAllChanges(loginUserId)) {
+            return changeMapper.selectPageBySubmitter(reqVO, null);
+        }
+        return changeMapper.selectPageBySubmitter(reqVO, loginUserId);
+    }
+
+    /** 鏄惁鏈夋煡鐪嬪叏閮ㄨ祫鏂欏彉鏇寸敵璇风殑鏉冮檺锛氬鏍告潈闄愭垨瓒呯骇绠$悊鍛橈紙hasAnyPermissions 鍐呭惈瓒呯鍏滃簳锛� */
+    private boolean canViewAllChanges(Long userId) {
+        return permissionApi.hasAnyPermissions(userId, PERMISSION_CHANGE_AUDIT);
     }
 
     @Override

--
Gitblit v1.9.3