🔨 Refactor: temp

This commit is contained in:
fanxb 2019-11-06 22:06:09 +08:00
parent cfe535e2a8
commit 9b668b64c1
12 changed files with 145 additions and 27 deletions

View File

@ -56,20 +56,20 @@ public class BaseInfoController {
@PostMapping("/username") @PostMapping("/username")
public Result updateUsername(@Validated @RequestBody UsernameBody body) { public Result updateUsername(@Validated @RequestBody UsernameBody body) {
this.baseInfoService.updateUsername(body.getUsername()); this.baseInfoService.updateUsername(body.getUsername());
return null; return Result.success(null);
} }
/** /**
* Description: 修改邮箱需要先确认密码,获取checkId然后还需确认新邮箱 * Description: 修改邮箱还需校验新邮箱
* *
* @param email 新的邮箱地址 * @param body body
* @param checkId 确认id
* @return com.fanxb.bookmark.common.entity.Result * @return com.fanxb.bookmark.common.entity.Result
* @author fanxb * @author fanxb
* @date 2019/9/18 15:41 * @date 2019/9/18 15:41
*/ */
@PostMapping("/email") @PostMapping("/email")
public Result updateEmail(@Validated @RequestBody EmailUpdateBody body) { public Result updateEmail(@Validated @RequestBody EmailUpdateBody body) {
return null; baseInfoService.updateEmail(body);
return Result.success(null);
} }
} }

View File

@ -78,7 +78,7 @@ public class UserController {
/** /**
* Description: 用户登录 * Description: 用户登录
* *
* @param user 登录表单 * @param body 登录表单
* @return com.fanxb.bookmark.common.entity.Result * @return com.fanxb.bookmark.common.entity.Result
* @author fanxb * @author fanxb
* @date 2019/7/6 16:35 * @date 2019/7/6 16:35

View File

@ -19,6 +19,4 @@ public class EmailUpdateBody {
private String oldPass; private String oldPass;
@Email @Email
private String newEmail; private String newEmail;
private String code;
} }

View File

@ -3,7 +3,7 @@ package com.fanxb.bookmark.business.user.entity;
import lombok.Data; import lombok.Data;
/** /**
* 类功能简述 * 类功能简述记录用户id和要修改的邮件地址
* 类功能详述 * 类功能详述
* *
* @author fanxb * @author fanxb
@ -13,4 +13,12 @@ import lombok.Data;
public class EmailUpdateRedis { public class EmailUpdateRedis {
private int userId; private int userId;
private String email; private String email;
public EmailUpdateRedis() {
}
public EmailUpdateRedis(int userId, String email) {
this.userId = userId;
this.email = email;
}
} }

View File

@ -1,17 +1,22 @@
package com.fanxb.bookmark.business.user.service; package com.fanxb.bookmark.business.user.service;
import com.alibaba.fastjson.JSON;
import com.fanxb.bookmark.business.user.constant.RedisConstant;
import com.fanxb.bookmark.business.user.dao.UserDao; import com.fanxb.bookmark.business.user.dao.UserDao;
import com.fanxb.bookmark.business.user.entity.EmailUpdateBody; import com.fanxb.bookmark.business.user.entity.EmailUpdateBody;
import com.fanxb.bookmark.business.user.entity.EmailUpdateRedis;
import com.fanxb.bookmark.business.user.entity.UpdatePasswordBody; import com.fanxb.bookmark.business.user.entity.UpdatePasswordBody;
import com.fanxb.bookmark.common.constant.Constant; import com.fanxb.bookmark.common.constant.Constant;
import com.fanxb.bookmark.common.entity.MailInfo; import com.fanxb.bookmark.common.entity.MailInfo;
import com.fanxb.bookmark.common.exception.FormDataException; import com.fanxb.bookmark.common.exception.FormDataException;
import com.fanxb.bookmark.common.util.HashUtil; import com.fanxb.bookmark.common.util.*;
import com.fanxb.bookmark.common.util.MailUtil; import lombok.extern.slf4j.Slf4j;
import com.fanxb.bookmark.common.util.UserContextHolder;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
/** /**
* 类功能简述 * 类功能简述
* 类功能详述 * 类功能详述
@ -20,8 +25,14 @@ import org.springframework.stereotype.Service;
* @date 2019/9/18 15:54 * @date 2019/9/18 15:54
*/ */
@Service @Service
@Slf4j
public class BaseInfoService { public class BaseInfoService {
private static final String VERIFY_EMAIL = FileUtil.streamToString(BaseInfoService.class
.getClassLoader().getResourceAsStream("verifyEmail.html"));
private static final String VERIFY_EMAIL_PATH = "/public/verifyEmail?key=";
@Autowired @Autowired
private UserDao userDao; private UserDao userDao;
@ -46,15 +57,29 @@ public class BaseInfoService {
userDao.updateUsernameByUserId(UserContextHolder.get().getUserId(), username); userDao.updateUsernameByUserId(UserContextHolder.get().getUserId(), username);
} }
public void updateEmail(EmailUpdateBody body){ /**
* 功能描述: 预备更新email需要进行校验
*
* @param body body
* @author fanxb
* @date 2019/9/26 17:27
*/
public void updateEmail(EmailUpdateBody body) {
int userId = UserContextHolder.get().getUserId(); int userId = UserContextHolder.get().getUserId();
String realPass=userDao.selectByUserId(userId).getPassword(); String realPass = userDao.selectByUserId(userId).getPassword();
if (!realPass.equals(HashUtil.getPassword(body.getOldPass()))) { if (!realPass.equals(HashUtil.getPassword(body.getOldPass()))) {
throw new FormDataException("旧密码错误"); throw new FormDataException("旧密码错误");
} }
MailInfo info = new MailInfo(body.getNewEmail(),"验证邮箱",); String key = UUID.randomUUID().toString().replaceAll("-", "");
MailUtil.sendTextMail(); String url = VERIFY_EMAIL.replaceAll("XXXX", Constant.serviceAddress + VERIFY_EMAIL_PATH + key);
Constant log.debug(url);
MailInfo info = new MailInfo(body.getNewEmail(), "验证邮箱", url);
MailUtil.sendMail(info, true);
EmailUpdateRedis redisBody = new EmailUpdateRedis(userId, body.getNewEmail());
RedisUtil.set(RedisConstant.getUpdateEmailKey(key), JSON.toJSONString(redisBody), TimeUtil.DAY_MS);
}
public void verifyEmail(){
} }
} }

View File

@ -0,0 +1,8 @@
<html>
<head>
<title>邮箱验证</title>
</head>
<body>
<div style="padding-top:20px;text-align:center">访问 <a href="XXXX">XXXX</a> 验证您的邮箱。请于24小时内完成验证。</div>
</body>
</html>

View File

@ -61,4 +61,15 @@ public class Constant {
fileSavePath = path; fileSavePath = path;
} }
/**
* 服务部署地址
*/
public static String serviceAddress = "http://localhost";
@Value("${serviceAddress}")
public void setServiceAddress(String address) {
serviceAddress = address;
}
} }

View File

@ -0,0 +1,48 @@
package com.fanxb.bookmark.common.util;
import com.fanxb.bookmark.common.exception.CustomException;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.stream.Collectors;
/**
* 功能描述: 文件相关工具类
*
* @author fanxb
* @date 2019/9/26 16:45
*/
public class FileUtil {
/**
* 功能描述: 输入流转字符串注意经过此方法流会被关闭
*
* @param stream 输入流
* @param charSet 编码
* @return java.lang.String
* @author fanxb
* @date 2019/9/26 17:03
*/
public static String streamToString(InputStream stream, String charSet) {
try (
BufferedReader reader = new BufferedReader(new InputStreamReader(stream, charSet))
) {
return reader.lines().collect(Collectors.joining());
} catch (Exception e) {
throw new CustomException(e);
}
}
/**
* 功能描述: 使用utf-8将输入流转成字符串经过此方法流会被关闭
*
* @param stream stream
* @return java.lang.String
* @author fanxb
* @date 2019/9/26 17:05
*/
public static String streamToString(InputStream stream) {
return streamToString(stream, "utf-8");
}
}

View File

@ -32,6 +32,14 @@ public class MailUtil {
MailUtil.from = from; MailUtil.from = from;
} }
/**
* 功能描述: 发送邮件
*
* @param info 邮件体
* @param isHtml 是否为html邮件
* @author fanxb
* @date 2019/9/26 16:30
*/
public static void sendMail(MailInfo info, boolean isHtml) { public static void sendMail(MailInfo info, boolean isHtml) {
try { try {

View File

@ -69,3 +69,6 @@ es:
# 默认文件上传基路径 # 默认文件上传基路径
fileSavePath: ./ fileSavePath: ./
# 服务部署地址
serviceAddress: http://localhost

View File

@ -0,0 +1,8 @@
<html>
<head>
<title>邮箱验证</title>
</head>
<body>
<div style="padding-top:20px;text-align:center">访问 <a href="XXXX">XXXX</a> 验证您的邮箱。请于24小时内完成验证。</div>
</body>
</html>

View File

@ -3,7 +3,8 @@ const proxy = require("http-proxy-middleware");
module.exports = function(app) { module.exports = function(app) {
app.use( app.use(
proxy("/bookmark/api/**", { proxy("/bookmark/api/**", {
target: "http://10.82.17.56:8088/", target: "http://localhost:8088/",
// target: "http://ali.tapme.top:8083/",
changeOrigin: true changeOrigin: true
}) })
); );