canyin-project/ybcy/models/common/Message.php
2024-11-01 16:07:54 +08:00

915 lines
35 KiB
PHP

<?php
namespace app\models\common;
use Yii;
use yii\db\ActiveRecord;
use app\models\common\Config;
use app\models\common\WeChat;
use app\models\common\Ali;
use EasyWeChat\Factory;
use Mrgoon\AliSms\AliSms;
class Message extends ActiveRecord{
//发送短信
public static function storeSendSms($storeId,$type) {
$aliSms = new AliSms();
$store = (new \yii\db\Query())
->select('uniacid')
->from('{{%ybwm_store}}')
->where('id=:id', [':id' => $storeId])->one();
$config=Config::getSystemSet('sms',$store['uniacid']);
if(!$config || $config['open']==2){
return true;
}
$data=[];
if($type==1){
//支付提醒
$templateCode=$config['payCode'];
}elseif($type==2){
//退款提醒
$templateCode=$config['refundCode'];
}elseif($type==3){
$templateCode=$config['integralCode'];
}
$tel = (new \yii\db\Query())
->select('tel')
->from('{{%ybwm_message}}')
->where('storeId=:storeId AND deleteAt=0', [':storeId' => $storeId])->all();
if($tel AND $config) {
for ($i = 0; $i < count($tel); $i++) {
try{
object_array($aliSms->sendSms($tel[$i]['tel'], $templateCode, $data, ['access_key' => $config['access_key_id'], 'access_secret' => $config['access_key_secret'], 'sign_name' => $config['sign']]));
}catch (\Exception $e){
return false;
}
}
}
return true;
}
//发送短信
public static function sendSms($uniacid,$type,$tel) {
$aliSms = new AliSms();
$config=Config::getSystemSet('sms',$uniacid);
$data=[];
if($type==3){
//积分商城提醒
$templateCode=$config['integralCode'];
}
if($tel AND $config) {
try{
object_array($aliSms->sendSms($tel, $templateCode, $data, ['access_key' => $config['access_key_id'], 'access_secret' => $config['access_key_secret'], 'sign_name' => $config['sign']]));
}catch (\Exception $exception){
return false;
}
}
return true;
}
//"page": "yb_o2o/order/index",
//支付成功模板消息
public static function payOk($orderId) {
//设置与发送模板信息
$order = (new \yii\db\Query())
->from('{{%ybwm_takeout_order}}')
->where('id=:id', [':id' => $orderId])->one();
$user = (new \yii\db\Query())
->from('{{%ybwm_member}}')
->where('id=:id',[':id'=>$order['userId']])->one();
$orderGoods = (new \yii\db\Query())
->from('{{%ybwm_order_goods}}')
->where('orderId=:orderId AND item=1',[':orderId'=>$orderId])->one();
$goodNmae = $orderGoods['name'];
$orderType = $order['deliveryMode'] == 10 ? '自提订单' : '外卖订单';
$msg=Config::getSystemSet('miniTemplates',$order['uniacid']);
if($user['bindType']==3){
$page="yb_wm/order/order-dl?id=' . $orderId . '";
$msg=Config::getSystemSet('aliTemplates',$order['uniacid']);
$data=[
'keyword1' =>[
'value' => $orderType
],
'keyword2' =>[
'value' => date("Y-m-d H:i:s", $order['createdAt'])
],
'keyword3' =>[
'value' => $goodNmae
],
'keyword4' =>[
'value' => $order['outTradeNo']
],
'keyword5' =>[
'value' => $order['money']
],
];
$http=Ali::template($order['uniacid'],$user["openId"],$msg["payOkTid"],$page,json_encode($data));
return $http;
}
$formwork = '{
"touser": "' . $user["openId"] . '",
"template_id": "' . $msg["payOkTid"] . '",
"page":"yb_wm/order/order-dl?id=' . $orderId . '",
"data": {
"thing1": {
"value": "' . $orderType . '"
},
"date4": {
"value":"' . date("Y-m-d H:i:s", $order['createdAt']) . '"
},
"thing2": {
"value": "' . $goodNmae . '"
},
"character_string6": {
"value": "' . $order['outTradeNo'] . '"
},
"amount3": {
"value": "' . $order['money'] . '"
}
}
}';
$app = Factory::miniProgram(WeChat::getMiniConfig($order['uniacid']));
$token = $app->access_token->getToken();
$url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" . $token['access_token'] . "";
$http = httpRequest($url, $formwork);
return $http;
}
//商家拒单模板消息
public static function rejection($orderId) {
$order = (new \yii\db\Query())
->from('{{%ybwm_takeout_order}}')
->where('id=:id', [':id' => $orderId])->one();
$user = (new \yii\db\Query())
->from('{{%ybwm_member}}')
->where('id=:id',[':id'=>$order['userId']])->one();
$store = (new \yii\db\Query())
->from('{{%ybwm_store}}')
->where('id=:id',[':id'=>$order['storeId']])->one();
$orderGoods = (new \yii\db\Query())
->from('{{%ybwm_order_goods}}')
->where('orderId=:orderId AND item=1',[':orderId'=>$orderId])->one();
$goodNmae = $orderGoods['name'];
$order['refuseReason'] = $order['refuseReason'] ?: '无';
$msg=Config::getSystemSet('miniTemplates',$order['uniacid']);
$formwork = '{
"touser": "' . $user["openId"] . '",
"template_id": "' . $msg["refuseTid"] . '",
"page":"yb_wm/order/order-dl?id=' . $orderId . '",
"data": {
"thing5": {
"value": "' . $order['refuseReason'] . '"
},
"thing3": {
"value":"' . $store['name'] . '"
},
"thing4": {
"value": "' . $goodNmae . '"
},
"character_string1": {
"value": "' . $order['outTradeNo'] . '"
},
"date2": {
"value": "' . date("Y-m-d H:i:s", $order['createdAt']) . '"
}
}
}';
$app = Factory::miniProgram(WeChat::getMiniConfig($order['uniacid']));
$token = $app->access_token->getToken();
$url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" . $token['access_token'] . "";
$http = httpRequest($url, $formwork);
return $http;
}
//商家接单模板消息
public static function receipt($orderId) {
//设置与发送模板信息
$order = (new \yii\db\Query())
->from('{{%ybwm_takeout_order}}')
->where('id=:id', [':id' => $orderId])->one();
if($order['deliveryMode']==10){
$orderType='自提订单';
}else{
$orderType='外卖订单';
}
$user = (new \yii\db\Query())
->from('{{%ybwm_member}}')
->where('id=:id',[':id'=>$order['userId']])->one();
$store = (new \yii\db\Query())
->from('{{%ybwm_store}}')
->where('id=:id',[':id'=>$order['storeId']])->one();
$orderGoods = (new \yii\db\Query())
->from('{{%ybwm_order_goods}}')
->where('orderId=:orderId AND item=1',[':orderId'=>$orderId])->one();
$goodNmae = $orderGoods['name'];
$order['refuseReason'] = $order['refuseReason'] ?: '无';
$msg=Config::getSystemSet('miniTemplates',$order['uniacid']);
if($user['bindType']==3){
$page="yb_wm/order/order-dl?id=' . $orderId . '";
$msg=Config::getSystemSet('aliTemplates',$order['uniacid']);
$data=[
'keyword1' =>[
'value' => "#" . $order['takeNo']
],
'keyword2' =>[
'value' => $store['name']
],
'keyword3' =>[
'value' => $goodNmae
],
'keyword4' =>[
'value' => date("Y-m-d H:i:s", $order['createdAt'])
],
];
$http=Ali::template($order['uniacid'],$user["openId"],$msg["acceptTid"],$page,json_encode($data));
return $http;
}
$formwork = '{
"touser": "' . $user["openId"] . '",
"template_id": "' . $msg["acceptTid"] . '",
"page":"yb_wm/order/order-dl?id=' . $orderId . '",
"data": {
"character_string1": {
"value": "#' . $order['takeNo'] . '"
},
"thing2": {
"value":"' . $store['name'] . '"
},
"thing8": {
"value":"' . $orderType . '"
},
"thing4": {
"value":"' . $goodNmae . '"
},
"thing7": {
"value": "您的订单已被商家接单,请耐心等待哦!"
}
}
}';
$app = Factory::miniProgram(WeChat::getMiniConfig($order['uniacid']));
$token = $app->access_token->getToken();
$url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" . $token['access_token'] . "";
$http = httpRequest($url, $formwork);
return $http;
}
//退款结果模板消息
public static function refundResult($orderId) {
//设置与发送模板信息
$order = (new \yii\db\Query())
->from('{{%ybwm_takeout_order}}')
->where('id=:id', [':id' => $orderId])->one();
$user = (new \yii\db\Query())
->from('{{%ybwm_member}}')
->where('id=:id',[':id'=>$order['userId']])->one();
$store = (new \yii\db\Query())
->from('{{%ybwm_store}}')
->where('id=:id',[':id'=>$order['storeId']])->one();
$orderGoods = (new \yii\db\Query())
->from('{{%ybwm_order_goods}}')
->where('orderId=:orderId AND item=1',[':orderId'=>$orderId])->one();
$goodNmae = $orderGoods['name'];
$order['refuseReason'] = $order['refuseReason'] ?: '无';
$msg=Config::getSystemSet('miniTemplates',$order['uniacid']);
if ($order['state'] == 10) {
$note = "退款已通过,请注意查收";
}
if($order['state'] == 11) {
$note = "退款已拒绝(原因:" . $order['refuseReason'] . ")";
}
if($user['bindType']==3){
$page="yb_wm/order/order-dl?id=' . $orderId . '";
$msg=Config::getSystemSet('aliTemplates',$order['uniacid']);
$data=[
'keyword1' =>[
'value' => $store['name']
],
'keyword2' =>[
'value' => $goodNmae
],
'keyword3' =>[
'value' => $order['money']
],
'keyword4' =>[
'value' => $order['outTradeNo']
],
];
$http=Ali::template($order['uniacid'],$user["openId"],$msg["refundResultTid"],$page,json_encode($data));
return $http;
}
$formwork = '{
"touser": "' . $user["openId"] . '",
"template_id": "' . $msg["refundResultTid"] . '",
"page":"yb_wm/order/order-dl?id=' . $orderId . '",
"data": {
"thing1": {
"value": "' . $note . '"
},
"thing2": {
"value":"' . $goodNmae . '"
},
"amount3": {
"value": "' . $order['money'] . '"
},
"character_string7": {
"value": "' . $order['outTradeNo'] . '"
},
"thing5": {
"value": "如有疑问请联系客服"
}
}
}';
$app = Factory::miniProgram(WeChat::getMiniConfig($order['uniacid']));
$token = $app->access_token->getToken();
$url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" . $token['access_token'] . "";
$http = httpRequest($url, $formwork);
return $http;
}
//订单自提通知
public static function task($orderId) {
//设置与发送模板信息
$order = (new \yii\db\Query())
->from('{{%ybwm_takeout_order}}')
->where('id=:id', [':id' => $orderId])->one();
$user = (new \yii\db\Query())
->from('{{%ybwm_member}}')
->where('id=:id',[':id'=>$order['userId']])->one();
$store=(new \yii\db\Query())
->select('name,address')
->from('{{%ybwm_store}}')
->where('id=:id',[':id'=>$order['storeId']])->one();
$msg=Config::getSystemSet('miniTemplates',$order['uniacid']);
$store['address']=mb_substr($store['address'],0,19,'utf-8');
if($user['bindType']==3){
$page="yb_wm/order/order-dl?id=' . $orderId . '";
$msg=Config::getSystemSet('aliTemplates',$order['uniacid']);
$data=[
'keyword1' =>[
'value' => "#" . $order['takeNo']
],
'keyword2' =>[
'value' => $store['name']
],
'keyword3' =>[
'value' => $store['address']
],
];
$http=Ali::template($order['uniacid'],$user["openId"],$msg["takeTid"],$page,json_encode($data));
return $http;
}
$formwork = '{
"touser": "' . $user["openId"] . '",
"template_id": "' . $msg["takeTid"] . '",
"page":"yb_wm/order/order-dl?id=' . $orderId . '",
"data": {
"character_string8": {
"value": "#' . $order['takeNo'] . '"
},
"thing2": {
"value":"' . $store['name'] . '"
},
"thing3": {
"value": "' . $store['address'] . '"
},
"amount12": {
"value": "' . $order['money'] . '"
},
"thing4": {
"value": "您的商品已准备好,请记得前往门店取货哦!"
}
}
}';
$app = Factory::miniProgram(WeChat::getMiniConfig($order['uniacid']));
$token = $app->access_token->getToken();
$url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" . $token['access_token'] . "";
$http = httpRequest($url, $formwork);
return $http;
}
//订单配送通知
public static function delivery($orderId) {
//设置与发送模板信息
$order = (new \yii\db\Query())
->from('{{%ybwm_takeout_order}}')
->where('id=:id', [':id' => $orderId])->one();
$user = (new \yii\db\Query())
->from('{{%ybwm_member}}')
->where('id=:id',[':id'=>$order['userId']])->one();
$store=(new \yii\db\Query())
->select('name,address')
->from('{{%ybwm_store}}')
->where('id=:id',[':id'=>$order['storeId']])->one();
$msg=Config::getSystemSet('miniTemplates',$order['uniacid']);
$order['receivedAddress']=mb_substr($order['receivedAddress'],0,19,'utf-8');
if($user['bindType']==3){
$page="yb_wm/order/order-dl?id=' . $orderId . '";
$msg=Config::getSystemSet('aliTemplates',$order['uniacid']);
$data=[
'keyword1' =>[
'value' => $store['name']
],
'keyword2' =>[
'value' => $order['outTradeNo']
],
'keyword3' =>[
'value' =>$order['receivedAddress']
],
];
$http=Ali::template($order['uniacid'],$user["openId"],$msg["deliveryTid"],$page,json_encode($data));
return $http;
}
$formwork = '{
"touser": "' . $user["openId"] . '",
"template_id": "' . $msg["deliveryTid"] . '",
"page":"yb_wm/order/order-dl?id=' . $orderId . '",
"data": {
"thing2": {
"value": "' . $store['name'] . '"
},
"character_string1": {
"value":"' . $order['outTradeNo'] . '"
},
"thing14": {
"value": "' . $order['receivedName'] . '"
},
"thing16": {
"value": "' . $order['receivedAddress'] . '"
},
"thing11": {
"value": "您的订单在配送中,请注意查收哦!"
}
}
}';
$app = Factory::miniProgram(WeChat::getMiniConfig($order['uniacid']));
$token = $app->access_token->getToken();
$url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" . $token['access_token'] . "";
$http = httpRequest($url, $formwork);
return $http;
}
//新订单提醒(公众号)
public static function newOrder($orderId,$openId) {
$order=(new \yii\db\Query())
->from('{{%ybwm_takeout_order}}')
->where('id=:id', [':id' => $orderId])->one();
if ($order['deliveryMode'] == 10) {
$orderMode='自提订单';
$userInfo = $order['receivedTel'];
}else{
$orderMode='外卖订单';
$userInfo = $order['receivedName'] . " (" . $order['receivedTel'] . ")";
}
$store=(new \yii\db\Query())
->from('{{%ybwm_store}}')
->where('id=:id', [':id' => $order['storeId']])->one();
$msg=Config::getSystemSet('storeTemplates',$order['uniacid']);
try{
$app = Factory::officialAccount(WeChat::getWeChatTemplateConfig($order['uniacid']));
$app->template_message->send([
'touser' => $openId,
'template_id' => $msg['payOkTid'],
'data' => [
'first'=>'亲 您有新的订单,请及时处理!',
'keyword1' => $order['outTradeNo'],
'keyword2' => $orderMode."(商家名称:".$store['name'].")",
'keyword3' => $order['money'] . '元',
'keyword4' => date("Y-m-d H:i:s", $order['payAt']),
'keyword5' => $userInfo,
'remark' =>"取单号为:".$order['takeNo'],
],
]);
}catch (\Exception $exception){
return $exception;
}
return true;
}
//售后订单提醒(公众号)
public static function refundOrder($orderId,$openId) {
$order=(new \yii\db\Query())
->from('{{%ybwm_takeout_order}}')
->where('id=:id', [':id' => $orderId])->one();
$msg=Config::getSystemSet('storeTemplates',$order['uniacid']);
try {
$app = Factory::officialAccount(WeChat::getWeChatTemplateConfig($order['uniacid']));
$app->template_message->send([
'touser' => $openId,
'template_id' => $msg['refundTid'],
'data' => [
'first' => ["亲 您有新的售后订单,请及时处理!", "#FF0000"],
'keyword1' => [$order['outTradeNo'], "#173177"],
'keyword2' => ["申请退款", "#173177"],
'keyword3' => [date("Y-m-d H:i:s", $order['createdAt']), "#173177"],
'remark' => ["请前往后台处理!", "#FF0000"],
],
]);
}catch (\Exception $exception){
return $exception;
}
return true;
}
//当面付支付成功
public static function cashierPay($orderId) {
//设置与发送模板信息
$order = (new \yii\db\Query())
->from('{{%ybwm_cashier_order}}')
->where('id=:id', [':id' => $orderId])->one();
$user = (new \yii\db\Query())
->from('{{%ybwm_member}}')
->where('id=:id',[':id'=>$order['userId']])->one();
$store=(new \yii\db\Query())
->select('name')
->from('{{%ybwm_store}}')
->where('id=:id',[':id'=>$order['storeId']])->one();
$msg=Config::getSystemSet('miniTemplates',$order['uniacid']);
$name=preg_replace("/\\d+/",'', $store['name']);
$formwork = '{
"touser": "' . $user["openId"] . '",
"template_id": "' . $msg["cashierTid"] . '",
"page":"yb_wm/shop/in/syorder-dl?id=' . $orderId . '",
"data": {
"character_string3": {
"value": "' . $order['outTradeNo'] . '"
},
"amount2": {
"value":"' . $order['money'] . '"
},
"time4": {
"value": "' . date("Y-m-d H:i:s",$order['createdAt']) . '"
},
"phrase11": {
"value": "支付成功"
},
"name8": {
"value": "'.$name.'"
}
}
}';
$app = Factory::miniProgram(WeChat::getMiniConfig($order['uniacid']));
$token = $app->access_token->getToken();
$url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" . $token['access_token'] . "";
$http = httpRequest($url, $formwork);
return $http;
}
//快餐取餐提醒
public static function fastTake($orderId) {
//设置与发送模板信息
$order = (new \yii\db\Query())
->from('{{%ybwm_instore_order}}')
->where('id=:id', [':id' => $orderId])->one();
$user = (new \yii\db\Query())
->from('{{%ybwm_member}}')
->where('id=:id',[':id'=>$order['userId']])->one();
$store=(new \yii\db\Query())
->select('name')
->from('{{%ybwm_store}}')
->where('id=:id',[':id'=>$order['storeId']])->one();
$orderGoods = (new \yii\db\Query())
->from('{{%ybwm_order_goods}}')
->where('orderId=:orderId AND item=3',[':orderId'=>$orderId])->one();
$goodNmae = $orderGoods['name'];
$msg=Config::getSystemSet('miniTemplates',$order['uniacid']);
if($order['isOut']==1){
$isOut='店内就餐';
}else{
$isOut='打包带走';
}
$formwork = '{
"touser": "' . $user["openId"] . '",
"template_id": "' . $msg["fastTakeTid"] . '",
"page":"yb_wm/shop/ffmode/order-dl?id=' . $orderId . '",
"data": {
"character_string1": {
"value": "' . $order['callNo'] . '"
},
"thing6": {
"value":"' . $isOut . '"
},
"thing4": {
"value": "' . $store['name'] . '"
},
"thing2": {
"value": "'.$goodNmae.'"
},
"thing5": {
"value": "您的订单已准备好,请前往取餐区取餐"
}
}
}';
$app = Factory::miniProgram(WeChat::getMiniConfig($order['uniacid']));
$token = $app->access_token->getToken();
$url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" . $token['access_token'] . "";
$http = httpRequest($url, $formwork);
return $http;
}
//快餐取餐提醒
public static function inStoreOrder($orderId) {
//设置与发送模板信息
$order = (new \yii\db\Query())
->from('{{%ybwm_instore_order}}')
->where('id=:id', [':id' => $orderId])->one();
$user = (new \yii\db\Query())
->from('{{%ybwm_member}}')
->where('id=:id',[':id'=>$order['userId']])->one();
$orderGoods = (new \yii\db\Query())
->from('{{%ybwm_order_goods}}')
->where('orderId=:orderId AND item=2',[':orderId'=>$orderId])->one();
$goodNmae = $orderGoods['name'];
$msg=Config::getSystemSet('miniTemplates',$order['uniacid']);
$state='未支付';
if($order['state']==2){
$state='已接单';
}elseif($order['state']==3){
$state='已支付';
}
$note=$order['typeName'].$order['people']."人,您的订单已确认";
// $note='测试';
$formwork = '{
"touser": "' . $user["openId"] . '",
"template_id": "' . $msg["inOrderTid"] . '",
"page":"yb_wm/shop/in/order-dl?id=' . $orderId . '",
"data": {
"character_string1": {
"value": "' . $order['outTradeNo'] . '"
},
"date2": {
"value":"' . date("Y-m-d H:i:s",$order['createdAt']) . '"
},
"thing4": {
"value": "' . $goodNmae . '"
},
"phrase8": {
"value": "'.$state.'"
},
"thing7": {
"value": "'.$note.'"
}
}
}';
$app = Factory::miniProgram(WeChat::getMiniConfig($order['uniacid']));
$token = $app->access_token->getToken();
$url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" . $token['access_token'] . "";
$http = httpRequest($url, $formwork);
return $http;
}
//店内下单提醒
public static function newInStoreOrder($orderId) {
$order=(new \yii\db\Query())
->from('{{%ybwm_instore_order}}')
->where('id=:id', [':id' => $orderId])->one();
if($order['payAt']>0){
$payName='已支付';
}else{
$payName='未支付';
}
if($order['origin']==1){
$originName='微信小程序';
}elseif($order['origin']==3){
$originName='支付宝小程序';
}elseif($order['origin']==5){
$originName='收银台下单';
}
$msg=Config::getSystemSet('storeTemplates',$order['uniacid']);
if(!$msg['inStoreTid']){
return true;
}
try{
$app = Factory::officialAccount(WeChat::getWeChatTemplateConfig($order['uniacid']));
$openIdList=(new \yii\db\Query())
->select(['openId'])
->from('{{%ybwm_openId}}')
->where('storeId=:storeId',[':storeId'=>$order['storeId']])->all();
if($openIdList){
for($i=0;$i<count($openIdList);$i++){
$app->template_message->send([
'touser' => $openIdList[$i]['openId'],
'template_id' => $msg['inStoreTid'],
'data' => [
'first'=>'亲 您有新的订单,请及时处理!',
'keyword1' => $order['regionName']."-".$order['typeName']."-".$order['number'],
'keyword2' => $order['money']."(".$payName.")",
'keyword3' => date("Y-m-d H:i:s", $order['createdAt']),
'keyword4' => $order['outTradeNo'],
'keyword5' => "堂食(".$originName.")",
'remark' =>"请及时处理您的订单",
],
]);
}
}
}catch (\Exception $exception){
return $exception;
}
return true;
}
//当面付下单提醒
public static function newCashierOrder($orderId) {
$order=(new \yii\db\Query())
->from('{{%ybwm_cashier_order}}')
->where('id=:id', [':id' => $orderId])->one();
$store=(new \yii\db\Query())
->select('name')
->from('{{%ybwm_store}}')
->where('id=:id', [':id' => $order['storeId']])->one();
if($order['payMode']==1){
$payName='微信支付';
}elseif($order['payMode']==2){
$payName='支付宝支付';
}else{
$payName='余额支付';
}
$msg=Config::getSystemSet('storeTemplates',$order['uniacid']);
if(!$msg['cashierTid']){
return true;
}
try{
$app = Factory::officialAccount(WeChat::getWeChatTemplateConfig($order['uniacid']));
$openIdList=(new \yii\db\Query())
->select(['openId'])
->from('{{%ybwm_openId}}')
->where('storeId=:storeId',[':storeId'=>$order['storeId']])->all();
if($openIdList){
for($i=0;$i<count($openIdList);$i++) {
$app->template_message->send([
'touser' => $openIdList[$i]['openId'],
'template_id' => $msg['cashierTid'],
'data' => [
'first' => '你有一笔收款信息',
'keyword1' => $store['name'],
'keyword2' => $payName,
'keyword3' => $order['money'] . "",
'keyword4' => $order['userNote'] ?: '无',
'keyword5' => date("Y-m-d H:i:s", $order['payAt']),
'remark' => "请尽快核实订单哦!",
],
]);
}
}
}catch (\Exception $exception){
return $exception;
}
return true;
}
//催单提醒
public static function newReminderOrder($orderId) {
$order=(new \yii\db\Query())
->from('{{%ybwm_takeout_order}}')
->where('id=:id', [':id' => $orderId])->one();
if($order['payMode']==1){
$payName='微信支付';
}elseif($order['payMode']==2){
$payName='支付宝支付';
}else{
$payName='余额支付';
}
$msg=Config::getSystemSet('storeTemplates',$order['uniacid']);
if(!$msg['reminderTid']){
return true;
}
try{
$app = Factory::officialAccount(WeChat::getWeChatTemplateConfig($order['uniacid']));
$openIdList=(new \yii\db\Query())
->select(['openId'])
->from('{{%ybwm_openId}}')
->where('storeId=:storeId',[':storeId'=>$order['storeId']])->all();
if($openIdList) {
for ($i = 0; $i < count($openIdList); $i++) {
$app->template_message->send([
'touser' => $openIdList[$i]['openId'],
'template_id' => $msg['reminderTid'],
'data' => [
'first' => '您收到了一条催单提醒',
'keyword1' => $order['outTradeNo'] . "(#" . $order['takeNo'] . ")",
'keyword2' => $payName,
'keyword3' => $order['money'] . "",
'remark' => "请您尽快处理该订单哦!",
],
]);
}
}
}catch (\Exception $exception){
return $exception;
}
return true;
}
//快餐提醒
public static function newFastOrder($orderId) {
$order=(new \yii\db\Query())
->from('{{%ybwm_instore_order}}')
->where('id=:id', [':id' => $orderId])->one();
$orderGoods = (new \yii\db\Query())
->from('{{%ybwm_order_goods}}')
->where('orderId=:orderId AND item=3',[':orderId'=>$orderId])->one();
$goodNmae = $orderGoods['name'];
$msg=Config::getSystemSet('storeTemplates',$order['uniacid']);
if(!$msg['fastTid']){
return true;
}
try{
$app = Factory::officialAccount(WeChat::getWeChatTemplateConfig($order['uniacid']));
$openIdList=(new \yii\db\Query())
->select(['openId'])
->from('{{%ybwm_openId}}')
->where('storeId=:storeId',[':storeId'=>$order['storeId']])->all();
if($openIdList) {
for ($i = 0; $i < count($openIdList); $i++) {
$app->template_message->send([
'touser' => $openIdList[$i]['openId'],
'template_id' => $msg['fastTid'],
'data' => [
'first' => '有新的快餐订单提醒',
'keyword1' => $order['outTradeNo'] . "(" . $order['callNo'] . ")",
'keyword2' => $goodNmae,
'keyword3' => $order['money'] . "",
'keyword4' => "已支付",
'keyword5' => date("Y-m-d H:i:s", $order['payAt']),
'remark' => "请尽快处理此订单哦!",
],
]);
}
}
}catch (\Exception $exception){
return $exception;
}
return true;
}
//排队提醒
public static function queuingOrder($orderId) {
//设置与发送模板信息
$order = (new \yii\db\Query())
->from('{{%ybwm_queuing}}')
->where('id=:id', [':id' => $orderId])->one();
$user = (new \yii\db\Query())
->from('{{%ybwm_member}}')
->where('id=:id',[':id'=>$order['userId']])->one();
$store = (new \yii\db\Query())
->from('{{%ybwm_store}}')
->where('id=:id', [':id' => $order['storeId']])->one();
$msg=Config::getSystemSet('miniTemplates',$order['uniacid']);
$count =(new \yii\db\Query())
->from('{{%ybwm_queuing}}')
->where('storeId=:storeId AND tableId=:tableId AND day=:day AND state=1 AND deleteAt=0',
[':storeId' => $order['storeId'],':tableId'=>$order['tableId'],':day'=>$order['day']])->count()?:0;
$formwork = '{
"touser": "' . $user["openId"] . '",
"template_id": "' . $msg["queuingTid"] . '",
"page": "yb_wm/shop/lineup/pdxq?id='.$orderId.'",
"data": {
"thing1": {
"value": "' . $store['name'] . '"
},
"character_string2": {
"value": "' . $order['code'] . '"
},
"thing3": {
"value": "' . $count . '桌"
},
"phrase4": {
"value": "排队中"
},
"time5": {
"value": "' . date("Y-m-d H:i:s",$order['createdAt']) . '"
}
}
}';
$app = Factory::miniProgram(WeChat::getMiniConfig($order['uniacid']));
$token = $app->access_token->getToken();
$url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" . $token['access_token'] . "";
$http = httpRequest($url, $formwork);
//print_R($http);die;
return $http;
}
//公众号发送模板消息
public static function sendMessage($uniacid,$openId,$template_id,$data){
try{
$app =WeChat::getWechatConfig($uniacid);
$app->template_message->send([
'touser' =>$openId,
'template_id' =>$template_id,
'data' =>$data,
]);
echo json_encode(['code'=>1,'msg'=>'成功']);die;
}catch (\Exception $e){
echo $e->getMessage();die;
}
}
}