个人信息修改,密码修改,头像修改代码迁移

pull/57/head
Liyanjun 2023-06-25 09:28:23 +08:00
parent c60fc87648
commit 94cbca9177
6 changed files with 261 additions and 3 deletions

View File

@ -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<>();
}
}

View File

@ -28,7 +28,17 @@ public enum SysUserExceptionEnum implements AbstractExceptionEnum {
* <p> * <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", "新密码与原密码相同,请更换新密码");
/** /**
* *

View File

@ -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());
}
}

View File

@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@ -60,13 +61,21 @@ public class SysUserRequest extends BaseRequest {
/** /**
* BCrypt * BCrypt
*/ */
@NotBlank(message = "密码加密方式为BCrypt不能为空", groups = {add.class}) @NotBlank(message = "密码加密方式为BCrypt不能为空", groups = {add.class,updatePwd.class})
@ChineseDescription("密码加密方式为BCrypt") @ChineseDescription("密码加密方式为BCrypt")
private String password; private String password;
/**
*
*/
@NotBlank(message = "新密码不能为空", groups = {updatePwd.class})
@ChineseDescription("新密码")
private String newPassword;
/** /**
* id * id
*/ */
@NotNull(message = "头像不能为空", groups = {updateAvatar.class})
@ChineseDescription("头像存的为文件id") @ChineseDescription("头像存的为文件id")
private Long avatar; private Long avatar;
@ -79,13 +88,14 @@ public class SysUserRequest extends BaseRequest {
/** /**
* M-F- * 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-女") @ChineseDescription("性别M-男F-女")
private String sex; private String sex;
/** /**
* *
*/ */
@Email(message = "邮箱格式错误", groups = {updateInfo.class})
@ChineseDescription("邮箱") @ChineseDescription("邮箱")
private String email; private String email;
@ -158,4 +168,21 @@ public class SysUserRequest extends BaseRequest {
public @interface resetPassword { public @interface resetPassword {
} }
/**
*
*/
public @interface updateInfo {
}
/**
*
*/
public @interface updatePwd {
}
/**
*
*/
public @interface updateAvatar {
}
} }

View File

@ -95,4 +95,31 @@ public interface SysUserService extends IService<SysUser> {
*/ */
void resetPassword(SysUserRequest sysUserRequest); 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);
} }

View File

@ -4,7 +4,9 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.extra.spring.SpringUtil; 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.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.PageFactory;
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity; 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.api.pojo.user.UserOrgDTO;
import cn.stylefeng.roses.kernel.sys.modular.user.entity.SysUser; 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.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.mapper.SysUserMapper;
import cn.stylefeng.roses.kernel.sys.modular.user.pojo.request.SysUserRequest; import cn.stylefeng.roses.kernel.sys.modular.user.pojo.request.SysUserRequest;
import cn.stylefeng.roses.kernel.sys.modular.user.service.SysUserOrgService; 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()));
}
} }