添加个人中心代码

master
bynt 12 months ago
parent b7135f8b72
commit db317c736b

@ -70,4 +70,8 @@ public class PasswordHelper {
return matcher.matches(); return matcher.matches();
} }
public boolean matches(String oldPass, String password) {
return passwordEncoder.matches(oldPass, password);
}
} }

@ -339,12 +339,12 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
SysUser sysUser = baseMapper.selectById(userId); SysUser sysUser = baseMapper.selectById(userId);
String oldPath = sysUser.getAvatar(); String oldPath = sysUser.getAvatar();
File file = FileUtil.upload(multipartFile, fileProperties.getPath().getAvatar()); File file = FileUtil.upload(multipartFile, fileProperties.getPath().getAvatar());
sysUser.setAvatar(Objects.requireNonNull(file).getPath()); sysUser.setAvatar(Objects.requireNonNull(file).getName());
baseMapper.updateById(sysUser); baseMapper.updateById(sysUser);
if (StringUtils.isNotBlank(oldPath)) { if (StringUtils.isNotBlank(oldPath)) {
FileUtil.del(oldPath); FileUtil.del(oldPath);
} }
return file.getPath(); return file.getName();
} }
/** /**

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

@ -16,6 +16,14 @@ import javax.validation.constraints.NotBlank;
@Schema(title = "系统用户密码传输实体") @Schema(title = "系统用户密码传输实体")
public class SysUserPassDTO { public class SysUserPassDTO {
/**
*
*/
@NotBlank(message = "The password cannot be empty!")
@JsonRegexDesensitize(type = RegexDesensitizationTypeEnum.ENCRYPTED_PASSWORD)
@Schema(title = "前端输入旧密码")
private String oldPass;
/** /**
* *
*/ */

@ -1,10 +1,12 @@
package com.baiye.system.model.vo; package com.baiye.system.model.vo;
import com.baiye.system.model.entity.SysRole;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
/** /**
* *
@ -83,4 +85,7 @@ public class SysUserInfo implements Serializable {
*/ */
@Schema(title = "创建者(父ID)") @Schema(title = "创建者(父ID)")
private Long whichUserId; private Long whichUserId;
private List<SysRole> roleList;
} }

Loading…
Cancel
Save