diff --git a/README.md b/README.md index ff73135..80cbebe 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,14 @@

Tduck 填鸭 —— 表单收集器

+# 前言 +### 各位老铁,感谢您的关注。 +- 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://img.shields.io/:license-apache-blue.svg) ![ ](https://img.shields.io/badge/JDK-1.8+-red.svg) @@ -12,7 +20,9 @@ ![ ](https://img.shields.io/badge/front-vue%2Belement--ui-blue) [![star](https://gitee.com/TDuckApp/tduck-platform/badge/star.svg?theme=white)](https://gitee.com/TDuckApp/tduck-platform/stargazers) ### 联系作者/加入社群 -![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/160818_e6d4bbf1_1674451.png "微信截图_20210331160806.png") +![输入图片说明](https://images.gitee.com/uploads/images/2021/0407/100054_10b7177d_1674451.png "微信截图_20210407095930.png") + +## 群聊人数已经满200,需要手动拉入 ## V2版本正在规划开发中,全新UI,更多功能;同时欢迎各位伙伴进群提出你的想法和需求 @@ -89,7 +99,6 @@ Tduck 填鸭:是基于B/S架构的一款开源的表单问卷在线收集系 ### 快速启动 -## 部署文档:https://gitee.com/TDuckApp/tduck-platform/wikis/%E6%9C%AC%E5%9C%B0%E8%BF%90%E8%A1%8C?sort_id=3681729 1. 配置最小开发环境: 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();