diff --git a/pom.xml b/pom.xml index 0d67b027..400c74ca 100644 --- a/pom.xml +++ b/pom.xml @@ -55,7 +55,7 @@ UTF-8 UTF-8 2.7.12 - 2.2.0 + 2.5.4 3.17.0 1.3.3 5.8.20 diff --git a/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/XPluginImpl.java b/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/XPluginImpl.java index 9c440a51..fea6bb21 100644 --- a/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/XPluginImpl.java +++ b/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/XPluginImpl.java @@ -1,7 +1,8 @@ package org.dromara.sms4j.solon; import org.dromara.sms4j.solon.config.SmsAutowiredConfig; -import org.noear.solon.core.AopContext; +import org.dromara.sms4j.solon.config.SupplierConfig; +import org.noear.solon.core.AppContext; import org.noear.solon.core.Plugin; /** @@ -9,8 +10,8 @@ import org.noear.solon.core.Plugin; */ public class XPluginImpl implements Plugin { @Override - public void start(AopContext context) { + public void start(AppContext context) { context.beanMake(SmsAutowiredConfig.class); - SmsAutowiredConfig.aopContext = context; + context.beanMake(SupplierConfig.class); } } diff --git a/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/aop/SolonRestrictedProcess.java b/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/aop/SolonRestrictedProcess.java index e95b69aa..3c36eee4 100644 --- a/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/aop/SolonRestrictedProcess.java +++ b/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/aop/SolonRestrictedProcess.java @@ -7,7 +7,7 @@ import org.dromara.sms4j.comm.exception.SmsBlendException; import org.dromara.sms4j.comm.utils.SmsUtils; import org.dromara.sms4j.provider.config.SmsConfig; import org.dromara.sms4j.provider.factory.BeanFactory; -import org.noear.solon.core.AopContext; +import org.noear.solon.core.AppContext; @Slf4j public class SolonRestrictedProcess implements RestrictedProcess { @@ -17,7 +17,7 @@ public class SolonRestrictedProcess implements RestrictedProcess { private static final String REDIS_KEY = "sms:restricted:"; private SmsDao smsDao; - public SolonRestrictedProcess(AopContext context) { + public SolonRestrictedProcess(AppContext context) { context.getBeanAsync(SmsDao.class, bean -> smsDao = bean); } @@ -26,6 +26,7 @@ public class SolonRestrictedProcess implements RestrictedProcess { SmsConfig config = BeanFactory.getSmsConfig(); Integer accountMax = config.getAccountMax(); // 每日最大发送量 Integer minuteMax = config.getMinuteMax(); // 每分钟最大发送量 + if (SmsUtils.isNotEmpty(accountMax)) { // 是否配置了每日限制 Integer i = (Integer) smsDao.get(REDIS_KEY + phone + "max"); if (SmsUtils.isEmpty(i)) { @@ -50,6 +51,7 @@ public class SolonRestrictedProcess implements RestrictedProcess { smsDao.set(REDIS_KEY + phone, 1, minTimer / 1000); } } + return null; } } diff --git a/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/config/SmsAutowiredConfig.java b/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/config/SmsAutowiredConfig.java index 508c29bf..fdd435f6 100644 --- a/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/config/SmsAutowiredConfig.java +++ b/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/config/SmsAutowiredConfig.java @@ -8,14 +8,10 @@ import org.dromara.sms4j.provider.config.SmsBanner; import org.dromara.sms4j.provider.config.SmsConfig; import org.dromara.sms4j.provider.factory.BeanFactory; import org.dromara.sms4j.solon.aop.SolonRestrictedProcess; -import org.noear.solon.Solon; -import org.noear.solon.Utils; import org.noear.solon.annotation.Bean; -import org.noear.solon.annotation.Condition; import org.noear.solon.annotation.Configuration; import org.noear.solon.annotation.Inject; -import org.noear.solon.core.AopContext; -import org.noear.solon.core.Props; +import org.noear.solon.core.AppContext; import org.noear.solon.core.bean.LifecycleBean; import java.util.concurrent.Executor; @@ -24,12 +20,12 @@ import java.util.concurrent.Executor; @Configuration public class SmsAutowiredConfig implements LifecycleBean { - public static AopContext aopContext; + @Inject + AppContext context; private T injectObj(String prefix, T obj) { //@Inject 只支持在字段、参数、类型上注入 - Props props = Solon.cfg().getProp(prefix); - Utils.injectProperties(obj, props); + context.cfg().getProp(prefix).bindTo(obj); return obj; } @@ -55,27 +51,12 @@ public class SmsAutowiredConfig implements LifecycleBean { } - /** - * smsConfig参数意义为确保注入时smsConfig已经存在 - */ - @Bean - @Condition(onProperty = "${sms.config-type}=config_file") - public SupplierConfig supplierConfig(@Inject SmsConfig smsConfig) { - return new SupplierConfig(); - } - - // @Bean - // @Condition(onProperty = "${sms.config-type}=sql_config") - // public SupplierSqlConfig supplierSqlConfig(@Inject SmsSqlConfig smsSqlConfig) { - // return new SupplierSqlConfig(); - // } - //是在 solon 容器扫描完成之后执行的 @Override public void start() { /* 如果配置中启用了redis,则注入redis工具*/ if (BeanFactory.getSmsConfig().getRedisCache()) { - SmsInvocationHandler.setRestrictedProcess(new SolonRestrictedProcess(aopContext)); + SmsInvocationHandler.setRestrictedProcess(new SolonRestrictedProcess(context)); log.debug("The redis cache is enabled for sms4j"); } diff --git a/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/config/SupplierConfig.java b/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/config/SupplierConfig.java index 0379e2d2..33d6e24c 100644 --- a/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/config/SupplierConfig.java +++ b/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/config/SupplierConfig.java @@ -9,18 +9,24 @@ import org.dromara.sms4j.jdcloud.config.JdCloudConfig; import org.dromara.sms4j.tencent.config.TencentConfig; import org.dromara.sms4j.unisms.config.UniConfig; import org.dromara.sms4j.yunpian.config.YunpianConfig; -import org.noear.solon.Solon; -import org.noear.solon.Utils; import org.noear.solon.annotation.Bean; +import org.noear.solon.annotation.Condition; import org.noear.solon.annotation.Configuration; -import org.noear.solon.core.Props; +import org.noear.solon.annotation.Inject; +import org.noear.solon.core.AppContext; +/** + * smsConfig参数意义为确保注入时smsConfig已经存在 + */ +@Condition(onProperty = "${sms.configType}=config_file") @Configuration public class SupplierConfig { + @Inject + AppContext context; + private T injectObj(String prefix, T obj) { //@Inject 只支持在字段、参数、类型上注入 - Props props = Solon.cfg().getProp(prefix); - Utils.injectProperties(obj, props); + context.cfg().getProp(prefix).bindTo(obj); return obj; }