增加修改手机用户名功能

This commit is contained in:
wanggeng 2022-11-01 17:57:31 +08:00
parent 8e445822bd
commit cd4f1eaa1a
4 changed files with 107 additions and 16 deletions

View File

@ -0,0 +1,39 @@
package ink.wgink.pojo.vos;
import ink.wgink.annotation.CheckEmptyAnnotation;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
* @ClassName: UpdatePhoneUsernameVO
* @Description: 更改手机用户名
* @Author: wanggeng
* @Date: 2022/11/1 16:51
* @Version: 1.0
*/
@ApiModel
public class UpdatePhoneUsernameVO {
@ApiModelProperty(name = "newPhone", value = "新手机号")
@CheckEmptyAnnotation(name = "新手机号", verifyType = "newPhone")
private String newPhone;
@ApiModelProperty(name = "verificationCode", value = "verificationCode")
@CheckEmptyAnnotation(name = "验证码")
private String verificationCode;
public String getNewPhone() {
return newPhone == null ? "" : newPhone.trim();
}
public void setNewPhone(String newPhone) {
this.newPhone = newPhone;
}
public String getVerificationCode() {
return verificationCode == null ? "" : verificationCode.trim();
}
public void setVerificationCode(String verificationCode) {
this.verificationCode = verificationCode;
}
}

View File

@ -15,6 +15,7 @@ import ink.wgink.pojo.result.SuccessResultData;
import ink.wgink.pojo.vos.IdsVO;
import ink.wgink.pojo.vos.UpdatePasswordVO;
import ink.wgink.pojo.vos.UpdatePhonePasswordVO;
import ink.wgink.pojo.vos.UpdatePhoneUsernameVO;
import ink.wgink.service.user.pojo.dtos.AppUserDTO;
import ink.wgink.service.user.pojo.vos.UpdateUserVO;
import ink.wgink.service.user.service.IUserService;
@ -148,6 +149,31 @@ public class UserAppController extends DefaultBaseController {
return new SuccessResult();
}
@ApiOperation(value = "修改手机用户名", notes = "修改手机用户名接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "token", paramType = "header"),
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@PutMapping("update-phone-username/{phone}")
@CheckRequestBodyAnnotation
public SuccessResult updatePhoneUsername(@PathVariable("phone") String phone, @RequestBody UpdatePhoneUsernameVO updatePhoneUsernameVO) throws Exception {
if (smsBaseService == null) {
throw new DependencyException("短信依赖未引入");
}
String verifyCode = smsBaseService.getVerifyCode(updatePhoneUsernameVO.getNewPhone());
if (!RegexUtil.isPhone(phone)) {
throw new ParamsException("手机格式不正确");
}
if (StringUtils.isBlank(verifyCode)) {
throw new ParamsException("验证码为空");
}
if (!StringUtils.equalsIgnoreCase(verifyCode, updatePhoneUsernameVO.getVerificationCode())) {
throw new ParamsException("验证码错误");
}
userService.updatePhoneUsername(phone, updatePhoneUsernameVO);
return new SuccessResult();
}
@ApiOperation(value = "忘记手机密码", notes = "忘记手机密码接口")
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@PutMapping("forget-phone-password")

View File

@ -4,6 +4,7 @@ import ink.wgink.interfaces.user.IUserBaseService;
import ink.wgink.interfaces.user.IUserCheckService;
import ink.wgink.pojo.result.UploadExcelResultDTO;
import ink.wgink.pojo.vos.UpdatePasswordVO;
import ink.wgink.pojo.vos.UpdatePhoneUsernameVO;
import ink.wgink.service.user.enums.UserStateEnum;
import ink.wgink.service.user.enums.UserTypeEnum;
import ink.wgink.service.user.pojo.dtos.AppUserDTO;
@ -154,6 +155,15 @@ public interface IUserService extends IUserBaseService, IUserCheckService {
*/
void updateUsername(String userId, UpdateUsernameVO updateUsernameVO, boolean updateAdjustment);
/**
* 修改用户名
*
* @param phone
* @param updatePhoneUsernameVO
*/
void updatePhoneUsername(String phone, UpdatePhoneUsernameVO updatePhoneUsernameVO);
/**
* 修改密码
*

View File

@ -26,6 +26,7 @@ import ink.wgink.pojo.result.SuccessResultData;
import ink.wgink.pojo.result.SuccessResultList;
import ink.wgink.pojo.result.UploadExcelResultDTO;
import ink.wgink.pojo.vos.UpdatePasswordVO;
import ink.wgink.pojo.vos.UpdatePhoneUsernameVO;
import ink.wgink.service.user.dao.IUserDao;
import ink.wgink.service.user.enums.UserStateEnum;
import ink.wgink.service.user.enums.UserTypeEnum;
@ -259,13 +260,40 @@ public class UserServiceImpl extends DefaultBaseService implements IUserService
updateMongoLoginUser(userId);
if (updateAdjustment) {
updateUsernameAdjustment(userId, oldUserDTO.getUserUsername(), updateUsernameVO);
updateUsernameAdjustment(userId, oldUserDTO.getUserName(), oldUserDTO.getUserUsername(), updateUsernameVO);
}
if (userUpdateAfterHandler != null) {
userUpdateAfterHandler.handle(userId);
}
}
@Override
public void updatePhoneUsername(String phone, UpdatePhoneUsernameVO updatePhoneUsernameVO) {
UserPO userPO = getPOByUsername(phone);
if (userPO == null) {
throw new SearchException("用户名不存在");
}
UserPO newUserPO = getPOByUsername(updatePhoneUsernameVO.getNewPhone());
if (newUserPO != null && !StringUtils.equals(userPO.getUserId(), newUserPO.getUserId())) {
throw new SearchException("新用户名已经存在");
}
Map<String, Object> params = getHashMap(2);
params.put("userUsername", updatePhoneUsernameVO.getNewPhone());
params.put("userId", userPO.getUserId());
userDao.updateUsername(params);
updateMongoLoginUser(userPO.getUserId());
UpdateUsernameVO updateUsernameVO = new UpdateUsernameVO();
updateUsernameVO.setUsername(updatePhoneUsernameVO.getNewPhone());
updateUsernameVO.setUpdateReason("用户自行修改");
updateUsernameAdjustment(userPO.getUserId(), userPO.getUserName(), userPO.getUserUsername(), updateUsernameVO);
if (userUpdateAfterHandler != null) {
userUpdateAfterHandler.handle(userPO.getUserId());
}
}
@Override
public void updatePassword(UpdatePasswordVO updatePasswordVO) {
updatePasswordByUserId(securityComponent.getCurrentUser().getUserId(), updatePasswordVO);
@ -872,27 +900,15 @@ public class UserServiceImpl extends DefaultBaseService implements IUserService
* 更新用户名记录
*
* @param userId
* @param userName
* @param oldUsername
* @param updateUsernameVO
*/
private void updateUsernameAdjustment(String userId, String oldUsername, UpdateUsernameVO updateUsernameVO) {
Map<String, Object> params = getHashMap(1);
UserDTO updateUserDTO = get(userId);
if (updateUserDTO == null) {
throw new SearchException("修改用户不存在");
}
UserDTO userDTO = getByUsername(updateUsernameVO.getUsername());
if (userDTO != null && !StringUtils.equals(userId, userDTO.getUserId())) {
throw new SearchException("新用户名已经存在");
}
params.put("userId", userId);
params.put("userUsername", updateUsernameVO.getUsername());
userDao.updateUsername(params);
private void updateUsernameAdjustment(String userId, String userName, String oldUsername, UpdateUsernameVO updateUsernameVO) {
// 日志
UserAdjustmentBO userAdjustmentBO = new UserAdjustmentBO();
userAdjustmentBO.setUserId(userId);
userAdjustmentBO.setUserName(updateUserDTO.getUserName());
userAdjustmentBO.setUserName(userName);
userAdjustmentBO.setUpdateType(UserUpdateTypeEnum.USERNAME.getValue());
userAdjustmentBO.setOldValue(oldUsername);
userAdjustmentBO.setNewValue(updateUsernameVO.getUsername());