Quellcode durchsuchen

Merge remote-tracking branch 'origin/store-plantform' into store-plantform

wxd vor 1 Monat
Ursprung
Commit
e81efd883a

+ 14 - 11
alien-store-platform/src/main/java/shop/alien/storeplatform/controller/StorePlatformLoginController.java

@@ -13,6 +13,7 @@ import shop.alien.mapper.StoreUserMapper;
 import shop.alien.storeplatform.service.StorePlatformLoginervice;
 
 import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
 import java.io.IOException;
 import java.util.Objects;
 import java.util.Optional;
@@ -22,8 +23,8 @@ import java.util.Optional;
 @ApiSort(1)
 @CrossOrigin
 @RestController
-@RequestMapping("/storePlatformLogin")
 @RequiredArgsConstructor
+@RequestMapping("/storePlatformLogin")
 public class StorePlatformLoginController {
 
     private final BaseRedisService baseRedisService;
@@ -65,17 +66,19 @@ public class StorePlatformLoginController {
     @ApiOperationSupport(order = 3)
     @ApiImplicitParams({
             @ApiImplicitParam(name = "phone", value = "手机号", dataType = "String", paramType = "query", required = true),
-            @ApiImplicitParam(name = "password", value = "密码", dataType = "String", paramType = "query", required = true),
             @ApiImplicitParam(name = "isPassword", value = "是否密码登录", dataType = "Boolean", paramType = "query", required = true),
-            @ApiImplicitParam(name = "code", value = "验证码", dataType = "String", paramType = "query", required = true)
+            @ApiImplicitParam(name = "password", value = "密码", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "captcha", value = "图片验证码", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "code", value = "验证码", dataType = "String", paramType = "query")
     })
     @GetMapping("/login")
     public R<StoreUserVo> login(
             @RequestParam("phone") String phone,
-            @RequestParam("password") String password,
             @RequestParam("isPassword") Boolean isPassword,
-            @RequestParam("code") String code,
-            @RequestParam("captcha") String captcha) {
+            String password,
+            String code,
+            String captcha,
+            HttpSession session) {
         log.info("StorePlatformLoginController.login?phone={}&password={}&isPassword={}&code={}&captcha={}", phone, password, isPassword, code, captcha);
         if (!isPassword) {
             // 2025-11-04 验证码-商户端登录
@@ -87,7 +90,8 @@ public class StorePlatformLoginController {
                 return R.fail("验证码错误");
             }
         } else {
-            String cacheCode = baseRedisService.getString("store_platform_captcha_" + phone);
+//            String cacheCode = baseRedisService.getString("store_platform_captcha_" + phone);
+            String cacheCode = (String) session.getAttribute("captcha");
             if (null == cacheCode) {
                 return R.fail("验证码已过期");
             }
@@ -155,11 +159,10 @@ public class StorePlatformLoginController {
 
     @ApiOperation("生成验证码")
     @ApiOperationSupport(order = 5)
-    @ApiImplicitParams({@ApiImplicitParam(name = "phone", value = "手机号", dataType = "String", paramType = "query", required = true)})
     @GetMapping("/generateCaptcha")
-    public void generateCaptcha(HttpServletResponse response, String phone) throws IOException {
-        log.info("StorePlatformLoginController.generateCaptcha?phone={}", phone);
-        storePlatformLoginService.generateCaptcha(response, phone);
+    public void generateCaptcha(HttpServletResponse response, HttpSession session) throws IOException {
+        log.info("StorePlatformLoginController.generateCaptcha?session={}", session.toString());
+        storePlatformLoginService.generateCaptcha(response, session);
     }
 
 }

+ 2 - 1
alien-store-platform/src/main/java/shop/alien/storeplatform/service/StorePlatformLoginervice.java

@@ -5,6 +5,7 @@ import shop.alien.entity.store.StoreUser;
 import shop.alien.entity.store.vo.StoreUserVo;
 
 import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
 import java.io.IOException;
 
 public interface StorePlatformLoginervice {
@@ -27,6 +28,6 @@ public interface StorePlatformLoginervice {
      */
     R<String> forgetOrModifyPassword(String phone, String newPhone, String oldPassword, String newPassword,String confirmNewPassword,String verificationCode,  Integer type);
 
-    void generateCaptcha(HttpServletResponse response, String phone) throws IOException;
+    void generateCaptcha(HttpServletResponse response, HttpSession session) throws IOException;
 
 }

+ 82 - 60
alien-store-platform/src/main/java/shop/alien/storeplatform/service/impl/StorePlatformLoginServiceImpl.java

@@ -25,6 +25,7 @@ import shop.alien.util.common.DateUtils;
 import shop.alien.util.common.JwtUtil;
 
 import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
 import java.io.IOException;
 import java.util.*;
 
@@ -46,27 +47,31 @@ public class StorePlatformLoginServiceImpl extends ServiceImpl<StoreUserMapper,
 
     @Override
     public R<Boolean> register(String phone, String password) {
+        try {
+            LambdaQueryWrapper<StoreUser> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(StoreUser::getPhone, phone)
+                    .orderByDesc(StoreUser::getCreatedTime).last("LIMIT 1");
+            StoreUser storeUser = storeUserMapper.selectOne(queryWrapper);
+
+            List<Integer> noRegister = Arrays.asList(0, 1);
 
-        LambdaQueryWrapper<StoreUser> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(StoreUser::getPhone, phone)
-                .orderByDesc(StoreUser::getCreatedTime).last("LIMIT 1");
-        StoreUser storeUser = storeUserMapper.selectOne(queryWrapper);
+            if (Objects.isNull((storeUser))) {
+                // 没有数据
+                saveNewUser(phone, password);
+                return R.success("操作成功");
 
-        List<Integer> noRegister = Arrays.asList(0, 1);
+            } else if (noRegister.contains(storeUser.getStatus())) {
+                return R.fail("手机号已经注册过");
+            }
 
-        if (Objects.isNull((storeUser))) {
-            // 没有数据
+            int daysSinceDeletion = DateUtils.subtraction(storeUser.getCreatedTime(), new Date());
+            if (daysSinceDeletion < 30) return R.fail(String.format("请于%d天后重新申请注册", 30 - daysSinceDeletion));
             saveNewUser(phone, password);
             return R.success("操作成功");
-
-        } else if (noRegister.contains(storeUser.getStatus())) {
-            return R.fail("手机号已经注册过");
+        } catch (Exception e) {
+            log.error("StorePlatformLoginServiceImpl.register(): Error Msg={}", e.getMessage());
+            throw new RuntimeException(e.getMessage());
         }
-
-        int daysSinceDeletion = DateUtils.subtraction(storeUser.getCreatedTime(), new Date());
-        if (daysSinceDeletion < 30) return R.fail(String.format("请于%d天后重新申请注册", 30 - daysSinceDeletion));
-        saveNewUser(phone, password);
-        return R.success("操作成功");
     }
 
     private void saveNewUser(String phone, String password) {
@@ -83,53 +88,64 @@ public class StorePlatformLoginServiceImpl extends ServiceImpl<StoreUserMapper,
         storeUserMapper.insert(registerStoreUser);
     }
 
+    @Override
     public boolean checkRegister(String phone) {
-        LambdaQueryWrapper<StoreUser> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(StoreUser::getPhone, phone);
-        queryWrapper.in(StoreUser::getStatus, 0, 1);
-        List<StoreUser> storeUsers = storeUserMapper.selectList(queryWrapper);
-        return CollectionUtils.isEmpty(storeUsers) ? Boolean.TRUE : Boolean.FALSE;
+        try {
+            LambdaQueryWrapper<StoreUser> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(StoreUser::getPhone, phone);
+            queryWrapper.in(StoreUser::getStatus, 0, 1);
+            List<StoreUser> storeUsers = storeUserMapper.selectList(queryWrapper);
+            return CollectionUtils.isEmpty(storeUsers) ? Boolean.TRUE : Boolean.FALSE;
+        } catch (Exception e) {
+            log.error("StorePlatformLoginServiceImpl.checkRegister(): Error Msg={}", e.getMessage());
+            throw new RuntimeException(e.getMessage());
+        }
     }
 
     @Override
     public R<StoreUserVo> createToKen(StoreUser storeUser) {
-        int effectiveTimeInt = Integer.parseInt(effectiveTime.substring(0, effectiveTime.length() - 1));
-        String effectiveTimeUnit = effectiveTime.substring(effectiveTime.length() - 1);
-        long effectiveTimeIntLong = 0L;
-        switch (effectiveTimeUnit) {
-            case "s": {
-                effectiveTimeIntLong = effectiveTimeInt * 1000L;
-                break;
-            }
-            case "m": {
-                effectiveTimeIntLong = effectiveTimeInt * 60L * 1000L;
-                break;
-            }
-            case "h": {
-                effectiveTimeIntLong = effectiveTimeInt * 60L * 60L * 1000L;
-                break;
-            }
-            case "d": {
-                effectiveTimeIntLong = effectiveTimeInt * 24L * 60L * 60L * 1000L;
-                break;
+        try {
+            int effectiveTimeInt = Integer.parseInt(effectiveTime.substring(0, effectiveTime.length() - 1));
+            String effectiveTimeUnit = effectiveTime.substring(effectiveTime.length() - 1);
+            long effectiveTimeIntLong = 0L;
+            switch (effectiveTimeUnit) {
+                case "s": {
+                    effectiveTimeIntLong = effectiveTimeInt * 1000L;
+                    break;
+                }
+                case "m": {
+                    effectiveTimeIntLong = effectiveTimeInt * 60L * 1000L;
+                    break;
+                }
+                case "h": {
+                    effectiveTimeIntLong = effectiveTimeInt * 60L * 60L * 1000L;
+                    break;
+                }
+                case "d": {
+                    effectiveTimeIntLong = effectiveTimeInt * 24L * 60L * 60L * 1000L;
+                    break;
+                }
             }
-        }
 
-        StoreUserVo storeUserVo = new StoreUserVo();
-        BeanUtils.copyProperties(storeUser, storeUserVo);
-        Map<String, String> tokenMap = new HashMap<>();
-        tokenMap.put("phone", storeUser.getPhone());
-        tokenMap.put("userName", storeUser.getName());
-        tokenMap.put("userId", storeUser.getId().toString());
-        tokenMap.put("userType", "storePlatform");
-        storeUserVo.setToken(JwtUtil.createJWT("store_platform_" + storeUser.getPhone(), storeUser.getName(), JSONObject.toJSONString(tokenMap), effectiveTimeIntLong));
-        baseRedisService.setString("store_platform_" + storeUser.getPhone(), storeUserVo.getToken());
-        StoreInfo storeInfo = storeInfoMapper.selectById(storeUser.getStoreId());
-        if (storeInfo != null) {
-            storeUserVo.setBusinessSection(storeInfo.getBusinessSection());
-            storeUserVo.setBusinessTypesName(storeInfo.getBusinessTypesName());
+            StoreUserVo storeUserVo = new StoreUserVo();
+            BeanUtils.copyProperties(storeUser, storeUserVo);
+            Map<String, String> tokenMap = new HashMap<>();
+            tokenMap.put("phone", storeUser.getPhone());
+            tokenMap.put("userName", storeUser.getName());
+            tokenMap.put("userId", storeUser.getId().toString());
+            tokenMap.put("userType", "storePlatform");
+            storeUserVo.setToken(JwtUtil.createJWT("storePlatform_" + storeUser.getPhone(), storeUser.getName(), JSONObject.toJSONString(tokenMap), effectiveTimeIntLong));
+            baseRedisService.setString("storePlatform_" + storeUser.getPhone(), storeUserVo.getToken());
+            StoreInfo storeInfo = storeInfoMapper.selectById(storeUser.getStoreId());
+            if (storeInfo != null) {
+                storeUserVo.setBusinessSection(storeInfo.getBusinessSection());
+                storeUserVo.setBusinessTypesName(storeInfo.getBusinessTypesName());
+            }
+            return R.data(storeUserVo);
+        } catch (Exception e) {
+            log.error("StorePlatformLoginServiceImpl.createToKen(): Error Msg={}", e.getMessage());
+            throw new RuntimeException(e.getMessage());
         }
-        return R.data(storeUserVo);
     }
 
     @Override
@@ -168,17 +184,23 @@ public class StorePlatformLoginServiceImpl extends ServiceImpl<StoreUserMapper,
             }
             return R.success("密码修改成功");
         } catch (Exception e) {
+            log.info("StorePlatformLoginServiceImpl.forgetOrModifyPassword(): Error Msg={}", e.getMessage());
             return R.fail(e.getMessage());
         }
     }
 
     @Override
-    public void generateCaptcha(HttpServletResponse response, String phone) throws IOException {
-        LineCaptcha captcha = CaptchaUtil.createLineCaptcha(200, 100, 4, 100);
-        baseRedisService.setString("store_platform_captcha_" + phone, captcha.getCode(), timeOut);
-        response.setContentType("image/png");
-        response.setHeader("Pragma", "No-cache");
-        captcha.write(response.getOutputStream());
+    public void generateCaptcha(HttpServletResponse response, HttpSession session) throws IOException {
+        try {
+            LineCaptcha captcha = CaptchaUtil.createLineCaptcha(200, 100, 4, 100);
+            session.setAttribute("captcha", captcha.getCode());
+            response.setContentType("image/png");
+            response.setHeader("Pragma", "No-cache");
+            captcha.write(response.getOutputStream());
+        } catch (IOException e) {
+            log.error("StorePlatformLoginServiceImpl.generateCaptcha(): Error Msg={}", e.getMessage());
+            throw new RuntimeException(e.getMessage());
+        }
     }
 
     private void passwordVerification(String phone, String password, String newPassword, String confirmNewPassword) {