diff --git a/backend/src/main/java/com/yfd/platform/system/controller/SmsVerifyCodeController.java b/backend/src/main/java/com/yfd/platform/system/controller/SmsVerifyCodeController.java index 2049d5bf..06e5d6e9 100644 --- a/backend/src/main/java/com/yfd/platform/system/controller/SmsVerifyCodeController.java +++ b/backend/src/main/java/com/yfd/platform/system/controller/SmsVerifyCodeController.java @@ -306,6 +306,8 @@ public class SmsVerifyCodeController { // 已通过电站权限处理过的电站编码 Set processedStationCodes = new HashSet<>(); + // 已通过电站分组处理过的流域编码(用于后续差集判断) + Set processedBasinCodes = new HashSet<>(); if (!selectedStations.isEmpty()) { // 4. 按流域分组:{rvcd -> Set} @@ -345,6 +347,7 @@ public class SmsVerifyCodeController { } } processedStationCodes.addAll(selectedInThisBasin); + processedBasinCodes.add(basinCode); } } @@ -355,7 +358,17 @@ public class SmsVerifyCodeController { } } - // 7. 分配默认角色 + // 7. 处理前端传了流域、但该流域下未匹配到任何选中电站的情况(直接保存流域权限) + String rvcdCode = smsVerifyCodeRequest.getRvcdCode(); + if (StringUtils.isNotEmpty(rvcdCode)) { + for (String basinCode : rvcdCode.split(",")) { + if (StringUtils.isNotEmpty(basinCode) && !processedBasinCodes.contains(basinCode)) { + addDataScope(userId, "RVCD", basinCode); + } + } + } + + // 8. 分配默认角色 assignRoleToUser(userId); return true; }