Browse Source

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

dev
wangqing 4 years ago
parent
commit
3f9bb25775
  1. 13
      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

13
README.md

@ -5,6 +5,14 @@
</p>
<h2 align="left">Tduck 填鸭 —— 表单收集器</h2>
# 前言
### 各位老铁,感谢您的关注。
- 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. 配置最小开发环境:

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