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项目上线时间不足一年,还有许多地方需要打磨; - Tduck项目上线时间不足一年,还有许多地方需要打磨;
- 由于不是专职做开源,更新速度相对缓慢,但是一直都在不停的迭代(加班打码...) - 由于不是专职做开源,更新速度相对缓慢,但是一直都在不停的迭代(加班打码...)
- 遇到问题可以进群咨询一下已经完成部署的大佬,并且在部署时参照部署文档进行部署; - 遇到问题可以进群咨询一下已经完成部署的大佬,并且在部署时参照文档进行部署;
- 由于涉及到微信、QQ登录需要准备相应账号; - 由于涉及到微信、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) ![ ](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.entity.UserEntity;
import com.tduck.cloud.account.request.UpdateUserRequest;
/** /**
* 账号验证码 * 账号验证码
@ -37,12 +38,11 @@ public interface UserValidateService {
void sendUpdateAccountEmail(String email, Long userId); void sendUpdateAccountEmail(String email, Long userId);
/** /**
* 发送绑定账号邮箱 * 获取需要更改邮箱的UserId
* *
* @param email * @param request
* @param key
*/ */
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.captcha.generator.RandomGenerator;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.tduck.cloud.account.constant.AccountRedisKeyConstants; import com.tduck.cloud.account.constant.AccountRedisKeyConstants;
import com.tduck.cloud.account.entity.UserEntity; 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.account.service.UserValidateService;
import com.tduck.cloud.common.constant.CommonConstants; import com.tduck.cloud.common.constant.CommonConstants;
import com.tduck.cloud.common.email.MailService; import com.tduck.cloud.common.email.MailService;
@ -65,21 +67,21 @@ public class UserValidateServiceImpl implements UserValidateService {
@Override @Override
public void sendUpdateAccountEmail(String email, Long userId) { public void sendUpdateAccountEmail(String email, Long userId) {
String code = IdUtil.fastUUID(); 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)); Map<String, Object> params = ImmutableMap.of("updateEmailUrl", StrUtil.format(updateEmailUrl, code, email));
mailService.sendTemplateHtmlMail(email, RESET_PWD_EMAIL_TITLE, "mail/update-account-email", params); mailService.sendTemplateHtmlMail(email, RESET_PWD_EMAIL_TITLE, "mail/update-account-email", params);
} }
@Override @Override
public Boolean checkUpdateAccountEmail(String email, String key) { public Long getUpdateEmailUserId(UpdateUserRequest.Email request) {
String emailCodeKey = StrUtil.format(AccountRedisKeyConstants.UPDATE_USER_EMAIL_CODE, key); String emailCodeKey = StrUtil.format(AccountRedisKeyConstants.UPDATE_USER_EMAIL_CODE, request.getKey(), request.getEmail());
String validateKey = redisUtils.get(emailCodeKey, String.class); Long userId = redisUtils.get(emailCodeKey, Long.class);
if (key.equals(validateKey)) { if (ObjectUtil.isNotNull(userId)) {
redisUtils.remove(emailCodeKey); 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 * @return
*/ */
@Login
@PostMapping("/update/email") @PostMapping("/update/email")
public Result updateUserEmail(@RequestBody UpdateUserRequest.Email request, @RequestAttribute Long userId) { public Result updateUserEmail(@RequestBody UpdateUserRequest.Email request) {
Validator.validateEmail(request.getEmail(), "邮箱地址不正确"); Validator.validateEmail(request.getEmail(), "邮箱地址不正确");
UserEntity userEntity = userService.getUserByEmail(request.getEmail()); UserEntity userEntity = userService.getUserByEmail(request.getEmail());
if (ObjectUtil.isNotNull(userEntity)) { if (ObjectUtil.isNotNull(userEntity)) {
return Result.failed("该邮箱已被绑定"); return Result.failed("该邮箱已被绑定");
} }
Boolean checkUpdateAccountEmail = userValidateService.checkUpdateAccountEmail(request.getEmail(), request.getKey()); Long userId = userValidateService.getUpdateEmailUserId(request);
if (!checkUpdateAccountEmail) { if (ObjectUtil.isNull(userId)) {
return Result.success(false); return Result.success(false);
} }
userEntity = new UserEntity(); userEntity = new UserEntity();

Loading…
Cancel
Save