代码拉取完成,页面将自动刷新
同步操作将从 aspnmy/msg 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
说明:
###gitee地址msg消息通知微服务 消息通知服务2.0 的软件环境
数据库表相关:
CREATE TABLE `msg_mobile_hangye_list` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增长主键id',
`request_client` varchar(100) NOT NULL DEFAULT '' COMMENT '请求所属客户端',
`msg_id` varchar(100) NOT NULL DEFAULT '' COMMENT '消息id',
`appoint_api` varchar(50) NOT NULL DEFAULT '' COMMENT '指定的请求发送端指定发送短信的api',
`by_account` varchar(255) NOT NULL DEFAULT '' COMMENT 'json字串发送的账号',
`to` varchar(20) NOT NULL DEFAULT '' COMMENT '手机短信接收方',
`sign` varchar(20) NOT NULL DEFAULT '' COMMENT '使用的服务商签名',
`template_id` int(11) NOT NULL DEFAULT '0' COMMENT '短信模板id',
`var_content` varchar(100) NOT NULL DEFAULT '' COMMENT '短信内容所属变量',
`add_time` int(11) NOT NULL DEFAULT '0' COMMENT '添加时间',
`api_time` int(11) NOT NULL DEFAULT '0' COMMENT '接口请求带入的时间戳',
`send_time` int(11) NOT NULL DEFAULT '0' COMMENT '发送时间',
`accept_time` int(11) NOT NULL DEFAULT '0' COMMENT '成功或者失败的时间',
`insert_time` int(11) NOT NULL DEFAULT '0' COMMENT '数据插入时间',
`status` tinyint(2) NOT NULL DEFAULT '0' COMMENT '状态 0表示待发送,1表示发送成功,2 表示发送失败',
`status_info` varchar(100) NOT NULL DEFAULT '' COMMENT '成功或者失败的状态信息,服务端的编码或者客户端的错误日志',
PRIMARY KEY (`id`) USING BTREE,
KEY `status` (`status`),
KEY `idx_to` (`to`),
KEY `msg_id` (`msg_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COMMENT='手机短信行业发送流水表';
CREATE TABLE `msg_mobile_yingxiao_list` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增长主键id',
`request_client` varchar(100) NOT NULL DEFAULT '' COMMENT '请求所属客户端',
`msg_id` varchar(100) NOT NULL DEFAULT '' COMMENT '消息id',
`appoint_api` varchar(50) NOT NULL DEFAULT '' COMMENT '指定的请求发送端指定发送短信的api',
`by_account` varchar(255) NOT NULL DEFAULT '' COMMENT 'json字串发送的账号',
`to` varchar(20) NOT NULL DEFAULT '' COMMENT '手机短信接收方',
`sign` varchar(20) NOT NULL DEFAULT '' COMMENT '使用的服务商签名',
`template_id` int(11) NOT NULL DEFAULT '0' COMMENT '短信模板id',
`var_content` varchar(100) NOT NULL DEFAULT '' COMMENT '短信内容所属变量',
`add_time` int(11) NOT NULL DEFAULT '0' COMMENT '添加时间',
`api_time` int(11) NOT NULL DEFAULT '0' COMMENT '接口请求带入的时间戳',
`send_time` int(11) NOT NULL DEFAULT '0' COMMENT '发送时间',
`accept_time` int(11) NOT NULL DEFAULT '0' COMMENT '成功或者失败的时间',
`insert_time` int(11) NOT NULL DEFAULT '0',
`status` tinyint(2) NOT NULL DEFAULT '0' COMMENT '状态 0表示待发送,1表示发送成功,2 表示发送失败',
`status_info` varchar(100) NOT NULL DEFAULT '' COMMENT '成功或者失败的状态信息,服务端的编码或者客户端的错误日志',
PRIMARY KEY (`id`) USING BTREE,
KEY `status` (`status`),
KEY `idx_to` (`to`),
KEY `msg_id` (`msg_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COMMENT='手机短信发送流水表';
CREATE TABLE `msg_mobile_template` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增长主键id',
`template_use` varchar(100) NOT NULL DEFAULT '' COMMENT '短信模板用途,名称必须唯一',
`content` text COMMENT '短信模板内容',
`var_content` varchar(100) NOT NULL DEFAULT '' COMMENT '短信内容需要的变量',
`add_person` varchar(50) NOT NULL DEFAULT '' COMMENT '添加模板人员',
`add_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
`last_update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '邮件最后更新时间,如果和添加时间相同说没有没有被更新过',
`is_del` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否删除,默认0代表正常, 1代表删除',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_template_use` (`template_use`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COMMENT='短信模板配置表';
1. 说明适用表项:msg_email_template , ms_mobile_template
2. 内容说明 :
> id 接口中dba要求接口的 template的值以模板表id值为依据传入
> content 字段中包含内容的一般格式如: 您好@test,您的验证码是@number,如有疑问请call@phone,blablabla@test
> var_content|var_title 字段包含内容:["@test","@number","@phone"] (json转码之后的变量数组)
* 这个变量在json 中的位置决定前端接口请求时变量值对应的位置
* 只有var_content或者var_title中指定的变量名才会被发送时解析,其他则保持不变
* 在发送时如果接口传入var_content:["**先生","8888","1399999999"],则content变成:您好**先生,您的验证码是8888,如有疑问请call@1399999999,blablabla**先生
CREATE TABLE `msg_email_list` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增长主键id',
`request_client` varchar(40) NOT NULL DEFAULT '' COMMENT '请求所属客户端',
`channel` varchar(200) NOT NULL DEFAULT '' COMMENT '发送邮件的配置',
`to` varchar(60) NOT NULL DEFAULT '' COMMENT '接收账号,邮件接收账号上限设定为200个,否则会引起内存问题',
`template_id` int(11) NOT NULL DEFAULT '0' COMMENT '邮件模板id',
`var_title` varchar(50) NOT NULL DEFAULT '' COMMENT '邮件标题所属变量',
`var_content` varchar(500) NOT NULL DEFAULT '' COMMENT '邮件内容所属变量',
`add_time` int(11) NOT NULL DEFAULT '0' COMMENT '插入时间',
`api_time` int(11) NOT NULL DEFAULT '0' COMMENT '接收的数据中带的时间戳',
`send_time` int(11) NOT NULL DEFAULT '0' COMMENT '发送时间',
`accept_time` int(11) NOT NULL DEFAULT '0' COMMENT '成功或者失败时间',
`insert_time` int(11) NOT NULL DEFAULT '0' COMMENT '插入时间',
`status` tinyint(2) NOT NULL DEFAULT '0' COMMENT '状态0表示待发送,1表示发送成功,2表示发送失败,3表示任务已分配',
`status_info` varchar(500) NOT NULL DEFAULT '' COMMENT '成功或者失败的状态信息,服务端的编码或者客户端的错误日志',
PRIMARY KEY (`id`),
KEY `idx_to` (`to`),
KEY `status` (`status`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COMMENT='邮件发送流水表';
CREATE TABLE `msg_email_template` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增长主键id',
`template_use` varchar(100) NOT NULL DEFAULT '' COMMENT '邮件模板用途,名称必须唯一',
`title` varchar(100) NOT NULL DEFAULT '' COMMENT '邮件模板标题',
`var_title` varchar(50) NOT NULL DEFAULT '' COMMENT '邮件标题需要的变量',
`content` mediumtext COMMENT '邮件模板内容',
`var_content` varchar(500) NOT NULL DEFAULT '' COMMENT '邮件内容需要的变量',
`add_person` varchar(50) NOT NULL DEFAULT '' COMMENT '添加模板人员',
`add_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
`last_update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '邮件最后更新时间,如果和添加时间相同说没有没有被更新过',
`is_del` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否删除,默认0代表正常, 1代表删除',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_template_use` (`template_use`),
KEY `idx_title` (`title`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COMMENT='邮件模板配置表';
CREATE TABLE `msg_setting` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`key` char(40) NOT NULL DEFAULT '' COMMENT '配项key,每个配置项的所属名称',
`type` char(40) NOT NULL DEFAULT '' COMMENT '配置项类型,sms_account:短信发送账号配置',
`setting` text NOT NULL COMMENT '设置项',
`status` tinyint(2) NOT NULL DEFAULT '1' COMMENT '配置项是否启用 :1启用,0禁用,',
`add_time` int(11) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `key` (`key`) USING BTREE,
KEY `status` (`status`) USING BTREE,
KEY `type` (`type`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
msg_setting
: 1. 系统设置主要存储信息的字段是:setting 。 存储的数据信息格式为json类型,示列:
> {"config_update_times":"14409#此时间单位是分钟"}
> {"default":"【玖融网】"}
2. 区分设置类型的字段是:type 。
3. 唯一对应每个设置的表示的字段是 : key 。全局唯一。
4. 目前系统配置表可添加并且会自动应用的两种设置类型(type): EMAIL_ACCOUNT_SETTING , MOBILE_ACCOUNT_SETTING
5. EMAIL_ACCOUNT_SETTING : 邮件发送账号信息设置 (包含邮件服务商端口号),具体setting信息如下:
> host : 邮件服务商的服务地址
> port : 邮件服务商发送端口号
> smtp_tls : 是否启用安全协议,不启用填空,启用则需要填写为"tls"或者 "ssl" ,注意区分大小写
> username : 邮件发送服务商提供的账号
> password : 邮件发送服务商提供的密码
> from_name : 这个是发送方名称 ,一般用来表示是谁发送的
> reply_to : 如果需要被接收人回复,需要此项
> 示列:{"host":"c.net","port":"25","smtp_tls":"tls","username":"kefu@qq.com","password":"152454545","from_name":"京东","reply_to":"kefu@qq.com"}
6. MOBILE_ACCOUNT_SETTING : 短信发送账号设置,具体setting信息如下:
> service_name : 短信服务商名称
> api : 使用的api 类名
> yingxiao : 营销短信发送通道,包含的子数据组信息如下:
* account : 短信发送方提供账号
* password : 短信发送方提供的密码
> 示列:{"service_name":"创蓝","api":"ChuangLan","yingxiao":{"account":"1445455","password":"455144"},"hangye":{"account":"9994","password":"11112"}}
短信
请求数据// 没错! 是post传入json格式的数据,而不是post键值对
{
"timely":"0",
"sms_service":"Santong", // 可选
"msg_type":"mobile",
"content_type":"0|1", // 0:行业,1:营销,2:html(Email 可用)
"time":"1599999999",
"sign":"【xxx公司】",
"data":[
{
"to":"15997457695,13264706160",
"var_content":["值1","值2"],// 可选
"template":"1"
},
{
"to":"15997457695,13264706160,15997457695,13264706160,15997457695,13264706160,",
"template":"2"
}
//..... 更多
]
}
邮件
请求数据//email 接口说明:
{
"timely":"0",
"sms_service":"", // 可选
"msg_type":"email",
"content_type":"2",// 0:行业,1:营销,2:html(Email 可用)
"time":"15997457695",
"sign":"京东", // 发送邮件时如果此处不选择 , 则会默认取 系统设置中邮件的from_name 值
"data":[
{
"to":"55555sdf@qq.com,894545@qq.com",
"content_var":["值1","值2"], // 可选
"title_var":["值1","值2"], // 可选
"template":"1"
},
{
"to":"55555sdf@qq.com,894545@qq.com,55555sdf@qq.com,894545@qq.com,",
"content_var":["值1","值2"],
"template":"2"
}
//..... 更多
]
}
/*
注意:
系统在发送邮件的时候会依次使用数据库的配置账号,当出现错误的时候会重试,达到重试错误最大次数将放弃使用这个账号 ,第二天会自动恢复使用
*/
###接口请求数据规定之短信发送接口
请求数据各字段说明:
1. timely : 是否及时,值 [ 0 , 1 ] ,说明 :1 代表需要及时发送,0 代表不需要及时发送
// 注意:
// 一般不是验证码的建议timely 为0 否则会影响验证码的及时性
2. msg_type : 消息类型,值 [ mobile , email ],说明:mobile代表发送手机短信,email 代表发送邮件信息
3. content_type : 内容类型 [ 0 , 1 , 2 ],说明:msg_type为email的内容类型必须为 2 (代表html) , 发送短信验证码一般是0 (行业) ,营销类的短信一般都是 1 (营销)
4. time : 请求时的时间戳,一般是为查询延时用,
5. sign : 如何msg_type是mobile 则必须是服务商审核过的名称标志,如果msg_type 是email 则此处代表发送方公司标识 # 可选字段
6. sms_service : 是否制定服务发送方,如果指定则只会使用指定的服务发送方发送,值是选择性的,目前只有ChuangLan,SanTong两种 # 可选字段
6. data : 是实际发送内容子信息,包含多维数据源(个多json子串) ,子串说明:
> to :消息接收方,可以是多个,用逗号分隔
> template : 使用的模板id
> var_content : 模板变量的值格式是json值组如:["值1","值2"] ,模板如果没有设置变量则不需要传入此参数 #可选字段
// 接口返回值 成功的json数据
{
error:0,
info:成功,
data:[] //备用字段
}
// 失败的 json 数据
{
error: 12 ,
info : 可用通道余额不足,
data : [] //备用字段
}
# 结果中 json属性error值为0代表成功,其他值代表失败
//info 对照
0=>'成功',
10000 => '~~~~~~~~',
10001 => '空参数!',
10002 => '无法解析为json数据!',
10003 => '没有可用有效数据!',
10004 => 'msg_type参数错误!',
10005 => 'content_type参数错误!',
10006 => 'data参数错误!',
10007 => 'data参数不能为空!',
10008 => 'time参数错误!',
10009 => '不支持的消息发送类型!',
10010 => '指定的短信服务商代码错误或者不存在!',
10011 => '该短信发送服务商已经被禁用~',
10012 => '当前短信服务商不可用或已欠费!',
10013 => 'to参数为接收人,不能为空',
10014 => 'to参数为接收人,参数不合法',
10015 => 'to参数含手机号不能超过500~',
10016 => 'to参数含有非合法手机号!',
10017 => '指定模板不可为空!',
10018 => '模板id不合法!',
10019 => '不存在此短信模板!',
10020 => '短信模板变量格式不合法!',
10021 => '传入短信模板变量不能少于规定数量',
20001 => '收件人不能为空!',
20002 => '无效的收件人邮箱',
20003 => '单次发送收件人数量不能超过500',
20004 => '邮件模板不能为空!',
20005 => '邮件模板数据不合法!',
20006 => '不存在此邮件模板!',
20007 => '此模板内容变量不能为空',
20008 => '内容变量数据格式不符合要求!',
20009 => '内容变量个数不符合模板要求!',
20010 => '此模板标题变量不能为空!',
20011 => '标题变量数据格式不符合要求',
20012 => '标题变量个数不符合模板要求',
40000=>'系统异常!',
40001=>'系统异常![redis无法链接]',
40002=>'数据库异常!',
40003=>'数据库异常![mysql插入异常!]',
50000 => '功能未开发~',
###注意:
##测试建议
##消息服务程序后台服务管理
消息发送服务实行白名单机制,只有白名单ip才可访问 项目配置项config.php中:
"sms_debug"=>true
,此模式下,所有消息都不会真实发出,实际使用请改为:"sms_debug"=>false
白名单的设置在项目根目录的white_ip_list.conf 中
- 配置语法是nginx 的geo 语法,示列:
192.168.1.1 京东;
, 保存之后自动生效 ,注意:必须严格按照此格式,否则会造成web服务器崩溃、停止 ,
原始启动命令:
shell切换到项目根目录执行 :
./think sms:start
启动服务,但是会阻塞当前shell ,如果推出则服务停止, 增强的管理脚本命令,shell切换到项目根目录执行 :./mobile start
启动服务 mobile脚本接受两个参数 start,stop用来管理服务 需要考虑使用服务稳定性,建议使用crontab 做守护
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。