1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
| private static final String PHONE_REGEX = "^1[3-9]\\d{9}$";
@Override public ResponseResult updateUserInfo(UpdateUserInfoDto updateUserInfoDto) { Long currentUserId = SecurityUtils.getUserId(); if (currentUserId == null) { return ResponseResult.errorResult(AppHttpCodeEnum.NEED_LOGIN); }
if (!StringUtils.hasText(updateUserInfoDto.getNickname())) { return ResponseResult.errorResult(AppHttpCodeEnum.NICKNAME_NOT_NULL, "昵称不能为空"); }
if (!StringUtils.hasText(updateUserInfoDto.getEmail()) && !StringUtils.hasText(updateUserInfoDto.getPhone())) { return ResponseResult.errorResult(AppHttpCodeEnum.SYSTEM_ERROR, "邮箱和电话号码不能同时为空"); }
if (StringUtils.hasText(updateUserInfoDto.getPhone()) && !updateUserInfoDto.getPhone().matches(PHONE_REGEX)) { return ResponseResult.errorResult(AppHttpCodeEnum.PHONE_FORMAT_ERROR, "请输入正确的手机号码"); }
if (StringUtils.hasText(updateUserInfoDto.getPhone())) { LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SysUser::getPhone, updateUserInfoDto.getPhone()) .ne(SysUser::getId, currentUserId); SysUser existSysUser = getOne(queryWrapper); if (existSysUser != null) { return ResponseResult.errorResult(AppHttpCodeEnum.PHONE_OCCUPIED, "你用别人的电话号码干嘛?"); } }
if (StringUtils.hasText(updateUserInfoDto.getEmail())) { LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SysUser::getEmail, updateUserInfoDto.getEmail()) .ne(SysUser::getId, currentUserId); SysUser existSysUser = getOne(queryWrapper); if (existSysUser != null) { return ResponseResult.errorResult(AppHttpCodeEnum.EMAIL_OCCUPIED, "你用别人的邮箱干嘛?"); } }
if (StringUtils.hasText(updateUserInfoDto.getNickname())) { LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SysUser::getNickname, updateUserInfoDto.getNickname()) .ne(SysUser::getId, currentUserId); SysUser existSysUser = getOne(queryWrapper); if (existSysUser != null) { return ResponseResult.errorResult(AppHttpCodeEnum.NICKNAME_OCCUPIED, "这个昵称和别人的重复啦!"); } }
SysUser oldSysUser = getById(currentUserId);
String avatar = updateUserInfoDto.getAvatar(); if (StringUtils.hasText(avatar) && avatar.contains("temp/")) { avatar = ossFileService.moveTempToFormal(avatar); }
String oldAvatar = oldSysUser.getAvatar(); if (StringUtils.hasText(avatar) && StringUtils.hasText(oldAvatar) && !avatar.equals(oldAvatar)) { try { ossFileService.deleteFileByUrl(oldAvatar); log.info("从oss中删除旧头像成功: {}", oldAvatar); } catch (Exception e) { log.warn("从oss中删除旧头像失败: {}, 错误: {}", oldAvatar, e.getMessage()); } }
LambdaUpdateWrapper<SysUser> wrapper = new LambdaUpdateWrapper<SysUser>() .eq(SysUser::getId, currentUserId) .set(SysUser::getNickname, updateUserInfoDto.getNickname()) .set(SysUser::getSex, updateUserInfoDto.getSex()) .set(SysUser::getPhone, StringUtils.hasText(updateUserInfoDto.getPhone()) ? updateUserInfoDto.getPhone() : null) .set(SysUser::getEmail, StringUtils.hasText(updateUserInfoDto.getEmail()) ? updateUserInfoDto.getEmail() : null) .set(SysUser::getAvatar, avatar);
boolean success = update(null, wrapper); if (!success) { return ResponseResult.errorResult(AppHttpCodeEnum.SYSTEM_ERROR, "更新用户信息失败"); }
boolean avatarChanged = !avatar.equals(oldSysUser.getAvatar()); boolean nicknameChanged = !updateUserInfoDto.getNickname().equals(oldSysUser.getNickname());
if (avatarChanged || nicknameChanged) { LambdaUpdateWrapper<com.mengze.domain.entity.Comment> commentWrapper = new LambdaUpdateWrapper<com.mengze.domain.entity.Comment>() .eq(com.mengze.domain.entity.Comment::getUserId, currentUserId);
if (avatarChanged) { commentWrapper.set(com.mengze.domain.entity.Comment::getAvatar, avatar); } if (nicknameChanged) { commentWrapper.set(com.mengze.domain.entity.Comment::getNickname, updateUserInfoDto.getNickname()); }
commentMapper.update(null, commentWrapper); }
return ResponseResult.okResult(); }
|