diff --git a/README.md b/README.md index 80cbebe..3634257 100644 --- a/README.md +++ b/README.md @@ -9,9 +9,9 @@ ### 各位老铁,感谢您的关注。 - Tduck项目上线时间不足一年,还有许多地方需要打磨; - 由于不是专职做开源,更新速度相对缓慢,但是一直都在不停的迭代(加班打码...) -- 遇到问题可以进群咨询一下已经完成部署的大佬,并且在部署时参照部署文档进行部署; +- 遇到问题可以进群咨询一下已经完成部署的大佬,并且在部署时参照文档进行部署; - 由于涉及到微信、QQ登录需要准备相应账号; -- 详情请见:部署文档 https://gitee.com/TDuckApp/tduck-platform/wikis/%E6%9C%AC%E5%9C%B0%E8%BF%90%E8%A1%8C?sort_id=3681729 +- 详情请见:[部署文档](https://gitee.com/TDuckApp/tduck-platform/wikis/%E6%9C%AC%E5%9C%B0%E8%BF%90%E8%A1%8C?sort_id=3681729) ![ ](https://img.shields.io/:license-apache-blue.svg) diff --git a/tduck-account/src/main/java/com/tduck/cloud/account/constant/AccountRedisKeyConstants.java b/tduck-account/src/main/java/com/tduck/cloud/account/constant/AccountRedisKeyConstants.java index 3e32fdb..36f42f6 100644 --- a/tduck-account/src/main/java/com/tduck/cloud/account/constant/AccountRedisKeyConstants.java +++ b/tduck-account/src/main/java/com/tduck/cloud/account/constant/AccountRedisKeyConstants.java @@ -30,5 +30,5 @@ public interface AccountRedisKeyConstants { /** * 修改邮箱验证 */ - String UPDATE_USER_EMAIL_CODE = "user:email:update:code:{}"; + String UPDATE_USER_EMAIL_CODE = "user:email:update:code:{}:{}"; } diff --git a/tduck-account/src/main/java/com/tduck/cloud/account/service/UserValidateService.java b/tduck-account/src/main/java/com/tduck/cloud/account/service/UserValidateService.java index 3d2c12b..abc1790 100644 --- a/tduck-account/src/main/java/com/tduck/cloud/account/service/UserValidateService.java +++ b/tduck-account/src/main/java/com/tduck/cloud/account/service/UserValidateService.java @@ -2,6 +2,7 @@ package com.tduck.cloud.account.service; import com.tduck.cloud.account.entity.UserEntity; +import com.tduck.cloud.account.request.UpdateUserRequest; /** * 账号验证码 @@ -37,12 +38,11 @@ public interface UserValidateService { void sendUpdateAccountEmail(String email, Long userId); /** - * 发送绑定账号邮箱 + * 获取需要更改邮箱的UserId * - * @param email - * @param key + * @param request */ - Boolean checkUpdateAccountEmail(String email, String key); + Long getUpdateEmailUserId(UpdateUserRequest.Email request); /** * 发送短信验证码 diff --git a/tduck-account/src/main/java/com/tduck/cloud/account/service/impl/UserValidateServiceImpl.java b/tduck-account/src/main/java/com/tduck/cloud/account/service/impl/UserValidateServiceImpl.java index 45d1a9a..d37224b 100644 --- a/tduck-account/src/main/java/com/tduck/cloud/account/service/impl/UserValidateServiceImpl.java +++ b/tduck-account/src/main/java/com/tduck/cloud/account/service/impl/UserValidateServiceImpl.java @@ -3,10 +3,12 @@ package com.tduck.cloud.account.service.impl; import cn.hutool.captcha.generator.RandomGenerator; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.google.common.collect.ImmutableMap; import com.tduck.cloud.account.constant.AccountRedisKeyConstants; import com.tduck.cloud.account.entity.UserEntity; +import com.tduck.cloud.account.request.UpdateUserRequest; import com.tduck.cloud.account.service.UserValidateService; import com.tduck.cloud.common.constant.CommonConstants; import com.tduck.cloud.common.email.MailService; @@ -65,21 +67,21 @@ public class UserValidateServiceImpl implements UserValidateService { @Override public void sendUpdateAccountEmail(String email, Long userId) { String code = IdUtil.fastUUID(); - redisUtils.set(StrUtil.format(AccountRedisKeyConstants.UPDATE_USER_EMAIL_CODE, code), userId); + redisUtils.set(StrUtil.format(AccountRedisKeyConstants.UPDATE_USER_EMAIL_CODE, code, email), userId); //发送邮件 Map params = ImmutableMap.of("updateEmailUrl", StrUtil.format(updateEmailUrl, code, email)); mailService.sendTemplateHtmlMail(email, RESET_PWD_EMAIL_TITLE, "mail/update-account-email", params); } @Override - public Boolean checkUpdateAccountEmail(String email, String key) { - String emailCodeKey = StrUtil.format(AccountRedisKeyConstants.UPDATE_USER_EMAIL_CODE, key); - String validateKey = redisUtils.get(emailCodeKey, String.class); - if (key.equals(validateKey)) { + public Long getUpdateEmailUserId(UpdateUserRequest.Email request) { + String emailCodeKey = StrUtil.format(AccountRedisKeyConstants.UPDATE_USER_EMAIL_CODE, request.getKey(), request.getEmail()); + Long userId = redisUtils.get(emailCodeKey, Long.class); + if (ObjectUtil.isNotNull(userId)) { redisUtils.remove(emailCodeKey); - return true; + return userId; } - return false; + return null; } diff --git a/tduck-api/src/main/java/com/tduck/cloud/api/web/controller/UserController.java b/tduck-api/src/main/java/com/tduck/cloud/api/web/controller/UserController.java index 192da53..3792fc0 100644 --- a/tduck-api/src/main/java/com/tduck/cloud/api/web/controller/UserController.java +++ b/tduck-api/src/main/java/com/tduck/cloud/api/web/controller/UserController.java @@ -105,16 +105,15 @@ public class UserController { * * @return */ - @Login @PostMapping("/update/email") - public Result updateUserEmail(@RequestBody UpdateUserRequest.Email request, @RequestAttribute Long userId) { + public Result updateUserEmail(@RequestBody UpdateUserRequest.Email request) { Validator.validateEmail(request.getEmail(), "邮箱地址不正确"); UserEntity userEntity = userService.getUserByEmail(request.getEmail()); if (ObjectUtil.isNotNull(userEntity)) { return Result.failed("该邮箱已被绑定"); } - Boolean checkUpdateAccountEmail = userValidateService.checkUpdateAccountEmail(request.getEmail(), request.getKey()); - if (!checkUpdateAccountEmail) { + Long userId = userValidateService.getUpdateEmailUserId(request); + if (ObjectUtil.isNull(userId)) { return Result.success(false); } userEntity = new UserEntity();