# sms_sending_platform **Repository Path**: sky007z/sms_sending_platform ## Basic Information - **Project Name**: sms_sending_platform - **Description**: 短信发送平台 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-03-27 - **Last Updated**: 2021-03-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 聚合短信发送平台 * 建表语句 ``` /* Navicat MySQL Data Transfer Source Server : pfq_person Source Server Version : 50718 Source Host : cdb-lvyo5xj6.bj.tencentcdb.com:10196 Source Database : sms Target Server Type : MYSQL Target Server Version : 50718 File Encoding : 65001 Date: 2020-07-01 17:19:49 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `t_aliyun_send_history` -- ---------------------------- DROP TABLE IF EXISTS `t_aliyun_send_history`; CREATE TABLE `t_aliyun_send_history` ( `sendSeq` int(8) NOT NULL AUTO_INCREMENT, `phone` varchar(11) NOT NULL, `templateSeq` int(4) NOT NULL, `sendParamStr` varchar(256) NOT NULL, `sendTm` varchar(21) NOT NULL, `sendIp` varchar(64) DEFAULT NULL, `sendResult` int(1) DEFAULT '-1' COMMENT '1成功 0 失败 -1待发送', `resultDesc` varchar(128) DEFAULT NULL COMMENT '结果描述', PRIMARY KEY (`sendSeq`) ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4; -- ---------------------------- -- Records of t_aliyun_send_history -- ---------------------------- INSERT INTO `t_aliyun_send_history` VALUES ('1', '15179218036', '2', '{\"key1\":\"123456\"}', '2020-07-01 14:46:45', '192.168.80.1', '0', 'JSON参数不合法,只接受字符串值'); INSERT INTO `t_aliyun_send_history` VALUES ('2', '15179218036', '2', '{\"key1\":\"123456\"}', '2020-07-01 15:03:32', '192.168.80.1', '1', '发送成功'); INSERT INTO `t_aliyun_send_history` VALUES ('3', '15179218036', '1', '{\"key1\":\"5\"}', '2020-07-01 15:04:37', '192.168.80.1', '1', '发送成功'); -- ---------------------------- -- Table structure for `t_aliyun_sms_platform` -- ---------------------------- DROP TABLE IF EXISTS `t_aliyun_sms_platform`; CREATE TABLE `t_aliyun_sms_platform` ( `templateSeq` int(5) NOT NULL AUTO_INCREMENT, `regionId` varchar(63) NOT NULL DEFAULT 'cn-hangzhou' COMMENT '区域Id cn-hangzhou', `accessKeyId` varchar(128) NOT NULL, `accessKeySecret` varchar(128) NOT NULL, `endpointName` varchar(64) NOT NULL DEFAULT 'cn-hangzhou' COMMENT '节点名称 例如cn-hangzhou', `product` varchar(64) NOT NULL DEFAULT 'Dysmsapi' COMMENT '产品名称:云通信短信API产品,开发者无需替换 Dysmsapi', `domain` varchar(64) NOT NULL DEFAULT 'dysmsapi.aliyuncs.com' COMMENT '产品域名,开发者无需替换 dysmsapi.aliyuncs.com', `templateCode` varchar(64) NOT NULL DEFAULT '' COMMENT '模板代码 SMS_190729269', `signName` varchar(64) NOT NULL COMMENT '短信签名-可在短信控制台中找到', `templateType` int(1) NOT NULL DEFAULT '1' COMMENT '必填模板类型 1验证码 2 短信通知 3 推广短信', `templateParam` varchar(256) NOT NULL COMMENT ' 约定:在模板中变量的值用key加数字代替,即第一个变量的值为key1,第二个为key2,以此类推,发送短信时变量参数必须与参数个数相同,且参数名按照key加数字的规则命名 "{\\"name\\":\\"key1\\", \\"code\\":\\"key2\\"}"', `paramNum` int(2) NOT NULL COMMENT '参数个数', `smsUpExtendCode` varchar(12) DEFAULT NULL COMMENT '上行短信扩展码(无特殊需求用户请忽略此字段)', `outId` varchar(64) DEFAULT NULL COMMENT 'outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者', `remark` varchar(32) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`templateSeq`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4; -- ---------------------------- -- Records of t_aliyun_sms_platform -- ---------------------------- INSERT INTO `t_aliyun_sms_platform` VALUES ('1', 'cn-hangzhou', 'LTAIMjBIY4V53Cjy', 'WZUoVePSiJwt4AqH7qDuVrizNXqXCK', 'cn-hangzhou', 'Dysmsapi', 'dysmsapi.aliyuncs.com', 'SMS_190729269', '尚趣科技', '2', '{\"ApprovalNum\": \"key1\"}', '1', null, null, '任务审核通知'); INSERT INTO `t_aliyun_sms_platform` VALUES ('2', 'cn-hangzhou', 'LTAIMjBIY4V53Cjy', 'WZUoVePSiJwt4AqH7qDuVrizNXqXCK', 'cn-hangzhou', 'Dysmsapi', 'dysmsapi.aliyuncs.com', 'SMS_169902740', '趣乐部', '1', '{\"code\": \"key1\"}', '1', null, null, '趣乐部注册'); -- ---------------------------- -- Table structure for `t_sys_param` -- ---------------------------- DROP TABLE IF EXISTS `t_sys_param`; CREATE TABLE `t_sys_param` ( `paramId` int(4) NOT NULL AUTO_INCREMENT, `paramName` varchar(64) NOT NULL COMMENT '参数名称', `value` varchar(64) DEFAULT NULL COMMENT '参数值', `paramDesc` varchar(128) DEFAULT NULL COMMENT '参数描述', `remark` varchar(128) DEFAULT NULL COMMENT '其他备注', PRIMARY KEY (`paramId`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4; -- ---------------------------- -- Records of t_sys_param -- ---------------------------- INSERT INTO `t_sys_param` VALUES ('1', 'singlePhoneOneDayFrequencyUpperLimit', '8', '单个手机单日次数限制上限', '短信发送频次'); INSERT INTO `t_sys_param` VALUES ('2', 'singleIpOneDayFrequencyUpperLimit', '20', '单个ip单日次数限制上限', '短信发送频次'); INSERT INTO `t_sys_param` VALUES ('3', 'openLimitSwitch', '1', '开启平台短信发送频次限制开关1打开 0关闭', '本平台的,非阿里云的'); ``` ### 模板说明 + 1 由于无法预知模板的参数个数以及参数名,故在模板中需要指定参数的个数,在代码中作如下约定: + 1.1 模板的参数不超过5个 + 1.2 模板参数传值统一用map进行,参数的键按照模板中的顺序,依次取名为key1、key2、key3等等 + 1.3 模板示例: ```text 模版类型: 短信通知 模版名称: 任务状态提醒 模版CODE: SMS_185245290 模版内容: ${userName}:温馨提示~你的重要任务${taskName}逾期未完成,系统已自动扣分,如有疑问请联系管理员! 变量属性: userName-其他;taskName-其他; 申请说明: 任务状态发生改变,提醒用户 ``` + 1.3.1 以上模板对应数据库 templateParam 字段值:{"userName":"key1","taskName":"key2"} + 1.3.2 以上模板对应数据库 paramNum 字段值: 2 + 1.3.3 以上模板对应数据库 templateType 字段值: 2 ### 测试接口 + 2 暂提供阿里云的短信发送平台测试接口 + 2.1 接口地址:localhost:8787/api/sms/send/aliyun + 2.2 method:POST + 2.3 参数示例: ```json {"phone":"15879318041","templateSeq":2,"param":{"key1":"张三丰","key2":"switch手柄摇杆及滑道卡扣上架"}} ``` + 2.4 参数讲解 + 2.4.1 phone: 手机号 + 2.4.2 templateSeq: 模板号 + 2.4.3 param :参数值 + 2.4.4 key1 : 模板中第一个参数的值,即对应上文的userName + 2.4.5 key2: 模板中第二个参数的值,即对应上文的taskName