diff --git a/pom.xml b/pom.xml
index 9dec4b1..5fd7585 100644
--- a/pom.xml
+++ b/pom.xml
@@ -213,7 +213,7 @@
com.imyeyu.font.icon
timi-icon-font
- 0.0.1
+ 0.0.2
org.springframework.boot
@@ -240,11 +240,6 @@
org.flywaydb
flyway-mysql
-
- com.e2ins.ms.notify
- e2ins-msg-notify-service-sdk
- 0.0.9
-
com.tencentcloudapi
tencentcloud-sdk-java-sms
diff --git a/src/main/java/com/imyeyu/api/config/BeanConfig.java b/src/main/java/com/imyeyu/api/config/BeanConfig.java
index c52e365..f7472d3 100644
--- a/src/main/java/com/imyeyu/api/config/BeanConfig.java
+++ b/src/main/java/com/imyeyu/api/config/BeanConfig.java
@@ -1,12 +1,9 @@
package com.imyeyu.api.config;
-import com.e2ins.ms.notify.SmsNotifyService;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.PropertyNamingStrategies;
-import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.imyeyu.utils.Time;
@@ -32,12 +29,6 @@ public class BeanConfig {
.build();
}
- @Bean
- public SmsNotifyService smsNotifyService() {
- // TODO
- return new SmsNotifyService(null, null);
- }
-
@Bean
public Yaml yaml() {
return new Yaml();
diff --git a/src/main/java/com/imyeyu/api/modules/common/controller/NotifyController.java b/src/main/java/com/imyeyu/api/modules/common/controller/NotifyController.java
index 720f4cb..8621182 100644
--- a/src/main/java/com/imyeyu/api/modules/common/controller/NotifyController.java
+++ b/src/main/java/com/imyeyu/api/modules/common/controller/NotifyController.java
@@ -7,11 +7,16 @@ import com.imyeyu.api.modules.common.entity.Notify;
import com.imyeyu.api.modules.common.entity.NotifyDetail;
import com.imyeyu.api.modules.common.service.NotifyDetailService;
import com.imyeyu.api.modules.common.service.NotifyService;
+import com.imyeyu.api.modules.common.service.SmsService;
import com.imyeyu.api.modules.user.entity.User;
import com.imyeyu.api.modules.user.service.UserLoginService;
import com.imyeyu.api.modules.user.service.UserService;
import com.imyeyu.java.TimiJava;
+import com.imyeyu.spring.annotation.AOPLog;
+import com.imyeyu.spring.annotation.CaptchaValid;
+import com.imyeyu.spring.annotation.RequestRateLimit;
import com.imyeyu.spring.annotation.RequiredToken;
+import com.imyeyu.spring.bean.CaptchaData;
import com.imyeyu.spring.bean.Page;
import com.imyeyu.spring.bean.PageResult;
import com.imyeyu.spring.util.ResponseView;
@@ -37,6 +42,8 @@ import java.util.stream.Stream;
@RequestMapping("/notify")
public class NotifyController {
+
+ private final SmsService smsService;
private final UserService userService;
private final NotifyService service;
private final UserLoginService userLoginService;
@@ -104,6 +111,14 @@ public class NotifyController {
service.cancel(id);
}
+ @AOPLog
+ @CaptchaValid
+ @RequestRateLimit(value = 1, inSeconds = 59)
+ @PostMapping("/sms/captcha/create")
+ public String smsCaptchaCreate(@RequestBody CaptchaData req) {
+ return smsService.captchaCreate(req.getData());
+ }
+
/// 查询当前用户的站内通知
///
/// @param page 分页参数
diff --git a/src/main/java/com/imyeyu/api/modules/common/entity/BaseQueueEntity.java b/src/main/java/com/imyeyu/api/modules/common/entity/BaseQueueEntity.java
index b49a04c..2b8a32f 100644
--- a/src/main/java/com/imyeyu/api/modules/common/entity/BaseQueueEntity.java
+++ b/src/main/java/com/imyeyu/api/modules/common/entity/BaseQueueEntity.java
@@ -1,5 +1,6 @@
package com.imyeyu.api.modules.common.entity;
+import com.fasterxml.jackson.databind.JsonNode;
import com.imyeyu.spring.annotation.table.AutoUUID;
import com.imyeyu.spring.annotation.table.Id;
import com.imyeyu.spring.entity.Creatable;
@@ -28,7 +29,7 @@ public class BaseQueueEntity implements IDEntity, Creatable, Destroyable
protected String data;
/** 参数 */
- protected String args;
+ protected JsonNode args;
/** 发送去向 */
protected String sendTo;
diff --git a/src/main/java/com/imyeyu/api/modules/common/entity/NotifyDetail.java b/src/main/java/com/imyeyu/api/modules/common/entity/NotifyDetail.java
index 96482d5..7087cb0 100644
--- a/src/main/java/com/imyeyu/api/modules/common/entity/NotifyDetail.java
+++ b/src/main/java/com/imyeyu/api/modules/common/entity/NotifyDetail.java
@@ -1,6 +1,7 @@
package com.imyeyu.api.modules.common.entity;
import com.fasterxml.jackson.annotation.JsonView;
+import com.fasterxml.jackson.databind.JsonNode;
import com.imyeyu.api.TimiServerAPI;
import com.imyeyu.api.modules.common.service.BaseQueueService;
import com.imyeyu.api.modules.common.service.HTTPQueueService;
@@ -103,7 +104,7 @@ public class NotifyDetail extends UUIDEntity {
/** 参数 */
@JsonView(ResponseView.Public.class)
- private String args;
+ private JsonNode args;
/** 发送来源 */
@JsonView(ResponseView.Public.class)
diff --git a/src/main/java/com/imyeyu/api/modules/common/service/SmsService.java b/src/main/java/com/imyeyu/api/modules/common/service/SmsService.java
index 282e1c5..defc3f8 100644
--- a/src/main/java/com/imyeyu/api/modules/common/service/SmsService.java
+++ b/src/main/java/com/imyeyu/api/modules/common/service/SmsService.java
@@ -1,30 +1,30 @@
-//package com.imyeyu.api.modules.common.service;
-//
-//import com.e2ins.ms.notify.entity.Notify;
-//import com.e2ins.ms.notify.entity.NotifyDetail;
-//
-///**
-// *
-// *
-// * @author 夜雨
-// * @since 2026-05-14 12:12
-// */
-//public interface SmsService {
-//
-// /**
-// * 创建短信验证码通知
-// *
-// * @param detail 通知
-// * @return 通知详情 ID
-// */
-// String captchaCreate(Notify detail);
-//
-// /**
-// * 校验短信验证码
-// *
-// * @param detailId 通知详情 ID
-// * @param captcha 请求验证码
-// * @return 通知详情
-// */
-// NotifyDetail captchaVerify(String detailId, String captcha);
-//}
+package com.imyeyu.api.modules.common.service;
+
+import com.imyeyu.api.modules.common.entity.Notify;
+import com.imyeyu.api.modules.common.entity.NotifyDetail;
+
+/**
+ *
+ *
+ * @author 夜雨
+ * @since 2026-05-14 12:12
+ */
+public interface SmsService {
+
+ /**
+ * 创建短信验证码通知
+ *
+ * @param detail 通知
+ * @return 通知详情 ID
+ */
+ String captchaCreate(Notify detail);
+
+ /**
+ * 校验短信验证码
+ *
+ * @param detailId 通知详情 ID
+ * @param captcha 请求验证码
+ * @return 通知详情
+ */
+ NotifyDetail captchaVerify(String detailId, String captcha);
+}
diff --git a/src/main/java/com/imyeyu/api/modules/common/service/implement/SmsQueueServiceImplement.java b/src/main/java/com/imyeyu/api/modules/common/service/implement/SmsQueueServiceImplement.java
index 670b515..ba7cdd5 100644
--- a/src/main/java/com/imyeyu/api/modules/common/service/implement/SmsQueueServiceImplement.java
+++ b/src/main/java/com/imyeyu/api/modules/common/service/implement/SmsQueueServiceImplement.java
@@ -1,6 +1,5 @@
package com.imyeyu.api.modules.common.service.implement;
-import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.imyeyu.api.modules.common.config.NotifyQueueConfig;
import com.imyeyu.api.modules.common.entity.NotifyDetail;
@@ -11,9 +10,9 @@ import com.imyeyu.api.modules.common.service.SmsQueueService;
import com.imyeyu.api.modules.common.util.QCloudSmsProxy;
import com.imyeyu.java.bean.timi.TimiCode;
import com.imyeyu.java.bean.timi.TimiException;
+import com.imyeyu.utils.Regex;
import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;
import com.tencentcloudapi.sms.v20210111.models.SendStatus;
-import com.imyeyu.utils.Regex;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -56,12 +55,7 @@ public class SmsQueueServiceImplement extends AbstractQueueService redisUserToken;
@@ -104,20 +102,15 @@ public class UserLoginServiceImplement implements UserLoginService, TimiJava {
@Override
- public LoginResponse loginBySms(CaptchaVerifyReq req) {
- try {
- NotifyDetail detail = smsNotifyService.captchaVerify(req);
- // 无报错即成功
- User user = userService.getByPhoneNo(detail.getSendTo());
- if (!user.isValidPhone()) {
- user.setPhoneNoVerifyAt(Time.now());
- userService.update(user);
- }
- return login(UUID.randomUUID().toString(), user.getId());
- } catch (IOException e) {
- log.error("login by sms error", e);
- throw new TimiException(TimiCode.ERROR, "验证短信失败");
+ public LoginResponse loginBySms(SmsCaptchaVerifyRequest request) {
+ NotifyDetail detail = smsService.captchaVerify(request.getDetailId(), request.getCaptcha());
+ // 无报错即成功
+ User user = userService.getByPhoneNo(detail.getSendTo());
+ if (!user.isValidPhone()) {
+ user.setPhoneNoVerifyAt(Time.now());
+ userService.update(user);
}
+ return login(UUID.randomUUID().toString(), user.getId());
}
@Override