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
+


@@ -12,7 +20,9 @@

[](https://gitee.com/TDuckApp/tduck-platform/stargazers)
### 联系作者/加入社群
-
+
+
+## 群聊人数已经满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();