mirror of https://gitee.com/stylefeng/roses
个人信息修改,密码修改,头像修改代码迁移
parent
c60fc87648
commit
94cbca9177
|
@ -0,0 +1,70 @@
|
|||
package cn.stylefeng.roses.kernel.sys.modular.user.controller;
|
||||
|
||||
import cn.stylefeng.roses.kernel.rule.annotation.BusinessLog;
|
||||
import cn.stylefeng.roses.kernel.rule.enums.ResBizTypeEnum;
|
||||
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
|
||||
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
|
||||
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
|
||||
import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.user.pojo.request.SysUserRequest;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.user.service.SysUserService;
|
||||
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 个人信息控制器
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2021/3/17 22:05
|
||||
*/
|
||||
@RestController
|
||||
@ApiResource(name = "个人信息", resBizType = ResBizTypeEnum.SYSTEM)
|
||||
public class PersonalInfoController {
|
||||
|
||||
@Resource
|
||||
private SysUserService sysUserService;
|
||||
|
||||
/**
|
||||
* 更新用户个人信息
|
||||
*
|
||||
* @author luojie
|
||||
* @date 2020/11/6 13:50
|
||||
*/
|
||||
@PostResource(name = "个人信息_更新个人信息", path = "/sysUser/updateInfo", requiredPermission = false)
|
||||
@BusinessLog
|
||||
public ResponseData<?> updateInfo(@RequestBody @Validated(SysUserRequest.updateInfo.class) SysUserRequest sysUserRequest) {
|
||||
sysUserService.editInfo(sysUserRequest);
|
||||
return new SuccessResponseData<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改密码
|
||||
*
|
||||
* @author luojie
|
||||
* @date 2020/11/6 13:50
|
||||
*/
|
||||
@PostResource(name = "个人信息_修改密码", path = "/sysUser/updatePassword", requiredPermission = false)
|
||||
@BusinessLog
|
||||
public ResponseData<?> updatePwd(@RequestBody @Validated(SysUserRequest.updatePwd.class) SysUserRequest sysUserRequest) {
|
||||
sysUserService.editPassword(sysUserRequest);
|
||||
return new SuccessResponseData<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改头像
|
||||
*
|
||||
* @author luojie
|
||||
* @date 2020/11/6 13:48
|
||||
*/
|
||||
@PostResource(name = "个人信息_修改头像", path = "/sysUser/updateAvatar", requiredPermission = false)
|
||||
@BusinessLog
|
||||
public ResponseData<?> updateAvatar(@RequestBody @Validated(SysUserRequest.updateAvatar.class) SysUserRequest sysUserRequest) {
|
||||
sysUserService.editAvatar(sysUserRequest);
|
||||
return new SuccessResponseData<>();
|
||||
}
|
||||
|
||||
}
|
|
@ -28,7 +28,17 @@ public enum SysUserExceptionEnum implements AbstractExceptionEnum {
|
|||
* <p>
|
||||
* 但是提示:用户账号或密码错误,请重新输入
|
||||
*/
|
||||
ACCOUNT_NOT_EXIST(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10003", "用户账号或密码错误,请重新输入");
|
||||
ACCOUNT_NOT_EXIST(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10003", "用户账号或密码错误,请重新输入"),
|
||||
|
||||
/**
|
||||
* 原密码错误
|
||||
*/
|
||||
USER_PWD_ERROR(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10004", "原密码错误,请重新输入"),
|
||||
|
||||
/**
|
||||
* 新密码与原密码相同
|
||||
*/
|
||||
USER_PWD_REPEAT(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10005", "新密码与原密码相同,请更换新密码");
|
||||
|
||||
/**
|
||||
* 错误编码
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
package cn.stylefeng.roses.kernel.sys.modular.user.factory;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi;
|
||||
import cn.stylefeng.roses.kernel.rule.enums.SexEnum;
|
||||
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.user.entity.SysUser;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.user.pojo.request.SysUserRequest;
|
||||
|
||||
/**
|
||||
* 用户信息填充,用于创建和修改用户时,添加一些基础信息
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2020/11/21 12:55
|
||||
*/
|
||||
public class SysUserCreateFactory {
|
||||
|
||||
|
||||
/**
|
||||
* 编辑用户时候的用户信息填充
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2020/11/21 12:56
|
||||
*/
|
||||
public static void fillUpdateInfo(SysUserRequest sysUserRequest, SysUser sysUser) {
|
||||
|
||||
// 性别(M-男,F-女)
|
||||
sysUser.setSex(sysUserRequest.getSex());
|
||||
|
||||
// 邮箱
|
||||
sysUser.setEmail(sysUserRequest.getEmail());
|
||||
|
||||
// 姓名
|
||||
sysUser.setRealName(sysUserRequest.getRealName());
|
||||
|
||||
// 生日
|
||||
sysUser.setBirthday(DateUtil.parse(sysUserRequest.getBirthday()));
|
||||
|
||||
// 手机
|
||||
sysUser.setPhone(sysUserRequest.getPhone());
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
|
|||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import javax.validation.constraints.Email;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
@ -60,13 +61,21 @@ public class SysUserRequest extends BaseRequest {
|
|||
/**
|
||||
* 密码,加密方式为BCrypt
|
||||
*/
|
||||
@NotBlank(message = "密码,加密方式为BCrypt不能为空", groups = {add.class})
|
||||
@NotBlank(message = "密码,加密方式为BCrypt不能为空", groups = {add.class,updatePwd.class})
|
||||
@ChineseDescription("密码,加密方式为BCrypt")
|
||||
private String password;
|
||||
|
||||
/**
|
||||
* 新密码
|
||||
*/
|
||||
@NotBlank(message = "新密码不能为空", groups = {updatePwd.class})
|
||||
@ChineseDescription("新密码")
|
||||
private String newPassword;
|
||||
|
||||
/**
|
||||
* 头像,存的为文件id
|
||||
*/
|
||||
@NotNull(message = "头像不能为空", groups = {updateAvatar.class})
|
||||
@ChineseDescription("头像,存的为文件id")
|
||||
private Long avatar;
|
||||
|
||||
|
@ -79,13 +88,14 @@ public class SysUserRequest extends BaseRequest {
|
|||
/**
|
||||
* 性别:M-男,F-女
|
||||
*/
|
||||
@NotBlank(message = "性别:M-男,F-女不能为空", groups = {add.class, edit.class})
|
||||
@NotBlank(message = "性别:M-男,F-女不能为空", groups = {add.class, edit.class,updateInfo.class})
|
||||
@ChineseDescription("性别:M-男,F-女")
|
||||
private String sex;
|
||||
|
||||
/**
|
||||
* 邮箱
|
||||
*/
|
||||
@Email(message = "邮箱格式错误", groups = {updateInfo.class})
|
||||
@ChineseDescription("邮箱")
|
||||
private String email;
|
||||
|
||||
|
@ -158,4 +168,21 @@ public class SysUserRequest extends BaseRequest {
|
|||
public @interface resetPassword {
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数校验分组:更新信息
|
||||
*/
|
||||
public @interface updateInfo {
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数校验分组:修改密码
|
||||
*/
|
||||
public @interface updatePwd {
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数校验分组:修改头像
|
||||
*/
|
||||
public @interface updateAvatar {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -94,5 +94,32 @@ public interface SysUserService extends IService<SysUser> {
|
|||
* @since 2023/6/12 14:55
|
||||
*/
|
||||
void resetPassword(SysUserRequest sysUserRequest);
|
||||
|
||||
/**
|
||||
* 更新用户信息(一般用于更新个人信息)
|
||||
*
|
||||
* @param sysUserRequest 请求参数封装
|
||||
* @author fengshuonan
|
||||
* @date 2020/11/21 12:32
|
||||
*/
|
||||
void editInfo(SysUserRequest sysUserRequest);
|
||||
|
||||
/**
|
||||
* 修改密码
|
||||
*
|
||||
* @param sysUserRequest 请求参数封装
|
||||
* @author fengshuonan
|
||||
* @date 2020/11/21 14:26
|
||||
*/
|
||||
void editPassword(SysUserRequest sysUserRequest);
|
||||
|
||||
/**
|
||||
* 修改头像
|
||||
*
|
||||
* @param sysUserRequest 修改头像参数
|
||||
* @author luojie
|
||||
* @date 2020/11/6 13:47
|
||||
*/
|
||||
void editAvatar(SysUserRequest sysUserRequest);
|
||||
|
||||
}
|
|
@ -4,7 +4,9 @@ import cn.hutool.core.bean.BeanUtil;
|
|||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
|
||||
import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi;
|
||||
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
|
||||
import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
|
||||
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
|
||||
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
|
||||
|
@ -18,6 +20,7 @@ import cn.stylefeng.roses.kernel.sys.api.expander.SysConfigExpander;
|
|||
import cn.stylefeng.roses.kernel.sys.api.pojo.user.UserOrgDTO;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.user.entity.SysUser;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.user.enums.SysUserExceptionEnum;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.user.factory.SysUserCreateFactory;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.user.mapper.SysUserMapper;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.user.pojo.request.SysUserRequest;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.user.service.SysUserOrgService;
|
||||
|
@ -262,4 +265,78 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void editInfo(SysUserRequest sysUserRequest) {
|
||||
|
||||
// 获取当前登录用户的id
|
||||
sysUserRequest.setUserId(LoginContext.me().getLoginUser().getUserId());
|
||||
SysUser sysUser = this.querySysUser(sysUserRequest);
|
||||
|
||||
// 填充更新用户的信息
|
||||
SysUserCreateFactory.fillUpdateInfo(sysUserRequest, sysUser);
|
||||
|
||||
this.updateById(sysUser);
|
||||
|
||||
// 清除缓存中的用户信息
|
||||
//sysUserCacheOperatorApi.remove(String.valueOf(sysUser.getUserId()));
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void editPassword(SysUserRequest sysUserRequest) {
|
||||
|
||||
|
||||
// 获取当前用户的userId
|
||||
LoginUser loginUser = LoginContext.me().getLoginUser();
|
||||
sysUserRequest.setUserId(loginUser.getUserId());
|
||||
|
||||
SysUser sysUser = this.querySysUser(sysUserRequest);
|
||||
|
||||
// 新密码与原密码相同
|
||||
if (sysUserRequest.getNewPassword().equals(sysUserRequest.getPassword())) {
|
||||
throw new ServiceException(SysUserExceptionEnum.USER_PWD_REPEAT);
|
||||
}
|
||||
|
||||
// 原密码错误
|
||||
if (!passwordStoredEncryptApi.checkPassword(sysUserRequest.getPassword(), sysUser.getPassword())) {
|
||||
throw new ServiceException(SysUserExceptionEnum.USER_PWD_ERROR);
|
||||
}
|
||||
|
||||
sysUser.setPassword(passwordStoredEncryptApi.encrypt(sysUserRequest.getNewPassword()));
|
||||
this.updateById(sysUser);
|
||||
|
||||
// 清除缓存中的用户信息
|
||||
//sysUserCacheOperatorApi.remove(String.valueOf(sysUser.getUserId()));
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void editAvatar(SysUserRequest sysUserRequest) {
|
||||
|
||||
|
||||
// 新头像文件id
|
||||
Long fileId = sysUserRequest.getAvatar();
|
||||
|
||||
// 从当前用户获取用户id
|
||||
LoginUser loginUser = LoginContext.me().getLoginUser();
|
||||
sysUserRequest.setUserId(loginUser.getUserId());
|
||||
|
||||
// 更新用户头像
|
||||
SysUser sysUser = this.querySysUser(sysUserRequest);
|
||||
sysUser.setAvatar(fileId);
|
||||
this.updateById(sysUser);
|
||||
|
||||
// 更新当前用户的session信息
|
||||
//SimpleUserInfo simpleUserInfo = loginUser.getSimpleUserInfo();
|
||||
//simpleUserInfo.setAvatar(fileId);
|
||||
//sessionManagerApi.updateSession(LoginContext.me().getToken(), loginUser);
|
||||
|
||||
// 清除缓存中的用户信息
|
||||
//sysUserCacheOperatorApi.remove(String.valueOf(sysUser.getUserId()));
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue