文件
mashangyoujiu/Application/Common/Business/TemplatePushNews.class.php

261 行
9.8 KiB
PHP
可执行文件

<?php
namespace Common\Business;
use Common\Model\RetailCashierModel;
use Vip\Controller\MarkController;
//[1.6.82]
/**
* 模板类
* Class TemplatePushNews
* [
* 小程序测试模板推送 xcxPush
* 商户公众号测试模板推送 push
* 商户公众号与小程序推送的参数验证 pushVerify
* ]
* @package Common\Business
*/
class TemplatePushNews
{
/**
* 小程序测试模板推送
* @param $param
* [
* merchant_id
* type 模板类型
* vipPhone 会员手机号
* ]
* @return mixed
*/
public function xcxPush($param)
{
$verifyResult = $this->pushVerify($param);
if ($verifyResult['status'] != 1) {
return $verifyResult;
}
try {
$VipInfoClass = new VipInfo();
$vipResult = $VipInfoClass->basisPhoneGetVip([
'merchant_id' => $param['merchant_id'],
'mobile_phone' => $param['vipPhone']
]); //会员信息获取
if ($vipResult['status'] != 1) {
return $vipResult;
}
$XcxUserClass = new XcxUser();
$xcxResult = $XcxUserClass->basisVipIdGetUser([
'merchant_id' => $param['merchant_id'],
'vip_id' => $vipResult['data']['id']
]); //获取小程序用户信息
if ($xcxResult['status'] != 1) {
return $xcxResult;
}
$xcxUser = $xcxResult['data'];
$StoreClass = new Store();
$storeList = $StoreClass->storeListInfo([
'merchant_id' => $param['merchant_id'],
'fields'=>"id,storetag,address,phone"
]);
if (empty($storeList)) {
return callBack(statusCode()['error'], "缺少门店信息");
}
$tempSend = array(
'merchant_id' => $param['merchant_id'],
'openid' => $xcxUser['openid'],
'type' => $param['type'],
'sendData' => array(
'store_name' => $storeList[0]['storetag'],
'order_no' => '123456789',
'price' => 1,
'add_time' => date('Y-m-d H:i:s', time()),
'goods_name' => '测试商品',
'pick_time' => date('Y-m-d H:i:s', time()),
'user_phone' => $param['vipPhone'],
'username' => '测试姓名',
'user_remark' => '测试备注',
'store_address' => $storeList[0]['address'],
'store_phone' => $storeList[0]['phone'],
'order_type' => '普通订单',
),
);
switch ($param['type']) {
case 1:
//自提
$tempSend['sendData']['pick_code'] = '123456';
break;
case 2:
//发货
$tempSend['sendData']['delivery_type'] = '快递';
$tempSend['sendData']['delivery_time'] = date('Y-m-d H:i:s', time());
$tempSend['sendData']['user_address'] = '测试地址';
break;
case 3:
//分期到账
$tempSend = array(
'store_id' => $storeList[0]['id'],
'type' => 3,
'sendData' => array(
'aging_money' => 1,
'has_arrive' => 1,
'aging_date' => date('Y-m-d H:i:s', time()),
'un_arrive' => 1,
),
);
break;
}
$result = A('Api/XcxMark')->sendMark($tempSend);
$result = json_decode($result, true);
if ($result['errcode'] === 0) {
return callBack(statusCode()['success'], "发送成功");
} else {
return callBack(statusCode()['error'], "发送失败,请检查小程序配置" . $result['errmsg']);
}
} catch (\Exception $e) {
return callBack(statusCode()['error'], "发送失败,请检查小程序配置");
}
}
/**
* 商户公众号测试模板推送
* @param $param
* [
* merchant_id
* type 模板类型
* vipPhone 会员手机号
* ]
* @return mixed
*/
public function push($param)
{
// var_dump($param);
$verifyResult = $this->pushVerify($param); //参数验证
if ($verifyResult['status'] != 1) {
return $verifyResult;
}
try {
if($param['type'] != 9){
$VipInfoClass = new VipInfo();
$vipResult = $VipInfoClass->basisPhoneGetVip([
'merchant_id' => $param['merchant_id'],
'mobile_phone' => $param['vipPhone']
]); //会员信息获取
if ($vipResult['status'] != 1) {
return $vipResult;
}
$vipInfo = $vipResult['data'];
if (empty($vipInfo['openid'])) {
return callBack(statusCode()['error'], "未获取到该会员在公众号的唯一标识openid");
}
}
$MarkClass = new MarkController();
switch ($param['type']) {
case 2:
case 3:
case 5:
case 7:
$StoreClass = new Store();
$storeList = $StoreClass->getStoreList([
'merchant_id' => $param['merchant_id']
]);
if (empty($storeList)) {
return callBack(statusCode()['error'], "缺少门店信息");
}
$store_id = $storeList[0]['id'];
break;
}
switch ($param['type']) {
case 1:
//会员卡激活
$result = $MarkClass->membershipsuccess($vipInfo['id']);
break;
case 2:
//会员卡充值
$result = $MarkClass->rechargesuccess($store_id, $vipInfo['id'], 1, 1, "会员充值");
break;
case 3:
//会员消费
$result = $MarkClass->paysuccess($store_id, $vipInfo['id'], 1, "会员支付", ['ordernum' => '123456789']);
break;
case 4:
//优惠券发放
$result = $MarkClass->launchcoupon($vipInfo['id'], "优惠券", "优惠券", ['starttime' => time(), 'endtime' => time(), 'coupon_name' => '满2元减1元']);
break;
case 5:
//退款通知
$result = $MarkClass->refundsuccess($vipInfo['id'], "123456789", 1, time(), $store_id);
break;
case 6:
//活动通知
$activity = array(
'url' => "Vip/Reward/reward_pay/merchantid/{$param['merchant_id']}/bill_order_id/1",
);
$result = $MarkClass->activitySocket($param['merchant_id'], $vipInfo['openid'], 1, $activity);
break;
case 7:
//分期到账
$install_data = array(
'store_id' => $store_id,
'type' => 7, //'分期到账',
'sendData' => array(
'aging_money' => 1,
'has_arrive' => 1,
'aging_date' => date('Y-m-d H:i:s'),
'un_arrive' => 1,
),
);
$result = $MarkClass->installAccountT($install_data, $vipInfo['id'], $param['merchant_id']);
break;
case 8:
//代金券发放
$result = $MarkClass->payCoupon($vipInfo['id'], '代金券', '代金券', ['starttime' => time(), 'endtime' => time(), 'coupon_name' => '满2元减1元']);
break;
case 9:
//线上订单推送
$CashierModel = new RetailCashierModel();
$openid = $CashierModel->getFindField([
'mobile'=>$param['vipPhone'], 'status' => 1
],'openid');
$content = [
'order_number'=>'202012122112',
'flower_balance'=>10,
'add_time'=>time(),
'pickup_type_name'=>"配送"
];
$result = $MarkClass->onlineOrderPush($param['merchant_id'],9,$content, $openid);
break;
}
if ($result['errcode'] === 0) {
return callBack(statusCode()['success'], "发送成功");
} else {
return callBack(statusCode()['error'], "发送失败,请检查公众号参数" . $result['errmsg']);
}
} catch (\Exception $e) {
return callBack(statusCode()['error'], "发送失败,请检查公众号参数");
}
}
/**
* 商户公众号与小程序推送的参数验证
* @param $param
* [
* merchant_id
* type
* vipPhone
* ]
* @return mixed
*/
public function pushVerify($param)
{
if (empty($param['merchant_id']) || empty($param['type']) || empty($param['vipPhone'])) {
return callBack(statusCode()['error'], "缺少参数");
}
return callBack(statusCode()['success'], "验证成功");
}
}