com.ruoyi
diff --git a/ruoyi-common/ruoyi-common-sms/pom.xml b/ruoyi-common/ruoyi-common-sms/pom.xml
new file mode 100644
index 0000000..9c5d5aa
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-sms/pom.xml
@@ -0,0 +1,33 @@
+
+
+
+ com.ruoyi
+ ruoyi-common
+ ${revision}
+
+ 4.0.0
+
+ ruoyi-common-sms
+
+
+ ruoyi-common-sms 短信模块
+
+
+
+
+
+ org.dromara.sms4j
+ sms4j-spring-boot-starter
+
+
+
+
+ com.ruoyi
+ ruoyi-common-redis
+
+
+
+
+
diff --git a/ruoyi-common/ruoyi-common-sms/src/main/java/com/ruoyi/common/sms/config/SmsAutoConfiguration.java b/ruoyi-common/ruoyi-common-sms/src/main/java/com/ruoyi/common/sms/config/SmsAutoConfiguration.java
new file mode 100644
index 0000000..05e5021
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-sms/src/main/java/com/ruoyi/common/sms/config/SmsAutoConfiguration.java
@@ -0,0 +1,24 @@
+package com.ruoyi.common.sms.config;
+
+import com.ruoyi.common.sms.core.dao.FlexSmsDao;
+import org.dromara.sms4j.api.dao.SmsDao;
+import org.springframework.boot.autoconfigure.AutoConfiguration;
+import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Primary;
+
+/**
+ * 短信配置类
+ *
+ * @author Feng
+ */
+@AutoConfiguration(after = {RedisAutoConfiguration.class})
+public class SmsAutoConfiguration {
+
+ @Primary
+ @Bean
+ public SmsDao smsDao() {
+ return new FlexSmsDao();
+ }
+
+}
diff --git a/ruoyi-common/ruoyi-common-sms/src/main/java/com/ruoyi/common/sms/core/dao/FlexSmsDao.java b/ruoyi-common/ruoyi-common-sms/src/main/java/com/ruoyi/common/sms/core/dao/FlexSmsDao.java
new file mode 100644
index 0000000..a94a0fe
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-sms/src/main/java/com/ruoyi/common/sms/core/dao/FlexSmsDao.java
@@ -0,0 +1,72 @@
+package com.ruoyi.common.sms.core.dao;
+
+import com.ruoyi.common.core.constant.GlobalConstants;
+import com.ruoyi.common.redis.utils.RedisUtils;
+import org.dromara.sms4j.api.dao.SmsDao;
+
+import java.time.Duration;
+
+/**
+ * SmsDao缓存配置 (使用框架自带RedisUtils实现 协议统一)
+ * 主要用于短信重试和拦截的缓存
+ *
+ * @author Feng
+ */
+public class FlexSmsDao implements SmsDao {
+
+ /**
+ * 存储
+ *
+ * @param key 键
+ * @param value 值
+ * @param cacheTime 缓存时间(单位:秒)
+ */
+ @Override
+ public void set(String key, Object value, long cacheTime) {
+ RedisUtils.setCacheObject(GlobalConstants.GLOBAL_REDIS_KEY + key, value, Duration.ofSeconds(cacheTime));
+ }
+
+ /**
+ * 存储
+ *
+ * @param key 键
+ * @param value 值
+ */
+ @Override
+ public void set(String key, Object value) {
+ RedisUtils.setCacheObject(GlobalConstants.GLOBAL_REDIS_KEY + key, value, true);
+ }
+
+ /**
+ * 读取
+ *
+ * @param key 键
+ * @return 值
+ */
+ @Override
+ public Object get(String key) {
+ return RedisUtils.getCacheObject(GlobalConstants.GLOBAL_REDIS_KEY + key);
+ }
+
+ /**
+ * remove
+ *
根据key移除缓存
+ *
+ * @param key 缓存键
+ * @return 被删除的value
+ * @author :Wind
+ */
+ @Override
+ public Object remove(String key) {
+ return RedisUtils.deleteObject(GlobalConstants.GLOBAL_REDIS_KEY + key);
+ }
+
+ /**
+ * 清空
+ */
+ @Override
+ public void clean() {
+ RedisUtils.deleteObject(GlobalConstants.GLOBAL_REDIS_KEY + "sms:");
+ }
+
+}
diff --git a/ruoyi-common/ruoyi-common-sms/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-common/ruoyi-common-sms/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..e4081a1
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-sms/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+com.ruoyi.common.sms.config.SmsAutoConfiguration
diff --git a/ruoyi-modules/ruoyi-demo/pom.xml b/ruoyi-modules/ruoyi-demo/pom.xml
index a301066..984d19e 100644
--- a/ruoyi-modules/ruoyi-demo/pom.xml
+++ b/ruoyi-modules/ruoyi-demo/pom.xml
@@ -26,6 +26,11 @@
com.ruoyi
ruoyi-common-web
+
+