- 🏠 简介
- 🔌 api接口
-
🔧 插件开发
- 介绍
- 插件优势
- 新建插件
- 技术栈
- 插件开发规范
- 插件目录结构
- model 层开发
- service 层开发
- api 接口开发
- menu 菜单开发
-
event 事件钩子开发
- 开发指南
- 常用事件
- SiteInit 站点初始化事件
- AddSiteAfter 站点创建后事件
- MemberRegister 会员注册后事件
- MemberLogin 会员登录后事件
- PayCreate 支付创建事件
- PaySuccess 支付成功事件
- RefundSuccess 退款成功事件
- TransferSuccess 转账成功事件
- BottomNavigation 底部导航事件
- NoticeData 消息模板数据内容事件
- GetQrcodeOfChannel 创建二维码事件
- ExportDataType 导出数据类型事件
- ExportData 导出数据源事件
- GetPosterType 海报类型事件
- GetPosterData 海报数据事件
- ShowCustomer 应用管理加载事件
- GetWechatTransferTradeScene 微信支付转账场景事件
- ThemeColor 主题风格事件
- initWap 手机端初始化加载事件
- dict 数据字典开发
- layout 自定义布局开发
- job 消息队列和计划任务开发
- notice 消息发送开发
- printer 小票打印模板开发
- export 数据导出开发
- diy 自定义组件/页面装修开发
- diy 自定义表单组件开发
- poster 自定义海报开发
- icon 引入图标
- 支付方式开发
- upgrade 插件版本升级
- 打包插件
- 授权信息变更回调通知
- 官网上架
- 📝 二次开发须知
- 👨💻 二次开发指导
-
🎬 二次开发应用插件视频教程
- 二次开发安装视频教程
- 准备工作与创建插件
- 插件目录整体说明
- 插件admin目录
- 插件app目录说明(adminapi、api、验证器)
- 插件app目录(dict、job)
- 插件app目录说明(lang、listener)
- 插件app目录说明(model、service)
- 插件uniapp目录说明
- 插件开发之后台功能开发(代码生成器)
- 插件开发之uniapp功能开发(api)第一节
- 插件开发之uniapp功能开发(api)第二节
- 插件开发之uniapp功能开发(api)第三节
- 插件安装与打包原理
- 消息队列开发
- 计划任务开发
- DIY组件和自定义页面装修开发
- 支付接口开发
- 插件升级包打包流程以及云编译功能
notice 消息发送开发
消息发送概述
消息发送包括:SMS短信、微信模板消息、微信小程序提醒消息
-
短信(SMS):通过第三方短信服务商发送短信通知
-
微信公众号(Wechat):发送公众号模板消息
-
微信小程序(Weapp):发送小程序订阅消息

文件位置
如果开发者直接是修改niucloud-admin框架,文件路径为:niucloud\app\dict\notice
如果开发者开发一个插件,文件路径为:niucloud/addon/插件名称/app/dict/notice

首先定义一个模版消息提醒类型
notice.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
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
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
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框架会根据您配置的某个消息类型的定义,循环发送实现的消息端口