Browse Source

Merge branch 'master' of https://gitee.com/TDuckApp/tduck-platform

 Conflicts:
	README.md
dev
wangqing 4 years ago
parent
commit
8011b12146
  1. 4
      README.md
  2. 2
      tduck-account/src/main/java/com/tduck/cloud/account/constant/AccountRedisKeyConstants.java
  3. 8
      tduck-account/src/main/java/com/tduck/cloud/account/service/UserValidateService.java
  4. 16
      tduck-account/src/main/java/com/tduck/cloud/account/service/impl/UserValidateServiceImpl.java
  5. 7
      tduck-api/src/main/java/com/tduck/cloud/api/web/controller/UserController.java

4
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)

2
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:{}:{}";
}

8
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);
/**
* 发送短信验证码

16
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<String, Object> 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;
}

7
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();

Loading…
Cancel
Save