Browse Source

fix: User.roles 改为 List<String> 修复修改角色反序列化错误

- User.roles: String → List<String>
- LoginResultDTO.roles: String → List<String>
- UpdateUserDTO.roles: String → List<String>
- UserService: 移除 parseRoles/joinRoles,直接使用 List
- EnergyService: 简化 parent 角色检查
- SupplyManageController: 直接使用 List.contains()
- DataMigrationService: 使用 Arrays.asList()
- ServiceRoleApplicationServiceImpl: 保留 JSON 序列化(独立表字段)
iwt 2 months ago
parent
commit
2f6453edad

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/controller/admin/SupplyManageController.java

@@ -208,9 +208,9 @@ public class SupplyManageController {
 
         // 移除 supplier_admin 角色
         if (user.getRoles() != null && user.getRoles().contains("supplier_admin")) {
-            java.util.List<String> roles = userService.parseRoles(user.getRoles());
+            java.util.List<String> roles = user.getRoles();
             roles.remove("supplier_admin");
-            user.setRoles(String.join(",", roles));
+            user.setRoles(roles);
             user.setUpdatedAt(new Date());
             userMapper.updateById(user);
         }

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/LoginResultDTO.java

@@ -7,7 +7,7 @@ public class LoginResultDTO {
     private String token;
     private Long userId;
     private String role;
-    private String roles; // 用户拥有的所有角色列表
+    private java.util.List<String> roles;
     private Long familyId;
     private String nickname;
     private Long currentChildId; // 当前切换到的孩子ID(如果切换了)

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/dto/UpdateUserDTO.java

@@ -8,7 +8,7 @@ public class UpdateUserDTO {
     private String avatar;
     private String realName;
     private String role;
-    private String roles;
+    private java.util.List<String> roles;
     private String gender;
     private String birthday;
     private String idCard;

+ 2 - 2
cfc-backend/src/main/java/com/etotem/cfc/service/impl/ServiceRoleApplicationServiceImpl.java

@@ -41,7 +41,7 @@ public class ServiceRoleApplicationServiceImpl
 
         ServiceRoleApplication app = new ServiceRoleApplication();
         app.setUserId(userId);
-        app.setRoles(dto.getRoles());
+        app.setRoles(JSON.toJSONString(dto.getRoles()));
         app.setIdCard(dto.getIdCard());
         app.setIdCardImages(dto.getIdCardImages() != null ? JSON.toJSONString(dto.getIdCardImages()) : null);
         app.setCertificateImages(dto.getCertificateImages() != null ? JSON.toJSONString(dto.getCertificateImages()) : null);
@@ -81,7 +81,7 @@ public class ServiceRoleApplicationServiceImpl
         app.setReviewedAt(LocalDateTime.now());
         this.updateById(app);
 
-        List<String> roles = app.getRoles();
+        List<String> roles = JSON.parseArray(app.getRoles(), String.class);
         User user = userMapper.selectById(app.getUserId());
 
         for (String role : roles) {