notice 消息发送开发
消息发送概述
消息发送包括:SMS短信、微信模板消息、微信小程序提醒消息
短信(SMS):通过第三方短信服务商发送短信通知
微信公众号(Wechat):发送公众号模板消息
微信小程序(Weapp):发送小程序订阅消息

文件位置
如果开发者直接是修改niucloud-admin框架,文件路径为:niucloud\app\dict\notice
如果开发者开发一个插件,文件路径为:niucloud/addon/插件名称/app/dict/notice 
首先定义一个模版消息提醒类型
notice.php 消息模板配置
关键代码参考:
php
<?php
return [
'shop_order_pay' => [// 消息模板key
'addon' => 'shop',// 插件key
'key' => 'shop_order_pay',// 消息模板key
'receiver_type' => 1,// 消息接收者,1表示会员接收,0表示平台用户接收
'name' => '商城订单支付成功通知',// 模板名称,消息类型的名称
'title' => '订单支付成功后发送',// 使用场景
'async' => true,// true:同步,false:异步,根据具体的业务场景定义。比如短信验证码,需要返回值,就是同步。比如订单完成消息,这种就是异步
// 消息提醒会用到的所有的变量,开发者定义好变量,使用者可以在模版消息中组合变量和普通文本定义消息内容。这个定义好后,在具体的业务调用的代码中,需要传递实际的数据
'variable' => [
'order_money' => '订单总额',
'pay_time' => '支付时间',
'create_time' => '支付时间',
'body' => '订单内容',
'order_no' => '订单编号',
'url' => '订单链接'
],
]
];定义消息类型后,会在系统中自动加载: 
对定义的模版消息提醒类型,定义不同类型的实现(短信、微信公众号模板消息、微信小程序订阅消息)
开发者在第一个步骤中先定义好一个消息提醒类型。在实际的应用中,这种消息提醒可能只发送短信,也可能会同时发送短信,微信模版消息,小程序消息。开发者需要在不同的文件中定义不同类型的实现。
sms.php 定义短信消息提醒
关键代码参考:
php
<?php
use app\dict\sys\SmsDict;
return [
'shop_order_pay' => [
'is_need_closure_content' => 1,//是否需要闭包处理content
'content' => function ($data) {// 短信内容
$site_id = $data['site_id'];
$sms_type = $data['sms_type'];
if ($sms_type == SmsDict::NIUSMS) {
return "您的订单{order_no}已支付成功";
}
return "您购买的“{body}”已支付成功。查看详情{url}";
}
]
];
wechat.php 定义微信公众号模版消息提醒
关键代码参考:
php
<?php
return [
'shop_order_pay' => [// 消息模板key
'temp_key' => '43216',// 模板消息ID
'content' => [// 模板内容
['下单时间', '{create_time}', 'time4'],
['订单编号', '{order_no}', 'character_string2'],
['商品信息', '{body}', 'thing3'],
['订单金额', '{order_money}', 'amount5']
],
'keyword_name_list' => ["下单时间", "订单号", "商品名称", "支付金额"],// 选用的类目模板的关键词,按顺序传入,如果为空,或者关键词不在模板库中,会返回40246错误码
'tips' => '使用该消息请将微信公众号服务类目选择为:生活服务——>百货/超市/便利店'
]// 提示信息
];
weapp.php 定义微信小程序订阅消息提醒
关键代码参考:
php
<?php
return [
'shop_order_pay' => [ // 消息模板key
'tid' => '30808', // 模板编号
'content' => [ // 模板内容
[ '订单编号', '{order_no}', 'character_string1' ],
[ '下单时间', '{create_time}', 'time2' ],
[ '商品名称', '{body}', 'thing4' ],
[ '订单金额', '{order_money}', 'amount3' ],
],
'kid_list' => [ 1, 2, 4, 3 ], // 开发者自行组合好的模板关键词列表,关键词顺序可以自由搭配(例如 [3,5,4] 或 [4,5,3]),最多支持5个,最少2个关键词组合
'scene_desc' => '订单支付之后通知', // 服务场景描述,15个字以内
'tips' => '使用该消息请在小程序的服务类目中添加类目:一级类目:商业服务 二级类目:软件/建站/技术开发' // 提示信息
]
];
调用消息发送
上面定义配置好后,就可以通过下面的方法发送消息了
use app\service\core\notice\NoticeService;
( new NoticeService() )->send('member_verify_code', [
'code' => $code,
'mobile' => $mobile
]);send方法$key参数表示消息的key, $data参数是数组
niucloud-admin框架会根据您配置的某个消息类型的定义,循环发送实现的消息端口
