From 59b7be00ebd12b99783166fbfabaa4660ce6853f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Tue, 19 May 2020 19:53:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AF=86=E7=A0=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E7=9A=84api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../blog/controller/UserController.java | 8 ++++++ .../cn/celess/blog/enmu/ResponseEnum.java | 4 ++- .../cn/celess/blog/service/UserService.java | 9 +++++++ .../service/serviceimpl/UserServiceImpl.java | 14 ++++++++++ .../blog/controller/UserControllerTest.java | 27 +++++++++++++++++++ 5 files changed, 61 insertions(+), 1 deletion(-) diff --git a/src/main/java/cn/celess/blog/controller/UserController.java b/src/main/java/cn/celess/blog/controller/UserController.java index 5e4a7ca..8a31601 100644 --- a/src/main/java/cn/celess/blog/controller/UserController.java +++ b/src/main/java/cn/celess/blog/controller/UserController.java @@ -93,6 +93,14 @@ public class UserController { return ResponseUtil.success(userService.reSetPwd(verifyId, email, pwd)); } + @PostMapping("/user/setPwd") + public Response setPwd(@RequestParam("pwd") String pwd, + @RequestParam("newPwd") String newPwd, + @RequestParam("confirmPwd") String confirmPwd) { + return ResponseUtil.success(userService.setPwd(pwd,newPwd,confirmPwd)); + } + + @DeleteMapping("/admin/user/delete") public Response multipleDelete(@RequestBody Integer[] ids) { return ResponseUtil.success(userService.deleteUser(ids)); diff --git a/src/main/java/cn/celess/blog/enmu/ResponseEnum.java b/src/main/java/cn/celess/blog/enmu/ResponseEnum.java index ae6b3fe..e26c48a 100644 --- a/src/main/java/cn/celess/blog/enmu/ResponseEnum.java +++ b/src/main/java/cn/celess/blog/enmu/ResponseEnum.java @@ -28,8 +28,10 @@ public enum ResponseEnum { USEREMAIL_NULL(3310, "未设置邮箱"), USEREMAIL_NOT_VERIFY(3320, "邮箱未验证"), LOGIN_LATER(3500, "错误次数已达5次,请稍后再试"), - PWD_SAME(3600, "新密码与原密码相同"), + PWD_SAME(3601, "新密码与原密码相同"), + PWD_NOT_SAME(3602, "新密码与原密码不相同"), LOGIN_EXPIRED(3700, "登陆过期"), + PWD_WRONG(3800, "密码不正确"), JWT_EXPIRED(3810, "Token过期"), JWT_MALFORMED(3820, "Token格式不对"), diff --git a/src/main/java/cn/celess/blog/service/UserService.java b/src/main/java/cn/celess/blog/service/UserService.java index c584b20..36ca86b 100644 --- a/src/main/java/cn/celess/blog/service/UserService.java +++ b/src/main/java/cn/celess/blog/service/UserService.java @@ -174,4 +174,13 @@ public interface UserService { * @return true:存在 false:不存在 */ boolean getStatusOfEmail(String email); + + /** + * 设置密码 + * @param pwd + * @param newPwd + * @param confirmPwd + * @return + */ + UserModel setPwd(String pwd, String newPwd, String confirmPwd); } diff --git a/src/main/java/cn/celess/blog/service/serviceimpl/UserServiceImpl.java b/src/main/java/cn/celess/blog/service/serviceimpl/UserServiceImpl.java index 3cce8eb..ecbbe73 100644 --- a/src/main/java/cn/celess/blog/service/serviceimpl/UserServiceImpl.java +++ b/src/main/java/cn/celess/blog/service/serviceimpl/UserServiceImpl.java @@ -433,6 +433,20 @@ public class UserServiceImpl implements UserService { return userMapper.existsByEmail(email); } + @Override + public UserModel setPwd(String pwd, String newPwd, String confirmPwd) { + User user = redisUserUtil.get(); + String pwd1 = userMapper.getPwd(user.getEmail()); + if (!MD5Util.getMD5(pwd).equals(pwd1)) { + throw new MyException(ResponseEnum.PWD_WRONG); + } + if (!newPwd.equals(confirmPwd)) { + throw new MyException(ResponseEnum.PWD_NOT_SAME); + } + userMapper.updatePwd(user.getEmail(), MD5Util.getMD5(newPwd)); + return trans(userMapper.findByEmail(user.getEmail())); + } + private UserModel trans(User u) { UserModel user = new UserModel(); user.setId(u.getId()); diff --git a/src/test/java/cn/celess/blog/controller/UserControllerTest.java b/src/test/java/cn/celess/blog/controller/UserControllerTest.java index 39c0d46..c4eb7f2 100644 --- a/src/test/java/cn/celess/blog/controller/UserControllerTest.java +++ b/src/test/java/cn/celess/blog/controller/UserControllerTest.java @@ -14,6 +14,9 @@ import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.mock.web.MockMultipartFile; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; + import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; @@ -247,4 +250,28 @@ public class UserControllerTest extends BaseTest { assertTrue(JSONObject.fromObject(content).getBoolean(Result)); }); } + + @Test + public void setPwd() throws Exception { + String email = UUID.randomUUID().toString().substring(0, 4) + "@celess.cn"; + assertEquals(1, userMapper.addUser(email, MD5Util.getMD5("1234567890"))); + LoginReq req = new LoginReq(); + req.setEmail(email); + req.setPassword("1234567890"); + req.setIsRememberMe(false); + JSONObject loginReq = JSONObject.fromObject(req); + String contentAsString = mockMvc.perform(post("/login").content(loginReq.toString()).contentType("application/json")).andReturn().getResponse().getContentAsString(); + assertNotNull(contentAsString); + String token = JSONObject.fromObject(contentAsString).getJSONObject(Result).getString("token"); + assertNotNull(token); + MultiValueMap param = new LinkedMultiValueMap(); + param.add("pwd", "1234567890"); + param.add("newPwd", "aaabbbccc"); + param.add("confirmPwd", "aaabbbccc"); + mockMvc.perform(post("/user/setPwd").header("Authorization", token).params(param)).andDo(result -> { + String content = result.getResponse().getContentAsString(); + assertEquals(SUCCESS.getCode(), JSONObject.fromObject(content).getInt(Code)); + assertEquals(MD5Util.getMD5("aaabbbccc"), userMapper.getPwd(email)); + }); + } } \ No newline at end of file