|
|
|
@ -1,7 +1,18 @@
|
|
|
|
|
package com.baiye.system.controller;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import com.baiye.constant.DefaultNumberConstants;
|
|
|
|
|
import com.baiye.domain.PageParam;
|
|
|
|
|
import com.baiye.domain.PageResult;
|
|
|
|
|
import com.baiye.domain.SelectData;
|
|
|
|
|
import com.baiye.exception.BusinessException;
|
|
|
|
|
import com.baiye.operation.annotation.CreateOperationLogging;
|
|
|
|
|
import com.baiye.operation.annotation.DeleteOperationLogging;
|
|
|
|
|
import com.baiye.operation.annotation.UpdateOperationLogging;
|
|
|
|
|
import com.baiye.result.BaseResultCode;
|
|
|
|
|
import com.baiye.result.R;
|
|
|
|
|
import com.baiye.result.SystemResultCode;
|
|
|
|
|
import com.baiye.security.util.SecurityUtils;
|
|
|
|
|
import com.baiye.system.component.PasswordHelper;
|
|
|
|
|
import com.baiye.system.constant.SysUserConst;
|
|
|
|
|
import com.baiye.system.converter.SysUserConverter;
|
|
|
|
@ -9,24 +20,14 @@ import com.baiye.system.model.dto.SysUserDTO;
|
|
|
|
|
import com.baiye.system.model.dto.SysUserPassDTO;
|
|
|
|
|
import com.baiye.system.model.dto.SysUserScope;
|
|
|
|
|
import com.baiye.system.model.entity.SysRole;
|
|
|
|
|
import com.baiye.system.model.entity.SysUser;
|
|
|
|
|
import com.baiye.system.model.qo.SysUserQO;
|
|
|
|
|
import com.baiye.system.model.vo.SysUserInfo;
|
|
|
|
|
import com.baiye.system.model.vo.SysUserPageVO;
|
|
|
|
|
import com.baiye.system.service.SysUserRoleService;
|
|
|
|
|
import com.baiye.system.service.SysUserService;
|
|
|
|
|
import com.baiye.validation.group.CreateGroup;
|
|
|
|
|
import com.baiye.validation.group.UpdateGroup;
|
|
|
|
|
import com.baiye.operation.annotation.CreateOperationLogging;
|
|
|
|
|
import com.baiye.operation.annotation.DeleteOperationLogging;
|
|
|
|
|
import com.baiye.operation.annotation.UpdateOperationLogging;
|
|
|
|
|
import com.baiye.domain.PageParam;
|
|
|
|
|
import com.baiye.domain.PageResult;
|
|
|
|
|
import com.baiye.domain.SelectData;
|
|
|
|
|
import com.baiye.result.BaseResultCode;
|
|
|
|
|
import com.baiye.result.R;
|
|
|
|
|
import com.baiye.result.SystemResultCode;
|
|
|
|
|
import com.baiye.security.util.SecurityUtils;
|
|
|
|
|
import com.baiye.system.model.entity.SysUser;
|
|
|
|
|
import com.baiye.system.service.SysUserService;
|
|
|
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
|
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
@ -34,15 +35,7 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
|
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
|
|
|
import org.springframework.web.bind.annotation.PathVariable;
|
|
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
|
|
import org.springframework.web.bind.annotation.PutMapping;
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
|
|
|
|
import javax.validation.ValidationException;
|
|
|
|
@ -74,6 +67,7 @@ public class SysUserController {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 分页查询用户
|
|
|
|
|
*
|
|
|
|
|
* @param pageParam 参数集
|
|
|
|
|
* @return 用户集合
|
|
|
|
|
*/
|
|
|
|
@ -103,6 +97,7 @@ public class SysUserController {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取用户Select
|
|
|
|
|
*
|
|
|
|
|
* @return 用户SelectData
|
|
|
|
|
*/
|
|
|
|
|
@GetMapping("/select")
|
|
|
|
@ -115,11 +110,12 @@ public class SysUserController {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取指定用户的基本信息
|
|
|
|
|
*
|
|
|
|
|
* @param userId 用户ID
|
|
|
|
|
* @return SysUserInfo
|
|
|
|
|
*/
|
|
|
|
|
@GetMapping("/{userId}")
|
|
|
|
|
@PreAuthorize("@per.hasPermission('system:user:read')")
|
|
|
|
|
// @PreAuthorize("@per.hasPermission('system:user:read')")
|
|
|
|
|
@Operation(summary = "获取指定用户的基本信息")
|
|
|
|
|
public R<SysUserInfo> getSysUserInfo(@PathVariable("userId") Long userId) {
|
|
|
|
|
SysUser sysUser = sysUserService.getById(userId);
|
|
|
|
@ -127,11 +123,14 @@ public class SysUserController {
|
|
|
|
|
return R.ok();
|
|
|
|
|
}
|
|
|
|
|
SysUserInfo sysUserInfo = SysUserConverter.INSTANCE.poToInfo(sysUser);
|
|
|
|
|
List<SysRole> roleList = sysUserRoleService.listRoles(userId);
|
|
|
|
|
sysUserInfo.setRoleList(roleList);
|
|
|
|
|
return R.ok(sysUserInfo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 新增用户
|
|
|
|
|
*
|
|
|
|
|
* @param sysUserDTO userInfo
|
|
|
|
|
* @return success/false
|
|
|
|
|
*/
|
|
|
|
@ -139,7 +138,7 @@ public class SysUserController {
|
|
|
|
|
@CreateOperationLogging(msg = "新增系统用户")
|
|
|
|
|
@PreAuthorize("@per.hasPermission('system:user:add')")
|
|
|
|
|
@Operation(summary = "新增系统用户", description = "新增系统用户")
|
|
|
|
|
public R<Void> addSysUser(@Validated({ Default.class, CreateGroup.class }) @RequestBody SysUserDTO sysUserDTO) {
|
|
|
|
|
public R<Void> addSysUser(@Validated({Default.class, CreateGroup.class}) @RequestBody SysUserDTO sysUserDTO) {
|
|
|
|
|
SysUser user = sysUserService.getByUsername(sysUserDTO.getUsername());
|
|
|
|
|
if (user != null) {
|
|
|
|
|
return R.failed(BaseResultCode.LOGIC_CHECK_ERROR, "用户名已存在");
|
|
|
|
@ -153,22 +152,22 @@ public class SysUserController {
|
|
|
|
|
if (passwordHelper.validateRule(rawPassword)) {
|
|
|
|
|
return sysUserService.addSysUser(sysUserDTO) ? R.ok()
|
|
|
|
|
: R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "新增系统用户失败");
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
} else {
|
|
|
|
|
return R.failed(SystemResultCode.BAD_REQUEST, "密码格式不符合规则!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 修改用户个人信息
|
|
|
|
|
*
|
|
|
|
|
* @param sysUserDto userInfo
|
|
|
|
|
* @return success/false
|
|
|
|
|
*/
|
|
|
|
|
@PutMapping
|
|
|
|
|
@UpdateOperationLogging(msg = "修改系统用户")
|
|
|
|
|
@PreAuthorize("@per.hasPermission('system:user:edit')")
|
|
|
|
|
// @PreAuthorize("@per.hasPermission('system:user:edit')")
|
|
|
|
|
@Operation(summary = "修改系统用户", description = "修改系统用户")
|
|
|
|
|
public R<Void> updateUserInfo(@Validated({ Default.class, UpdateGroup.class }) @RequestBody SysUserDTO sysUserDto) {
|
|
|
|
|
public R<Void> updateUserInfo(@Validated({Default.class, UpdateGroup.class}) @RequestBody SysUserDTO sysUserDto) {
|
|
|
|
|
return sysUserService.updateSysUser(sysUserDto) ? R.ok()
|
|
|
|
|
: R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "修改系统用户失败");
|
|
|
|
|
}
|
|
|
|
@ -187,6 +186,7 @@ public class SysUserController {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取用户 所拥有的角色ID
|
|
|
|
|
*
|
|
|
|
|
* @param userId userId
|
|
|
|
|
*/
|
|
|
|
|
@GetMapping("/scope/{userId}")
|
|
|
|
@ -206,8 +206,10 @@ public class SysUserController {
|
|
|
|
|
return R.ok(sysUserScope);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 修改用户权限信息 比如角色 数据权限等
|
|
|
|
|
*
|
|
|
|
|
* @param sysUserScope sysUserScope
|
|
|
|
|
* @return success/false
|
|
|
|
|
*/
|
|
|
|
@ -225,22 +227,29 @@ public class SysUserController {
|
|
|
|
|
*/
|
|
|
|
|
@PutMapping("/pass/{userId}")
|
|
|
|
|
@UpdateOperationLogging(msg = "修改系统用户密码")
|
|
|
|
|
@PreAuthorize("@per.hasPermission('system:user:pass')")
|
|
|
|
|
// @PreAuthorize("@per.hasPermission('system:user:pass')")
|
|
|
|
|
@Operation(summary = "修改系统用户密码", description = "修改系统用户密码")
|
|
|
|
|
public R<Void> updateUserPass(@PathVariable("userId") Long userId, @RequestBody SysUserPassDTO sysUserPassDTO) {
|
|
|
|
|
String pass = sysUserPassDTO.getPass();
|
|
|
|
|
SysUser byId = sysUserService.getById(userId);
|
|
|
|
|
if (ObjectUtil.isNull(byId)) {
|
|
|
|
|
return R.failed(SystemResultCode.BAD_REQUEST, "该用户不存在");
|
|
|
|
|
}
|
|
|
|
|
if (!passwordHelper.matches(passwordHelper.decodeAes(sysUserPassDTO.getOldPass()), byId.getPassword())) {
|
|
|
|
|
return R.failed(SystemResultCode.BAD_REQUEST, "修改失败,旧密码错误!");
|
|
|
|
|
}
|
|
|
|
|
if (!pass.equals(sysUserPassDTO.getConfirmPass())) {
|
|
|
|
|
return R.failed(SystemResultCode.BAD_REQUEST, "两次密码输入不一致!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 解密明文密码
|
|
|
|
|
String rawPassword = passwordHelper.decodeAes(pass);
|
|
|
|
|
// 密码规则校验
|
|
|
|
|
if (passwordHelper.validateRule(rawPassword)) {
|
|
|
|
|
return sysUserService.updatePassword(userId, rawPassword) ? R.ok()
|
|
|
|
|
: R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "修改用户密码失败!");
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
} else {
|
|
|
|
|
return R.failed(SystemResultCode.BAD_REQUEST, "密码格式不符合规则!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -253,7 +262,7 @@ public class SysUserController {
|
|
|
|
|
@PreAuthorize("@per.hasPermission('system:user:edit')")
|
|
|
|
|
@Operation(summary = "批量修改用户状态", description = "批量修改用户状态")
|
|
|
|
|
public R<Void> updateUserStatus(@NotEmpty(message = "用户ID不能为空") @RequestBody List<Long> userIds,
|
|
|
|
|
@NotNull(message = "用户状态不能为空") @RequestParam("status") Integer status) {
|
|
|
|
|
@NotNull(message = "用户状态不能为空") @RequestParam("status") Integer status) {
|
|
|
|
|
|
|
|
|
|
if (!SysUserConst.Status.NORMAL.getValue().equals(status)
|
|
|
|
|
&& !SysUserConst.Status.LOCKED.getValue().equals(status)) {
|
|
|
|
@ -264,15 +273,14 @@ public class SysUserController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@UpdateOperationLogging(msg = "修改系统用户头像")
|
|
|
|
|
@PreAuthorize("@per.hasPermission('system:user:edit')")
|
|
|
|
|
// @PreAuthorize("@per.hasPermission('system:user:edit')")
|
|
|
|
|
@PostMapping("/avatar")
|
|
|
|
|
@Operation(summary = "修改系统用户头像", description = "修改系统用户头像")
|
|
|
|
|
public R<String> updateAvatar(@RequestParam("file") MultipartFile file, @RequestParam("userId") Long userId) {
|
|
|
|
|
public R<String> updateAvatar(@RequestParam("file") MultipartFile file) {
|
|
|
|
|
String objectName;
|
|
|
|
|
try {
|
|
|
|
|
objectName = sysUserService.updateAvatar(file, userId);
|
|
|
|
|
}
|
|
|
|
|
catch (IOException e) {
|
|
|
|
|
objectName = sysUserService.updateAvatar(file, SecurityUtils.getCurrentUserId());
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
log.error("修改系统用户头像异常", e);
|
|
|
|
|
return R.failed(BaseResultCode.FILE_UPLOAD_ERROR);
|
|
|
|
|
}
|
|
|
|
|