diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/controller/BaseInfoController.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/controller/BaseInfoController.java index 997e17f..97b2a49 100644 --- a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/controller/BaseInfoController.java +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/controller/BaseInfoController.java @@ -56,20 +56,20 @@ public class BaseInfoController { @PostMapping("/username") public Result updateUsername(@Validated @RequestBody UsernameBody body) { this.baseInfoService.updateUsername(body.getUsername()); - return null; + return Result.success(null); } /** - * Description: 修改邮箱,需要先确认密码,获取checkId,然后还需确认新邮箱 + * Description: 修改邮箱,还需校验新邮箱 * - * @param email 新的邮箱地址 - * @param checkId 确认id + * @param body body * @return com.fanxb.bookmark.common.entity.Result * @author fanxb * @date 2019/9/18 15:41 */ @PostMapping("/email") public Result updateEmail(@Validated @RequestBody EmailUpdateBody body) { - return null; + baseInfoService.updateEmail(body); + return Result.success(null); } } diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/controller/UserController.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/controller/UserController.java index dc64eac..81f6a6a 100644 --- a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/controller/UserController.java +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/controller/UserController.java @@ -78,7 +78,7 @@ public class UserController { /** * Description: 用户登录 * - * @param user 登录表单 + * @param body 登录表单 * @return com.fanxb.bookmark.common.entity.Result * @author fanxb * @date 2019/7/6 16:35 diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/EmailUpdateBody.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/EmailUpdateBody.java index 8657f23..b0e85b3 100644 --- a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/EmailUpdateBody.java +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/EmailUpdateBody.java @@ -19,6 +19,4 @@ public class EmailUpdateBody { private String oldPass; @Email private String newEmail; - - private String code; } diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/EmailUpdateRedis.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/EmailUpdateRedis.java index d686c0f..48fe5bc 100644 --- a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/EmailUpdateRedis.java +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/EmailUpdateRedis.java @@ -3,7 +3,7 @@ package com.fanxb.bookmark.business.user.entity; import lombok.Data; /** - * 类功能简述: + * 类功能简述:记录用户id和要修改的邮件地址 * 类功能详述: * * @author fanxb @@ -13,4 +13,12 @@ import lombok.Data; public class EmailUpdateRedis { private int userId; private String email; + + public EmailUpdateRedis() { + } + + public EmailUpdateRedis(int userId, String email) { + this.userId = userId; + this.email = email; + } } diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/service/BaseInfoService.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/service/BaseInfoService.java index a75350c..3dec99d 100644 --- a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/service/BaseInfoService.java +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/service/BaseInfoService.java @@ -1,17 +1,22 @@ 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.entity.EmailUpdateBody; +import com.fanxb.bookmark.business.user.entity.EmailUpdateRedis; import com.fanxb.bookmark.business.user.entity.UpdatePasswordBody; import com.fanxb.bookmark.common.constant.Constant; import com.fanxb.bookmark.common.entity.MailInfo; import com.fanxb.bookmark.common.exception.FormDataException; -import com.fanxb.bookmark.common.util.HashUtil; -import com.fanxb.bookmark.common.util.MailUtil; -import com.fanxb.bookmark.common.util.UserContextHolder; +import com.fanxb.bookmark.common.util.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; 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 */ @Service +@Slf4j 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 private UserDao userDao; @@ -46,15 +57,29 @@ public class BaseInfoService { 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(); - String realPass=userDao.selectByUserId(userId).getPassword(); + String realPass = userDao.selectByUserId(userId).getPassword(); if (!realPass.equals(HashUtil.getPassword(body.getOldPass()))) { throw new FormDataException("旧密码错误"); } - MailInfo info = new MailInfo(body.getNewEmail(),"验证邮箱",); - MailUtil.sendTextMail(); - Constant + String key = UUID.randomUUID().toString().replaceAll("-", ""); + String url = VERIFY_EMAIL.replaceAll("XXXX", Constant.serviceAddress + VERIFY_EMAIL_PATH + key); + 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(){ } } diff --git a/bookMarkService/business/user/src/main/resources/verifyEmail.html b/bookMarkService/business/user/src/main/resources/verifyEmail.html new file mode 100644 index 0000000..65e46ba --- /dev/null +++ b/bookMarkService/business/user/src/main/resources/verifyEmail.html @@ -0,0 +1,8 @@ + +
+