From 30774a92c4c492eb9629752faca04a00cd946304 Mon Sep 17 00:00:00 2001
From: 刘帅 <rr.iii@qq.com>
Date: 星期三, 23 九月 2026 11:39:22 +0800
Subject: [PATCH] bug:员工角色问题
---
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 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 b82403a..c58c69e 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,6 +491,9 @@
// "undefined";该值绝不能覆盖 sys_user.roleid。
if (isValidRoleId(user.getRoleid())) {
oldUser.setRoleid(user.getRoleid());
+ // 角色归属类型决定账号的数据范围。切换角色时同步 objectType,
+ // 但保留原 objectId,避免修改角色意外解除门店/运营商归属。
+ syncObjectTypeWithRole(oldUser, user.getRoleid());
}
this.userService.updateById(oldUser);
return SUCCESS_TIP;
@@ -502,6 +505,17 @@
&& !"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 String maskPhone(String value) {
if (value == null) return null;
return value.length() <= 7 ? stars(value.length()) : value.substring(0, 3) + "****" + value.substring(7);
--
Gitblit v1.7.1