From 42dd06b5f83968155817b942200676cf521bb7fe Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期二, 07 四月 2026 17:17:03 +0800
Subject: [PATCH] feat:app帐号密码登录、忘记密码
---
tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/auth/service/AppSmsCodeService.java | 27 ++++++++++++++++++++++-----
1 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/auth/service/AppSmsCodeService.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/auth/service/AppSmsCodeService.java
index 9b83971..97f338c 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/auth/service/AppSmsCodeService.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/auth/service/AppSmsCodeService.java
@@ -16,6 +16,7 @@
private static final String LOGIN_CODE_CACHE_PREFIX = "app:sms:login:";
private static final String REGISTER_CODE_CACHE_PREFIX = "app:sms:register:";
+ private static final String PASSWORD_RESET_CODE_CACHE_PREFIX = "app:sms:password-reset:";
private final StringRedisTemplate stringRedisTemplate;
private final AppSmsSender appSmsSender;
@@ -36,14 +37,21 @@
* 生成并发送登录验证码,同时写入缓存。
*/
public AppSmsCodeSendResponse createLoginCode(String phone) {
- return createCode(phone, LOGIN_CODE_CACHE_PREFIX, true);
+ return createCode(phone, LOGIN_CODE_CACHE_PREFIX, "login");
}
/**
* 生成并发送注册验证码,同时写入缓存。
*/
public AppSmsCodeSendResponse createRegisterCode(String phone) {
- return createCode(phone, REGISTER_CODE_CACHE_PREFIX, false);
+ return createCode(phone, REGISTER_CODE_CACHE_PREFIX, "register");
+ }
+
+ /**
+ * 生成并发送忘记密码验证码,同时写入缓存。
+ */
+ public AppSmsCodeSendResponse createPasswordResetCode(String phone) {
+ return createCode(phone, PASSWORD_RESET_CODE_CACHE_PREFIX, "password-reset");
}
/**
@@ -61,9 +69,16 @@
}
/**
+ * 校验忘记密码验证码,成功后销毁缓存中的一次性验证码。
+ */
+ public void validatePasswordResetCode(String phone, String code) {
+ validateCode(phone, code, PASSWORD_RESET_CODE_CACHE_PREFIX);
+ }
+
+ /**
* 统一生成指定场景的验证码并写入缓存。
*/
- private AppSmsCodeSendResponse createCode(String phone, String cachePrefix, boolean loginScene) {
+ private AppSmsCodeSendResponse createCode(String phone, String cachePrefix, String scene) {
String code = generateCode();
stringRedisTemplate.opsForValue().set(
buildCacheKey(cachePrefix, phone),
@@ -71,10 +86,12 @@
appSmsAuthProperties.getExpireSeconds(),
TimeUnit.SECONDS
);
- if (loginScene) {
+ if ("login".equals(scene)) {
appSmsSender.sendLoginCode(phone, code);
- } else {
+ } else if ("register".equals(scene)) {
appSmsSender.sendRegisterCode(phone, code);
+ } else {
+ appSmsSender.sendPasswordResetCode(phone, code);
}
return new AppSmsCodeSendResponse(appSmsAuthProperties.getExpireSeconds());
}
--
Gitblit v1.7.1