Commit 46ed64ba4048e5e6bf24b791b6af5addf10b996a
1 parent
f3b6783c
短信提交 2021-03-28,增加发送日志
Showing
12 changed files
with
91 additions
and
79 deletions
src/main/java/cn/iocoder/dashboard/framework/sms/core/SmsClientFactory.java
| @@ -55,7 +55,7 @@ public class SmsClientFactory { | @@ -55,7 +55,7 @@ public class SmsClientFactory { | ||
| 55 | throw new ServiceException(INVALID_CHANNEL_CODE); | 55 | throw new ServiceException(INVALID_CHANNEL_CODE); |
| 56 | } | 56 | } |
| 57 | switch (channelEnum) { | 57 | switch (channelEnum) { |
| 58 | - case ALI: | 58 | + case ALIYUN: |
| 59 | return new AliyunSmsClient(channelVO); | 59 | return new AliyunSmsClient(channelVO); |
| 60 | case YUN_PIAN: | 60 | case YUN_PIAN: |
| 61 | return new YunpianSmsClient(channelVO); | 61 | return new YunpianSmsClient(channelVO); |
src/main/java/cn/iocoder/dashboard/framework/sms/core/enums/SmsChannelEnum.java
| 1 | package cn.iocoder.dashboard.framework.sms.core.enums; | 1 | package cn.iocoder.dashboard.framework.sms.core.enums; |
| 2 | 2 | ||
| 3 | +import cn.hutool.core.util.ArrayUtil; | ||
| 3 | import lombok.AllArgsConstructor; | 4 | import lombok.AllArgsConstructor; |
| 4 | import lombok.Getter; | 5 | import lombok.Getter; |
| 5 | 6 | ||
| @@ -13,22 +14,22 @@ import lombok.Getter; | @@ -13,22 +14,22 @@ import lombok.Getter; | ||
| 13 | @AllArgsConstructor | 14 | @AllArgsConstructor |
| 14 | public enum SmsChannelEnum { | 15 | public enum SmsChannelEnum { |
| 15 | 16 | ||
| 16 | - ALI("ALI", "阿里"), | ||
| 17 | YUN_PIAN("YUN_PIAN", "云片"), | 17 | YUN_PIAN("YUN_PIAN", "云片"), |
| 18 | - HUA_WEI("HUA_WEI", "华为"), | ||
| 19 | - TENCENT("TENCENT", "腾讯"); | 18 | + ALIYUN("ALIYUN", "阿里云"), |
| 19 | + TENCENT("TENCENT", "腾讯云"), | ||
| 20 | + HUA_WEI("HUA_WEI", "华为云"),; | ||
| 20 | 21 | ||
| 22 | + /** | ||
| 23 | + * 编码 | ||
| 24 | + */ | ||
| 21 | private final String code; | 25 | private final String code; |
| 22 | - | 26 | + /** |
| 27 | + * 名字 | ||
| 28 | + */ | ||
| 23 | private final String name; | 29 | private final String name; |
| 24 | 30 | ||
| 25 | public static SmsChannelEnum getByCode(String code) { | 31 | public static SmsChannelEnum getByCode(String code) { |
| 26 | - for (SmsChannelEnum value : SmsChannelEnum.values()) { | ||
| 27 | - if (value.getCode().equals(code)) { | ||
| 28 | - return value; | ||
| 29 | - } | ||
| 30 | - } | ||
| 31 | - return null; | 32 | + return ArrayUtil.firstMatch(o -> o.getCode().equals(code), values()); |
| 32 | } | 33 | } |
| 33 | 34 | ||
| 34 | } | 35 | } |
src/main/java/cn/iocoder/dashboard/modules/system/enums/sms/SysSmsSendFailureTypeEnum.java renamed to src/main/java/cn/iocoder/dashboard/framework/sms/core/enums/SmsSendFailureTypeEnum.java
| 1 | -package cn.iocoder.dashboard.modules.system.enums.sms; | 1 | +package cn.iocoder.dashboard.framework.sms.core.enums; |
| 2 | 2 | ||
| 3 | import lombok.AllArgsConstructor; | 3 | import lombok.AllArgsConstructor; |
| 4 | import lombok.Getter; | 4 | import lombok.Getter; |
| @@ -10,10 +10,17 @@ import lombok.Getter; | @@ -10,10 +10,17 @@ import lombok.Getter; | ||
| 10 | */ | 10 | */ |
| 11 | @Getter | 11 | @Getter |
| 12 | @AllArgsConstructor | 12 | @AllArgsConstructor |
| 13 | -public enum SysSmsSendFailureTypeEnum { | 13 | +public enum SmsSendFailureTypeEnum { |
| 14 | 14 | ||
| 15 | + // ========== 模板相关(100 开头) ========== | ||
| 16 | + SMS_TEMPLATE_DISABLE(100), // 短信模板被禁用 | ||
| 17 | + | ||
| 18 | + // ========== 其它相关 ========== | ||
| 15 | ; | 19 | ; |
| 16 | 20 | ||
| 21 | + /** | ||
| 22 | + * 失败类型 | ||
| 23 | + */ | ||
| 17 | private final int type; | 24 | private final int type; |
| 18 | 25 | ||
| 19 | } | 26 | } |
src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/sms/SysSmsSendLogDO.java
| @@ -2,7 +2,7 @@ package cn.iocoder.dashboard.modules.system.dal.dataobject.sms; | @@ -2,7 +2,7 @@ package cn.iocoder.dashboard.modules.system.dal.dataobject.sms; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.dashboard.common.enums.UserTypeEnum; | 3 | import cn.iocoder.dashboard.common.enums.UserTypeEnum; |
| 4 | import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO; | 4 | import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO; |
| 5 | -import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsSendFailureTypeEnum; | 5 | +import cn.iocoder.dashboard.framework.sms.core.enums.SmsSendFailureTypeEnum; |
| 6 | import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsSendStatusEnum; | 6 | import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsSendStatusEnum; |
| 7 | import com.baomidou.mybatisplus.annotation.TableName; | 7 | import com.baomidou.mybatisplus.annotation.TableName; |
| 8 | import lombok.*; | 8 | import lombok.*; |
| @@ -108,7 +108,7 @@ public class SysSmsSendLogDO extends BaseDO { | @@ -108,7 +108,7 @@ public class SysSmsSendLogDO extends BaseDO { | ||
| 108 | /** | 108 | /** |
| 109 | * 发送失败的类型 | 109 | * 发送失败的类型 |
| 110 | * | 110 | * |
| 111 | - * 枚举 {@link SysSmsSendFailureTypeEnum} | 111 | + * 枚举 {@link SmsSendFailureTypeEnum} |
| 112 | */ | 112 | */ |
| 113 | private Integer sendFailureType; | 113 | private Integer sendFailureType; |
| 114 | /** | 114 | /** |
src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/sms/SmsSendStreamConsumer.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/sms/SmsSendConsumer.java
| 1 | package cn.iocoder.dashboard.modules.system.mq.consumer.sms; | 1 | package cn.iocoder.dashboard.modules.system.mq.consumer.sms; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.dashboard.framework.redis.core.stream.AbstractStreamMessageListener; | ||
| 3 | import cn.iocoder.dashboard.framework.sms.client.AbstractSmsClient; | 4 | import cn.iocoder.dashboard.framework.sms.client.AbstractSmsClient; |
| 4 | import cn.iocoder.dashboard.framework.sms.core.SmsBody; | 5 | import cn.iocoder.dashboard.framework.sms.core.SmsBody; |
| 5 | import cn.iocoder.dashboard.framework.sms.core.SmsResult; | 6 | import cn.iocoder.dashboard.framework.sms.core.SmsResult; |
| 7 | +import cn.iocoder.dashboard.modules.system.mq.message.sms.SysSmsSendMessage; | ||
| 6 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsChannelService; | 8 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsChannelService; |
| 7 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsQueryLogService; | 9 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsQueryLogService; |
| 10 | +import cn.iocoder.dashboard.modules.system.service.sms.SysSmsService; | ||
| 8 | import cn.iocoder.dashboard.util.json.JsonUtils; | 11 | import cn.iocoder.dashboard.util.json.JsonUtils; |
| 9 | import lombok.extern.slf4j.Slf4j; | 12 | import lombok.extern.slf4j.Slf4j; |
| 10 | import org.springframework.data.redis.connection.stream.ObjectRecord; | 13 | import org.springframework.data.redis.connection.stream.ObjectRecord; |
| @@ -14,14 +17,14 @@ import org.springframework.stereotype.Component; | @@ -14,14 +17,14 @@ import org.springframework.stereotype.Component; | ||
| 14 | import javax.annotation.Resource; | 17 | import javax.annotation.Resource; |
| 15 | 18 | ||
| 16 | /** | 19 | /** |
| 17 | - * 短信发送流消息监听器 | 20 | + * 针对 {@link SysSmsSendMessage} 的消费者 |
| 18 | * | 21 | * |
| 19 | * @author zzf | 22 | * @author zzf |
| 20 | * @date 2021/3/9 16:35 | 23 | * @date 2021/3/9 16:35 |
| 21 | */ | 24 | */ |
| 22 | -@Slf4j | ||
| 23 | @Component | 25 | @Component |
| 24 | -public class SmsSendStreamConsumer implements StreamListener<String, ObjectRecord<String, SmsSendMessage>> { | 26 | +@Slf4j |
| 27 | +public class SmsSendConsumer extends AbstractStreamMessageListener<SysSmsSendMessage> { | ||
| 25 | 28 | ||
| 26 | @Resource | 29 | @Resource |
| 27 | private SysSmsChannelService smsChannelService; | 30 | private SysSmsChannelService smsChannelService; |
| @@ -29,15 +32,22 @@ public class SmsSendStreamConsumer implements StreamListener<String, ObjectRecor | @@ -29,15 +32,22 @@ public class SmsSendStreamConsumer implements StreamListener<String, ObjectRecor | ||
| 29 | @Resource | 32 | @Resource |
| 30 | private SysSmsQueryLogService smsQueryLogService; | 33 | private SysSmsQueryLogService smsQueryLogService; |
| 31 | 34 | ||
| 35 | + @Resource | ||
| 36 | + private SysSmsService smsService; | ||
| 37 | + | ||
| 32 | @Override | 38 | @Override |
| 33 | public void onMessage(ObjectRecord<String, SmsSendMessage> record) { | 39 | public void onMessage(ObjectRecord<String, SmsSendMessage> record) { |
| 34 | - SmsSendMessage message = record.getValue(); | ||
| 35 | - SmsBody body = message.getSmsBody(); | ||
| 36 | - log.info("[onMessage][收到 发送短信 消息], content: " + JsonUtils.toJsonString(body)); | ||
| 37 | AbstractSmsClient smsClient = smsChannelService.getSmsClient(body.getTemplateCode()); | 40 | AbstractSmsClient smsClient = smsChannelService.getSmsClient(body.getTemplateCode()); |
| 38 | String templateApiId = smsChannelService.getSmsTemplateApiIdByCode(body.getTemplateCode()); | 41 | String templateApiId = smsChannelService.getSmsTemplateApiIdByCode(body.getTemplateCode()); |
| 39 | 42 | ||
| 40 | SmsResult result = smsClient.send(templateApiId, body, message.getTargetPhone()); | 43 | SmsResult result = smsClient.send(templateApiId, body, message.getTargetPhone()); |
| 41 | smsQueryLogService.afterSendLog(body.getSmsLogId(), result); | 44 | smsQueryLogService.afterSendLog(body.getSmsLogId(), result); |
| 42 | } | 45 | } |
| 46 | + | ||
| 47 | + @Override | ||
| 48 | + public void onMessage(SysSmsSendMessage message) { | ||
| 49 | + log.info("[onMessage][消息内容({})]", message); | ||
| 50 | + smsService.doSendSms(message); | ||
| 51 | + } | ||
| 52 | + | ||
| 43 | } | 53 | } |
src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/sms/SysSmsSendConsumer.java deleted
| 1 | -package cn.iocoder.dashboard.modules.system.mq.consumer.sms; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.dashboard.framework.redis.core.stream.AbstractStreamMessageListener; | ||
| 4 | -import cn.iocoder.dashboard.modules.system.mq.message.sms.SysSmsSendMessage; | ||
| 5 | -import lombok.extern.slf4j.Slf4j; | ||
| 6 | -import org.springframework.stereotype.Component; | ||
| 7 | - | ||
| 8 | -@Component | ||
| 9 | -@Slf4j | ||
| 10 | -public class SysSmsSendConsumer extends AbstractStreamMessageListener<SysSmsSendMessage> { | ||
| 11 | - | ||
| 12 | - @Override | ||
| 13 | - public void onMessage(SysSmsSendMessage message) { | ||
| 14 | - log.info("[onMessage][消息内容({})]", message); | ||
| 15 | - } | ||
| 16 | - | ||
| 17 | -} |
src/main/java/cn/iocoder/dashboard/modules/system/mq/message/sms/SysSmsSendMessage.java
| @@ -15,28 +15,29 @@ import java.util.Map; | @@ -15,28 +15,29 @@ import java.util.Map; | ||
| 15 | public class SysSmsSendMessage implements StreamMessage { | 15 | public class SysSmsSendMessage implements StreamMessage { |
| 16 | 16 | ||
| 17 | /** | 17 | /** |
| 18 | + * 发送日志编号 | ||
| 19 | + */ | ||
| 20 | + @NotNull(message = "发送日志编号不能为空") | ||
| 21 | + private Long sendLogId; | ||
| 22 | + /** | ||
| 18 | * 手机号 | 23 | * 手机号 |
| 19 | */ | 24 | */ |
| 20 | @NotNull(message = "手机号不能为空") | 25 | @NotNull(message = "手机号不能为空") |
| 21 | private String mobile; | 26 | private String mobile; |
| 22 | /** | 27 | /** |
| 23 | - * 短信模板编号 | 28 | + * 短信渠道编号 |
| 24 | */ | 29 | */ |
| 25 | - @NotNull(message = "短信模板编号不能为空") | ||
| 26 | - private String templateCode; | 30 | + @NotNull(message = "短信渠道编号不能为空") |
| 31 | + private Long channelId; | ||
| 27 | /** | 32 | /** |
| 28 | - * 短信模板参数 | 33 | + * 短信 API 的模板编号 |
| 29 | */ | 34 | */ |
| 30 | - private Map<String, Object> templateParams; | ||
| 31 | - | 35 | + @NotNull(message = "短信 API 的模板编号不能为空") |
| 36 | + private String apiTemplateId; | ||
| 32 | /** | 37 | /** |
| 33 | - * 用户编号,允许空 | ||
| 34 | - */ | ||
| 35 | - private Integer userId; | ||
| 36 | - /** | ||
| 37 | - * 用户类型,允许空 | 38 | + * 短信模板参数 |
| 38 | */ | 39 | */ |
| 39 | - private Integer userType; | 40 | + private Map<String, Object> templateParams; |
| 40 | 41 | ||
| 41 | @Override | 42 | @Override |
| 42 | public String getStreamKey() { | 43 | public String getStreamKey() { |
src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/sms/SmsSendStreamProducer.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/sms/SysSmsProducer.java
| @@ -17,7 +17,7 @@ import java.util.Map; | @@ -17,7 +17,7 @@ import java.util.Map; | ||
| 17 | */ | 17 | */ |
| 18 | @Slf4j | 18 | @Slf4j |
| 19 | @Component | 19 | @Component |
| 20 | -public class SmsSendStreamProducer { | 20 | +public class SysSmsProducer { |
| 21 | 21 | ||
| 22 | @Resource | 22 | @Resource |
| 23 | private StringRedisTemplate stringRedisTemplate; | 23 | private StringRedisTemplate stringRedisTemplate; |
| @@ -25,17 +25,17 @@ public class SmsSendStreamProducer { | @@ -25,17 +25,17 @@ public class SmsSendStreamProducer { | ||
| 25 | /** | 25 | /** |
| 26 | * 发送短信 Message | 26 | * 发送短信 Message |
| 27 | * | 27 | * |
| 28 | + * @param sendLogId 发送日志编号 | ||
| 28 | * @param mobile 手机号 | 29 | * @param mobile 手机号 |
| 29 | - * @param templateCode 短信模板编号 | 30 | + * @param channelId 渠道编号 |
| 31 | + * @param apiTemplateId 短信模板编号 | ||
| 30 | * @param templateParams 短信模板参数 | 32 | * @param templateParams 短信模板参数 |
| 31 | - * @param userId 用户编号 | ||
| 32 | - * @param userType 用户类型 | 33 | + * @param sendLogId 发送日志编号 |
| 33 | */ | 34 | */ |
| 34 | - public void sendSmsSendMessage(String mobile, String templateCode, Map<String, Object> templateParams, | ||
| 35 | - Integer userId, Integer userType) { | ||
| 36 | - SysSmsSendMessage message = new SysSmsSendMessage(); | ||
| 37 | - message.setMobile(mobile).setTemplateCode(templateCode).setTemplateParams(templateParams); | ||
| 38 | - message.setUserId(userId).setUserType(userType); | 35 | + public void sendSmsSendMessage(Long sendLogId, String mobile, |
| 36 | + Long channelId, String apiTemplateId, Map<String, Object> templateParams) { | ||
| 37 | + SysSmsSendMessage message = new SysSmsSendMessage().setSendLogId(sendLogId).setMobile(mobile); | ||
| 38 | + message.setChannelId(channelId).setApiTemplateId(apiTemplateId).setTemplateParams(templateParams); | ||
| 39 | RedisMessageUtils.sendStreamMessage(stringRedisTemplate, message); | 39 | RedisMessageUtils.sendStreamMessage(stringRedisTemplate, message); |
| 40 | } | 40 | } |
| 41 | 41 |
src/main/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsSendLogService.java
| @@ -15,6 +15,14 @@ public interface SysSmsSendLogService { | @@ -15,6 +15,14 @@ public interface SysSmsSendLogService { | ||
| 15 | Long createSmsSendLog(String mobile, Long userId, Integer userType, | 15 | Long createSmsSendLog(String mobile, Long userId, Integer userType, |
| 16 | SysSmsTemplateDO template, String templateContent, Map<String, Object> templateParams); | 16 | SysSmsTemplateDO template, String templateContent, Map<String, Object> templateParams); |
| 17 | 17 | ||
| 18 | + /** | ||
| 19 | + * 更新发送日志为失败 | ||
| 20 | + * | ||
| 21 | + * @param id 发送日志编号 | ||
| 22 | + * @param sendFailureType 失败类型 | ||
| 23 | + */ | ||
| 24 | + void updateSmsSendLogFailure(Long id, Integer sendFailureType); | ||
| 25 | + | ||
| 18 | void getAndSaveSmsSendLog(); | 26 | void getAndSaveSmsSendLog(); |
| 19 | 27 | ||
| 20 | } | 28 | } |
src/main/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsService.java
| 1 | package cn.iocoder.dashboard.modules.system.service.sms; | 1 | package cn.iocoder.dashboard.modules.system.service.sms; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.dashboard.modules.system.mq.message.sms.SysSmsSendMessage; | ||
| 4 | + | ||
| 3 | import javax.servlet.ServletRequest; | 5 | import javax.servlet.ServletRequest; |
| 4 | import java.util.List; | 6 | import java.util.List; |
| 5 | import java.util.Map; | 7 | import java.util.Map; |
| @@ -19,7 +21,7 @@ public interface SysSmsService { | @@ -19,7 +21,7 @@ public interface SysSmsService { | ||
| 19 | void sendBatchSms(List<String> mobiles, List<Long> userIds, Integer userType, | 21 | void sendBatchSms(List<String> mobiles, List<Long> userIds, Integer userType, |
| 20 | String templateCode, Map<String, Object> templateParams); | 22 | String templateCode, Map<String, Object> templateParams); |
| 21 | 23 | ||
| 22 | - void doSendSms(); | 24 | + void doSendSms(SysSmsSendMessage message); |
| 23 | 25 | ||
| 24 | /** | 26 | /** |
| 25 | * 处理短信发送回调函数 | 27 | * 处理短信发送回调函数 |
src/main/java/cn/iocoder/dashboard/modules/system/service/sms/impl/SysSmsSendLogServiceImpl.java
| @@ -42,7 +42,6 @@ public class SysSmsSendLogServiceImpl implements SysSmsSendLogService { | @@ -42,7 +42,6 @@ public class SysSmsSendLogServiceImpl implements SysSmsSendLogService { | ||
| 42 | */ | 42 | */ |
| 43 | private static final long SCHEDULER_PERIOD = 5 * 60 * 1000L; | 43 | private static final long SCHEDULER_PERIOD = 5 * 60 * 1000L; |
| 44 | 44 | ||
| 45 | - | ||
| 46 | @Override | 45 | @Override |
| 47 | public Long createSmsSendLog(String mobile, Long userId, Integer userType, | 46 | public Long createSmsSendLog(String mobile, Long userId, Integer userType, |
| 48 | SysSmsTemplateDO template, String templateContent, Map<String, Object> templateParams) { | 47 | SysSmsTemplateDO template, String templateContent, Map<String, Object> templateParams) { |
| @@ -62,6 +61,11 @@ public class SysSmsSendLogServiceImpl implements SysSmsSendLogService { | @@ -62,6 +61,11 @@ public class SysSmsSendLogServiceImpl implements SysSmsSendLogService { | ||
| 62 | } | 61 | } |
| 63 | 62 | ||
| 64 | @Override | 63 | @Override |
| 64 | + public void updateSmsSendLogFailure(Long id, Integer sendFailureType) { | ||
| 65 | + smsSendLogMapper.updateById(new SysSmsSendLogDO().setId(id).setSendFailureType(sendFailureType)); | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + @Override | ||
| 65 | public void getAndSaveSmsSendLog() { | 69 | public void getAndSaveSmsSendLog() { |
| 66 | 70 | ||
| 67 | List<SysSmsSendLogDO> noResultQueryLogList = smsQueryLogMapper.selectNoResultQueryLogList(); | 71 | List<SysSmsSendLogDO> noResultQueryLogList = smsQueryLogMapper.selectNoResultQueryLogList(); |
src/main/java/cn/iocoder/dashboard/modules/system/service/sms/impl/SysSmsServiceImpl.java
| 1 | package cn.iocoder.dashboard.modules.system.service.sms.impl; | 1 | package cn.iocoder.dashboard.modules.system.service.sms.impl; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | -import cn.hutool.core.map.MapUtil; | ||
| 5 | import cn.hutool.core.util.StrUtil; | 4 | import cn.hutool.core.util.StrUtil; |
| 5 | +import cn.iocoder.dashboard.common.enums.CommonStatusEnum; | ||
| 6 | import cn.iocoder.dashboard.common.enums.UserTypeEnum; | 6 | import cn.iocoder.dashboard.common.enums.UserTypeEnum; |
| 7 | -import cn.iocoder.dashboard.framework.sms.client.AbstractSmsClient; | ||
| 8 | -import cn.iocoder.dashboard.framework.sms.core.SmsBody; | ||
| 9 | import cn.iocoder.dashboard.framework.sms.core.SmsClientFactory; | 7 | import cn.iocoder.dashboard.framework.sms.core.SmsClientFactory; |
| 10 | import cn.iocoder.dashboard.framework.sms.core.SmsResultDetail; | 8 | import cn.iocoder.dashboard.framework.sms.core.SmsResultDetail; |
| 9 | +import cn.iocoder.dashboard.framework.sms.core.enums.SmsSendFailureTypeEnum; | ||
| 11 | import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | 10 | import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO; |
| 12 | import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; | 11 | import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; |
| 13 | -import cn.iocoder.dashboard.modules.system.mq.producer.sms.SmsSendStreamProducer; | 12 | +import cn.iocoder.dashboard.modules.system.mq.message.sms.SysSmsSendMessage; |
| 13 | +import cn.iocoder.dashboard.modules.system.mq.producer.sms.SysSmsProducer; | ||
| 14 | import cn.iocoder.dashboard.modules.system.service.sms.*; | 14 | import cn.iocoder.dashboard.modules.system.service.sms.*; |
| 15 | import cn.iocoder.dashboard.modules.system.service.user.SysUserService; | 15 | import cn.iocoder.dashboard.modules.system.service.user.SysUserService; |
| 16 | import org.springframework.stereotype.Service; | 16 | import org.springframework.stereotype.Service; |
| @@ -20,8 +20,6 @@ import javax.servlet.ServletRequest; | @@ -20,8 +20,6 @@ import javax.servlet.ServletRequest; | ||
| 20 | import java.util.List; | 20 | import java.util.List; |
| 21 | import java.util.Map; | 21 | import java.util.Map; |
| 22 | import java.util.Objects; | 22 | import java.util.Objects; |
| 23 | -import java.util.function.Consumer; | ||
| 24 | -import java.util.function.Predicate; | ||
| 25 | 23 | ||
| 26 | import static cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil.exception; | 24 | import static cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil.exception; |
| 27 | import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; | 25 | import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; |
| @@ -51,7 +49,7 @@ public class SysSmsServiceImpl implements SysSmsService { | @@ -51,7 +49,7 @@ public class SysSmsServiceImpl implements SysSmsService { | ||
| 51 | private SysSmsQueryLogService logService; | 49 | private SysSmsQueryLogService logService; |
| 52 | 50 | ||
| 53 | @Resource | 51 | @Resource |
| 54 | - private SmsSendStreamProducer smsProducer; | 52 | + private SysSmsProducer smsProducer; |
| 55 | 53 | ||
| 56 | @Resource | 54 | @Resource |
| 57 | private SmsClientFactory smsClientFactory; | 55 | private SmsClientFactory smsClientFactory; |
| @@ -68,8 +66,13 @@ public class SysSmsServiceImpl implements SysSmsService { | @@ -68,8 +66,13 @@ public class SysSmsServiceImpl implements SysSmsService { | ||
| 68 | String content = smsTemplateService.formatSmsTemplateContent(template.getContent(), templateParams); | 66 | String content = smsTemplateService.formatSmsTemplateContent(template.getContent(), templateParams); |
| 69 | Long sendLogId = smsSendLogService.createSmsSendLog(mobile, userId, userType, template, content, templateParams); | 67 | Long sendLogId = smsSendLogService.createSmsSendLog(mobile, userId, userType, template, content, templateParams); |
| 70 | 68 | ||
| 71 | - // 发送 MQ 消息 | ||
| 72 | - | 69 | + // 如果模板被禁用,则直接标记发送失败。也就说,不发短信,嘿嘿。 |
| 70 | + if (CommonStatusEnum.DISABLE.getStatus().equals(template.getStatus())) { | ||
| 71 | + smsSendLogService.updateSmsSendLogFailure(sendLogId, SmsSendFailureTypeEnum.SMS_TEMPLATE_DISABLE.getType()); | ||
| 72 | + return; | ||
| 73 | + } | ||
| 74 | + // 如果模板未禁用,发送 MQ 消息。目的是,异步化调用短信平台 | ||
| 75 | + smsProducer.sendSmsSendMessage(sendLogId, mobile, template.getChannelId(), template.getApiTemplateId(), templateParams); | ||
| 73 | } | 76 | } |
| 74 | 77 | ||
| 75 | @Override | 78 | @Override |
| @@ -79,11 +82,6 @@ public class SysSmsServiceImpl implements SysSmsService { | @@ -79,11 +82,6 @@ public class SysSmsServiceImpl implements SysSmsService { | ||
| 79 | SysSmsTemplateDO template = this.checkSmsTemplateValid(templateCode, templateParams); | 82 | SysSmsTemplateDO template = this.checkSmsTemplateValid(templateCode, templateParams); |
| 80 | } | 83 | } |
| 81 | 84 | ||
| 82 | - @Override | ||
| 83 | - public void doSendSms() { | ||
| 84 | - | ||
| 85 | - } | ||
| 86 | - | ||
| 87 | private SysSmsTemplateDO checkSmsTemplateValid(String templateCode, Map<String, Object> templateParams) { | 85 | private SysSmsTemplateDO checkSmsTemplateValid(String templateCode, Map<String, Object> templateParams) { |
| 88 | // 短信模板不存在 | 86 | // 短信模板不存在 |
| 89 | SysSmsTemplateDO template = smsTemplateService.getSmsTemplateByCode(templateCode); | 87 | SysSmsTemplateDO template = smsTemplateService.getSmsTemplateByCode(templateCode); |
| @@ -132,10 +130,8 @@ public class SysSmsServiceImpl implements SysSmsService { | @@ -132,10 +130,8 @@ public class SysSmsServiceImpl implements SysSmsService { | ||
| 132 | } | 130 | } |
| 133 | 131 | ||
| 134 | @Override | 132 | @Override |
| 135 | - public void send(SmsBody smsBody, String targetPhone) { | ||
| 136 | - AbstractSmsClient client = channelService.getSmsClient(smsBody.getTemplateCode()); | ||
| 137 | - logService.beforeSendLog(smsBody, targetPhone, client); | ||
| 138 | - smsProducer.sendSmsSendMessage(smsBody, targetPhone); | 133 | + public void doSendSms(SysSmsSendMessage message) { |
| 134 | + | ||
| 139 | } | 135 | } |
| 140 | 136 | ||
| 141 | @Override | 137 | @Override |