Pārlūkot izejas kodu

更换绑定手机验证码

qxy 2 nedēļas atpakaļ
vecāks
revīzija
1714b0eb61

+ 16 - 4
alien-store/src/main/java/shop/alien/store/controller/StoreUserController.java

@@ -96,13 +96,13 @@ public class StoreUserController {
     @ApiImplicitParams({@ApiImplicitParam(name = "phone", value = "手机号", dataType = "String", paramType = "query", required = true),
             @ApiImplicitParam(name = "newPhone", value = "新手机号", dataType = "String", paramType = "query"),
             @ApiImplicitParam(name = "oldPassword", value = "旧密码", dataType = "String", paramType = "query"),
-            @ApiImplicitParam(name = "newPassword", value = "新密码", dataType = "String", paramType = "query", required = true),
-            @ApiImplicitParam(name = "confirmNewPassword", value = "新密码确认", dataType = "String", paramType = "query", required = true),
+            @ApiImplicitParam(name = "newPassword", value = "新密码", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "confirmNewPassword", value = "新密码确认", dataType = "String", paramType = "query"),
             @ApiImplicitParam(name = "verificationCode", value = "验证码", dataType = "String", paramType = "query", required = true),
             @ApiImplicitParam(name = "type", value = "类型:0:忘记密码,1:修改密码,2:更换绑定手机号", dataType = "Integer", paramType = "query", required = true)})
     @GetMapping("/updatePassword")
-    public R<Boolean> updatePassword(String phone,String newPhone, String oldPassword, String newPassword,String confirmNewPassword,String verificationCode,Integer type) {
-        log.info("StoreUserController.updatePassword?phone={}&newPhone&oldPassword={}&newPassword={}&confirmNewPassword={}&verificationCode={}&type={}", phone, newPhone, oldPassword, newPassword, confirmNewPassword, verificationCode, type);
+    public R<Boolean> updatePassword(String phone,String newPhone, String oldPassword, String newPassword, String confirmNewPassword,String verificationCode,String newPhoneVerificationCode, Integer type) {
+        log.info("StoreUserController.updatePassword?phone={}&newPhone&oldPassword={}&newPassword={}&confirmNewPassword={}&verificationCode={}&type={}", phone, newPhone, oldPassword, newPassword, confirmNewPassword, verificationCode,  type);
         boolean flag = false;
         flag = storeUserService.forgetOrModifyPassword(phone, newPhone, oldPassword, newPassword, confirmNewPassword, verificationCode, type);
         if(flag){
@@ -112,6 +112,18 @@ public class StoreUserController {
         }
     }
 
+    @ApiOperation("更换绑定手机号效验原密码或验证码")
+    @ApiOperationSupport(order = 2)
+    @ApiImplicitParams({@ApiImplicitParam(name = "phone", value = "手机号", dataType = "String", paramType = "query", required = true),
+            @ApiImplicitParam(name = "oldPassword", value = "旧密码", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "verificationCode", value = "验证码", dataType = "String", paramType = "query")})
+    @GetMapping("/changePhoneVerification")
+    public R<Map<String, String>> changePhoneVerification(String phone, String oldPassword, String verificationCode) {
+        log.info("StoreUserController.changePhoneVerification?phone={}&oldPassword={}&verificationCode={}", phone,  oldPassword,  verificationCode);
+        return R.data(storeUserService.changePhoneVerification(phone, oldPassword, verificationCode));
+
+    }
+
     @ApiOperation("修改用户信息")
     @ApiOperationSupport(order = 3)
     @PostMapping("/setUserInfo")

+ 11 - 2
alien-store/src/main/java/shop/alien/store/service/StoreUserService.java

@@ -62,7 +62,16 @@ public interface StoreUserService extends IService<StoreUser> {
      * @param type 类型
      * @return boolean
      */
-    boolean forgetOrModifyPassword(String phone, String newPhone, String oldPassword, String newPassword,String confirmNewPassword,String verificationCode, Integer type);
+    boolean forgetOrModifyPassword(String phone, String newPhone, String oldPassword, String newPassword,String confirmNewPassword,String verificationCode,  Integer type);
+
+    /**
+     * 更换绑定手机号 效验原手机密码或者验证码
+     *
+     * @param phone   手机号
+     * @param oldPassword 原密码
+     * @param verificationCode 验证码
+     */
+    Map<String,String> changePhoneVerification(String phone, String oldPassword, String verificationCode);
 
     /**
      * 设置用户信息
@@ -153,7 +162,7 @@ public interface StoreUserService extends IService<StoreUser> {
     R<Boolean> register(String phone, String password);
 
     /**
-     *
+     * 效验商家端账号注销
      */
     Map<String,String> storeCancelAccountVerification(StoreUserVo storeUserVo);
 

+ 1 - 1
alien-store/src/main/java/shop/alien/store/service/impl/StoreSalesDetailsServiceImpl.java

@@ -31,7 +31,7 @@ public class StoreSalesDetailsServiceImpl implements StoreSalesDetailsService {
         wrapper.in(CollectionUtils.isNotEmpty(storeSalesDetailsVo.getTypeList()), "coupon.type", storeSalesDetailsVo.getTypeList());
         wrapper.ge(null != storeSalesDetailsVo.getPayStartTime(), "lorder.pay_time", storeSalesDetailsVo.getPayStartTime());
         if (null != storeSalesDetailsVo.getPayEndTime()) {
-            wrapper.ge(null != storeSalesDetailsVo.getPayEndTime(), "lorder.pay_time", storeSalesDetailsVo.getPayEndTime());
+            wrapper.le(null != storeSalesDetailsVo.getPayEndTime(), "lorder.pay_time", storeSalesDetailsVo.getPayEndTime());
         }else{
             wrapper.le("lorder.pay_time", Date.from(storeSalesDetailsVo.getPayEndTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().plusHours(23).plusMinutes(59).plusSeconds(59).atZone(ZoneId.systemDefault()).toInstant()));
         }

+ 109 - 56
alien-store/src/main/java/shop/alien/store/service/impl/StoreUserServiceImpl.java

@@ -24,6 +24,7 @@ import shop.alien.entity.store.excelVo.util.ExcelGenerator;
 import shop.alien.entity.store.vo.StoreUserVo;
 import shop.alien.mapper.*;
 import shop.alien.store.config.BaseRedisService;
+import shop.alien.store.service.NearMeService;
 import shop.alien.store.service.StoreUserService;
 import shop.alien.store.util.FunctionMagic;
 import shop.alien.util.common.DateUtils;
@@ -79,6 +80,8 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
 
     private final LifeMessageMapper lifeMessageMapper;
 
+    private final NearMeService nearMeService;
+
     /**
      * 手机号获取
      *
@@ -91,7 +94,7 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
         lambdaQueryWrapper.eq(StoreUser::getPhone, phone);
         StoreUser user = this.getOne(lambdaQueryWrapper);
         StoreUserVo storeUserVo = new StoreUserVo();
-        if(user.getStatus() == -1){
+        if (user.getStatus() == -1) {
             LocalDateTime localDateTime = user.getLogoutTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
             LocalDateTime future = localDateTime.plusDays(7);
             LocalDateTime now = LocalDateTime.now();
@@ -198,7 +201,7 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
         boolean flag = false;
         //类型为0 忘记密码
         if (type == 0) {
-            forgetPassword(phone, newPassword, verificationCode);
+            flag = forgetPassword(phone, newPassword, verificationCode);
         }
         //修改密码
         else if (type == 1) {
@@ -212,7 +215,10 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
             //修改成功后同步删除redis缓存token
             if (flag) {
                 String token = "store_" + phone;
-                baseRedisService.delete(token);
+                String toKenStr = baseRedisService.getString(token);
+                if (toKenStr != null) {
+                    baseRedisService.delete(token);
+                }
             } else {
                 log.error("密码修改失败");
                 throw new RuntimeException("密码修改失败");
@@ -221,11 +227,40 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
         }
         //更换绑定手机号
         else if (type == 2) {
-            ChangeBoundPhone(phone, newPhone, verificationCode);
+            flag = ChangeBoundPhone(phone, newPhone, verificationCode);
         }
         return flag;
     }
 
+    @Override
+    public Map<String, String> changePhoneVerification(String phone, String oldPassword, String verificationCode) {
+        Map<String, String> changePhoneMap = new HashMap<>();
+
+        if (oldPassword != null || !oldPassword.equals("")) {
+            LambdaUpdateWrapper<StoreUser> userLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+            userLambdaUpdateWrapper.eq(StoreUser::getPhone, phone);
+            StoreUser storeUser = this.getOne(userLambdaUpdateWrapper);
+            if (storeUser.getPassword().equals(oldPassword)) {
+                changePhoneMap.put("passwordStatus", "0");
+                return changePhoneMap;
+            } else {
+                changePhoneMap.put("passwordStatus", "1");
+                return changePhoneMap;
+            }
+        } else {
+            String oldPhoneVerification = "verification_" + phone;
+            //获取新手机号验证码
+            String redisVerificationCode = baseRedisService.getString(oldPhoneVerification);
+            if (redisVerificationCode.equals(verificationCode)) {
+                changePhoneMap.put("verificationStatus", "0");
+                return changePhoneMap;
+            } else {
+                changePhoneMap.put("verificationStatus", "1");
+                return changePhoneMap;
+            }
+        }
+    }
+
     private void passwordVerification(String phone, String password, String newPassword, String confirmNewPassword) {
         LambdaUpdateWrapper<StoreUser> wrapperFans = new LambdaUpdateWrapper<>();
         wrapperFans.eq(StoreUser::getPhone, phone);
@@ -259,7 +294,10 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
             if (flag) {
                 log.info("密码修改成功");
                 String token = "store_" + phone;
-                baseRedisService.delete(token);
+                String tokenStr = baseRedisService.getString(token);
+                if (tokenStr != null) {
+                    baseRedisService.delete(token);
+                }
             }
             if (!flag) {
                 log.error("密码修改失败");
@@ -273,33 +311,33 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
 
     private boolean ChangeBoundPhone(String phone, String newPhone, String verificationCode) {
         boolean flag = false;
-        String key = "verification_" + phone;
-        String redisVerificationCode = baseRedisService.getString(key);
-        if (!StringUtils.isEmpty(redisVerificationCode) && redisVerificationCode.equals(verificationCode)) {
-            LambdaUpdateWrapper<StoreUser> storeUserWrapper = new LambdaUpdateWrapper<>();
-            storeUserWrapper.eq(StoreUser::getPhone, phone);
-            StoreUser storeUser = this.getOne(storeUserWrapper);
-            if (storeUser != null) {
+        String newPhoneVerification = "verification_" + newPhone;
+        //获取新手机号验证码
+        String redisVerificationCode = baseRedisService.getString(newPhoneVerification);
+        if(!StringUtils.isEmpty(redisVerificationCode) && redisVerificationCode.equals(verificationCode)){
+            LambdaUpdateWrapper<StoreUser> updateWrapper = new LambdaUpdateWrapper<>();
+            updateWrapper.eq(StoreUser::getPhone, phone);
+            StoreUser storeUser = this.getOne(updateWrapper);
+            if(storeUser !=null){
                 storeUser.setPhone(newPhone);
                 flag = this.updateById(storeUser);
+                if(flag){
+                    String token = "store_" + phone;
+                    String tokenStr = baseRedisService.getString(token);
+                    if (tokenStr != null) {
+                        baseRedisService.delete(token);
+                    }
+                }
             }
-            if (flag) {
-                log.info("新手机号绑定成功");
-                String token = "store_" + phone;
-                baseRedisService.delete(token);
-            }
-            if (!flag) {
-                log.error("手机号更换绑定失败");
-                throw new RuntimeException("手机号更换绑定失败");
-            }
-            return flag;
-        } else {
+        }else{
             throw new RuntimeException("验证码错误");
         }
+        return flag;
     }
 
     /**
      * 设置用户信息
+     *
      * @return boolean
      */
     @Override
@@ -534,19 +572,18 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
         StoreUser storeUser = storeUserMapper.selectOne(storeUserLambdaQueryWrapper);
         Map<String, String> storeMap = new HashMap<>();
         if (storeUser != null) {
-            storeMap.put("status",storeUser.getStatus().toString());
+            storeMap.put("status", storeUser.getStatus().toString());
             if (null != storeUser.getStoreId()) {
                 StoreInfo storeInfo = storeInfoMapper.selectById(storeUser.getStoreId());
-                if (1 != storeInfo.getLogoutFlag()) {
-                    //vaule为0代表有商铺未注销
-                    storeMap.put("accountStore", "0");
-                } else {
-                    //vaule为1代表绑定店铺注销
-                    storeMap.put("accountStore", "1");
-                }
-            } else if (storeUser.getMoney() != null && storeUser.getMoney() > 0) {
+                //vaule为0代表有商铺未注销
+                storeMap.put("accountStore", "0");
+            } else {
+                //vaule为1代表绑定店铺注销
+                storeMap.put("accountStore", "1");
+            }
+            if (storeUser.getMoney() != null && storeUser.getMoney() > 0) {
                 //vaule为0代表有未体现的现金
-                storeMap.put("accountMoney", "0");
+                storeMap.put("accountMoney", "1");
             } else {
                 //vaule为1代表没有未体现的现金
                 storeMap.put("accountMoney", "1");
@@ -606,7 +643,10 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
         LambdaQueryWrapper<StoreUser> storeUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
         storeUserLambdaQueryWrapper.eq(StoreUser::getId, storeUserVo.getId());
         StoreUser storeUser = storeUserMapper.selectOne(storeUserLambdaQueryWrapper);
-        if (storeUser != null) {
+        String key = "verification_" + storeUser.getPhone();
+        String redisVerificationCode = baseRedisService.getString(key);
+        if (redisVerificationCode.equals(storeUserVo.getVerificationCode())) {
+            if (storeUser != null) {
                 // 添加注销原因
                 storeUser.setLogoutReason(storeUserVo.getLogoutReason());
                 // 添加注销code
@@ -630,7 +670,10 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
                     lifeMessage.setIsRead(0);
                     lifeMessage.setNoticeType(1);
                     lifeNoticeMapper.insert(lifeMessage);
+                }
             }
+        } else {
+            throw new RuntimeException("验证码错误");
         }
     }
 
@@ -646,41 +689,51 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
         storeUser.setStatus(0);
         // 清空注销原因
         storeUser.setLogoutReason(null);
+        // 清空注销code
+        storeUser.setLogoutCode(null);
         // 清空注销申请时间
         storeUser.setLogoutTime(null);
         // 更新logout_flag状态为0
         storeUser.setLogoutFlag(0);
         int num = storeUserMapper.updateById(storeUser);
-            if (num > 0) {
-                // 发送通知
-                LifeNotice lifeMessage = new LifeNotice();
-                lifeMessage.setReceiverId("user_" + storeUser.getPhone());
-                String text = "处理结果:已撤回注销申请" +
-                        "处理时间:"+ storeUser.getCreatedTime() +
-                        "当前账号状态以为恢复正常. 您可以继续使用该账号登录并享受各项服务, 所有个人数据及账户信息" +
-                        "均已妥善保留. 若您后续仍有注销需求, 可随时通过账号信息页面重新提交申请. 感谢您的理解与支持!";
-                lifeMessage.setContext(text);
-                lifeMessage.setSenderId("system");
-                lifeMessage.setIsRead(0);
-                lifeMessage.setNoticeType(1);
-                lifeNoticeMapper.insert(lifeMessage);
-            }
+        if (num > 0) {
+            // 发送通知
+            LifeNotice lifeMessage = new LifeNotice();
+            lifeMessage.setReceiverId("user_" + storeUser.getPhone());
+            String text = "处理结果:已撤回注销申请" +
+                    "处理时间:" + storeUser.getCreatedTime() +
+                    "当前账号状态已恢复正常. 您可以继续使用该账号登录并享受各项服务, 所有个人数据及账户信息" +
+                    "均已妥善保留. 若您后续仍有注销需求, 可随时通过账号信息页面重新提交申请. 感谢您的理解与支持!";
+            lifeMessage.setContext(text);
+            lifeMessage.setSenderId("system");
+            lifeMessage.setIsRead(0);
+            lifeMessage.setNoticeType(1);
+            lifeNoticeMapper.insert(lifeMessage);
+        }
     }
 
     @Override
     public void deleteStoreAccountInfo(StoreUserVo storeUserVo) {
         LambdaQueryWrapper<StoreUser> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(StoreUser::getId, storeUserVo.getId());
+        queryWrapper.eq(StoreUser::getDeleteFlag, 0);
         StoreUser storeUser = storeUserMapper.selectOne(queryWrapper);
         // 删除已过注销时间的商家
-        storeUserMapper.deleteById(storeUserVo.getId());
-        //删除用户redis中的token
-        baseRedisService.delete("store_" + storeUserVo.getPhone());
-        LambdaQueryWrapper<LifeFans> lifeFansLambdaQueryWrapper = new LambdaQueryWrapper<LifeFans>().eq(LifeFans::getFollowedId, "store_" + storeUser.getPhone())
-                .or().eq(LifeFans::getFansId, "store_" + storeUser.getPhone());
-        lifeFansMapper.delete(lifeFansLambdaQueryWrapper);
-        if(storeUser.getStoreId()!=null){
-            storeInfoMapper.deleteById(storeUser.getStoreId());
+        if (storeUser != null) {
+            storeUserMapper.deleteById(storeUserVo.getId());
+            nearMeService.removeGeolocation(Boolean.TRUE, storeUser.getId().toString());
+            String storePhone = "store_" + storeUserVo.getPhone();
+            String key = baseRedisService.getString(storePhone);
+            if (key != null) {
+                //删除用户redis中的token
+                baseRedisService.delete(key);
+            }
+            LambdaQueryWrapper<LifeFans> lifeFansLambdaQueryWrapper = new LambdaQueryWrapper<LifeFans>().eq(LifeFans::getFollowedId, "store_" + storeUser.getPhone())
+                    .or().eq(LifeFans::getFansId, "store_" + storeUser.getPhone());
+            lifeFansMapper.delete(lifeFansLambdaQueryWrapper);
+            if (storeUser.getStoreId() != null) {
+                storeInfoMapper.deleteById(storeUser.getStoreId());
+            }
         }
     }