mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-03 03:38:43 +08:00 
			
		
		
		
	短信提交 2021-03-25,调整下短信发送 API
This commit is contained in:
		@@ -7,7 +7,7 @@ import cn.iocoder.dashboard.framework.sms.core.SmsBody;
 | 
				
			|||||||
import cn.iocoder.dashboard.framework.sms.core.SmsResult;
 | 
					import cn.iocoder.dashboard.framework.sms.core.SmsResult;
 | 
				
			||||||
import cn.iocoder.dashboard.framework.sms.core.SmsResultDetail;
 | 
					import cn.iocoder.dashboard.framework.sms.core.SmsResultDetail;
 | 
				
			||||||
import cn.iocoder.dashboard.framework.sms.core.property.SmsChannelProperty;
 | 
					import cn.iocoder.dashboard.framework.sms.core.property.SmsChannelProperty;
 | 
				
			||||||
import cn.iocoder.dashboard.modules.system.enums.sms.SmsSendStatusEnum;
 | 
					import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsSendStatusEnum;
 | 
				
			||||||
import cn.iocoder.dashboard.util.json.JsonUtils;
 | 
					import cn.iocoder.dashboard.util.json.JsonUtils;
 | 
				
			||||||
import com.aliyuncs.DefaultAcsClient;
 | 
					import com.aliyuncs.DefaultAcsClient;
 | 
				
			||||||
import com.aliyuncs.IAcsClient;
 | 
					import com.aliyuncs.IAcsClient;
 | 
				
			||||||
@@ -131,8 +131,8 @@ public class AliyunSmsClient extends AbstractSmsClient {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        public Integer getSendStatus() {
 | 
					        public Integer getSendStatus() {
 | 
				
			||||||
            return ((Boolean) sendResultParamMap.get(CallbackField.SUCCESS))
 | 
					            return ((Boolean) sendResultParamMap.get(CallbackField.SUCCESS))
 | 
				
			||||||
                    ? SmsSendStatusEnum.SEND_SUCCESS.getStatus()
 | 
					                    ? SysSmsSendStatusEnum.SEND_SUCCESS.getStatus()
 | 
				
			||||||
                    : SmsSendStatusEnum.SEND_FAIL.getStatus();
 | 
					                    : SysSmsSendStatusEnum.SEND_FAIL.getStatus();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public String getBizId() {
 | 
					        public String getBizId() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,7 @@ import cn.iocoder.dashboard.framework.sms.core.SmsConstants;
 | 
				
			|||||||
import cn.iocoder.dashboard.framework.sms.core.SmsResult;
 | 
					import cn.iocoder.dashboard.framework.sms.core.SmsResult;
 | 
				
			||||||
import cn.iocoder.dashboard.framework.sms.core.SmsResultDetail;
 | 
					import cn.iocoder.dashboard.framework.sms.core.SmsResultDetail;
 | 
				
			||||||
import cn.iocoder.dashboard.framework.sms.core.property.SmsChannelProperty;
 | 
					import cn.iocoder.dashboard.framework.sms.core.property.SmsChannelProperty;
 | 
				
			||||||
import cn.iocoder.dashboard.modules.system.enums.sms.SmsSendStatusEnum;
 | 
					import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsSendStatusEnum;
 | 
				
			||||||
import cn.iocoder.dashboard.util.json.JsonUtils;
 | 
					import cn.iocoder.dashboard.util.json.JsonUtils;
 | 
				
			||||||
import com.fasterxml.jackson.core.type.TypeReference;
 | 
					import com.fasterxml.jackson.core.type.TypeReference;
 | 
				
			||||||
import com.yunpian.sdk.YunpianClient;
 | 
					import com.yunpian.sdk.YunpianClient;
 | 
				
			||||||
@@ -155,8 +155,8 @@ public class YunpianSmsClient extends AbstractSmsClient {
 | 
				
			|||||||
        private static int getSendStatus(Map<String, String> map) {
 | 
					        private static int getSendStatus(Map<String, String> map) {
 | 
				
			||||||
            String reportStatus = map.get(REPORT_STATUS);
 | 
					            String reportStatus = map.get(REPORT_STATUS);
 | 
				
			||||||
            return SmsConstants.SUCCESS.equals(reportStatus)
 | 
					            return SmsConstants.SUCCESS.equals(reportStatus)
 | 
				
			||||||
                    ? SmsSendStatusEnum.SEND_SUCCESS.getStatus()
 | 
					                    ? SysSmsSendStatusEnum.SEND_SUCCESS.getStatus()
 | 
				
			||||||
                    : SmsSendStatusEnum.SEND_FAIL.getStatus();
 | 
					                    : SysSmsSendStatusEnum.SEND_FAIL.getStatus();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public static SmsResultDetail getSmsResultDetailByParam(Map<String, String> map) {
 | 
					        public static SmsResultDetail getSmsResultDetailByParam(Map<String, String> map) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package cn.iocoder.dashboard.framework.sms.core;
 | 
					package cn.iocoder.dashboard.framework.sms.core;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsSendStatusEnum;
 | 
				
			||||||
import lombok.Data;
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.io.Serializable;
 | 
					import java.io.Serializable;
 | 
				
			||||||
@@ -17,7 +18,7 @@ public class SmsResultDetail implements Serializable {
 | 
				
			|||||||
    private String apiId;
 | 
					    private String apiId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 短信发送状态 {@link cn.iocoder.dashboard.modules.system.enums.sms.SmsSendStatusEnum}
 | 
					     * 短信发送状态 {@link SysSmsSendStatusEnum}
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private Integer sendStatus;
 | 
					    private Integer sendStatus;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,15 +1,20 @@
 | 
				
			|||||||
package cn.iocoder.dashboard.modules.system.dal.dataobject.sms;
 | 
					package cn.iocoder.dashboard.modules.system.dal.dataobject.sms;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import cn.iocoder.dashboard.common.enums.UserTypeEnum;
 | 
				
			||||||
 | 
					import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO;
 | 
				
			||||||
 | 
					import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsSendFailureTypeEnum;
 | 
				
			||||||
 | 
					import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsSendStatusEnum;
 | 
				
			||||||
 | 
					import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsTemplateTypeEnum;
 | 
				
			||||||
import com.baomidou.mybatisplus.annotation.TableName;
 | 
					import com.baomidou.mybatisplus.annotation.TableName;
 | 
				
			||||||
import lombok.Data;
 | 
					import lombok.Data;
 | 
				
			||||||
import lombok.EqualsAndHashCode;
 | 
					import lombok.EqualsAndHashCode;
 | 
				
			||||||
import lombok.experimental.Accessors;
 | 
					import lombok.experimental.Accessors;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.io.Serializable;
 | 
					 | 
				
			||||||
import java.util.Date;
 | 
					import java.util.Date;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 短信日志
 | 
					 * 短信发送日志
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @author zzf
 | 
					 * @author zzf
 | 
				
			||||||
 * @since 2021-01-25
 | 
					 * @since 2021-01-25
 | 
				
			||||||
@@ -18,73 +23,118 @@ import java.util.Date;
 | 
				
			|||||||
@EqualsAndHashCode
 | 
					@EqualsAndHashCode
 | 
				
			||||||
@Accessors(chain = true)
 | 
					@Accessors(chain = true)
 | 
				
			||||||
@TableName(value = "sms_query_log", autoResultMap = true)
 | 
					@TableName(value = "sms_query_log", autoResultMap = true)
 | 
				
			||||||
public class SysSmsQueryLogDO implements Serializable {
 | 
					public class SysSmsQueryLogDO extends BaseDO {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 自增编号
 | 
					     * 自增编号
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private Long id;
 | 
					    private Long id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    // ========= 渠道相关字段 =========
 | 
				
			||||||
     * 第三方唯一标识
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private String apiId;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 短信渠道编码(来自枚举类)
 | 
					     * 短信渠道编号
 | 
				
			||||||
     */
 | 
					     *
 | 
				
			||||||
    private String channelCode;
 | 
					     * 关联 {@link SysSmsChannelDO#getId()}
 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 短信渠道id
 | 
					 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private Long channelId;
 | 
					    private Long channelId;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 短信渠道编码
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * 冗余 {@link SysSmsChannelDO#getCode()}
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String channelCode;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 实际渠道模板唯一标识
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String apiTemplateId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // ========= 模板相关字段 =========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 模板id
 | 
					     * 短信模板编号
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * 关联 {@link}
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private String templateCode;
 | 
					    private String templateCode;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 短信类型
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * 枚举 {@link SysSmsTemplateTypeEnum}
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private Integer templateType;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 基于 {@link SysSmsTemplateDO#getContent()} 格式化后的内容
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String templateContent;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 基于 {@link SysSmsTemplateDO#getParams()} 输入后的内容
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private Map<String, Object> templateParams;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // ========= 手机相关字段 =========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 手机号
 | 
					     * 手机号
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private String phone;
 | 
					    private String mobile;
 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 内容
 | 
					     * 用户编号
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private String content;
 | 
					    private Integer userId;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 用户类型
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * 枚举 {@link UserTypeEnum}
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private Integer userType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // ========= 发送相关字段 =========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 发送状态
 | 
					     * 发送状态
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @see cn.iocoder.dashboard.modules.system.enums.sms.SmsSendStatusEnum
 | 
					     * 枚举 {@link SysSmsSendStatusEnum}
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private Integer sendStatus;
 | 
					    private Integer sendStatus;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 发送失败的类型
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * 枚举 {@link SysSmsSendFailureTypeEnum}
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private Integer sendFailureType;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 发送成功时间
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private Date sendTime;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 短信 API 发送失败的类型
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * 由于第三方的错误码可能是字符串,所以使用 String 类型
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String apiSendFailureType;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 短信 API 发送失败的提示
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String apiSendFailureMsg;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 短信 API 发送返回的唯一请求 ID
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * 用于和短信 API 进行定位于排错
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String apiRequestId;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 短信 API 发送返回的序号
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * 用于和短信 API 平台的发送记录关联
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String apiSerialNo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // ========= 接收相关字段 =========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 是否获取过结果[0否 1是]
 | 
					     * 是否获取过结果[0否 1是]
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private Integer gotResult;
 | 
					    private Integer gotResult;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 备注
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private String remark;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 创建人
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private String createBy;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 创建时间
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private Date createTime;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 发送时间
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private Date sendTime;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
package cn.iocoder.dashboard.modules.system.dal.dataobject.sms;
 | 
					package cn.iocoder.dashboard.modules.system.dal.dataobject.sms;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import cn.iocoder.dashboard.modules.system.enums.sms.SmsSendStatusEnum;
 | 
					import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsSendStatusEnum;
 | 
				
			||||||
import com.baomidou.mybatisplus.annotation.TableName;
 | 
					import com.baomidou.mybatisplus.annotation.TableName;
 | 
				
			||||||
import lombok.Data;
 | 
					import lombok.Data;
 | 
				
			||||||
import lombok.EqualsAndHashCode;
 | 
					import lombok.EqualsAndHashCode;
 | 
				
			||||||
@@ -54,7 +54,7 @@ public class SysSmsSendLogDO implements Serializable {
 | 
				
			|||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 发送状态
 | 
					     * 发送状态
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @see SmsSendStatusEnum
 | 
					     * @see SysSmsSendStatusEnum
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private Integer sendStatus;
 | 
					    private Integer sendStatus;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,7 @@ package cn.iocoder.dashboard.modules.system.dal.dataobject.sms;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
 | 
					import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
 | 
				
			||||||
import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO;
 | 
					import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO;
 | 
				
			||||||
 | 
					import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsTemplateTypeEnum;
 | 
				
			||||||
import com.baomidou.mybatisplus.annotation.TableField;
 | 
					import com.baomidou.mybatisplus.annotation.TableField;
 | 
				
			||||||
import com.baomidou.mybatisplus.annotation.TableName;
 | 
					import com.baomidou.mybatisplus.annotation.TableName;
 | 
				
			||||||
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 | 
					import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 | 
				
			||||||
@@ -26,62 +27,59 @@ public class SysSmsTemplateDO extends BaseDO {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    private Long id;
 | 
					    private Long id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    // ========= 模板相关字段 =========
 | 
				
			||||||
     * 短信渠道编码(来自枚举类)
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private String channelCode;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 短信渠道id (对于前端来说就是绑定一个签名)
 | 
					     * 短信类型
 | 
				
			||||||
     */
 | 
					     *
 | 
				
			||||||
    private Long channelId;
 | 
					     * 枚举 {@link SysSmsTemplateTypeEnum}
 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 消息类型 [0验证码 1短信通知 2推广短信 3国际/港澳台消息]
 | 
					 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private Integer type;
 | 
					    private Integer type;
 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 业务编码(来自数据字典, 用户自定义业务场景 一个场景可以有多个模板)
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private String bizCode;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 模板编码
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private String code;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 名称
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private String name;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 实际渠道模板唯一标识
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private String apiTemplateId;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 内容
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private String content;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 参数数组(自动根据内容生成)
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    @TableField(typeHandler = JacksonTypeHandler.class)
 | 
					 | 
				
			||||||
    private List<String> params;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 备注
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private String remark;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 启用状态
 | 
					     * 启用状态
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * 枚举 {@link CommonStatusEnum}
 | 
					     * 枚举 {@link CommonStatusEnum}
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private Integer status;
 | 
					    private Integer status;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 模板编码,保证唯一
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String code;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 名称
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String name;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 内容
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String content;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 参数数组(自动根据内容生成)
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @TableField(typeHandler = JacksonTypeHandler.class)
 | 
				
			||||||
 | 
					    private List<String> params;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 备注
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String remark;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // ========= 渠道相关字段 =========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 短信渠道编号
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * 关联 {@link SysSmsChannelDO#getId()}
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private Long channelId;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 短信渠道编码
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * 冗余 {@link SysSmsChannelDO#getCode()}
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String channelCode;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 短信 API 的模板编号
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String apiTemplateId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ package cn.iocoder.dashboard.modules.system.dal.mysql.sms;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import cn.iocoder.dashboard.common.enums.DefaultBitFieldEnum;
 | 
					import cn.iocoder.dashboard.common.enums.DefaultBitFieldEnum;
 | 
				
			||||||
import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsQueryLogDO;
 | 
					import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsQueryLogDO;
 | 
				
			||||||
import cn.iocoder.dashboard.modules.system.enums.sms.SmsSendStatusEnum;
 | 
					import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsSendStatusEnum;
 | 
				
			||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
					import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
				
			||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 | 
					import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 | 
				
			||||||
import org.apache.ibatis.annotations.Mapper;
 | 
					import org.apache.ibatis.annotations.Mapper;
 | 
				
			||||||
@@ -17,7 +17,7 @@ public interface SysSmsQueryLogMapper extends BaseMapper<SysSmsQueryLogDO> {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    default List<SysSmsQueryLogDO> selectNoResultQueryLogList() {
 | 
					    default List<SysSmsQueryLogDO> selectNoResultQueryLogList() {
 | 
				
			||||||
        return this.selectList(new LambdaQueryWrapper<SysSmsQueryLogDO>()
 | 
					        return this.selectList(new LambdaQueryWrapper<SysSmsQueryLogDO>()
 | 
				
			||||||
                .eq(SysSmsQueryLogDO::getSendStatus, SmsSendStatusEnum.QUERY_SUCCESS)
 | 
					                .eq(SysSmsQueryLogDO::getSendStatus, SysSmsSendStatusEnum.QUERY_SUCCESS)
 | 
				
			||||||
                .eq(SysSmsQueryLogDO::getGotResult, DefaultBitFieldEnum.NO)
 | 
					                .eq(SysSmsQueryLogDO::getGotResult, DefaultBitFieldEnum.NO)
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -84,6 +84,7 @@ public interface SysErrorCodeConstants {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // ========== 短信发送 1002011000 ==========
 | 
					    // ========== 短信发送 1002011000 ==========
 | 
				
			||||||
    ErrorCode SMS_SEND_MOBILE_NOT_EXISTS = new ErrorCode(1002011000, "手机号不存在");
 | 
					    ErrorCode SMS_SEND_MOBILE_NOT_EXISTS = new ErrorCode(1002011000, "手机号不存在");
 | 
				
			||||||
 | 
					    ErrorCode SMS_SEND_MOBILE_TEMPLATE_PARAM_MISS = new ErrorCode(1002011001, "模板参数({})缺失");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ErrorCode SMS_CHANNEL_NOT_INIT = new ErrorCode(1003001001,
 | 
					    ErrorCode SMS_CHANNEL_NOT_INIT = new ErrorCode(1003001001,
 | 
				
			||||||
            "短信渠道没有初始化, 请调用SmsClientWrapper#initSmsClient()或SmsClientWrapper#addSmsClient");
 | 
					            "短信渠道没有初始化, 请调用SmsClientWrapper#initSmsClient()或SmsClientWrapper#addSmsClient");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,39 +0,0 @@
 | 
				
			|||||||
package cn.iocoder.dashboard.modules.system.enums.sms;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import lombok.AllArgsConstructor;
 | 
					 | 
				
			||||||
import lombok.Getter;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * 短信发送状态
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * @author zzf
 | 
					 | 
				
			||||||
 * @date 2021/2/1 13:39
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
@Getter
 | 
					 | 
				
			||||||
@AllArgsConstructor
 | 
					 | 
				
			||||||
public enum SmsSendStatusEnum {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //请求发送结果时失败
 | 
					 | 
				
			||||||
    QUERY_SEND_FAIL(-3),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //短信发送失败
 | 
					 | 
				
			||||||
    SEND_FAIL(-2),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //短信请求失败
 | 
					 | 
				
			||||||
    QUERY_FAIL(-1),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //异步转发中
 | 
					 | 
				
			||||||
    ASYNC(0),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //请求成功
 | 
					 | 
				
			||||||
    QUERY_SUCCESS(1),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //短信成功
 | 
					 | 
				
			||||||
    SEND_SUCCESS(2),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //等待回执
 | 
					 | 
				
			||||||
    WAITING(3);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private final int status;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					package cn.iocoder.dashboard.modules.system.enums.sms;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.AllArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.Getter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 短信的发送失败类型的枚举
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author 芋道源码
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Getter
 | 
				
			||||||
 | 
					@AllArgsConstructor
 | 
				
			||||||
 | 
					public enum SysSmsSendFailureTypeEnum {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final int type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					package cn.iocoder.dashboard.modules.system.enums.sms;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.AllArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.Getter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 短信的发送状态枚举
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author zzf
 | 
				
			||||||
 | 
					 * @date 2021/2/1 13:39
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Getter
 | 
				
			||||||
 | 
					@AllArgsConstructor
 | 
				
			||||||
 | 
					public enum SysSmsSendStatusEnum {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    INIT(0), // 初始化
 | 
				
			||||||
 | 
					    SUCCESS(10), // 发送成功
 | 
				
			||||||
 | 
					    FAILURE(20), // 发送失败
 | 
				
			||||||
 | 
					    ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final int status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					package cn.iocoder.dashboard.modules.system.enums.sms;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.AllArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.Getter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 短信的模板类型枚举
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author 芋道源码
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Getter
 | 
				
			||||||
 | 
					@AllArgsConstructor
 | 
				
			||||||
 | 
					public enum SysSmsTemplateTypeEnum {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    VERIFICATION_CODE(1), // 验证码
 | 
				
			||||||
 | 
					    NOTICE(2), // 通知
 | 
				
			||||||
 | 
					    PROMOTION(3), // 营销
 | 
				
			||||||
 | 
					    ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 类型
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private final int type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -19,6 +19,8 @@ public interface SysSmsService {
 | 
				
			|||||||
    void sendBatchSms(List<String> mobiles, List<Long> userIds, Integer userType,
 | 
					    void sendBatchSms(List<String> mobiles, List<Long> userIds, Integer userType,
 | 
				
			||||||
                      String templateCode, Map<String, Object> templateParams);
 | 
					                      String templateCode, Map<String, Object> templateParams);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void doSendSms();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 处理短信发送回调函数
 | 
					     * 处理短信发送回调函数
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,7 @@ import cn.iocoder.dashboard.framework.sms.core.SmsResultDetail;
 | 
				
			|||||||
import cn.iocoder.dashboard.framework.sms.core.property.SmsChannelProperty;
 | 
					import cn.iocoder.dashboard.framework.sms.core.property.SmsChannelProperty;
 | 
				
			||||||
import cn.iocoder.dashboard.modules.system.dal.mysql.dao.sms.SysSmsQueryLogMapper;
 | 
					import cn.iocoder.dashboard.modules.system.dal.mysql.dao.sms.SysSmsQueryLogMapper;
 | 
				
			||||||
import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsQueryLogDO;
 | 
					import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsQueryLogDO;
 | 
				
			||||||
import cn.iocoder.dashboard.modules.system.enums.sms.SmsSendStatusEnum;
 | 
					import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsSendStatusEnum;
 | 
				
			||||||
import cn.iocoder.dashboard.modules.system.service.sms.SysSmsQueryLogService;
 | 
					import cn.iocoder.dashboard.modules.system.service.sms.SysSmsQueryLogService;
 | 
				
			||||||
import org.springframework.stereotype.Service;
 | 
					import org.springframework.stereotype.Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -36,7 +36,7 @@ public class SysSmsQueryLogServiceImpl implements SysSmsQueryLogService {
 | 
				
			|||||||
                .setPhone(targetPhone)
 | 
					                .setPhone(targetPhone)
 | 
				
			||||||
                .setContent(smsBody.getParams().toString());
 | 
					                .setContent(smsBody.getParams().toString());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        smsLog.setSendStatus(SmsSendStatusEnum.ASYNC.getStatus());
 | 
					        smsLog.setSendStatus(SysSmsSendStatusEnum.ASYNC.getStatus());
 | 
				
			||||||
        logMapper.insert(smsLog);
 | 
					        logMapper.insert(smsLog);
 | 
				
			||||||
        smsBody.setSmsLogId(smsLog.getId());
 | 
					        smsBody.setSmsLogId(smsLog.getId());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -46,7 +46,7 @@ public class SysSmsQueryLogServiceImpl implements SysSmsQueryLogService {
 | 
				
			|||||||
        SysSmsQueryLogDO smsLog = new SysSmsQueryLogDO();
 | 
					        SysSmsQueryLogDO smsLog = new SysSmsQueryLogDO();
 | 
				
			||||||
        smsLog.setId(logId);
 | 
					        smsLog.setId(logId);
 | 
				
			||||||
        smsLog.setApiId(result.getApiId());
 | 
					        smsLog.setApiId(result.getApiId());
 | 
				
			||||||
        smsLog.setSendStatus(SmsSendStatusEnum.QUERY_FAIL.getStatus());
 | 
					        smsLog.setSendStatus(SysSmsSendStatusEnum.QUERY_FAIL.getStatus());
 | 
				
			||||||
        smsLog.setRemark(result.getCode() + ": " + result.getMessage());
 | 
					        smsLog.setRemark(result.getCode() + ": " + result.getMessage());
 | 
				
			||||||
        logMapper.updateById(smsLog);
 | 
					        logMapper.updateById(smsLog);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@ import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsQueryLogDO;
 | 
				
			|||||||
import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsSendLogDO;
 | 
					import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsSendLogDO;
 | 
				
			||||||
import cn.iocoder.dashboard.modules.system.dal.mysql.sms.SysSmsQueryLogMapper;
 | 
					import cn.iocoder.dashboard.modules.system.dal.mysql.sms.SysSmsQueryLogMapper;
 | 
				
			||||||
import cn.iocoder.dashboard.modules.system.dal.mysql.sms.SysSmsSendLogMapper;
 | 
					import cn.iocoder.dashboard.modules.system.dal.mysql.sms.SysSmsSendLogMapper;
 | 
				
			||||||
import cn.iocoder.dashboard.modules.system.enums.sms.SmsSendStatusEnum;
 | 
					import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsSendStatusEnum;
 | 
				
			||||||
import cn.iocoder.dashboard.modules.system.service.sms.SysSmsChannelService;
 | 
					import cn.iocoder.dashboard.modules.system.service.sms.SysSmsChannelService;
 | 
				
			||||||
import cn.iocoder.dashboard.modules.system.service.sms.SysSmsSendLogService;
 | 
					import cn.iocoder.dashboard.modules.system.service.sms.SysSmsSendLogService;
 | 
				
			||||||
import lombok.extern.slf4j.Slf4j;
 | 
					import lombok.extern.slf4j.Slf4j;
 | 
				
			||||||
@@ -88,7 +88,7 @@ public class SysSmsSendLogServiceImpl implements SysSmsSendLogService {
 | 
				
			|||||||
                updateQueryLog.setSendStatus(SmsSendStatusEnum.QUERY_SEND_FAIL.getStatus());
 | 
					                updateQueryLog.setSendStatus(SmsSendStatusEnum.QUERY_SEND_FAIL.getStatus());
 | 
				
			||||||
                smsQueryLogMapper.updateById(updateQueryLog);
 | 
					                smsQueryLogMapper.updateById(updateQueryLog);
 | 
				
			||||||
            }*/
 | 
					            }*/
 | 
				
			||||||
            updateQueryLog.setSendStatus(SmsSendStatusEnum.SEND_SUCCESS.getStatus());
 | 
					            updateQueryLog.setSendStatus(SysSmsSendStatusEnum.SEND_SUCCESS.getStatus());
 | 
				
			||||||
            updateQueryLog.setRemark(String.format("日志(id = %s)对应的客户端没有继承NeedQuerySendResultSmsClient, 不能获取短信结果。", queryLog.getId()));
 | 
					            updateQueryLog.setRemark(String.format("日志(id = %s)对应的客户端没有继承NeedQuerySendResultSmsClient, 不能获取短信结果。", queryLog.getId()));
 | 
				
			||||||
            smsQueryLogMapper.updateById(updateQueryLog);
 | 
					            smsQueryLogMapper.updateById(updateQueryLog);
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,7 @@
 | 
				
			|||||||
package cn.iocoder.dashboard.modules.system.service.sms.impl;
 | 
					package cn.iocoder.dashboard.modules.system.service.sms.impl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import cn.hutool.core.collection.CollUtil;
 | 
				
			||||||
 | 
					import cn.hutool.core.map.MapUtil;
 | 
				
			||||||
import cn.hutool.core.util.StrUtil;
 | 
					import cn.hutool.core.util.StrUtil;
 | 
				
			||||||
import cn.iocoder.dashboard.common.enums.UserTypeEnum;
 | 
					import cn.iocoder.dashboard.common.enums.UserTypeEnum;
 | 
				
			||||||
import cn.iocoder.dashboard.framework.sms.client.AbstractSmsClient;
 | 
					import cn.iocoder.dashboard.framework.sms.client.AbstractSmsClient;
 | 
				
			||||||
@@ -21,6 +23,8 @@ import javax.servlet.ServletRequest;
 | 
				
			|||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
import java.util.Objects;
 | 
					import java.util.Objects;
 | 
				
			||||||
 | 
					import java.util.function.Consumer;
 | 
				
			||||||
 | 
					import java.util.function.Predicate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil.exception;
 | 
					import static cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil.exception;
 | 
				
			||||||
import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*;
 | 
					import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*;
 | 
				
			||||||
@@ -55,24 +59,40 @@ public class SysSmsServiceImpl implements SysSmsService {
 | 
				
			|||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void sendSingleSms(String mobile, Long userId, Integer userType,
 | 
					    public void sendSingleSms(String mobile, Long userId, Integer userType,
 | 
				
			||||||
                              String templateCode, Map<String, Object> templateParams) {
 | 
					                              String templateCode, Map<String, Object> templateParams) {
 | 
				
			||||||
        // 校验短信模板是否存在
 | 
					        // 校验短信模板是否合法
 | 
				
			||||||
        SysSmsTemplateDO template = this.checkSmsTemplateExists(templateCode);
 | 
					        SysSmsTemplateDO template = this.checkSmsTemplateValid(templateCode, templateParams);
 | 
				
			||||||
        // 校验手机号码是否存在
 | 
					        // 校验手机号码是否存在
 | 
				
			||||||
        mobile = this.checkMobile(mobile, userId, userType);
 | 
					        mobile = this.checkMobile(mobile, userId, userType);
 | 
				
			||||||
 | 
					        //
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void sendBatchSms(List<String> mobiles, List<Long> userIds, Integer userType,
 | 
					    public void sendBatchSms(List<String> mobiles, List<Long> userIds, Integer userType,
 | 
				
			||||||
                             String templateCode, Map<String, Object> templateParams) {
 | 
					                             String templateCode, Map<String, Object> templateParams) {
 | 
				
			||||||
        // 校验短信模板是否存在
 | 
					        // 校验短信模板是否存在
 | 
				
			||||||
        SysSmsTemplateDO template = this.checkSmsTemplateExists(templateCode);
 | 
					        SysSmsTemplateDO template = this.checkSmsTemplateValid(templateCode, templateParams);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private SysSmsTemplateDO checkSmsTemplateExists(String templateCode) {
 | 
					    private SysSmsTemplateDO checkSmsTemplateValid(String templateCode, Map<String, Object> templateParams) {
 | 
				
			||||||
 | 
					        // 短信模板不存在
 | 
				
			||||||
        SysSmsTemplateDO template = smsTemplateService.getSmsTemplateByCode(templateCode);
 | 
					        SysSmsTemplateDO template = smsTemplateService.getSmsTemplateByCode(templateCode);
 | 
				
			||||||
        if (template == null) {
 | 
					        if (template == null) {
 | 
				
			||||||
            throw exception(SMS_TEMPLATE_NOT_EXISTS);
 | 
					            throw exception(SMS_TEMPLATE_NOT_EXISTS);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        // 参数不够
 | 
				
			||||||
 | 
					        if (CollUtil.isNotEmpty(template.getParams())) {
 | 
				
			||||||
 | 
					            template.getParams().forEach(param -> {
 | 
				
			||||||
 | 
					                if (!templateParams.containsKey(param)) {
 | 
				
			||||||
 | 
					                    throw exception(SMS_SEND_MOBILE_TEMPLATE_PARAM_MISS);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // 移除多余参数
 | 
				
			||||||
 | 
					        if (CollUtil.isEmpty(template.getParams())) {
 | 
				
			||||||
 | 
					            templateParams.clear();
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            templateParams.entrySet().removeIf(entry -> !template.getParams().contains(entry.getKey()));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        return template;
 | 
					        return template;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user