Procházet zdrojové kódy

修改修改密码接口

guo00guo před 5 roky
rodič
revize
508f5f8719

+ 2 - 1
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/util/EncryptionUtil.java

@@ -141,6 +141,7 @@ public class EncryptionUtil {
         // 用密钥初始化Cipher对象
         cipher.init(Cipher.DECRYPT_MODE, securekey, sr);
 
-        return cipher.doFinal(data);
+        byte[] bytes = cipher.doFinal(data);
+        return bytes;
     }
 }

+ 17 - 3
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/ctrl/UserController.java

@@ -96,9 +96,7 @@ public class UserController extends BaseController {
 
     @RequestMapping(value = UrlConstants.API + "verify/mail", method = RequestMethod.PUT)
     public ResponseResult<String> sendVerifyEmail(@RequestBody UserDTO userDTO){
-        ResponseResult<String> result = new ResponseResult<>();
-        result = userLogic.sendVerifyEmail(userDTO);
-        return result;
+        return userLogic.sendVerifyEmail(userDTO);
     }
 
     @RequestMapping(value = UrlConstants.API + "verify/mobile", method = RequestMethod.PUT)
@@ -116,6 +114,11 @@ public class UserController extends BaseController {
         return userLogic.updateUserPassword(userVO, request);
     }
 
+    @RequestMapping(value = UrlConstants.API + "user/password/new", method = RequestMethod.PUT)
+    public ResponseResult<UserVO> updatePasswordNew(@RequestBody UserVO userVO, HttpServletRequest request){
+        return userLogic.updateUserPasswordNew(userVO, request);
+    }
+
     @RequestMapping(value = UrlConstants.API + "user/email", method = RequestMethod.PUT)
     public ResponseResult<UserVO> updateEmail(@RequestBody UserVO userVO, HttpServletRequest request){
         ResponseResult<UserVO> responseResult = userLogic.updateUserEmail(userVO, request);
@@ -127,6 +130,17 @@ public class UserController extends BaseController {
         return userLogic.updateUserMobile(userVO, request);
     }
 
+    /**
+     * 验证旧手机号和验证码
+     * @param userVO
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = UrlConstants.API + "user/old/mobile", method = RequestMethod.PUT)
+    public ResponseResult<UserVO> verifyOldMobile(@RequestBody UserVO userVO, HttpServletRequest request){
+        return userLogic.verifyOldMobile(userVO, request);
+    }
+
     @RequestMapping(value = UrlConstants.API + "bankInfo", method = RequestMethod.POST)
     public ModelAndView setBankInfo(BankAccountInfoVO infoVO, HttpServletRequest request){
         ResponseResult<Object> result = userLogic.setBankInfo(infoVO, request);

+ 4 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/UserLogic.java

@@ -55,10 +55,14 @@ public interface UserLogic {
 
     ResponseResult<UserVO> updateUserPassword(UserVO userVO, HttpServletRequest request);
 
+    ResponseResult<UserVO> updateUserPasswordNew(UserVO userVO, HttpServletRequest request);
+
     ResponseResult<UserVO> updateUserEmail(UserVO userVO, HttpServletRequest request);
 
     ResponseResult<UserVO> updateUserMobile(UserVO userVO, HttpServletRequest request);
 
+    ResponseResult<UserVO> verifyOldMobile(UserVO userVO, HttpServletRequest request);
+
     ResponseResult<Object> setBankInfo(BankAccountInfoVO infoVO, HttpServletRequest request);
 
     void saveRedirectUrl(String redirect, HttpServletRequest request);

+ 59 - 5
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/impl/UserLogicImpl.java

@@ -585,6 +585,38 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
     }
 
     @Override
+    public ResponseResult<UserVO> updateUserPasswordNew(UserVO userVO, HttpServletRequest request){
+        ResponseResult<UserVO> result = new ResponseResult<>();
+        Long userId = userVO.getId();
+        User user = userService.findById(userId);
+        try {
+            if(userId == null)
+                throw new Exception("用户未登录");
+            if (userVO.getPassword().length() > 16 || userVO.getPassword().length() < 6){
+                throw new Exception("密码长度应在6-16位");
+            }
+            if (!EncryptionUtil.encryptMD5(userVO.getOldPassword()).equals(user.getPassword()))
+                throw new Exception("旧密码错误");
+
+            String password = EncryptionUtil.encryptMD5(userVO.getPassword());
+            user.setPassword(password);
+            user = userService.update(user);
+            userVO = userVOWrapper.wrap(user);
+            userVO.setPassword("");
+            userVO.setPassword2("");
+            result.init(ResponseStatus.SUCCESS, "密码修改成功", userVO);
+            LOG.info(result.getMsg()+" userId: "+userVO.getId());
+            request.getSession().removeAttribute("userId");
+            request.getSession().invalidate();
+        } catch (Exception e) {
+            result.init(ResponseStatus.FAILED, e.getMessage(), userVO);
+            LOG.error(result.getMsg(),e);
+            return result;
+        }
+        return result;
+    }
+
+    @Override
     public ResponseResult<UserVO> updateUserEmail(UserVO userVO, HttpServletRequest request) {
         ResponseResult<UserVO> result = new ResponseResult<>();
         Long userId = userVO.getId();
@@ -611,18 +643,18 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
     @Override
     public ResponseResult<UserVO> updateUserMobile(UserVO userVO, HttpServletRequest request) {
         ResponseResult<UserVO> result = new ResponseResult<>();
-        Long userId = Long.parseLong((String) request.getSession().getAttribute("userId"));
+        Long userId = userVO.getId();
+        User user = userService.findById(userId);
         try {
-            if (userId == null)
+            if(userId == null || !user.getPassword().equals(userVO.getPassword()))
                 throw new Exception("用户未登录");
             if (!verifyCodeService.validateVerifyCode("mobile", userVO.getMobile(), userVO.getVerifyCode()))
                 throw new Exception("验证码或手机号填写错误");
-            User user = userService.findById(userId);
-            if (!userVO.getMobile().equals(user.getMobile()) && userService.findByMobile(userVO.getMobile()) != null)
+            if (userVO.getMobile().equals(user.getMobile()) || userService.findByMobile(userVO.getMobile()) != null)
                 throw new Exception("该手机号码已被绑定");
             user.setMobile(userVO.getMobile());
             userVO = userVOWrapper.wrap(userService.update(user));
-            result.init(ResponseStatus.SUCCESS, "手机号修改成功", userVO);
+            result.init(ResponseStatus.SUCCESS, "手机号绑定成功", userVO);
             LOG.info(result.getMsg() + " userId: "+ userVO.getId() + " mobile: " + userVO.getMobile());
         } catch (Exception e){
             result.init(ResponseStatus.FAILED, e.getMessage(), userVO);
@@ -633,6 +665,28 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
     }
 
     @Override
+    public ResponseResult<UserVO> verifyOldMobile(UserVO userVO, HttpServletRequest request) {
+        ResponseResult<UserVO> result = new ResponseResult<>();
+        Long userId = userVO.getId();
+        User user = userService.findById(userId);
+        try {
+            if(userId == null || !user.getPassword().equals(userVO.getPassword()))
+                throw new Exception("用户未登录");
+            if (!verifyCodeService.validateVerifyCode("mobile", userVO.getMobile(), userVO.getVerifyCode()))
+                throw new Exception("验证码或手机号填写错误");
+            if (!userVO.getMobile().equals(user.getMobile()))
+                throw new Exception("此手机号不是用户绑定的手机号");
+            LOG.info(result.getMsg() + "旧手机验证成功 userId: "+ userVO.getId() + " mobile: " + userVO.getMobile());
+            result.init(ResponseStatus.SUCCESS, "验证成功", userVO);
+        } catch (Exception e){
+            result.init(ResponseStatus.FAILED, e.getMessage(), userVO);
+            LOG.info(result.getMsg(), e);
+            return result;
+        }
+        return result;
+    }
+
+    @Override
     public ResponseResult<Object> setBankInfo(BankAccountInfoVO infoVO, HttpServletRequest request) {
         try {
             infoVO.setId_card_front_url(ossUtil.upload(infoVO.getID_card_front(), OSSUtil.FileDirType.BANKINFO));