wanggaokun 3 долоо хоног өмнө
parent
commit
277a6e0c31

+ 39 - 4
eco-nexus-core/nexus-core-biz/src/main/java/org/eco/vip/nexus/core/controller/user/UserController.java

@@ -20,9 +20,7 @@ import org.eco.vip.core.utils.ConfigUtils;
 import org.eco.vip.core.utils.ObjUtils;
 import org.eco.vip.core.utils.StrUtils;
 import org.eco.vip.nexus.core.domain.auth.pojo.LoginUserVO;
-import org.eco.vip.nexus.core.domain.user.pojo.UserBO;
-import org.eco.vip.nexus.core.domain.user.pojo.UserRoleVO;
-import org.eco.vip.nexus.core.domain.user.pojo.UserVO;
+import org.eco.vip.nexus.core.domain.user.pojo.*;
 import org.eco.vip.nexus.core.service.user.IUserService;
 import org.eco.vip.security.annotation.PermissionsResource;
 import org.eco.vip.security.utils.LoginHelper;
@@ -96,6 +94,33 @@ public class UserController {
         return success();
     }
 
+    @PutMapping("/password/modify")
+    @SaCheckPermission("system:user:modify")
+    public CommonResult<String> passwordModify(@RequestBody @Valid ModifyPasswordBO passwordBO) {
+
+        if (StrUtils.isBlank(passwordBO.getPassword())) {
+            return fail("密码不能为空!");
+        }
+        UserVO userVO = userService.selectById(LoginHelper.getUserId());
+        if (!BCrypt.checkpw(passwordBO.getOldPassword(), userVO.getPassword())) {
+            return fail("密码不能为空!");
+        }
+
+        if (BCrypt.checkpw(passwordBO.getPassword(), userVO.getPassword())) {
+            return fail("新密码不能与旧密码相同!");
+        }
+        passwordBO.setPassword(BCrypt.hashpw(passwordBO.getPassword()));
+        UserBO userBO = new UserBO();
+        userBO.setUserId(userVO.getUserId());
+        userBO.setPassword(BCrypt.hashpw(passwordBO.getPassword()));
+        userBO.setVersion(userVO.getVersion());
+        boolean result = userService.update(userBO);
+        if (!result) {
+            return fail("修改密码失败!");
+        }
+        return success();
+    }
+
     @DeleteMapping("/delete")
     @SaCheckPermission("system:user:delete")
     public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空") List<String> ids) {
@@ -124,7 +149,17 @@ public class UserController {
     }
 
     @GetMapping("/role/{id}")
-    public CommonResult<UserRoleVO> getRole(@PathVariable @Valid @NotBlank(message = "userId不能为空") String id) {
+    public CommonResult<UserRoleVO> getRole(@PathVariable("id") @Valid @NotBlank(message = "userId不能为空") String id) {
         return success(userService.selectRoleByUserId(id));
     }
+
+    @PutMapping("/role/add")
+    @SaCheckPermission("system:user:addRole")
+    public CommonResult<String> setRoles(@RequestBody @Valid UserRoleBO userRoleBO) {
+        boolean result = userService.setRoles(userRoleBO);
+        if (!result) {
+            return fail("设置角色失败!");
+        }
+        return success();
+    }
 }

+ 33 - 0
eco-nexus-core/nexus-core-biz/src/main/java/org/eco/vip/nexus/core/domain/user/pojo/ModifyPasswordBO.java

@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2025 GaoKunW
+ */
+
+package org.eco.vip.nexus.core.domain.user.pojo;
+
+
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @description ModifyPasswordBO
+ *
+ * @author GaoKunW
+ * @date 2025/7/20 01:10
+ */
+@Data
+public class ModifyPasswordBO implements Serializable {
+
+    /**
+     * 旧密码
+     */
+    @NotBlank(message = "旧密码不能为空")
+    private String oldPassword;
+
+    /**
+     * 密码
+     */
+    @NotBlank(message = "新密码不能为空")
+    private String password;
+}

+ 4 - 0
eco-nexus-core/nexus-core-biz/src/main/java/org/eco/vip/nexus/core/domain/user/pojo/UserBO.java

@@ -7,6 +7,7 @@ package org.eco.vip.nexus.core.domain.user.pojo;
 
 
 import io.github.linpeilie.annotations.AutoMapper;
+import jakarta.validation.constraints.NotBlank;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.eco.vip.nexus.core.domain.user.User;
@@ -41,11 +42,13 @@ public class UserBO extends BaseBO {
     /**
      * 用户账号
      */
+    @NotBlank(message = "用户账号不能为空")
     private String account;
 
     /**
      * 用户姓名
      */
+    @NotBlank(message = "用户姓名不能为空")
     private String userName;
 
     /**
@@ -56,6 +59,7 @@ public class UserBO extends BaseBO {
     /**
      * 用户登录设备类型(pc_user系统用户、app_user App用户)
      */
+    @NotBlank(message = "用户类型不能为空")
     private String userType;
 
     /**

+ 34 - 0
eco-nexus-core/nexus-core-biz/src/main/java/org/eco/vip/nexus/core/domain/user/pojo/UserRoleBO.java

@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2025 GaoKunW
+ */
+
+package org.eco.vip.nexus.core.domain.user.pojo;
+
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotEmpty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @description UserRoleBO
+ *
+ * @author GaoKunW
+ * @date 2025/7/20 01:40
+ */
+@Data
+public class UserRoleBO implements Serializable {
+    /**
+     * userId
+     */
+    @NotBlank(message = "userId不能为空")
+    private String userId;
+
+    /**
+     * roleIds
+     */
+    @NotEmpty(message = "角色不能为空")
+    private List<String> roleIds;
+}

+ 9 - 1
eco-nexus-core/nexus-core-biz/src/main/java/org/eco/vip/nexus/core/service/user/IUserService.java

@@ -10,6 +10,7 @@ import org.eco.vip.core.pojo.PageResult;
 import org.eco.vip.nexus.core.domain.user.User;
 import org.eco.vip.nexus.core.domain.user.UserRole;
 import org.eco.vip.nexus.core.domain.user.pojo.UserBO;
+import org.eco.vip.nexus.core.domain.user.pojo.UserRoleBO;
 import org.eco.vip.nexus.core.domain.user.pojo.UserRoleVO;
 import org.eco.vip.nexus.core.domain.user.pojo.UserVO;
 import org.eco.vip.orm.service.IBaseService;
@@ -84,10 +85,17 @@ public interface IUserService extends IBaseService<User> {
     /**
      * 根据ID查询信息
      *
-     ** @param id ID
+     * @param id ID
      * @return 结果
      */
     UserRoleVO selectRoleByUserId(String id);
+    /**
+     * 设置角色信息
+     *
+     * @param userRoleBO userRoleBO
+     * @return 结果
+     */
+    boolean setRoles(UserRoleBO userRoleBO);
 
     UserVO selectTenantUserByUserName(String tenantId, String username);
 }

+ 15 - 0
eco-nexus-core/nexus-core-biz/src/main/java/org/eco/vip/nexus/core/service/user/UserService.java

@@ -10,6 +10,7 @@ import cn.hutool.crypto.digest.BCrypt;
 import com.mybatisflex.core.paginate.Page;
 import com.mybatisflex.core.query.QueryMethods;
 import com.mybatisflex.core.query.QueryWrapper;
+import com.mybatisflex.core.update.UpdateChain;
 import jakarta.annotation.Resource;
 import org.eco.vip.core.constant.Constants;
 import org.eco.vip.core.pojo.PageResult;
@@ -19,6 +20,7 @@ import org.eco.vip.nexus.core.domain.role.pojo.RoleVO;
 import org.eco.vip.nexus.core.domain.user.User;
 import org.eco.vip.nexus.core.domain.user.UserRole;
 import org.eco.vip.nexus.core.domain.user.pojo.UserBO;
+import org.eco.vip.nexus.core.domain.user.pojo.UserRoleBO;
 import org.eco.vip.nexus.core.domain.user.pojo.UserRoleVO;
 import org.eco.vip.nexus.core.domain.user.pojo.UserVO;
 import org.eco.vip.nexus.core.mapper.UserMapper;
@@ -114,6 +116,19 @@ public class UserService extends BaseService<UserMapper, User> implements IUserS
         return UserRoleVO.builder().hasRoles(roleIds).allRoles(roleVOList).build();
     }
 
+    @Override
+    public boolean setRoles(UserRoleBO userRoleBO) {
+        UpdateChain.of(userRoleMapper).eq(UserRole::getUserId, userRoleBO.getUserId()).remove();
+        List<UserRole> list = userRoleBO.getRoleIds().stream().map(roleId -> {
+            UserRole userRole = new UserRole();
+            userRole.setUserId(userRoleBO.getUserId());
+            userRole.setRoleId(roleId);
+            return userRole;
+        }).toList();
+
+        return userRoleMapper.insertBatch(list) > 0;
+    }
+
     @Override
     public UserVO selectTenantUserByUserName(String tenantId, String account) {
         QueryWrapper queryWrapper = buildOneQueryWrapper()