915 lines
35 KiB
PHP
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;
|
|
}
|
|
}
|
|
}
|