tsurumure 7 mesiacov pred
rodič
commit
d96b4aa7be

+ 17 - 7
src/main/java/com/backendsys/modules/system/controller/SysAuthV2Controller.java

@@ -52,23 +52,33 @@ public class SysAuthV2Controller {
         return Result.success().put("data", sysAuthV2Service.getMobileAreaList(sysMobileArea));
     }
     @Operation(summary = "系统用户登录 (手机号码)")
-    @PostMapping(value = "/api/v2/system/auth/loginWithPhone")
+    @PostMapping(value = "/api/system/auth/loginWithPhone")
     @RateLimiting(key = "systemLoginWithPhone")
     public Result systemLoginWithPhone(@Validated(SysAuthPhone.Login.class) @RequestBody SysAuthPhone sysAuthPhone) {
         return Result.success().put("data", sysAuthV2Service.loginWithPhone(sysAuthPhone));
     }
 
-    // -------------------------------------------------------------------------------------------------
-
-    /**
-     * 注册系统用户 (用户名 和 手机号码 必填)
-     */
     @Anonymous
-    @Operation(summary = "系统用户注册")
+    @Operation(summary = "系统用户注册 (用户名+手机号码)")
     @PostMapping("/api/system/auth/register")
     @RateLimiting(key = "registerUser", limit = 5)
     public Result register(@Validated(SysUserDTO.Register.class) @RequestBody SysUserDTO sysUserDTO) {
         return Result.success().put("data", sysAuthV2Service.register(sysUserDTO));
     }
 
+    @Anonymous
+    @Operation(summary = "忘记密码")
+    @PostMapping("/api/v2/system/user/forgotPassword")
+    public Result forgotPassword(@Validated(SysUserDTO.ForgotPassword.class) @RequestBody SysUserDTO sysUserDTO) {
+        return Result.success().put("data", sysAuthV2Service.forgotPassword(sysUserDTO));
+    }
+//
+//    // 注意:如果使用 /api/system/auth/* 会被 SecurityConfig 过滤掉 Token (获取不到 Token)
+//    @PostMapping(value = "/api/system/user/logout")
+//    public com.backendsys.utils.response.Result systemLogout(HttpServletRequest request) {
+//        return com.backendsys.utils.response.Result.success(sysAuthService.logout(request));
+//    }
+
+
+
 }

+ 3 - 2
src/main/java/com/backendsys/modules/system/service/SysAuthV2Service.java

@@ -14,8 +14,9 @@ public interface SysAuthV2Service {
     List<SysMobileArea> getMobileAreaList(SysMobileArea sysMobileArea);
 
     SysUserInfo login(SysAuth sysAuth);
-    Map<String, Object> register(SysUserDTO sysUserDTO);
-
     SysUserInfo loginWithPhone(SysAuthPhone sysAuthPhone);
 
+    Map<String, Object> register(SysUserDTO sysUserDTO);
+    Map<String, Object> forgotPassword(SysUserDTO sysUserDTO);
+
 }

+ 49 - 30
src/main/java/com/backendsys/modules/system/service/impl/SysAuthV2ServiceImpl.java

@@ -218,6 +218,45 @@ public class SysAuthV2ServiceImpl implements SysAuthV2Service {
 
     }
 
+    /**
+     * 登录 (手机号码)
+     */
+    @Override
+    @Transactional
+    public SysUserInfo loginWithPhone(SysAuthPhone sysAuthPhone) {
+
+        String phone = sysAuthPhone.getPhone();
+        Integer phoneAreaCode = sysAuthPhone.getPhone_area_code();
+        Integer phoneValidCode = sysAuthPhone.getPhone_valid_code();
+
+        // 判断是否处于登录错误的冻结状态 (2分钟内错误5次,则出现冻结提示)
+        countUtilV2.checkErrorStatus(redisKeyOfLoginFail, phone);
+
+        // 判断短信验证码是否正确
+        String redisKey = redisKeyOfLogin + "-" + phone;
+        Integer smsCode = redisUtil.getCacheObject(redisKey);
+        // 判断是否发送验证码
+        if ("false".equals(SMS_DEBUG) && smsCode == null) throw new CustException("请先发送验证码");
+        // 判断短信验证码是否错误
+        if ("false".equals(SMS_DEBUG) && !smsCode.equals(phoneValidCode)) loginFail("短信验证码错误", phone, true);
+
+        // 判断手机号是否存在
+        LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(SysUser::getPhone, phone).eq(SysUser::getPhone_area_code, phoneAreaCode);
+        SysUser sysUser = sysUserDao.selectOne(queryWrapper);
+        if (sysUser == null) {
+            // [登录失败] 用户不存在 (并不会销毁短信验证码)
+            loginFail("手机号码不存在", phone, true);
+            return null;
+        } else {
+            // 登录成功,销毁短信验证码
+            redisUtil.delete(redisKey);
+            // [登录成功]
+            return loginSuccess(sysUser.getId(), sysAuthPhone.getIs_remember());
+        }
+
+    }
+
     @Override
     @Transactional
     public Map<String, Object> register(SysUserDTO sysUserDTO) {
@@ -285,43 +324,23 @@ public class SysAuthV2ServiceImpl implements SysAuthV2Service {
         return Map.of("user_id", registerEntity.getId());
     }
 
+
+
+
+
     /**
-     * 登录 (手机号码)
+     * 忘记密码/重置密码
      */
     @Override
-    @Transactional
-    public SysUserInfo loginWithPhone(SysAuthPhone sysAuthPhone) {
+    public Map<String, Object> forgotPassword(SysUserDTO sysUserDTO) {
 
-        String phone = sysAuthPhone.getPhone();
-        Integer phoneAreaCode = sysAuthPhone.getPhone_area_code();
-        Integer phoneValidCode = sysAuthPhone.getPhone_valid_code();
 
-        // 判断是否处于登录错误的冻结状态 (2分钟内错误5次,则出现冻结提示)
-        countUtilV2.checkErrorStatus(redisKeyOfLoginFail, phone);
 
-        // 判断短信验证码是否正确
-        String redisKey = redisKeyOfLogin + "-" + phone;
-        Integer smsCode = redisUtil.getCacheObject(redisKey);
-        // 判断是否发送验证码
-        if ("false".equals(SMS_DEBUG) && smsCode == null) throw new CustException("请先发送验证码");
-        // 判断短信验证码是否错误
-        if ("false".equals(SMS_DEBUG) && !smsCode.equals(phoneValidCode)) loginFail("短信验证码错误", phone, true);
+        return Map.of("user_id", sysUserDTO.getId());
+    }
+
+
 
-        // 判断手机号是否存在
-        LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(SysUser::getPhone, phone).eq(SysUser::getPhone_area_code, phoneAreaCode);
-        SysUser sysUser = sysUserDao.selectOne(queryWrapper);
-        if (sysUser == null) {
-            // [登录失败] 用户不存在 (并不会销毁短信验证码)
-            loginFail("手机号码不存在", phone, true);
-            return null;
-        } else {
-            // 登录成功,销毁短信验证码
-            redisUtil.delete(redisKey);
-            // [登录成功]
-            return loginSuccess(sysUser.getId(), sysAuthPhone.getIs_remember());
-        }
 
-    }
 
 }