Commit 3acdec965d0b7ba9aa386f190faaf2f6c960039c
1 parent
162d6046
短信提交 2021-03-24,调整下短信发送 API
Showing
51 changed files
with
195 additions
and
354 deletions
src/main/java/cn/iocoder/dashboard/framework/redis/core/util/RedisStreamUtils.java deleted
| 1 | -package cn.iocoder.dashboard.framework.redis.core.util; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.dashboard.modules.system.redis.stream.sms.SmsSendMessage; | ||
| 4 | -import org.springframework.data.redis.connection.stream.StreamRecords; | ||
| 5 | -import org.springframework.data.redis.core.RedisTemplate; | ||
| 6 | - | ||
| 7 | -/** | ||
| 8 | - * Redis 消息工具类 | ||
| 9 | - * | ||
| 10 | - * @author 芋道源码 | ||
| 11 | - */ | ||
| 12 | -public class RedisStreamUtils { | ||
| 13 | - | ||
| 14 | - public static final String KEY_SMS_SEND = "stream_sms_send"; | ||
| 15 | - | ||
| 16 | - public static final String GROUP_SMS_SEND = "group_sms_send"; | ||
| 17 | - | ||
| 18 | - /** | ||
| 19 | - * 发送 Redis 消息,基于 Redis pub/sub 实现 | ||
| 20 | - * | ||
| 21 | - * @param redisTemplate Redis 操作模板 | ||
| 22 | - * @param message 消息 | ||
| 23 | - */ | ||
| 24 | - public static void sendChannelMessage(RedisTemplate<String, ?> redisTemplate, SmsSendMessage message) { | ||
| 25 | - | ||
| 26 | - redisTemplate.opsForStream().add(StreamRecords.newRecord().ofObject(message).withStreamKey(KEY_SMS_SEND)); | ||
| 27 | - } | ||
| 28 | - | ||
| 29 | -} |
src/main/java/cn/iocoder/dashboard/framework/sms/core/SmsClientFactory.java
| @@ -102,7 +102,7 @@ public class SmsClientFactory { | @@ -102,7 +102,7 @@ public class SmsClientFactory { | ||
| 102 | public String getTemplateApiIdByCode(String templateCode) { | 102 | public String getTemplateApiIdByCode(String templateCode) { |
| 103 | SmsTemplateProperty smsTemplateProperty = templatePropertyMap.get(templateCode); | 103 | SmsTemplateProperty smsTemplateProperty = templatePropertyMap.get(templateCode); |
| 104 | if (smsTemplateProperty == null) { | 104 | if (smsTemplateProperty == null) { |
| 105 | - throw new ServiceException(SMS_TEMPLATE_NOT_FOUND); | 105 | + throw new ServiceException(SMS_TEMPLATE_NOT_EXISTS); |
| 106 | } | 106 | } |
| 107 | return smsTemplateProperty.getApiTemplateId(); | 107 | return smsTemplateProperty.getApiTemplateId(); |
| 108 | } | 108 | } |
src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/SmsChannelController.java
| @@ -5,7 +5,7 @@ import cn.iocoder.dashboard.common.pojo.PageResult; | @@ -5,7 +5,7 @@ import cn.iocoder.dashboard.common.pojo.PageResult; | ||
| 5 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.req.SmsChannelCreateReqVO; | 5 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.req.SmsChannelCreateReqVO; |
| 6 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.req.SmsChannelPageReqVO; | 6 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.req.SmsChannelPageReqVO; |
| 7 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.resp.SmsChannelEnumRespVO; | 7 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.resp.SmsChannelEnumRespVO; |
| 8 | -import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.sms.SysSmsChannelDO; | 8 | +import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsChannelDO; |
| 9 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsChannelService; | 9 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsChannelService; |
| 10 | import io.swagger.annotations.Api; | 10 | import io.swagger.annotations.Api; |
| 11 | import io.swagger.annotations.ApiOperation; | 11 | import io.swagger.annotations.ApiOperation; |
src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/SmsDefaultCallbackController.java
| 1 | package cn.iocoder.dashboard.modules.system.controller.sms; | 1 | package cn.iocoder.dashboard.modules.system.controller.sms; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.dashboard.framework.sms.core.SmsBody; | ||
| 4 | -import cn.iocoder.dashboard.modules.system.redis.stream.sms.SmsSendStreamProducer; | ||
| 5 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsService; | 3 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsService; |
| 6 | import io.swagger.annotations.Api; | 4 | import io.swagger.annotations.Api; |
| 7 | import io.swagger.annotations.ApiOperation; | 5 | import io.swagger.annotations.ApiOperation; |
| 8 | -import org.springframework.web.bind.annotation.GetMapping; | ||
| 9 | import org.springframework.web.bind.annotation.PostMapping; | 6 | import org.springframework.web.bind.annotation.PostMapping; |
| 10 | import org.springframework.web.bind.annotation.RequestMapping; | 7 | import org.springframework.web.bind.annotation.RequestMapping; |
| 11 | import org.springframework.web.bind.annotation.RestController; | 8 | import org.springframework.web.bind.annotation.RestController; |
| 12 | 9 | ||
| 13 | import javax.annotation.Resource; | 10 | import javax.annotation.Resource; |
| 14 | import javax.servlet.ServletRequest; | 11 | import javax.servlet.ServletRequest; |
| 15 | -import java.util.Arrays; | ||
| 16 | -import java.util.Map; | ||
| 17 | 12 | ||
| 18 | /** | 13 | /** |
| 19 | * 短信默认回调接口 | 14 | * 短信默认回调接口 |
src/main/java/cn/iocoder/dashboard/modules/system/convert/sms/SmsChannelConvert.java
| @@ -7,7 +7,7 @@ import cn.iocoder.dashboard.modules.system.controller.sms.vo.SmsChannelAllVO; | @@ -7,7 +7,7 @@ import cn.iocoder.dashboard.modules.system.controller.sms.vo.SmsChannelAllVO; | ||
| 7 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.req.SmsChannelCreateReqVO; | 7 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.req.SmsChannelCreateReqVO; |
| 8 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.resp.SmsChannelEnumRespVO; | 8 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.resp.SmsChannelEnumRespVO; |
| 9 | import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserUpdateReqVO; | 9 | import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserUpdateReqVO; |
| 10 | -import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.sms.SysSmsChannelDO; | 10 | +import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsChannelDO; |
| 11 | import com.baomidou.mybatisplus.core.metadata.IPage; | 11 | import com.baomidou.mybatisplus.core.metadata.IPage; |
| 12 | import org.mapstruct.Mapper; | 12 | import org.mapstruct.Mapper; |
| 13 | import org.mapstruct.Mapping; | 13 | import org.mapstruct.Mapping; |
src/main/java/cn/iocoder/dashboard/modules/system/convert/sms/SmsTemplateConvert.java
| @@ -3,8 +3,8 @@ package cn.iocoder.dashboard.modules.system.convert.sms; | @@ -3,8 +3,8 @@ package cn.iocoder.dashboard.modules.system.convert.sms; | ||
| 3 | import cn.iocoder.dashboard.common.pojo.PageResult; | 3 | import cn.iocoder.dashboard.common.pojo.PageResult; |
| 4 | import cn.iocoder.dashboard.framework.sms.core.property.SmsTemplateProperty; | 4 | import cn.iocoder.dashboard.framework.sms.core.property.SmsTemplateProperty; |
| 5 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.SmsTemplateVO; | 5 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.SmsTemplateVO; |
| 6 | -import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.sms.SysSmsChannelDO; | ||
| 7 | -import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.sms.SysSmsTemplateDO; | 6 | +import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsChannelDO; |
| 7 | +import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 8 | import com.baomidou.mybatisplus.core.metadata.IPage; | 8 | import com.baomidou.mybatisplus.core.metadata.IPage; |
| 9 | import org.mapstruct.Mapper; | 9 | import org.mapstruct.Mapper; |
| 10 | import org.mapstruct.Mapping; | 10 | import org.mapstruct.Mapping; |
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dataobject/sms/SysSmsChannelDO.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/sms/SysSmsChannelDO.java
| 1 | -package cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.sms; | 1 | +package cn.iocoder.dashboard.modules.system.dal.dataobject.sms; |
| 2 | 2 | ||
| 3 | import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO; | 3 | import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO; |
| 4 | import com.baomidou.mybatisplus.annotation.TableName; | 4 | import com.baomidou.mybatisplus.annotation.TableName; |
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dataobject/sms/SysSmsQueryLogDO.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/sms/SysSmsQueryLogDO.java
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dataobject/sms/SysSmsSendLogDO.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/sms/SysSmsSendLogDO.java
| 1 | -package cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.sms; | 1 | +package cn.iocoder.dashboard.modules.system.dal.dataobject.sms; |
| 2 | 2 | ||
| 3 | import cn.iocoder.dashboard.modules.system.enums.sms.SmsSendStatusEnum; | 3 | import cn.iocoder.dashboard.modules.system.enums.sms.SmsSendStatusEnum; |
| 4 | import com.baomidou.mybatisplus.annotation.TableName; | 4 | import com.baomidou.mybatisplus.annotation.TableName; |
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dataobject/sms/SysSmsTemplateDO.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/sms/SysSmsTemplateDO.java
| 1 | -package cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.sms; | 1 | +package cn.iocoder.dashboard.modules.system.dal.dataobject.sms; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.dashboard.common.enums.CommonStatusEnum; | ||
| 3 | import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO; | 4 | import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO; |
| 5 | +import com.baomidou.mybatisplus.annotation.TableField; | ||
| 4 | import com.baomidou.mybatisplus.annotation.TableName; | 6 | import com.baomidou.mybatisplus.annotation.TableName; |
| 7 | +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; | ||
| 5 | import lombok.Data; | 8 | import lombok.Data; |
| 6 | import lombok.EqualsAndHashCode; | 9 | import lombok.EqualsAndHashCode; |
| 7 | 10 | ||
| 8 | -import java.util.Date; | 11 | +import java.util.List; |
| 9 | 12 | ||
| 10 | /** | 13 | /** |
| 11 | * 短信模板 | 14 | * 短信模板 |
| @@ -44,7 +47,7 @@ public class SysSmsTemplateDO extends BaseDO { | @@ -44,7 +47,7 @@ public class SysSmsTemplateDO extends BaseDO { | ||
| 44 | private String bizCode; | 47 | private String bizCode; |
| 45 | 48 | ||
| 46 | /** | 49 | /** |
| 47 | - * 编码 | 50 | + * 模板编码 |
| 48 | */ | 51 | */ |
| 49 | private String code; | 52 | private String code; |
| 50 | 53 | ||
| @@ -66,7 +69,8 @@ public class SysSmsTemplateDO extends BaseDO { | @@ -66,7 +69,8 @@ public class SysSmsTemplateDO extends BaseDO { | ||
| 66 | /** | 69 | /** |
| 67 | * 参数数组(自动根据内容生成) | 70 | * 参数数组(自动根据内容生成) |
| 68 | */ | 71 | */ |
| 69 | - private String params; | 72 | + @TableField(typeHandler = JacksonTypeHandler.class) |
| 73 | + private List<String> params; | ||
| 70 | 74 | ||
| 71 | /** | 75 | /** |
| 72 | * 备注 | 76 | * 备注 |
| @@ -74,7 +78,9 @@ public class SysSmsTemplateDO extends BaseDO { | @@ -74,7 +78,9 @@ public class SysSmsTemplateDO extends BaseDO { | ||
| 74 | private String remark; | 78 | private String remark; |
| 75 | 79 | ||
| 76 | /** | 80 | /** |
| 77 | - * 启用状态(0正常 1停用) | 81 | + * 启用状态 |
| 82 | + * | ||
| 83 | + * 枚举 {@link CommonStatusEnum} | ||
| 78 | */ | 84 | */ |
| 79 | private Integer status; | 85 | private Integer status; |
| 80 | 86 |
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/sms/SysSmsChannelMapper.java
| 1 | -package cn.iocoder.dashboard.modules.system.dal.mysql.dao.sms; | 1 | +package cn.iocoder.dashboard.modules.system.dal.mysql.sms; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.util.StrUtil; | 3 | import cn.hutool.core.util.StrUtil; |
| 4 | import cn.iocoder.dashboard.common.enums.CommonStatusEnum; | 4 | import cn.iocoder.dashboard.common.enums.CommonStatusEnum; |
| 5 | import cn.iocoder.dashboard.framework.mybatis.core.util.MyBatisUtils; | 5 | import cn.iocoder.dashboard.framework.mybatis.core.util.MyBatisUtils; |
| 6 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.req.SmsChannelPageReqVO; | 6 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.req.SmsChannelPageReqVO; |
| 7 | -import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.sms.SysSmsChannelDO; | 7 | +import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsChannelDO; |
| 8 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 8 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| 9 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 9 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| 10 | import com.baomidou.mybatisplus.core.metadata.IPage; | 10 | import com.baomidou.mybatisplus.core.metadata.IPage; |
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/sms/SysSmsQueryLogMapper.java
| 1 | -package cn.iocoder.dashboard.modules.system.dal.mysql.dao.sms; | 1 | +package cn.iocoder.dashboard.modules.system.dal.mysql.sms; |
| 2 | 2 | ||
| 3 | import cn.iocoder.dashboard.common.enums.DefaultBitFieldEnum; | 3 | import cn.iocoder.dashboard.common.enums.DefaultBitFieldEnum; |
| 4 | -import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.sms.SysSmsQueryLogDO; | 4 | +import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsQueryLogDO; |
| 5 | import cn.iocoder.dashboard.modules.system.enums.sms.SmsSendStatusEnum; | 5 | import cn.iocoder.dashboard.modules.system.enums.sms.SmsSendStatusEnum; |
| 6 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 6 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| 7 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 7 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/sms/SysSmsSendLogMapper.java
| 1 | -package cn.iocoder.dashboard.modules.system.dal.mysql.dao.sms; | 1 | +package cn.iocoder.dashboard.modules.system.dal.mysql.sms; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.sms.SysSmsSendLogDO; | 3 | +import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsSendLogDO; |
| 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| 5 | import org.apache.ibatis.annotations.Mapper; | 5 | import org.apache.ibatis.annotations.Mapper; |
| 6 | 6 |
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/sms/SysSmsTemplateMapper.java
| 1 | -package cn.iocoder.dashboard.modules.system.dal.mysql.dao.sms; | ||
| 2 | - | 1 | +package cn.iocoder.dashboard.modules.system.dal.mysql.sms; |
| 3 | import cn.iocoder.dashboard.common.enums.CommonStatusEnum; | 2 | import cn.iocoder.dashboard.common.enums.CommonStatusEnum; |
| 4 | -import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.sms.SysSmsTemplateDO; | 3 | +import cn.iocoder.dashboard.framework.mybatis.core.mapper.BaseMapperX; |
| 4 | +import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 5 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 5 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| 6 | -import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||
| 7 | import org.apache.ibatis.annotations.Mapper; | 6 | import org.apache.ibatis.annotations.Mapper; |
| 8 | 7 | ||
| 9 | import java.util.List; | 8 | import java.util.List; |
| 10 | 9 | ||
| 11 | @Mapper | 10 | @Mapper |
| 12 | -public interface SysSmsTemplateMapper extends BaseMapper<SysSmsTemplateDO> { | 11 | +public interface SysSmsTemplateMapper extends BaseMapperX<SysSmsTemplateDO> { |
| 12 | + | ||
| 13 | + default SysSmsTemplateDO selectOneByCode(String code) { | ||
| 14 | + return selectOne("code", code); | ||
| 15 | + } | ||
| 13 | 16 | ||
| 14 | /** | 17 | /** |
| 15 | * 根据短信渠道id查询短信模板集合 | 18 | * 根据短信渠道id查询短信模板集合 |
src/main/java/cn/iocoder/dashboard/modules/system/enums/SysErrorCodeConstants.java
| @@ -79,11 +79,15 @@ public interface SysErrorCodeConstants { | @@ -79,11 +79,15 @@ public interface SysErrorCodeConstants { | ||
| 79 | ErrorCode FILE_IS_EMPTY= new ErrorCode(1002009003, "文件为空"); | 79 | ErrorCode FILE_IS_EMPTY= new ErrorCode(1002009003, "文件为空"); |
| 80 | 80 | ||
| 81 | 81 | ||
| 82 | - // ========== 消息 1003001000 ========== | 82 | + // ========== 短信模板 1002010000 ========== |
| 83 | + ErrorCode SMS_TEMPLATE_NOT_EXISTS = new ErrorCode(1002010000, "短信模板不存在"); | ||
| 84 | + | ||
| 85 | + // ========== 短信发送 1002011000 ========== | ||
| 86 | + ErrorCode SMS_SEND_MOBILE_NOT_EXISTS = new ErrorCode(1002011000, "手机号不存在"); | ||
| 87 | + | ||
| 83 | ErrorCode SMS_CHANNEL_NOT_INIT = new ErrorCode(1003001001, | 88 | ErrorCode SMS_CHANNEL_NOT_INIT = new ErrorCode(1003001001, |
| 84 | "短信渠道没有初始化, 请调用SmsClientWrapper#initSmsClient()或SmsClientWrapper#addSmsClient"); | 89 | "短信渠道没有初始化, 请调用SmsClientWrapper#initSmsClient()或SmsClientWrapper#addSmsClient"); |
| 85 | ErrorCode SMS_CHANNEL_NOT_FOUND = new ErrorCode(1003001002, "没有短信渠道信息, 请初始化sms_channel表数据。"); | 90 | ErrorCode SMS_CHANNEL_NOT_FOUND = new ErrorCode(1003001002, "没有短信渠道信息, 请初始化sms_channel表数据。"); |
| 86 | - ErrorCode SMS_TEMPLATE_NOT_FOUND = new ErrorCode(1003001003, "没有短信模板信息, 请初始化sms_template表数据。"); | ||
| 87 | ErrorCode SMS_SENDER_NOT_FOUND = new ErrorCode(1003001004, "没有找到对应的短信发送对象,请检查sms_channel表和sms_template表数据"); | 91 | ErrorCode SMS_SENDER_NOT_FOUND = new ErrorCode(1003001004, "没有找到对应的短信发送对象,请检查sms_channel表和sms_template表数据"); |
| 88 | ErrorCode INVALID_CHANNEL_CODE = new ErrorCode(1003001005, "非法的短信渠道code,请检查sms_channel表的code值是否与SmsChannelEnum中的code值一致。"); | 92 | ErrorCode INVALID_CHANNEL_CODE = new ErrorCode(1003001005, "非法的短信渠道code,请检查sms_channel表的code值是否与SmsChannelEnum中的code值一致。"); |
| 89 | ErrorCode PARAM_VALUE_IS_NULL = new ErrorCode(1003001006, "参数【{}】不能为空"); | 93 | ErrorCode PARAM_VALUE_IS_NULL = new ErrorCode(1003001006, "参数【{}】不能为空"); |
src/main/java/cn/iocoder/dashboard/modules/system/redis/mq/consumer/dept/SysDeptRefreshConsumer.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/dept/SysDeptRefreshConsumer.java
| 1 | -package cn.iocoder.dashboard.modules.system.redis.mq.consumer.dept; | 1 | +package cn.iocoder.dashboard.modules.system.mq.consumer.dept; |
| 2 | 2 | ||
| 3 | import cn.iocoder.dashboard.framework.redis.core.pubsub.AbstractChannelMessageListener; | 3 | import cn.iocoder.dashboard.framework.redis.core.pubsub.AbstractChannelMessageListener; |
| 4 | -import cn.iocoder.dashboard.modules.system.redis.mq.message.dept.SysDeptRefreshMessage; | 4 | +import cn.iocoder.dashboard.modules.system.mq.message.dept.SysDeptRefreshMessage; |
| 5 | import cn.iocoder.dashboard.modules.system.service.dept.SysDeptService; | 5 | import cn.iocoder.dashboard.modules.system.service.dept.SysDeptService; |
| 6 | import lombok.extern.slf4j.Slf4j; | 6 | import lombok.extern.slf4j.Slf4j; |
| 7 | import org.springframework.stereotype.Component; | 7 | import org.springframework.stereotype.Component; |
src/main/java/cn/iocoder/dashboard/modules/system/redis/mq/consumer/dict/SysDictDataRefreshConsumer.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/dict/SysDictDataRefreshConsumer.java
| 1 | -package cn.iocoder.dashboard.modules.system.redis.mq.consumer.dict; | 1 | +package cn.iocoder.dashboard.modules.system.mq.consumer.dict; |
| 2 | 2 | ||
| 3 | import cn.iocoder.dashboard.framework.redis.core.pubsub.AbstractChannelMessageListener; | 3 | import cn.iocoder.dashboard.framework.redis.core.pubsub.AbstractChannelMessageListener; |
| 4 | -import cn.iocoder.dashboard.modules.system.redis.mq.message.dict.SysDictDataRefreshMessage; | 4 | +import cn.iocoder.dashboard.modules.system.mq.message.dict.SysDictDataRefreshMessage; |
| 5 | import cn.iocoder.dashboard.modules.system.service.dict.SysDictDataService; | 5 | import cn.iocoder.dashboard.modules.system.service.dict.SysDictDataService; |
| 6 | import lombok.extern.slf4j.Slf4j; | 6 | import lombok.extern.slf4j.Slf4j; |
| 7 | import org.springframework.stereotype.Component; | 7 | import org.springframework.stereotype.Component; |
src/main/java/cn/iocoder/dashboard/modules/system/redis/mq/consumer/permission/SysMenuRefreshConsumer.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/permission/SysMenuRefreshConsumer.java
| 1 | -package cn.iocoder.dashboard.modules.system.redis.mq.consumer.permission; | 1 | +package cn.iocoder.dashboard.modules.system.mq.consumer.permission; |
| 2 | 2 | ||
| 3 | import cn.iocoder.dashboard.framework.redis.core.pubsub.AbstractChannelMessageListener; | 3 | import cn.iocoder.dashboard.framework.redis.core.pubsub.AbstractChannelMessageListener; |
| 4 | -import cn.iocoder.dashboard.modules.system.redis.mq.message.permission.SysMenuRefreshMessage; | 4 | +import cn.iocoder.dashboard.modules.system.mq.message.permission.SysMenuRefreshMessage; |
| 5 | import cn.iocoder.dashboard.modules.system.service.permission.SysMenuService; | 5 | import cn.iocoder.dashboard.modules.system.service.permission.SysMenuService; |
| 6 | import lombok.extern.slf4j.Slf4j; | 6 | import lombok.extern.slf4j.Slf4j; |
| 7 | import org.springframework.stereotype.Component; | 7 | import org.springframework.stereotype.Component; |
src/main/java/cn/iocoder/dashboard/modules/system/redis/mq/consumer/permission/SysRoleMenuRefreshConsumer.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/permission/SysRoleMenuRefreshConsumer.java
| 1 | -package cn.iocoder.dashboard.modules.system.redis.mq.consumer.permission; | 1 | +package cn.iocoder.dashboard.modules.system.mq.consumer.permission; |
| 2 | 2 | ||
| 3 | import cn.iocoder.dashboard.framework.redis.core.pubsub.AbstractChannelMessageListener; | 3 | import cn.iocoder.dashboard.framework.redis.core.pubsub.AbstractChannelMessageListener; |
| 4 | -import cn.iocoder.dashboard.modules.system.redis.mq.message.permission.SysRoleMenuRefreshMessage; | 4 | +import cn.iocoder.dashboard.modules.system.mq.message.permission.SysRoleMenuRefreshMessage; |
| 5 | import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService; | 5 | import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService; |
| 6 | import lombok.extern.slf4j.Slf4j; | 6 | import lombok.extern.slf4j.Slf4j; |
| 7 | import org.springframework.stereotype.Component; | 7 | import org.springframework.stereotype.Component; |
src/main/java/cn/iocoder/dashboard/modules/system/redis/mq/consumer/permission/SysRoleRefreshConsumer.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/permission/SysRoleRefreshConsumer.java
| 1 | -package cn.iocoder.dashboard.modules.system.redis.mq.consumer.permission; | 1 | +package cn.iocoder.dashboard.modules.system.mq.consumer.permission; |
| 2 | 2 | ||
| 3 | import cn.iocoder.dashboard.framework.redis.core.pubsub.AbstractChannelMessageListener; | 3 | import cn.iocoder.dashboard.framework.redis.core.pubsub.AbstractChannelMessageListener; |
| 4 | -import cn.iocoder.dashboard.modules.system.redis.mq.message.permission.SysRoleRefreshMessage; | 4 | +import cn.iocoder.dashboard.modules.system.mq.message.permission.SysRoleRefreshMessage; |
| 5 | import cn.iocoder.dashboard.modules.system.service.permission.SysRoleService; | 5 | import cn.iocoder.dashboard.modules.system.service.permission.SysRoleService; |
| 6 | import lombok.extern.slf4j.Slf4j; | 6 | import lombok.extern.slf4j.Slf4j; |
| 7 | import org.springframework.stereotype.Component; | 7 | import org.springframework.stereotype.Component; |
src/main/java/cn/iocoder/dashboard/modules/system/redis/stream/sms/SmsSendStreamConsumer.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/sms/SmsSendStreamConsumer.java
| 1 | -package cn.iocoder.dashboard.modules.system.redis.stream.sms; | 1 | +package cn.iocoder.dashboard.modules.system.mq.consumer.sms; |
| 2 | 2 | ||
| 3 | import cn.iocoder.dashboard.framework.sms.client.AbstractSmsClient; | 3 | import cn.iocoder.dashboard.framework.sms.client.AbstractSmsClient; |
| 4 | import cn.iocoder.dashboard.framework.sms.core.SmsBody; | 4 | import cn.iocoder.dashboard.framework.sms.core.SmsBody; |
src/main/java/cn/iocoder/dashboard/modules/system/redis/mq/message/dept/SysDeptRefreshMessage.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/mq/message/dept/SysDeptRefreshMessage.java
| 1 | -package cn.iocoder.dashboard.modules.system.redis.mq.message.dept; | 1 | +package cn.iocoder.dashboard.modules.system.mq.message.dept; |
| 2 | 2 | ||
| 3 | import cn.iocoder.dashboard.framework.redis.core.pubsub.ChannelMessage; | 3 | import cn.iocoder.dashboard.framework.redis.core.pubsub.ChannelMessage; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
src/main/java/cn/iocoder/dashboard/modules/system/redis/mq/message/dict/SysDictDataRefreshMessage.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/mq/message/dict/SysDictDataRefreshMessage.java
| 1 | -package cn.iocoder.dashboard.modules.system.redis.mq.message.dict; | 1 | +package cn.iocoder.dashboard.modules.system.mq.message.dict; |
| 2 | 2 | ||
| 3 | import cn.iocoder.dashboard.framework.redis.core.pubsub.ChannelMessage; | 3 | import cn.iocoder.dashboard.framework.redis.core.pubsub.ChannelMessage; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
src/main/java/cn/iocoder/dashboard/modules/system/redis/mq/message/permission/SysMenuRefreshMessage.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/mq/message/permission/SysMenuRefreshMessage.java
| 1 | -package cn.iocoder.dashboard.modules.system.redis.mq.message.permission; | 1 | +package cn.iocoder.dashboard.modules.system.mq.message.permission; |
| 2 | 2 | ||
| 3 | import cn.iocoder.dashboard.framework.redis.core.pubsub.ChannelMessage; | 3 | import cn.iocoder.dashboard.framework.redis.core.pubsub.ChannelMessage; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
src/main/java/cn/iocoder/dashboard/modules/system/redis/mq/message/permission/SysRoleMenuRefreshMessage.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/mq/message/permission/SysRoleMenuRefreshMessage.java
| 1 | -package cn.iocoder.dashboard.modules.system.redis.mq.message.permission; | 1 | +package cn.iocoder.dashboard.modules.system.mq.message.permission; |
| 2 | 2 | ||
| 3 | import cn.iocoder.dashboard.framework.redis.core.pubsub.ChannelMessage; | 3 | import cn.iocoder.dashboard.framework.redis.core.pubsub.ChannelMessage; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
src/main/java/cn/iocoder/dashboard/modules/system/redis/mq/message/permission/SysRoleRefreshMessage.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/mq/message/permission/SysRoleRefreshMessage.java
| 1 | -package cn.iocoder.dashboard.modules.system.redis.mq.message.permission; | 1 | +package cn.iocoder.dashboard.modules.system.mq.message.permission; |
| 2 | 2 | ||
| 3 | import cn.iocoder.dashboard.framework.redis.core.pubsub.ChannelMessage; | 3 | import cn.iocoder.dashboard.framework.redis.core.pubsub.ChannelMessage; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
src/main/java/cn/iocoder/dashboard/modules/system/redis/mq/producer/dept/SysDeptProducer.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/dept/SysDeptProducer.java
| 1 | -package cn.iocoder.dashboard.modules.system.redis.mq.producer.dept; | 1 | +package cn.iocoder.dashboard.modules.system.mq.producer.dept; |
| 2 | 2 | ||
| 3 | import cn.iocoder.dashboard.framework.redis.core.util.RedisMessageUtils; | 3 | import cn.iocoder.dashboard.framework.redis.core.util.RedisMessageUtils; |
| 4 | -import cn.iocoder.dashboard.modules.system.redis.mq.message.dept.SysDeptRefreshMessage; | 4 | +import cn.iocoder.dashboard.modules.system.mq.message.dept.SysDeptRefreshMessage; |
| 5 | import org.springframework.data.redis.core.StringRedisTemplate; | 5 | import org.springframework.data.redis.core.StringRedisTemplate; |
| 6 | import org.springframework.stereotype.Component; | 6 | import org.springframework.stereotype.Component; |
| 7 | 7 |
src/main/java/cn/iocoder/dashboard/modules/system/redis/mq/producer/dict/SysDictDataProducer.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/dict/SysDictDataProducer.java
| 1 | -package cn.iocoder.dashboard.modules.system.redis.mq.producer.dict; | 1 | +package cn.iocoder.dashboard.modules.system.mq.producer.dict; |
| 2 | 2 | ||
| 3 | import cn.iocoder.dashboard.framework.redis.core.util.RedisMessageUtils; | 3 | import cn.iocoder.dashboard.framework.redis.core.util.RedisMessageUtils; |
| 4 | -import cn.iocoder.dashboard.modules.system.redis.mq.message.dict.SysDictDataRefreshMessage; | 4 | +import cn.iocoder.dashboard.modules.system.mq.message.dict.SysDictDataRefreshMessage; |
| 5 | import org.springframework.data.redis.core.StringRedisTemplate; | 5 | import org.springframework.data.redis.core.StringRedisTemplate; |
| 6 | import org.springframework.stereotype.Component; | 6 | import org.springframework.stereotype.Component; |
| 7 | 7 |
src/main/java/cn/iocoder/dashboard/modules/system/redis/mq/producer/permission/SysMenuProducer.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/permission/SysMenuProducer.java
| 1 | -package cn.iocoder.dashboard.modules.system.redis.mq.producer.permission; | 1 | +package cn.iocoder.dashboard.modules.system.mq.producer.permission; |
| 2 | 2 | ||
| 3 | import cn.iocoder.dashboard.framework.redis.core.util.RedisMessageUtils; | 3 | import cn.iocoder.dashboard.framework.redis.core.util.RedisMessageUtils; |
| 4 | -import cn.iocoder.dashboard.modules.system.redis.mq.message.permission.SysMenuRefreshMessage; | 4 | +import cn.iocoder.dashboard.modules.system.mq.message.permission.SysMenuRefreshMessage; |
| 5 | import org.springframework.data.redis.core.StringRedisTemplate; | 5 | import org.springframework.data.redis.core.StringRedisTemplate; |
| 6 | import org.springframework.stereotype.Component; | 6 | import org.springframework.stereotype.Component; |
| 7 | 7 |
src/main/java/cn/iocoder/dashboard/modules/system/redis/mq/producer/permission/SysPermissionProducer.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/permission/SysPermissionProducer.java
| 1 | -package cn.iocoder.dashboard.modules.system.redis.mq.producer.permission; | 1 | +package cn.iocoder.dashboard.modules.system.mq.producer.permission; |
| 2 | 2 | ||
| 3 | import cn.iocoder.dashboard.framework.redis.core.util.RedisMessageUtils; | 3 | import cn.iocoder.dashboard.framework.redis.core.util.RedisMessageUtils; |
| 4 | -import cn.iocoder.dashboard.modules.system.redis.mq.message.permission.SysRoleMenuRefreshMessage; | 4 | +import cn.iocoder.dashboard.modules.system.mq.message.permission.SysRoleMenuRefreshMessage; |
| 5 | import org.springframework.data.redis.core.StringRedisTemplate; | 5 | import org.springframework.data.redis.core.StringRedisTemplate; |
| 6 | import org.springframework.stereotype.Component; | 6 | import org.springframework.stereotype.Component; |
| 7 | 7 |
src/main/java/cn/iocoder/dashboard/modules/system/redis/mq/producer/permission/SysRoleProducer.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/permission/SysRoleProducer.java
| 1 | -package cn.iocoder.dashboard.modules.system.redis.mq.producer.permission; | 1 | +package cn.iocoder.dashboard.modules.system.mq.producer.permission; |
| 2 | 2 | ||
| 3 | import cn.iocoder.dashboard.framework.redis.core.util.RedisMessageUtils; | 3 | import cn.iocoder.dashboard.framework.redis.core.util.RedisMessageUtils; |
| 4 | -import cn.iocoder.dashboard.modules.system.redis.mq.message.permission.SysRoleRefreshMessage; | 4 | +import cn.iocoder.dashboard.modules.system.mq.message.permission.SysRoleRefreshMessage; |
| 5 | import org.springframework.data.redis.core.StringRedisTemplate; | 5 | import org.springframework.data.redis.core.StringRedisTemplate; |
| 6 | import org.springframework.stereotype.Component; | 6 | import org.springframework.stereotype.Component; |
| 7 | 7 |
src/main/java/cn/iocoder/dashboard/modules/system/redis/stream/sms/SmsSendStreamProducer.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/sms/SmsSendStreamProducer.java
| 1 | -package cn.iocoder.dashboard.modules.system.redis.stream.sms; | 1 | +package cn.iocoder.dashboard.modules.system.mq.producer.sms; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.dashboard.framework.redis.core.util.RedisStreamUtils; | ||
| 4 | -import cn.iocoder.dashboard.framework.sms.core.SmsBody; | 3 | +import cn.iocoder.dashboard.framework.redis.core.util.RedisMessageUtils; |
| 4 | +import cn.iocoder.dashboard.modules.system.mq.message.sms.SysSmsSendMessage; | ||
| 5 | import lombok.extern.slf4j.Slf4j; | 5 | import lombok.extern.slf4j.Slf4j; |
| 6 | import org.springframework.data.redis.core.StringRedisTemplate; | 6 | import org.springframework.data.redis.core.StringRedisTemplate; |
| 7 | import org.springframework.stereotype.Component; | 7 | import org.springframework.stereotype.Component; |
| 8 | 8 | ||
| 9 | import javax.annotation.Resource; | 9 | import javax.annotation.Resource; |
| 10 | +import java.util.Map; | ||
| 10 | 11 | ||
| 11 | /** | 12 | /** |
| 12 | * 短信发送流消息监听器 | 13 | * 短信发送流消息监听器 |
| @@ -22,14 +23,20 @@ public class SmsSendStreamProducer { | @@ -22,14 +23,20 @@ public class SmsSendStreamProducer { | ||
| 22 | private StringRedisTemplate stringRedisTemplate; | 23 | private StringRedisTemplate stringRedisTemplate; |
| 23 | 24 | ||
| 24 | /** | 25 | /** |
| 25 | - * 发送 {@link SmsSendMessage} 消息 | 26 | + * 发送短信 Message |
| 27 | + * | ||
| 28 | + * @param mobile 手机号 | ||
| 29 | + * @param templateCode 短信模板编号 | ||
| 30 | + * @param templateParams 短信模板参数 | ||
| 31 | + * @param userId 用户编号 | ||
| 32 | + * @param userType 用户类型 | ||
| 26 | */ | 33 | */ |
| 27 | - public void sendSmsSendMessage(SmsBody smsBody, String targetPhone) { | ||
| 28 | - SmsSendMessage message = new SmsSendMessage(); | ||
| 29 | - message.setSmsBody(smsBody); | ||
| 30 | - message.setTargetPhone(targetPhone); | ||
| 31 | - | ||
| 32 | - RedisStreamUtils.sendChannelMessage(stringRedisTemplate, message); | 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); | ||
| 39 | + RedisMessageUtils.sendStreamMessage(stringRedisTemplate, message); | ||
| 33 | } | 40 | } |
| 34 | 41 | ||
| 35 | -} | ||
| 36 | \ No newline at end of file | 42 | \ No newline at end of file |
| 43 | +} |
src/main/java/cn/iocoder/dashboard/modules/system/redis/mq/consumer/sms/SmsSendConsumer.java deleted
| 1 | -//package cn.iocoder.dashboard.modules.system.redis.mq.consumer.sms; | ||
| 2 | -// | ||
| 3 | -//import cn.iocoder.dashboard.framework.redis.core.pubsub.AbstractChannelMessageListener; | ||
| 4 | -//import cn.iocoder.dashboard.framework.sms.client.AbstractSmsClient; | ||
| 5 | -//import cn.iocoder.dashboard.framework.sms.core.SmsResult; | ||
| 6 | -//import cn.iocoder.dashboard.modules.system.redis.mq.message.dept.SysDeptRefreshMessage; | ||
| 7 | -//import cn.iocoder.dashboard.modules.system.redis.stream.sms.SmsSendMessage; | ||
| 8 | -//import cn.iocoder.dashboard.modules.system.service.sms.SysSmsChannelService; | ||
| 9 | -//import cn.iocoder.dashboard.modules.system.service.sms.SysSmsQueryLogService; | ||
| 10 | -//import lombok.extern.slf4j.Slf4j; | ||
| 11 | -//import org.springframework.beans.factory.annotation.Autowired; | ||
| 12 | -//import org.springframework.data.redis.connection.stream.Consumer; | ||
| 13 | -//import org.springframework.data.redis.connection.stream.ObjectRecord; | ||
| 14 | -//import org.springframework.data.redis.connection.stream.ReadOffset; | ||
| 15 | -//import org.springframework.data.redis.connection.stream.StreamOffset; | ||
| 16 | -//import org.springframework.data.redis.core.StringRedisTemplate; | ||
| 17 | -//import org.springframework.stereotype.Component; | ||
| 18 | -// | ||
| 19 | -//import javax.annotation.Resource; | ||
| 20 | -// | ||
| 21 | -///** | ||
| 22 | -// * 针对 {@link SysDeptRefreshMessage} 的消费者 | ||
| 23 | -// * | ||
| 24 | -// * @author 芋道源码 | ||
| 25 | -// */ | ||
| 26 | -//@Component | ||
| 27 | -//@Slf4j | ||
| 28 | -//public class SmsSendConsumer extends AbstractChannelMessageListener<SmsSendMessage> { | ||
| 29 | -// | ||
| 30 | -// @Resource | ||
| 31 | -// private SysSmsChannelService smsChannelService; | ||
| 32 | -// | ||
| 33 | -// @Resource | ||
| 34 | -// private SysSmsQueryLogService smsQueryLogService; | ||
| 35 | -// | ||
| 36 | -// @Autowired | ||
| 37 | -// StringRedisTemplate redisTemplate; | ||
| 38 | -// | ||
| 39 | -// @Override | ||
| 40 | -// public void onMessage(SmsSendMessage message) { | ||
| 41 | -// | ||
| 42 | -// redisTemplate.opsForStream().add(ObjectRecord.create("String", message)); | ||
| 43 | -// | ||
| 44 | -// redisTemplate.opsForStream().read(Consumer.from("",""), StreamOffset.create("", ReadOffset.lastConsumed())); | ||
| 45 | -// | ||
| 46 | -// | ||
| 47 | -// | ||
| 48 | -// log.info("[onMessage][收到 发送短信 消息], content: " + message.toString()); | ||
| 49 | -// AbstractSmsClient smsClient = smsChannelService.getSmsClient(message.getSmsBody().getTemplateCode()); | ||
| 50 | -// String templateApiId = smsChannelService.getSmsTemplateApiIdByCode(message.getSmsBody().getTemplateCode()); | ||
| 51 | -// | ||
| 52 | -// SmsResult result = smsClient.send(templateApiId, message.getSmsBody(), message.getTargetPhone()); | ||
| 53 | -// smsQueryLogService.afterSendLog(message.getSmsBody().getSmsLogId(), result); | ||
| 54 | -// } | ||
| 55 | -// | ||
| 56 | -//} |
src/main/java/cn/iocoder/dashboard/modules/system/redis/mq/producer/sms/SmsProducer.java deleted
| 1 | -//package cn.iocoder.dashboard.modules.system.redis.mq.producer.sms; | ||
| 2 | -// | ||
| 3 | -//import cn.iocoder.dashboard.framework.redis.core.util.RedisMessageUtils; | ||
| 4 | -//import cn.iocoder.dashboard.framework.sms.core.SmsBody; | ||
| 5 | -//import cn.iocoder.dashboard.modules.system.redis.stream.sms.SmsSendMessage; | ||
| 6 | -//import org.springframework.data.redis.core.StringRedisTemplate; | ||
| 7 | -//import org.springframework.stereotype.Component; | ||
| 8 | -// | ||
| 9 | -//import javax.annotation.Resource; | ||
| 10 | -// | ||
| 11 | -///** | ||
| 12 | -// * 短信的 Producer | ||
| 13 | -// */ | ||
| 14 | -//@Component | ||
| 15 | -//public class SmsProducer { | ||
| 16 | -// | ||
| 17 | -// @Resource | ||
| 18 | -// private StringRedisTemplate stringRedisTemplate; | ||
| 19 | -// | ||
| 20 | -// /** | ||
| 21 | -// * 发送 {@link SmsSendMessage} 消息 | ||
| 22 | -// */ | ||
| 23 | -// public void sendSmsSendMessage(SmsBody smsBody, String targetPhone) { | ||
| 24 | -// SmsSendMessage message = new SmsSendMessage(); | ||
| 25 | -// message.setSmsBody(smsBody); | ||
| 26 | -// message.setTargetPhone(targetPhone); | ||
| 27 | -// // TODO FROM 芋艿 TO ZZF:这块等未来改哈。这个方法目前是广播消费,会导致每个节点都发送一次。等后续封装出 redis stream 消息 | ||
| 28 | -// RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); | ||
| 29 | -// } | ||
| 30 | -// | ||
| 31 | -//} |
src/main/java/cn/iocoder/dashboard/modules/system/redis/stream/StreamConsumerRunner.java deleted
| 1 | -package cn.iocoder.dashboard.modules.system.redis.stream; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.dashboard.framework.redis.core.util.RedisStreamUtils; | ||
| 4 | -import cn.iocoder.dashboard.modules.system.redis.stream.sms.SmsSendMessage; | ||
| 5 | -import cn.iocoder.dashboard.modules.system.redis.stream.sms.SmsSendStreamConsumer; | ||
| 6 | -import lombok.extern.slf4j.Slf4j; | ||
| 7 | -import org.springframework.beans.factory.DisposableBean; | ||
| 8 | -import org.springframework.boot.ApplicationArguments; | ||
| 9 | -import org.springframework.boot.ApplicationRunner; | ||
| 10 | -import org.springframework.data.redis.connection.RedisConnectionFactory; | ||
| 11 | -import org.springframework.data.redis.connection.stream.*; | ||
| 12 | -import org.springframework.data.redis.core.StringRedisTemplate; | ||
| 13 | -import org.springframework.data.redis.serializer.StringRedisSerializer; | ||
| 14 | -import org.springframework.data.redis.stream.StreamMessageListenerContainer; | ||
| 15 | -import org.springframework.data.redis.stream.StreamMessageListenerContainer.StreamMessageListenerContainerOptions; | ||
| 16 | -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; | ||
| 17 | -import org.springframework.stereotype.Component; | ||
| 18 | -import org.springframework.util.ErrorHandler; | ||
| 19 | - | ||
| 20 | -import javax.annotation.Resource; | ||
| 21 | -import java.net.InetAddress; | ||
| 22 | -import java.net.UnknownHostException; | ||
| 23 | -import java.time.Duration; | ||
| 24 | - | ||
| 25 | - | ||
| 26 | -@Slf4j | ||
| 27 | -@Component | ||
| 28 | -public class StreamConsumerRunner implements ApplicationRunner, DisposableBean { | ||
| 29 | - | ||
| 30 | - @Resource | ||
| 31 | - RedisConnectionFactory redisConnectionFactory; | ||
| 32 | - | ||
| 33 | - @Resource | ||
| 34 | - ThreadPoolTaskExecutor threadPoolTaskExecutor; | ||
| 35 | - | ||
| 36 | - @Resource | ||
| 37 | - SmsSendStreamConsumer streamMessageListener; | ||
| 38 | - | ||
| 39 | - @Resource | ||
| 40 | - StringRedisTemplate stringRedisTemplate; | ||
| 41 | - | ||
| 42 | - private StreamMessageListenerContainer<String, ObjectRecord<String, SmsSendMessage>> streamMessageListenerContainer; | ||
| 43 | - | ||
| 44 | - @Override | ||
| 45 | - public void run(ApplicationArguments args) throws UnknownHostException { | ||
| 46 | - | ||
| 47 | - StreamInfo.XInfoGroups groups = stringRedisTemplate.opsForStream().groups(RedisStreamUtils.KEY_SMS_SEND); | ||
| 48 | - if (groups.isEmpty()) { | ||
| 49 | - stringRedisTemplate.opsForStream().createGroup(RedisStreamUtils.KEY_SMS_SEND, RedisStreamUtils.GROUP_SMS_SEND); | ||
| 50 | - } | ||
| 51 | - | ||
| 52 | - | ||
| 53 | - // 创建配置对象 | ||
| 54 | - StreamMessageListenerContainerOptions<String, ObjectRecord<String, SmsSendMessage>> streamMessageListenerContainerOptions = StreamMessageListenerContainerOptions | ||
| 55 | - .builder() | ||
| 56 | - // 一次性最多拉取多少条消息 | ||
| 57 | - .batchSize(10) | ||
| 58 | - // 执行消息轮询的执行器 | ||
| 59 | - .executor(this.threadPoolTaskExecutor) | ||
| 60 | - // 消息消费异常的handler | ||
| 61 | - .errorHandler(new ErrorHandler() { | ||
| 62 | - @Override | ||
| 63 | - public void handleError(Throwable t) { | ||
| 64 | - // throw new RuntimeException(t); | ||
| 65 | - t.printStackTrace(); | ||
| 66 | - } | ||
| 67 | - }) | ||
| 68 | - // 超时时间,设置为0,表示不超时(超时后会抛出异常) | ||
| 69 | - .pollTimeout(Duration.ZERO) | ||
| 70 | - // 序列化器 | ||
| 71 | - .serializer(new StringRedisSerializer()) | ||
| 72 | - .targetType(SmsSendMessage.class) | ||
| 73 | - .build(); | ||
| 74 | - | ||
| 75 | - // 根据配置对象创建监听容器对象 | ||
| 76 | - StreamMessageListenerContainer<String, ObjectRecord<String, SmsSendMessage>> streamMessageListenerContainer = StreamMessageListenerContainer | ||
| 77 | - .create(this.redisConnectionFactory, streamMessageListenerContainerOptions); | ||
| 78 | - | ||
| 79 | - // 使用监听容器对象开始监听消费(使用的是手动确认方式) | ||
| 80 | - streamMessageListenerContainer.receive(Consumer.from(RedisStreamUtils.GROUP_SMS_SEND, InetAddress.getLocalHost().getHostName()), | ||
| 81 | - StreamOffset.create(RedisStreamUtils.KEY_SMS_SEND, ReadOffset.lastConsumed()), this.streamMessageListener); | ||
| 82 | - | ||
| 83 | - this.streamMessageListenerContainer = streamMessageListenerContainer; | ||
| 84 | - // 启动监听 | ||
| 85 | - this.streamMessageListenerContainer.start(); | ||
| 86 | - | ||
| 87 | - } | ||
| 88 | - | ||
| 89 | - @Override | ||
| 90 | - public void destroy() throws Exception { | ||
| 91 | - this.streamMessageListenerContainer.stop(); | ||
| 92 | - } | ||
| 93 | -} | ||
| 94 | \ No newline at end of file | 0 | \ No newline at end of file |
src/main/java/cn/iocoder/dashboard/modules/system/redis/stream/sms/SmsSendMessage.java deleted
| 1 | -package cn.iocoder.dashboard.modules.system.redis.stream.sms; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.dashboard.framework.sms.core.SmsBody; | ||
| 4 | -import lombok.Data; | ||
| 5 | - | ||
| 6 | -/** | ||
| 7 | - * 部门数据刷新 Message | ||
| 8 | - */ | ||
| 9 | -@Data | ||
| 10 | -public class SmsSendMessage { | ||
| 11 | - | ||
| 12 | - private SmsBody smsBody; | ||
| 13 | - | ||
| 14 | - private String targetPhone; | ||
| 15 | - | ||
| 16 | -} |
src/main/java/cn/iocoder/dashboard/modules/system/service/dept/impl/SysDeptServiceImpl.java
| @@ -11,7 +11,7 @@ import cn.iocoder.dashboard.modules.system.convert.dept.SysDeptConvert; | @@ -11,7 +11,7 @@ import cn.iocoder.dashboard.modules.system.convert.dept.SysDeptConvert; | ||
| 11 | import cn.iocoder.dashboard.modules.system.dal.mysql.dept.SysDeptMapper; | 11 | import cn.iocoder.dashboard.modules.system.dal.mysql.dept.SysDeptMapper; |
| 12 | import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO; | 12 | import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO; |
| 13 | import cn.iocoder.dashboard.modules.system.enums.dept.DeptIdEnum; | 13 | import cn.iocoder.dashboard.modules.system.enums.dept.DeptIdEnum; |
| 14 | -import cn.iocoder.dashboard.modules.system.redis.mq.producer.dept.SysDeptProducer; | 14 | +import cn.iocoder.dashboard.modules.system.mq.producer.dept.SysDeptProducer; |
| 15 | import cn.iocoder.dashboard.modules.system.service.dept.SysDeptService; | 15 | import cn.iocoder.dashboard.modules.system.service.dept.SysDeptService; |
| 16 | import com.google.common.collect.ImmutableMap; | 16 | import com.google.common.collect.ImmutableMap; |
| 17 | import com.google.common.collect.ImmutableMultimap; | 17 | import com.google.common.collect.ImmutableMultimap; |
src/main/java/cn/iocoder/dashboard/modules/system/service/dict/impl/SysDictDataServiceImpl.java
| @@ -12,7 +12,7 @@ import cn.iocoder.dashboard.modules.system.convert.dict.SysDictDataConvert; | @@ -12,7 +12,7 @@ import cn.iocoder.dashboard.modules.system.convert.dict.SysDictDataConvert; | ||
| 12 | import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictDataDO; | 12 | import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictDataDO; |
| 13 | import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictTypeDO; | 13 | import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictTypeDO; |
| 14 | import cn.iocoder.dashboard.modules.system.dal.mysql.dict.SysDictDataMapper; | 14 | import cn.iocoder.dashboard.modules.system.dal.mysql.dict.SysDictDataMapper; |
| 15 | -import cn.iocoder.dashboard.modules.system.redis.mq.producer.dict.SysDictDataProducer; | 15 | +import cn.iocoder.dashboard.modules.system.mq.producer.dict.SysDictDataProducer; |
| 16 | import cn.iocoder.dashboard.modules.system.service.dict.SysDictDataService; | 16 | import cn.iocoder.dashboard.modules.system.service.dict.SysDictDataService; |
| 17 | import cn.iocoder.dashboard.modules.system.service.dict.SysDictTypeService; | 17 | import cn.iocoder.dashboard.modules.system.service.dict.SysDictTypeService; |
| 18 | import com.google.common.annotations.VisibleForTesting; | 18 | import com.google.common.annotations.VisibleForTesting; |
src/main/java/cn/iocoder/dashboard/modules/system/service/permission/impl/SysMenuServiceImpl.java
| @@ -11,7 +11,7 @@ import cn.iocoder.dashboard.modules.system.dal.mysql.permission.SysMenuMapper; | @@ -11,7 +11,7 @@ import cn.iocoder.dashboard.modules.system.dal.mysql.permission.SysMenuMapper; | ||
| 11 | import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysMenuDO; | 11 | import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysMenuDO; |
| 12 | import cn.iocoder.dashboard.modules.system.enums.permission.MenuIdEnum; | 12 | import cn.iocoder.dashboard.modules.system.enums.permission.MenuIdEnum; |
| 13 | import cn.iocoder.dashboard.modules.system.enums.permission.MenuTypeEnum; | 13 | import cn.iocoder.dashboard.modules.system.enums.permission.MenuTypeEnum; |
| 14 | -import cn.iocoder.dashboard.modules.system.redis.mq.producer.permission.SysMenuProducer; | 14 | +import cn.iocoder.dashboard.modules.system.mq.producer.permission.SysMenuProducer; |
| 15 | import cn.iocoder.dashboard.modules.system.service.permission.SysMenuService; | 15 | import cn.iocoder.dashboard.modules.system.service.permission.SysMenuService; |
| 16 | import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService; | 16 | import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService; |
| 17 | import cn.iocoder.dashboard.util.collection.CollectionUtils; | 17 | import cn.iocoder.dashboard.util.collection.CollectionUtils; |
src/main/java/cn/iocoder/dashboard/modules/system/service/permission/impl/SysPermissionServiceImpl.java
| @@ -3,7 +3,6 @@ package cn.iocoder.dashboard.modules.system.service.permission.impl; | @@ -3,7 +3,6 @@ package cn.iocoder.dashboard.modules.system.service.permission.impl; | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | import cn.hutool.core.collection.CollectionUtil; | 4 | import cn.hutool.core.collection.CollectionUtil; |
| 5 | import cn.hutool.core.util.ArrayUtil; | 5 | import cn.hutool.core.util.ArrayUtil; |
| 6 | -import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO; | ||
| 7 | import cn.iocoder.dashboard.framework.security.core.util.SecurityFrameworkUtils; | 6 | import cn.iocoder.dashboard.framework.security.core.util.SecurityFrameworkUtils; |
| 8 | import cn.iocoder.dashboard.modules.system.dal.mysql.permission.SysRoleMenuMapper; | 7 | import cn.iocoder.dashboard.modules.system.dal.mysql.permission.SysRoleMenuMapper; |
| 9 | import cn.iocoder.dashboard.modules.system.dal.mysql.permission.SysUserRoleMapper; | 8 | import cn.iocoder.dashboard.modules.system.dal.mysql.permission.SysUserRoleMapper; |
| @@ -11,7 +10,7 @@ import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysMenuDO; | @@ -11,7 +10,7 @@ import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysMenuDO; | ||
| 11 | import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysRoleDO; | 10 | import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysRoleDO; |
| 12 | import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysRoleMenuDO; | 11 | import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysRoleMenuDO; |
| 13 | import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysUserRoleDO; | 12 | import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysUserRoleDO; |
| 14 | -import cn.iocoder.dashboard.modules.system.redis.mq.producer.permission.SysPermissionProducer; | 13 | +import cn.iocoder.dashboard.modules.system.mq.producer.permission.SysPermissionProducer; |
| 15 | import cn.iocoder.dashboard.modules.system.service.permission.SysMenuService; | 14 | import cn.iocoder.dashboard.modules.system.service.permission.SysMenuService; |
| 16 | import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService; | 15 | import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService; |
| 17 | import cn.iocoder.dashboard.modules.system.service.permission.SysRoleService; | 16 | import cn.iocoder.dashboard.modules.system.service.permission.SysRoleService; |
src/main/java/cn/iocoder/dashboard/modules/system/service/permission/impl/SysRoleServiceImpl.java
| @@ -15,7 +15,7 @@ import cn.iocoder.dashboard.modules.system.dal.mysql.permission.SysRoleMapper; | @@ -15,7 +15,7 @@ import cn.iocoder.dashboard.modules.system.dal.mysql.permission.SysRoleMapper; | ||
| 15 | import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysRoleDO; | 15 | import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysRoleDO; |
| 16 | import cn.iocoder.dashboard.modules.system.enums.permission.RoleCodeEnum; | 16 | import cn.iocoder.dashboard.modules.system.enums.permission.RoleCodeEnum; |
| 17 | import cn.iocoder.dashboard.modules.system.enums.permission.SysRoleTypeEnum; | 17 | import cn.iocoder.dashboard.modules.system.enums.permission.SysRoleTypeEnum; |
| 18 | -import cn.iocoder.dashboard.modules.system.redis.mq.producer.permission.SysRoleProducer; | 18 | +import cn.iocoder.dashboard.modules.system.mq.producer.permission.SysRoleProducer; |
| 19 | import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService; | 19 | import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService; |
| 20 | import cn.iocoder.dashboard.modules.system.service.permission.SysRoleService; | 20 | import cn.iocoder.dashboard.modules.system.service.permission.SysRoleService; |
| 21 | import com.google.common.collect.ImmutableMap; | 21 | import com.google.common.collect.ImmutableMap; |
src/main/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsChannelService.java
| @@ -2,14 +2,12 @@ package cn.iocoder.dashboard.modules.system.service.sms; | @@ -2,14 +2,12 @@ package cn.iocoder.dashboard.modules.system.service.sms; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.dashboard.common.pojo.PageResult; | 3 | import cn.iocoder.dashboard.common.pojo.PageResult; |
| 4 | import cn.iocoder.dashboard.framework.sms.client.AbstractSmsClient; | 4 | import cn.iocoder.dashboard.framework.sms.client.AbstractSmsClient; |
| 5 | -import cn.iocoder.dashboard.framework.sms.core.SmsResultDetail; | ||
| 6 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.SmsChannelAllVO; | 5 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.SmsChannelAllVO; |
| 7 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.req.SmsChannelCreateReqVO; | 6 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.req.SmsChannelCreateReqVO; |
| 8 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.req.SmsChannelPageReqVO; | 7 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.req.SmsChannelPageReqVO; |
| 9 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.resp.SmsChannelEnumRespVO; | 8 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.resp.SmsChannelEnumRespVO; |
| 10 | -import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.sms.SysSmsChannelDO; | 9 | +import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsChannelDO; |
| 11 | 10 | ||
| 12 | -import javax.servlet.ServletRequest; | ||
| 13 | import java.util.List; | 11 | import java.util.List; |
| 14 | 12 | ||
| 15 | /** | 13 | /** |
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.hutool.core.collection.CollectionUtil; | ||
| 4 | -import cn.hutool.core.util.ArrayUtil; | ||
| 5 | -import cn.iocoder.dashboard.framework.sms.core.SmsBody; | ||
| 6 | -import cn.iocoder.dashboard.framework.sms.core.enums.SmsChannelEnum; | ||
| 7 | - | ||
| 8 | import javax.servlet.ServletRequest; | 3 | import javax.servlet.ServletRequest; |
| 9 | -import java.util.Arrays; | ||
| 10 | import java.util.List; | 4 | import java.util.List; |
| 5 | +import java.util.Map; | ||
| 11 | 6 | ||
| 12 | /** | 7 | /** |
| 13 | * 短信Service接口 | 8 | * 短信Service接口 |
| @@ -18,39 +13,11 @@ import java.util.List; | @@ -18,39 +13,11 @@ import java.util.List; | ||
| 18 | */ | 13 | */ |
| 19 | public interface SysSmsService { | 14 | public interface SysSmsService { |
| 20 | 15 | ||
| 21 | - /** | ||
| 22 | - * 发送消息 | ||
| 23 | - * | ||
| 24 | - * @param smsBody 消息内容 | ||
| 25 | - * @param targetPhones 发送对象手机号列表 | ||
| 26 | - */ | ||
| 27 | - default void send(SmsBody smsBody, List<String> targetPhones) { | ||
| 28 | - if (CollectionUtil.isEmpty(targetPhones)) { | ||
| 29 | - return; | ||
| 30 | - } | ||
| 31 | - targetPhones.forEach(s -> this.send(smsBody, s)); | ||
| 32 | - } | 16 | + void sendSingleSms(String mobile, Long userId, Integer userType, |
| 17 | + String templateCode, Map<String, Object> templateParams); | ||
| 33 | 18 | ||
| 34 | - /** | ||
| 35 | - * 发送消息 | ||
| 36 | - * | ||
| 37 | - * @param smsBody 消息内容 | ||
| 38 | - * @param targetPhone 发送对象手机号 | ||
| 39 | - */ | ||
| 40 | - void send(SmsBody smsBody, String targetPhone); | ||
| 41 | - | ||
| 42 | - /** | ||
| 43 | - * 发送消息 | ||
| 44 | - * | ||
| 45 | - * @param smsBody 消息内容 | ||
| 46 | - * @param targetPhones 发送对象手机号数组 | ||
| 47 | - */ | ||
| 48 | - default void send(SmsBody smsBody, String... targetPhones) { | ||
| 49 | - if (ArrayUtil.isEmpty(targetPhones)) { | ||
| 50 | - return; | ||
| 51 | - } | ||
| 52 | - send(smsBody, Arrays.asList(targetPhones)); | ||
| 53 | - } | 19 | + void sendBatchSms(List<String> mobiles, List<Long> userIds, Integer userType, |
| 20 | + String templateCode, Map<String, Object> templateParams); | ||
| 54 | 21 | ||
| 55 | /** | 22 | /** |
| 56 | * 处理短信发送回调函数 | 23 | * 处理短信发送回调函数 |
src/main/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsTemplateService.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.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 4 | + | ||
| 3 | /** | 5 | /** |
| 4 | - * 短信渠道Service接口 | 6 | + * 短信模板 Service 接口 |
| 5 | * | 7 | * |
| 6 | * @author zzf | 8 | * @author zzf |
| 7 | * @date 2021/1/25 9:24 | 9 | * @date 2021/1/25 9:24 |
| 8 | */ | 10 | */ |
| 9 | public interface SysSmsTemplateService { | 11 | public interface SysSmsTemplateService { |
| 12 | + | ||
| 13 | + /** | ||
| 14 | + * 获得短信模板 | ||
| 15 | + * | ||
| 16 | + * @param code 模板编码 | ||
| 17 | + * @return 短信模板 | ||
| 18 | + */ | ||
| 19 | + SysSmsTemplateDO getSmsTemplateByCode(String code); | ||
| 20 | + | ||
| 10 | } | 21 | } |
src/main/java/cn/iocoder/dashboard/modules/system/service/sms/impl/SysSmsChannelServiceImpl.java
| @@ -8,7 +8,6 @@ import cn.iocoder.dashboard.framework.sms.core.enums.SmsChannelEnum; | @@ -8,7 +8,6 @@ import cn.iocoder.dashboard.framework.sms.core.enums.SmsChannelEnum; | ||
| 8 | import cn.iocoder.dashboard.framework.sms.core.property.SmsChannelProperty; | 8 | import cn.iocoder.dashboard.framework.sms.core.property.SmsChannelProperty; |
| 9 | import cn.iocoder.dashboard.framework.sms.core.property.SmsTemplateProperty; | 9 | import cn.iocoder.dashboard.framework.sms.core.property.SmsTemplateProperty; |
| 10 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.SmsChannelAllVO; | 10 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.SmsChannelAllVO; |
| 11 | -import cn.iocoder.dashboard.modules.system.controller.sms.vo.SmsTemplateVO; | ||
| 12 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.req.SmsChannelCreateReqVO; | 11 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.req.SmsChannelCreateReqVO; |
| 13 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.req.SmsChannelPageReqVO; | 12 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.req.SmsChannelPageReqVO; |
| 14 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.resp.SmsChannelEnumRespVO; | 13 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.resp.SmsChannelEnumRespVO; |
| @@ -16,10 +15,9 @@ import cn.iocoder.dashboard.modules.system.convert.sms.SmsChannelConvert; | @@ -16,10 +15,9 @@ import cn.iocoder.dashboard.modules.system.convert.sms.SmsChannelConvert; | ||
| 16 | import cn.iocoder.dashboard.modules.system.convert.sms.SmsTemplateConvert; | 15 | import cn.iocoder.dashboard.modules.system.convert.sms.SmsTemplateConvert; |
| 17 | import cn.iocoder.dashboard.modules.system.dal.mysql.dao.sms.SysSmsChannelMapper; | 16 | import cn.iocoder.dashboard.modules.system.dal.mysql.dao.sms.SysSmsChannelMapper; |
| 18 | import cn.iocoder.dashboard.modules.system.dal.mysql.dao.sms.SysSmsTemplateMapper; | 17 | import cn.iocoder.dashboard.modules.system.dal.mysql.dao.sms.SysSmsTemplateMapper; |
| 19 | -import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.sms.SysSmsChannelDO; | ||
| 20 | -import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.sms.SysSmsTemplateDO; | 18 | +import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsChannelDO; |
| 19 | +import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 21 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsChannelService; | 20 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsChannelService; |
| 22 | -import org.springframework.beans.factory.annotation.Autowired; | ||
| 23 | import org.springframework.stereotype.Service; | 21 | import org.springframework.stereotype.Service; |
| 24 | 22 | ||
| 25 | import javax.annotation.PostConstruct; | 23 | import javax.annotation.PostConstruct; |
src/main/java/cn/iocoder/dashboard/modules/system/service/sms/impl/SysSmsQueryLogServiceImpl.java
| @@ -6,7 +6,7 @@ import cn.iocoder.dashboard.framework.sms.core.SmsResult; | @@ -6,7 +6,7 @@ import cn.iocoder.dashboard.framework.sms.core.SmsResult; | ||
| 6 | import cn.iocoder.dashboard.framework.sms.core.SmsResultDetail; | 6 | import cn.iocoder.dashboard.framework.sms.core.SmsResultDetail; |
| 7 | import cn.iocoder.dashboard.framework.sms.core.property.SmsChannelProperty; | 7 | import cn.iocoder.dashboard.framework.sms.core.property.SmsChannelProperty; |
| 8 | import cn.iocoder.dashboard.modules.system.dal.mysql.dao.sms.SysSmsQueryLogMapper; | 8 | import cn.iocoder.dashboard.modules.system.dal.mysql.dao.sms.SysSmsQueryLogMapper; |
| 9 | -import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.sms.SysSmsQueryLogDO; | 9 | +import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsQueryLogDO; |
| 10 | import cn.iocoder.dashboard.modules.system.enums.sms.SmsSendStatusEnum; | 10 | import cn.iocoder.dashboard.modules.system.enums.sms.SmsSendStatusEnum; |
| 11 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsQueryLogService; | 11 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsQueryLogService; |
| 12 | import org.springframework.stereotype.Service; | 12 | import org.springframework.stereotype.Service; |
src/main/java/cn/iocoder/dashboard/modules/system/service/sms/impl/SysSmsSendLogServiceImpl.java
| @@ -2,11 +2,10 @@ package cn.iocoder.dashboard.modules.system.service.sms.impl; | @@ -2,11 +2,10 @@ package cn.iocoder.dashboard.modules.system.service.sms.impl; | ||
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollectionUtil; | 3 | import cn.hutool.core.collection.CollectionUtil; |
| 4 | import cn.iocoder.dashboard.framework.sms.client.AbstractSmsClient; | 4 | import cn.iocoder.dashboard.framework.sms.client.AbstractSmsClient; |
| 5 | -import cn.iocoder.dashboard.framework.sms.core.SmsResultDetail; | ||
| 6 | -import cn.iocoder.dashboard.modules.system.dal.mysql.dao.sms.SysSmsQueryLogMapper; | ||
| 7 | -import cn.iocoder.dashboard.modules.system.dal.mysql.dao.sms.SysSmsSendLogMapper; | ||
| 8 | -import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.sms.SysSmsQueryLogDO; | ||
| 9 | -import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.sms.SysSmsSendLogDO; | 5 | +import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsQueryLogDO; |
| 6 | +import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsSendLogDO; | ||
| 7 | +import cn.iocoder.dashboard.modules.system.dal.mysql.sms.SysSmsQueryLogMapper; | ||
| 8 | +import cn.iocoder.dashboard.modules.system.dal.mysql.sms.SysSmsSendLogMapper; | ||
| 10 | import cn.iocoder.dashboard.modules.system.enums.sms.SmsSendStatusEnum; | 9 | import cn.iocoder.dashboard.modules.system.enums.sms.SmsSendStatusEnum; |
| 11 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsChannelService; | 10 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsChannelService; |
| 12 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsSendLogService; | 11 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsSendLogService; |
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.util.StrUtil; | ||
| 4 | +import cn.iocoder.dashboard.common.enums.UserTypeEnum; | ||
| 3 | import cn.iocoder.dashboard.framework.sms.client.AbstractSmsClient; | 5 | import cn.iocoder.dashboard.framework.sms.client.AbstractSmsClient; |
| 4 | import cn.iocoder.dashboard.framework.sms.core.SmsBody; | 6 | import cn.iocoder.dashboard.framework.sms.core.SmsBody; |
| 5 | import cn.iocoder.dashboard.framework.sms.core.SmsClientFactory; | 7 | import cn.iocoder.dashboard.framework.sms.core.SmsClientFactory; |
| 6 | import cn.iocoder.dashboard.framework.sms.core.SmsResultDetail; | 8 | import cn.iocoder.dashboard.framework.sms.core.SmsResultDetail; |
| 7 | -import cn.iocoder.dashboard.modules.system.redis.stream.sms.SmsSendStreamProducer; | 9 | +import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO; |
| 10 | +import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; | ||
| 11 | +import cn.iocoder.dashboard.modules.system.mq.producer.sms.SmsSendStreamProducer; | ||
| 8 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsChannelService; | 12 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsChannelService; |
| 9 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsQueryLogService; | 13 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsQueryLogService; |
| 10 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsService; | 14 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsService; |
| 15 | +import cn.iocoder.dashboard.modules.system.service.sms.SysSmsTemplateService; | ||
| 16 | +import cn.iocoder.dashboard.modules.system.service.user.SysUserService; | ||
| 11 | import org.springframework.stereotype.Service; | 17 | import org.springframework.stereotype.Service; |
| 12 | 18 | ||
| 13 | import javax.annotation.Resource; | 19 | import javax.annotation.Resource; |
| 14 | import javax.servlet.ServletRequest; | 20 | import javax.servlet.ServletRequest; |
| 21 | +import java.util.List; | ||
| 22 | +import java.util.Map; | ||
| 23 | +import java.util.Objects; | ||
| 24 | + | ||
| 25 | +import static cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil.exception; | ||
| 26 | +import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; | ||
| 15 | 27 | ||
| 16 | /** | 28 | /** |
| 17 | * 短信日志Service实现类 | 29 | * 短信日志Service实现类 |
| @@ -23,8 +35,14 @@ import javax.servlet.ServletRequest; | @@ -23,8 +35,14 @@ import javax.servlet.ServletRequest; | ||
| 23 | public class SysSmsServiceImpl implements SysSmsService { | 35 | public class SysSmsServiceImpl implements SysSmsService { |
| 24 | 36 | ||
| 25 | @Resource | 37 | @Resource |
| 38 | + private SysSmsTemplateService smsTemplateService; | ||
| 39 | + @Resource | ||
| 40 | + private SysUserService userService; | ||
| 41 | + | ||
| 42 | + @Resource | ||
| 26 | private SysSmsChannelService channelService; | 43 | private SysSmsChannelService channelService; |
| 27 | 44 | ||
| 45 | + | ||
| 28 | @Resource | 46 | @Resource |
| 29 | private SysSmsQueryLogService logService; | 47 | private SysSmsQueryLogService logService; |
| 30 | 48 | ||
| @@ -35,6 +53,54 @@ public class SysSmsServiceImpl implements SysSmsService { | @@ -35,6 +53,54 @@ public class SysSmsServiceImpl implements SysSmsService { | ||
| 35 | private SmsClientFactory smsClientFactory; | 53 | private SmsClientFactory smsClientFactory; |
| 36 | 54 | ||
| 37 | @Override | 55 | @Override |
| 56 | + public void sendSingleSms(String mobile, Long userId, Integer userType, | ||
| 57 | + String templateCode, Map<String, Object> templateParams) { | ||
| 58 | + // 校验短信模板是否存在 | ||
| 59 | + SysSmsTemplateDO template = this.checkSmsTemplateExists(templateCode); | ||
| 60 | + // 校验手机号码是否存在 | ||
| 61 | + mobile = this.checkMobile(mobile, userId, userType); | ||
| 62 | + } | ||
| 63 | + | ||
| 64 | + @Override | ||
| 65 | + public void sendBatchSms(List<String> mobiles, List<Long> userIds, Integer userType, | ||
| 66 | + String templateCode, Map<String, Object> templateParams) { | ||
| 67 | + // 校验短信模板是否存在 | ||
| 68 | + SysSmsTemplateDO template = this.checkSmsTemplateExists(templateCode); | ||
| 69 | + } | ||
| 70 | + | ||
| 71 | + private SysSmsTemplateDO checkSmsTemplateExists(String templateCode) { | ||
| 72 | + SysSmsTemplateDO template = smsTemplateService.getSmsTemplateByCode(templateCode); | ||
| 73 | + if (template == null) { | ||
| 74 | + throw exception(SMS_TEMPLATE_NOT_EXISTS); | ||
| 75 | + } | ||
| 76 | + return template; | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + private String checkMobile(String mobile, Long userId, Integer userType) { | ||
| 80 | + mobile = getMobile(mobile, userId, userType); | ||
| 81 | + if (StrUtil.isEmpty(mobile)) { | ||
| 82 | + throw exception(SMS_SEND_MOBILE_NOT_EXISTS); | ||
| 83 | + } | ||
| 84 | + return mobile; | ||
| 85 | + } | ||
| 86 | + | ||
| 87 | + private String getMobile(String mobile, Long userId, Integer userType) { | ||
| 88 | + // 如果已经有手机号,则直接返回 | ||
| 89 | + if (StrUtil.isNotEmpty(mobile)) { | ||
| 90 | + return mobile; | ||
| 91 | + } | ||
| 92 | + // 没有手机号,则基于 userId 检索 | ||
| 93 | + if (userId == null || userType == null) { | ||
| 94 | + return null; | ||
| 95 | + } | ||
| 96 | + if (Objects.equals(userType, UserTypeEnum.ADMIN.getValue())) { | ||
| 97 | + SysUserDO user = userService.getUser(userId); | ||
| 98 | + return user != null ? user.getMobile() : null; | ||
| 99 | + } | ||
| 100 | + return null; | ||
| 101 | + } | ||
| 102 | + | ||
| 103 | + @Override | ||
| 38 | public void send(SmsBody smsBody, String targetPhone) { | 104 | public void send(SmsBody smsBody, String targetPhone) { |
| 39 | AbstractSmsClient client = channelService.getSmsClient(smsBody.getTemplateCode()); | 105 | AbstractSmsClient client = channelService.getSmsClient(smsBody.getTemplateCode()); |
| 40 | logService.beforeSendLog(smsBody, targetPhone, client); | 106 | logService.beforeSendLog(smsBody, targetPhone, client); |
src/main/java/cn/iocoder/dashboard/modules/system/service/sms/impl/SysSmsTemplateServiceImpl.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.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 4 | +import cn.iocoder.dashboard.modules.system.dal.mysql.sms.SysSmsTemplateMapper; | ||
| 3 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsTemplateService; | 5 | import cn.iocoder.dashboard.modules.system.service.sms.SysSmsTemplateService; |
| 4 | import org.springframework.stereotype.Service; | 6 | import org.springframework.stereotype.Service; |
| 5 | 7 | ||
| 8 | +import javax.annotation.Resource; | ||
| 9 | + | ||
| 6 | /** | 10 | /** |
| 7 | * 短信模板Service实现类 | 11 | * 短信模板Service实现类 |
| 8 | * | 12 | * |
| @@ -11,4 +15,13 @@ import org.springframework.stereotype.Service; | @@ -11,4 +15,13 @@ import org.springframework.stereotype.Service; | ||
| 11 | */ | 15 | */ |
| 12 | @Service | 16 | @Service |
| 13 | public class SysSmsTemplateServiceImpl implements SysSmsTemplateService { | 17 | public class SysSmsTemplateServiceImpl implements SysSmsTemplateService { |
| 18 | + | ||
| 19 | + @Resource | ||
| 20 | + private SysSmsTemplateMapper smsTemplateMapper; | ||
| 21 | + | ||
| 22 | + @Override | ||
| 23 | + public SysSmsTemplateDO getSmsTemplateByCode(String code) { | ||
| 24 | + return smsTemplateMapper.selectOneByCode(code); | ||
| 25 | + } | ||
| 26 | + | ||
| 14 | } | 27 | } |
src/test/java/cn/iocoder/dashboard/modules/system/service/dept/SysDeptServiceTest.java
| @@ -8,7 +8,7 @@ import cn.iocoder.dashboard.modules.system.controller.dept.vo.dept.SysDeptUpdate | @@ -8,7 +8,7 @@ import cn.iocoder.dashboard.modules.system.controller.dept.vo.dept.SysDeptUpdate | ||
| 8 | import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO; | 8 | import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO; |
| 9 | import cn.iocoder.dashboard.modules.system.dal.mysql.dept.SysDeptMapper; | 9 | import cn.iocoder.dashboard.modules.system.dal.mysql.dept.SysDeptMapper; |
| 10 | import cn.iocoder.dashboard.modules.system.enums.dept.DeptIdEnum; | 10 | import cn.iocoder.dashboard.modules.system.enums.dept.DeptIdEnum; |
| 11 | -import cn.iocoder.dashboard.modules.system.redis.mq.producer.dept.SysDeptProducer; | 11 | +import cn.iocoder.dashboard.modules.system.mq.producer.dept.SysDeptProducer; |
| 12 | import cn.iocoder.dashboard.modules.system.service.dept.impl.SysDeptServiceImpl; | 12 | import cn.iocoder.dashboard.modules.system.service.dept.impl.SysDeptServiceImpl; |
| 13 | import cn.iocoder.dashboard.util.collection.ArrayUtils; | 13 | import cn.iocoder.dashboard.util.collection.ArrayUtils; |
| 14 | import cn.iocoder.dashboard.util.object.ObjectUtils; | 14 | import cn.iocoder.dashboard.util.object.ObjectUtils; |
src/test/java/cn/iocoder/dashboard/modules/system/service/dict/SysDictDataServiceTest.java
| @@ -10,7 +10,7 @@ import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataUp | @@ -10,7 +10,7 @@ import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataUp | ||
| 10 | import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictDataDO; | 10 | import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictDataDO; |
| 11 | import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictTypeDO; | 11 | import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictTypeDO; |
| 12 | import cn.iocoder.dashboard.modules.system.dal.mysql.dict.SysDictDataMapper; | 12 | import cn.iocoder.dashboard.modules.system.dal.mysql.dict.SysDictDataMapper; |
| 13 | -import cn.iocoder.dashboard.modules.system.redis.mq.producer.dict.SysDictDataProducer; | 13 | +import cn.iocoder.dashboard.modules.system.mq.producer.dict.SysDictDataProducer; |
| 14 | import cn.iocoder.dashboard.modules.system.service.dict.impl.SysDictDataServiceImpl; | 14 | import cn.iocoder.dashboard.modules.system.service.dict.impl.SysDictDataServiceImpl; |
| 15 | import cn.iocoder.dashboard.util.collection.ArrayUtils; | 15 | import cn.iocoder.dashboard.util.collection.ArrayUtils; |
| 16 | import cn.iocoder.dashboard.util.object.ObjectUtils; | 16 | import cn.iocoder.dashboard.util.object.ObjectUtils; |