fix: update password

This commit is contained in:
huchuansai
2025-07-04 10:37:26 +08:00
parent e7df05ccee
commit dd57c27269
4 changed files with 53 additions and 0 deletions

View File

@@ -149,6 +149,17 @@ public class SysUserController {
return R.ok(); return R.ok();
} }
@ApiOperation(value = "修改用户密码", notes = "修改当前用户的密码")
@ApiResponses({
@ApiResponse(code = 200, message = "操作成功")
})
@PostMapping(value = "/profile/updatePwd")
public R updatePasswordV2(@ApiParam(value = "密码修改参数", required = true) @Valid @RequestBody UpdateUserPasswordParamV2 param) {
userService.updatePasswordV2(param);
return R.ok();
}
@ApiOperation(value = "修改用户手机号", notes = "修改当前用户的手机号") @ApiOperation(value = "修改用户手机号", notes = "修改当前用户的手机号")
@ApiResponses({ @ApiResponses({
@ApiResponse(code = 200, message = "操作成功") @ApiResponse(code = 200, message = "操作成功")

View File

@@ -151,4 +151,6 @@ public interface SysUserService extends IService<SysUserEntity> {
void updateMobile(UpdateUserMobileParam param); void updateMobile(UpdateUserMobileParam param);
void logoutUser(String uid); void logoutUser(String uid);
void updatePasswordV2(UpdateUserPasswordParamV2 param);
} }

View File

@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.starry.admin.manager.AsyncManager;
import com.starry.admin.manager.factory.AsyncFactory;
import com.starry.admin.modules.clerk.module.entity.PlayClerkUserInfoEntity; import com.starry.admin.modules.clerk.module.entity.PlayClerkUserInfoEntity;
import com.starry.admin.modules.clerk.service.IPlayClerkUserInfoService; import com.starry.admin.modules.clerk.service.IPlayClerkUserInfoService;
import com.starry.admin.modules.personnel.module.entity.PlayPersonnelAdminInfoEntity; import com.starry.admin.modules.personnel.module.entity.PlayPersonnelAdminInfoEntity;
@@ -29,12 +31,14 @@ import com.starry.admin.modules.system.vo.*;
import com.starry.admin.utils.SecurityUtils; import com.starry.admin.utils.SecurityUtils;
import com.starry.admin.utils.SmsUtils; import com.starry.admin.utils.SmsUtils;
import com.starry.common.annotation.DataScope; import com.starry.common.annotation.DataScope;
import com.starry.common.constant.Constants;
import com.starry.common.constant.UserConstants; import com.starry.common.constant.UserConstants;
import com.starry.common.redis.RedisCache; import com.starry.common.redis.RedisCache;
import com.starry.common.utils.IdUtils; import com.starry.common.utils.IdUtils;
import com.starry.common.utils.StringUtils; import com.starry.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -359,4 +363,16 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUserEntity
String key2 = object.toString(); String key2 = object.toString();
redisCache.deleteObject(key2); redisCache.deleteObject(key2);
} }
@Override
public void updatePasswordV2(UpdateUserPasswordParamV2 param) {
String userId = SecurityUtils.getUserId();
SysUserEntity user = selectUserById(userId);
if (!passwordEncoder.matches(param.getOldPassword(), user.getPassWord())) {
throw new BadCredentialsException("旧密码不正确");
}
this.update(Wrappers.lambdaUpdate(SysUserEntity.class).eq(SysUserEntity::getUserId, userId).set(SysUserEntity::getPassWord, SecurityUtils.encryptPassword(param.getNewPassword())));
AsyncManager.me().execute(AsyncFactory.recordLoginLog(user.getUserCode(), Constants.LOGIN_SUCCESS, "修改密码"));
logoutUser(userId);
}
} }

View File

@@ -0,0 +1,24 @@
package com.starry.admin.modules.system.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author: huchuansai
* @Date: 2024/6/14 3:05 PM
* @Description:
*/
@Data
@ApiModel(value = "修改密码参数", description = "用户修改密码的请求参数")
public class UpdateUserPasswordParamV2 {
@NotBlank(message = "新密码不能为空")
private String newPassword;
@NotBlank(message = "旧密码不能为空")
private String oldPassword;
}