From 52422adc2297f11e5e0c4b0feaed0688537ddc9c Mon Sep 17 00:00:00 2001
From: 刘帅 <rr.iii@qq.com>
Date: 星期三, 23 九月 2026 11:52:47 +0800
Subject: [PATCH] bug:员工角色赋值问题

---
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java |   19 ++++++++-----------
 1 files changed, 8 insertions(+), 11 deletions(-)

diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java
index c58c69e..c62f9dd 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java
@@ -491,9 +491,9 @@
         // "undefined";该值绝不能覆盖 sys_user.roleid。
         if (isValidRoleId(user.getRoleid())) {
             oldUser.setRoleid(user.getRoleid());
-            // 角色归属类型决定账号的数据范围。切换角色时同步 objectType,
-            // 但保留原 objectId,避免修改角色意外解除门店/运营商归属。
-            syncObjectTypeWithRole(oldUser, user.getRoleid());
+            // 仅内置平台管理员(1)和门店管理员(3)切换数据归属类型;
+            // 其他自定义角色只控制菜单权限,不改变账号归属。objectId 始终保留。
+            syncObjectTypeWithBuiltInRole(oldUser, user.getRoleid());
         }
         this.userService.updateById(oldUser);
         return SUCCESS_TIP;
@@ -505,14 +505,11 @@
                 && !"null".equalsIgnoreCase(roleId);
     }
 
-    private void syncObjectTypeWithRole(User user, String roleId) {
-        try {
-            Role role = roleService.getById(Integer.valueOf(roleId));
-            if (role != null && role.getObjType() != null) {
-                user.setObjectType(role.getObjType());
-            }
-        } catch (NumberFormatException ignored) {
-            // 历史账号可能保存多角色或脏数据;无法解析为单个角色时保留原归属类型。
+    private void syncObjectTypeWithBuiltInRole(User user, String roleId) {
+        if ("1".equals(roleId)) {
+            user.setObjectType(1);
+        } else if ("3".equals(roleId)) {
+            user.setObjectType(3);
         }
     }
 

--
Gitblit v1.7.1