From 6cef375f571bfc0cf50982d75283f8eb260daf62 Mon Sep 17 00:00:00 2001
From: tuqin <tuqin@tuqin.cn>
Date: 星期五, 23 十月 2026 12:44:23 +0800
Subject: [PATCH] fix(aftersales): 售后工单数据权限支持「处理人」可见;补齐全模块缺失权限点
---
yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/util/AfterSalePermissionUtils.java | 33 ++++++++++++++++++++++++++++-----
1 files changed, 28 insertions(+), 5 deletions(-)
diff --git a/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/util/AfterSalePermissionUtils.java b/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/util/AfterSalePermissionUtils.java
index b8da995..9c9f680 100644
--- a/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/util/AfterSalePermissionUtils.java
+++ b/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/util/AfterSalePermissionUtils.java
@@ -54,11 +54,30 @@
public static <T extends MPJLambdaWrapper<?>, S> void appendPermissionCondition(T query, Integer bizType,
SFunction<S, ?> bizId,
Long userId, Integer sceneType) {
+ appendPermissionCondition(query, bizType, bizId, userId, sceneType, null);
+ }
+
+ /**
+ * 鏋勯�犲敭鍚庢ā鍧楁暟鎹�愬垎椤点�戞煡璇㈡潯浠讹紙鏀寔銆屽鐞嗕汉銆嶄篃绠楀彲瑙佽寖鍥达級
+ *
+ * @param handlerUserIdField 澶勭悊浜哄瓧娈碉紙甯﹁〃鍒悕锛夛紝涓� null 琛ㄧず璇ヨ〃娌℃湁澶勭悊浜烘蹇�
+ */
+ public static <T extends MPJLambdaWrapper<?>, S> void appendPermissionCondition(T query, Integer bizType,
+ SFunction<S, ?> bizId,
+ Long userId, Integer sceneType,
+ String handlerUserIdField) {
MybatisPlusJoinProperties mybatisPlusJoinProperties = SpringUtil.getBean(MybatisPlusJoinProperties.class);
- final String ownerUserIdField = mybatisPlusJoinProperties.getTableAlias() + ".owner_user_id";
- // 鍦烘櫙涓�锛氭垜璐熻矗鐨勬暟鎹�
+ final String tableAlias = mybatisPlusJoinProperties.getTableAlias();
+ final String ownerUserIdField = tableAlias + ".owner_user_id";
+ // 澶勭悊浜哄瓧娈佃ˉ榻愯〃鍒悕锛堥伩鍏嶈繛琛ㄦ煡璇㈡椂鍒楀悕姝т箟锛�
+ final String handlerField = handlerUserIdField != null ? tableAlias + "." + handlerUserIdField : null;
+ // 鍦烘櫙涓�锛氭垜璐熻矗鐨勬暟鎹紙鎴栨垜浣滀负澶勭悊浜虹殑鏁版嵁锛�
if (AfterSaleSceneTypeEnum.isOwner(sceneType)) {
- query.eq(ownerUserIdField, userId);
+ if (handlerField != null) {
+ query.and(w -> w.eq(ownerUserIdField, userId).or().eq(handlerField, userId));
+ } else {
+ query.eq(ownerUserIdField, userId);
+ }
}
// 鍦烘櫙浜岋細鎴戝弬涓庣殑鏁版嵁锛堟垜鏈夎鎴栧啓鏉冮檺锛屽苟涓斾笉鏄礋璐d汉锛�
if (AfterSaleSceneTypeEnum.isInvolved(sceneType)) {
@@ -82,12 +101,16 @@
query.in(ownerUserIdField, convertSet(subordinateUsers, AdminUserRespDTO::getId));
}
}
- // 鍦烘櫙鍥涳細鍏ㄩ儴鏁版嵁锛堥渶瑕佹湁 view-all 鏉冮檺鎴栧敭鍚庣鐞嗗憳锛�
+ // 鍦烘櫙鍥涳細鍏ㄩ儴鏁版嵁锛堥渶瑕佹湁 view-all 鏉冮檺鎴栧敭鍚庣鐞嗗憳锛涘惁鍒欏彧鐪嬭嚜宸辫礋璐� + 鑷繁澶勭悊鐨勶級
if (AfterSaleSceneTypeEnum.isAll(sceneType)) {
if (isAftersaleAdmin() || hasViewAllPermission()) {
return;
}
- query.eq(ownerUserIdField, userId);
+ if (handlerField != null) {
+ query.and(w -> w.eq(ownerUserIdField, userId).or().eq(handlerField, userId));
+ } else {
+ query.eq(ownerUserIdField, userId);
+ }
}
}
--
Gitblit v1.9.3