653 lines
28 KiB
PHP
653 lines
28 KiB
PHP
<?php
|
||
namespace app\controllers\channel;
|
||
use Illuminate\Support\Facades\DB;
|
||
use Yii;
|
||
use app\models\common\Config;
|
||
use app\models\common\Store;
|
||
use app\models\common\Order;
|
||
use app\models\common\Bill;
|
||
use app\models\common\Message;
|
||
use app\models\common\Printing;
|
||
use app\models\common\Power;
|
||
use app\models\common\Export;
|
||
use app\models\common\Delivery;
|
||
use app\models\common\Ali;
|
||
use app\models\common\Baidu;
|
||
use app\models\common\Statistics;
|
||
use app\models\common\Member;
|
||
//订单
|
||
class OrderController extends CommonController
|
||
{
|
||
private $shop_id;
|
||
|
||
public function init()
|
||
{
|
||
parent::init();
|
||
$this->shop_id = $this->storeId ?: Store::getMainStore($this->wqData['uniacid'])['id'];
|
||
$this->shop_id = $this->shop_id ?: 0;
|
||
|
||
}
|
||
|
||
//订单列表
|
||
public function actionOrderList(){
|
||
$result=axios_request();
|
||
$uniacid=$this->wqData['uniacid'];
|
||
$storeId=$result['storeId']?:$this->shop_id;
|
||
$state=$result['state'];
|
||
$status=$result['status'];
|
||
$timeType=$result['timeType'];
|
||
$orderType=$result['orderType'];
|
||
$orderState=$result['orderState'];
|
||
$serviceAt=$result['serviceAt'];
|
||
$export=$result['export'];
|
||
$payMode=$result['payMode'];
|
||
$page=$result['page']?:1;
|
||
$size=$result['size']?:10;
|
||
$appointment=$result['appointment'];
|
||
$keyword=$result['keyword'];
|
||
if($state==10){
|
||
$orderState=2;
|
||
}
|
||
$orderBy='id desc';
|
||
$table=(new \yii\db\Query())
|
||
->select(['a.takeNo','a.origin','a.appointment','(a.originMoney-(a.money-a.boxMoney-a.deliveryMoney)) as goodsDiscount','(b.money-b.storeActualMoney-b.subsidy) as serviceMoney','b.subsidy','a.replaceUserId','a.isOut','a.refundType','s.name as storeName','a.payAt','a.otherInfo','a.id','a.platformCouponPreferential','a.preferentialMoney','a.newMoney','a.deliveryPreferential','a.couponPreferential','(a.preferentialMoney+a.newMoney+a.deliveryPreferential+IFNULL(a.platformCouponPreferential,0)+IFNULL(a.couponPreferential,0)) discount','a.mealOutState','a.mealOutTime','a.selfCode','a.appointment', 'a.serviceAt','a.outTradeNo','a.takeNo','a.money','a.boxMoney','a.originMoney','a.deliveryMoney','a.receivedName','a.receivedAddress','a.receivedTel','a.lat','a.lng','a.deliveryMode','a.payMode','from_unixtime(a.createdAt)createdAt','a.num','a.state','a.userNote','a.receiptAt','b.storeActualMoney','a.sex','a.userId','a.storeId','b.storeGoodsMoney','b.storeDeliveryMoney','b.money newMoney','b.storeActualMoney'])
|
||
->from('{{%ybwm_takeout_order}} as a')
|
||
->join('LEFT JOIN', '{{%ybwm_bill}} as b', 'b.orderId = a.id AND b.origin=1')
|
||
->join('LEFT JOIN', '{{%ybwm_store}} as s', 's.id = a.storeId')
|
||
->where('a.uniacid=:uniacid AND a.deleteAt=0 AND a.state not in(1,7)',[':uniacid'=>$this->wqData['uniacid']]);
|
||
if($storeId){
|
||
$table->andWhere('a.storeId='.$storeId);
|
||
}
|
||
if($state==1){
|
||
//新订单
|
||
$table->andwhere('a.state=2');
|
||
}
|
||
if($state==2){
|
||
//预订单提醒
|
||
$set=Config::getStoreSet('advanceSet',$storeId);
|
||
$remind=$set['remind']*60?:15*60;
|
||
$table->andwhere('a.appointment=1 AND a.serviceTime<:serviceTime AND a.appointmentState=2',[':serviceTime'=>time()+$remind]);
|
||
}
|
||
if($state==3){
|
||
$reminder=(new \yii\db\Query())
|
||
->select(['orderId'])
|
||
->from('{{%ybwm_reminder}}')
|
||
->where('storeId=:storeId AND state=2',[':storeId'=>$storeId])->groupBy('orderId')->all();
|
||
//催单
|
||
//$table->andwhere('a.id=:id',['id'=>array_column($reminder,'orderId')]);
|
||
$table->andwhere(['in','a.id',array_column($reminder,'orderId')]);
|
||
}
|
||
// if($state==4){
|
||
// //取消单
|
||
// $table->andwhere('a.state=7');
|
||
// }
|
||
if($state==4){
|
||
//退单
|
||
$table->andwhere('a.state=9');
|
||
}
|
||
if($state==5){
|
||
//退单
|
||
$table->andwhere(['in','a.state',[8,10]]);
|
||
}
|
||
if($state==6){
|
||
//待配送
|
||
$table->andwhere('a.state=3');
|
||
$orderBy='serviceTime asc,id asc';
|
||
}
|
||
if($state==7){
|
||
//待送出
|
||
$table->andwhere('a.state=3');
|
||
}
|
||
if($state==8){
|
||
//待送出
|
||
$table->andwhere('a.state=4 and a.deliveryMode!=10');
|
||
}
|
||
if($state==9){
|
||
//待核销
|
||
$table->andwhere('a.deliveryMode=10 and a.state=4');
|
||
}
|
||
if($payMode){
|
||
$table->andwhere('a.payMode=:payMode',['payMode'=>$payMode]);
|
||
}
|
||
if ($keyword) {
|
||
$table->andwhere(['or', ['like', 'a.outTradeNo', $keyword], ['like', 'a.receivedTel', $keyword], ['like', 'a.receivedName', $keyword]]);
|
||
}
|
||
if($timeType==1){
|
||
//时间查询
|
||
$startTime=strtotime(date("Y-m-d"))-86400;
|
||
$endTime=strtotime(date("Y-m-d 23:59:59"));
|
||
$table->andwhere('a.createdAt>=:startTime AND a.createdAt<=:endTime',['startTime'=>$startTime,'endTime'=>$endTime]);
|
||
}
|
||
if($result['startTime'] AND $timeType==2){
|
||
//时间查询
|
||
$startTime=strtotime(date(date("Y-m-d",strtotime($result['startTime']))." 0:00:00"));
|
||
$endTime=strtotime(date(date("Y-m-d",strtotime($result['endTime']))." 23:59:59"));
|
||
$table->andwhere('a.createdAt>=:startTime AND a.createdAt<=:endTime',['startTime'=>$startTime,'endTime'=>$endTime]);
|
||
}
|
||
if($timeType==3){
|
||
//时间查询
|
||
$startTime=strtotime(date("Y-m-d"))-86400*6;
|
||
$endTime=strtotime(date("Y-m-d 23:59:59"));
|
||
$table->andwhere('a.createdAt>=:startTime AND a.createdAt<=:endTime',['startTime'=>$startTime,'endTime'=>$endTime]);
|
||
}
|
||
if($orderType==2){
|
||
$table->andwhere('a.appointment=1');
|
||
if($serviceAt==1){
|
||
$table->andwhere('a.serviceTime<:serviceTime',[':serviceTime'=>time()+90*60]);
|
||
}elseif($serviceAt>1){
|
||
$table->andwhere('a.serviceTime<:serviceTime',[':serviceTime'=>strtotime(date("Y-m-d"))+($serviceAt-1)*86400]);
|
||
}
|
||
}
|
||
if($appointment==1){
|
||
$table->andwhere('a.appointment=1');
|
||
/* if($serviceAt==1){
|
||
$table->andwhere('a.serviceTime<:serviceTime',[':serviceTime'=>time()+90*60]);
|
||
}elseif($serviceAt>1){
|
||
$table->andwhere('a.serviceTime<:serviceTime',[':serviceTime'=>strtotime(date("Y-m-d"))+($serviceAt-1)*86400]);
|
||
}*/
|
||
}
|
||
if($orderType==3){
|
||
$table->andwhere('a.deliveryMode=10');
|
||
}
|
||
if($orderType==4){
|
||
$table->andwhere('a.deliveryMode!=10 AND appointment=2');
|
||
}
|
||
if($orderState==1){
|
||
//进行中
|
||
$table->andwhere(['in','a.state',[2,3,4]]);
|
||
}elseif($orderState==2){
|
||
//已完成
|
||
$table->andwhere(['in','a.state',[5,6]]);
|
||
}elseif($orderState==3){
|
||
//已取消
|
||
$table->andwhere(['in','a.state',[8,10]]);
|
||
}
|
||
|
||
if($export==1){
|
||
$storeInfo=(new \yii\db\Query())
|
||
->from('{{%ybwm_store}}')->where(['id'=>$storeId])->one();
|
||
$title=['订单序号','订单号','下单时间','订单类型','商品信息','配送方式','收货人','联系电话','配送地址','用户实付','付款方式','预计收入','订单状态'];
|
||
$data=$table->all();
|
||
$newData=[];
|
||
foreach ($data as $v){
|
||
if($v['deliveryMode']==10){
|
||
$takeName='自提';
|
||
}else{
|
||
$takeName='外卖';
|
||
}
|
||
if($v['appointment']==1){
|
||
$takeName=$takeName.'-预约';
|
||
}
|
||
$yunbeiName=Power::getPower($uniacid,'yunbeiName');
|
||
if($v['state'] == 2){
|
||
$stateName = '已付款';
|
||
}elseif($v['state'] == 3){
|
||
$stateName = '已接单';
|
||
}elseif($v['state'] == 4){
|
||
$stateName = '配送中';
|
||
}elseif($v['state'] == 5){
|
||
$stateName = '已收货';
|
||
}elseif($v['state'] == 6){
|
||
$stateName = '已评价';
|
||
}elseif($v['state'] == 7){
|
||
$stateName = '已取消';
|
||
}elseif($v['state'] == 8){
|
||
$stateName = '拒单';
|
||
}elseif($v['state'] == 9){
|
||
$stateName = '申请退款';
|
||
}elseif($v['state'] == 10){
|
||
$stateName = '已退款';
|
||
}else{
|
||
$stateName = '未付款';
|
||
}
|
||
if($v['deliveryMode']==2){
|
||
$deliveryName='达达配送';
|
||
}elseif($v['deliveryMode']==3){
|
||
$deliveryName='点我达配送';
|
||
}elseif($v['deliveryMode']==4){
|
||
$deliveryName=$set['makeName']?:'码科配送';
|
||
}elseif($v['deliveryMode']==5){
|
||
$deliveryName='顺丰配送';
|
||
}elseif($v['deliveryMode']==6){
|
||
$deliveryName='蜂鸟跑腿';
|
||
}elseif($v['deliveryMode']==7){
|
||
$deliveryName='闪送';
|
||
}elseif($v['deliveryMode']==8){
|
||
$deliveryName='UU跑腿';
|
||
}elseif($v['deliveryMode']==9){
|
||
$deliveryName=$yunbeiName['yunbeiName']?:'云贝配送';
|
||
}elseif($v['deliveryMode']==10){
|
||
$deliveryName='到店自提';
|
||
}else{
|
||
$deliveryName='商家配送';
|
||
}
|
||
if($v['payMode']==5){
|
||
$payMode='余额支付';
|
||
}else{
|
||
$payMode='微信支付';
|
||
}
|
||
$goods='';
|
||
$goodsInfo=(new \yii\db\Query())
|
||
->select('name,data,material,attribute,num')
|
||
->from('{{%ybwm_order_goods}}')
|
||
->where('orderId=:orderId AND item=1',[':orderId'=>$v['id']])->all();
|
||
for($o=0;$o<count($goodsInfo);$o++){
|
||
$spec = '';
|
||
$attribute = '';
|
||
if ($goodsInfo[$o]['data']) {
|
||
$goodsInfo[$o]['data'] = str_replace(",", ",", $goodsInfo[$o]['data']);
|
||
$spec = '规格:' . $goodsInfo[$o]['data'] . " ";
|
||
}
|
||
if ($goodsInfo[$o]['material']) {
|
||
$material = "加料:" . $goodsInfo[$o]['material'] . " ";
|
||
}
|
||
if ($goodsInfo[$o]['attribute']) {
|
||
$goodsInfo[$o]['attribute'] = str_replace(",", ",", $goodsInfo[$o]['attribute']);
|
||
$attribute = '属性:' . $goodsInfo[$o]['attribute'] . " ";
|
||
}
|
||
if ($spec || $material || $attribute) {
|
||
$goods .= $goodsInfo[$o]['name'] . "(" . $spec . $material . $attribute . ")×" . $goodsInfo[$o]['num'] . ";";
|
||
} else {
|
||
$goods .= $goodsInfo[$o]['name'] . "×" . $goodsInfo[$o]['num'] . ";";
|
||
}
|
||
}
|
||
$newData[]=array(
|
||
'takeNo'=>'#'.$v['takeNo'],
|
||
'outTradeNo'=>$v['outTradeNo'],
|
||
'payAt'=>date('Y-m-d H:i:s',$v['payAt']),
|
||
'takeName'=>$takeName,
|
||
'goodsInfo'=>$goods,
|
||
'deliveryName'=>$deliveryName,
|
||
'receivedName'=>$v['receivedName'],
|
||
'receivedTel'=>$v['receivedTel'],
|
||
'receivedAddress'=>$v['receivedAddress'],
|
||
'newMoney'=>$v['newMoney'],
|
||
'payMode'=>$payMode,
|
||
'storeActualMoney'=>$v['storeActualMoney'],
|
||
'stateName'=>$stateName
|
||
);
|
||
}
|
||
$fileName=date("Y-m-d", $startTime) . '~' . date("Y-m-d", $endTime) . '(' . $storeInfo['name'] . ')外卖订单';
|
||
|
||
exportExcel($title, $newData, $fileName, $savePath='./', $isDown=true);
|
||
//Export::OrderExport($table->all(),$this->wqData['uniacid']);
|
||
}
|
||
if($status){
|
||
$table->andwhere('a.state=:status',[':status'=>$status]);
|
||
}
|
||
//var_dump(ddSql($table));die;
|
||
$count=$table->count();
|
||
$table->offset(($page - 1) * $size)->limit($size)->orderby($orderBy);
|
||
$res=$table->all();
|
||
for($i=0;$i<count($res);$i++){
|
||
$otherInfo=json_decode($res[$i]['otherInfo'],true);
|
||
$res[$i]['payNum']=(new \yii\db\Query())
|
||
->from('{{%ybwm_takeout_order}}')
|
||
->where(['userId'=>$res[$i]['userId']])
|
||
->andWhere(['storeId'=>$res[$i]['storeId']])
|
||
->andWhere(['not in','state',[1,7]])
|
||
->andWhere("id<={$res[$i]['id']}")
|
||
->count();
|
||
$res[$i]['serviceMoney']=bcsub($res[$i]['money'],$res[$i]['storeActualMoney'],2);
|
||
$res[$i]['deliveryInfo']['riderName']=$otherInfo['result']['riderName']?:'';
|
||
$res[$i]['deliveryInfo']['riderTel']=$otherInfo['result']['riderTel']?:'';
|
||
$res[$i]['deliveryInfo']['stateMsg']=$otherInfo['result']['stateMsg']?:'';
|
||
$goods=$table=(new \yii\db\Query())
|
||
->from('{{%ybwm_order_goods}}')
|
||
->where('orderId=:orderId',[':orderId'=>$res[$i]['id']])->andWhere(['item'=>1])->all();
|
||
$res[$i]['goodsArr']=$goods;
|
||
$set=Power::getPower($this->wqData['uniacid'],'makeName');
|
||
$yunbeiName=Power::getPower($this->wqData['uniacid'],'yunbeiName');
|
||
if($res[$i]['deliveryMode']==1){
|
||
$res[$i]['deliveryName']='商家配送';
|
||
}elseif($res[$i]['deliveryMode']==2){
|
||
$res[$i]['deliveryName']='达达配送';
|
||
}elseif($res[$i]['deliveryMode']==3){
|
||
$res[$i]['deliveryName']='点我达配送';
|
||
}elseif($res[$i]['deliveryMode']==4){
|
||
$res[$i]['deliveryName']=$set['makeName']?:'码科配送';
|
||
}elseif($res[$i]['deliveryMode']==5){
|
||
$res[$i]['deliveryName']='顺丰配送';
|
||
}elseif($res[$i]['deliveryMode']==6){
|
||
$res[$i]['deliveryName']='蜂鸟跑腿';
|
||
}elseif($res[$i]['deliveryMode']==7){
|
||
$res[$i]['deliveryName']='闪送';
|
||
}elseif($res[$i]['deliveryMode']==8){
|
||
$res[$i]['deliveryName']='UU跑腿';
|
||
}elseif($res[$i]['deliveryMode']==9){
|
||
$res[$i]['deliveryName']=$yunbeiName['yunbeiName']?:'云贝配送';
|
||
}elseif($res[$i]['deliveryMode']==10){
|
||
$res[$i]['deliveryName']='到店自提';
|
||
}
|
||
}
|
||
return $this->result(1,'成功',$res,$count);
|
||
}
|
||
|
||
//操作订单
|
||
public function actionModifyOrder()
|
||
{
|
||
$result = axios_request();
|
||
if ($result['type'] == 'receipt') {
|
||
//接单
|
||
$res = Order::receipt($result['orderId']);
|
||
if (!$res) {
|
||
return $this->result(2, '失败');
|
||
}
|
||
}
|
||
if ($result['type'] == 'rejection') {
|
||
//拒单
|
||
$res = Order::rejection($result['orderId']);
|
||
if (!$res) {
|
||
return $this->result(2, '失败');
|
||
}
|
||
|
||
}
|
||
if ($result['type'] == 'delivery') {
|
||
//配送
|
||
if ($result['deliveryMode']) {
|
||
$res = Order::distribution($result['orderId'], $result['deliveryMode']);
|
||
} else {
|
||
$res = Order::distribution($result['orderId']);
|
||
}
|
||
|
||
if ($res != 'success') {
|
||
return $this->result(2, $res);
|
||
}
|
||
}
|
||
if ($result['type'] == 'mealOut') {
|
||
//出餐
|
||
$res = Order::mealOut($result['orderId']);
|
||
if (!$res) {
|
||
return $this->result(2, '失败');
|
||
}
|
||
}
|
||
if ($result['type'] == 'adoptRefund' || $result['type'] == 'refund') {
|
||
//通过退款
|
||
if ($result['type'] == 'adoptRefund') {
|
||
$type = 1;
|
||
} else {
|
||
$type = 2;
|
||
}
|
||
$res = Order::adoptRefund($result['orderId'], $type);
|
||
if (!$res) {
|
||
return $this->result(2, '失败');
|
||
}
|
||
}
|
||
if ($result['type'] == 'refuseRefund') {
|
||
//拒绝退款
|
||
$res = Order::refuseRefund($result['orderId']);
|
||
if (!$res) {
|
||
return $this->result(2, '失败');
|
||
}
|
||
}
|
||
if ($result['type'] == 'task') {
|
||
//取单
|
||
$res = Yii::$app->db->createCommand()->update('{{%ybwm_takeout_order}}', ['isRemind' => 2], ['id' => $result['orderId']])->execute();
|
||
if (!$res) {
|
||
return $this->result(2, '失败');
|
||
}
|
||
Message::task($result['orderId']);
|
||
return $this->result(1, '成功');
|
||
}
|
||
if ($result['type'] == 'verification') {
|
||
//核销
|
||
$order = $table = (new \yii\db\Query())
|
||
->select('id,receivedTel,takeNo,money,createdAt,outTradeNo,serviceAt,appointment')
|
||
->from('{{%ybwm_takeout_order}}')
|
||
->where('state=:state AND selfCode=:selfCode', ['state' => 4, 'selfCode' => $result['selfCode']])->one();
|
||
$request = Yii::$app->request;
|
||
if (!$order) {
|
||
return $this->result(2, '订单状态异常或不存在');
|
||
}
|
||
if ($request->isGet) {
|
||
$order['createdAt'] = date("Y-m-d H:i:s", $order['createdAt']);
|
||
return $this->result(1, '成功', $order);
|
||
}
|
||
|
||
$res = Order::receiving($order['id']);
|
||
if (!$res) {
|
||
return $this->result(2, '失败');
|
||
}
|
||
}
|
||
if ($result['type'] == 'confirm') {
|
||
//确认收货
|
||
$order = $table = (new \yii\db\Query())
|
||
->select('state,id,uniacid,storeId,userId')
|
||
->from('{{%ybwm_takeout_order}}')
|
||
->where('id=:id AND state=:state', [':id' => $result['orderId'], 'state' => 4])->one();
|
||
if (!$order) {
|
||
return $this->result(2, '订单状态异常或不存在');
|
||
}
|
||
//集点活动
|
||
Member::saveColletCoupon($order['id'],$order['uniacid'],$order['storeId'],$order['userId']);
|
||
$res = Order::receiving($result['orderId']);
|
||
|
||
if (!$res) {
|
||
return $this->result(2, '失败');
|
||
}
|
||
}
|
||
if ($result['type'] == 'print') {
|
||
Printing::orderPrint($result['orderId'], 1);
|
||
}
|
||
return $this->result(1, '成功');
|
||
}
|
||
|
||
//查看待核销数量
|
||
public function actionWaitWriteOff()
|
||
{
|
||
$result = axios_request();
|
||
$storeId = $result['storeId'] ?: $this->shop_id;
|
||
$order = (new \yii\db\Query())
|
||
->select('id')
|
||
->from('{{%ybwm_takeout_order}}')
|
||
->where('storeId=:storeId AND state=:state AND deliveryMode=10 AND deleteAt=0', [':storeId' => $storeId, 'state' => 4])->count();
|
||
return $this->result(1, '成功', $order);
|
||
}
|
||
|
||
//查看待接单数量
|
||
public function actionWaitReceiv()
|
||
{
|
||
$result = axios_request();
|
||
$storeId = $result['storeId'] ?: $this->shop_id;
|
||
$order = (new \yii\db\Query())
|
||
->select('id')
|
||
->from('{{%ybwm_takeout_order}}')
|
||
->where('storeId=:storeId AND state=:state AND deleteAt=0', [':storeId' => $storeId, 'state' => 2])->count();
|
||
return $this->result(1, '成功', $order);
|
||
}
|
||
|
||
//查看后端语音提醒状态
|
||
public function actionGetVoiceStatus()
|
||
{
|
||
$disabled = explode(',', ini_get('disable_functions'));
|
||
if (in_array('shell_exec', $disabled)) {
|
||
return $this->result(2, 'shell_exec函数被禁用');
|
||
}
|
||
$port = Yii::$app->params['swoolePort'];
|
||
$shell = "netstat -anp 2>/dev/null | grep " . $port . " | grep LISTEN | wc -l";
|
||
$result = shell_exec($shell);
|
||
if ($result <> 1) {
|
||
return $this->result(2, '服务端启动失败');
|
||
die;
|
||
} else {
|
||
return $this->result(1, '服务端已启动');
|
||
die;
|
||
}
|
||
}
|
||
|
||
//语音服务重启
|
||
public function actionVoiceRestart()
|
||
{
|
||
echo shell_exec('ps -ef | grep "openVoice" | grep -v grep | awk \'{print $2}\'');
|
||
$res = shell_exec('sudo kill -9 $pid');
|
||
echo shell_exec('ps -ef | grep "openVoice" | grep -v grep | awk \'{print $2}\'');
|
||
echo shell_exec('cd /www/wwwroot/bkycms.com/addons/yb_wm && php ws.php');
|
||
}
|
||
|
||
//达达重新下单
|
||
public function actionRewireOrder()
|
||
{
|
||
$data = axios_request();
|
||
$order = (new \yii\db\Query())
|
||
->select('*')
|
||
->from('{{%ybwm_takeout_order}}')
|
||
->where('id=:id', [':id' => $data['id']])->one();
|
||
try {
|
||
$result = Delivery::addDataOrder($order, 'yb_wm', 2);
|
||
if ($result['error_code'] == 0) {
|
||
return $this->result(1, '成功');
|
||
} else {
|
||
return $this->result(2, $result['error_msg']);
|
||
}
|
||
} catch (\Exception $e) {
|
||
// var_dump($e);die;
|
||
return $this->result(2, '订单未终结(已取消、已过期、投递异常的订单才能重发)');
|
||
}
|
||
}
|
||
|
||
//测试
|
||
public function actionTest()
|
||
{
|
||
$res = Ali::pay(39);
|
||
print_R($res);
|
||
die;
|
||
}
|
||
|
||
static function typeContent($orderId, $item=1,$type = 1, $printMode = 1, $json=null)
|
||
{
|
||
$categoryArr = json_decode($json);
|
||
$categoryStr = implode(',', $categoryArr) ?: [];
|
||
$where = 'a.orderId=:orderId and a.item='.$item;
|
||
if($item==1){
|
||
$order = (new \yii\db\Query())
|
||
->from('{{%ybwm_takeout_order}}')
|
||
->where('id=:id', [':id' => $orderId])->one();
|
||
}
|
||
if($item==2||$item==3){
|
||
$order = (new \yii\db\Query())
|
||
->from('{{%ybwm_instore_order}}')
|
||
->where('id=:id', [':id' => $orderId])->one();
|
||
}
|
||
|
||
$store = (new \yii\db\Query())
|
||
->from('{{%ybwm_store}}')
|
||
->where('id=:id', [':id' => $order['storeId']])->one();
|
||
if ($printMode == 2 AND $categoryStr) {
|
||
$where .= " and b.typePid in ($categoryStr)";
|
||
} elseif ($printMode == 4 AND $categoryStr) {
|
||
$where .= " and b.printLabel in ($categoryStr)";
|
||
}
|
||
|
||
$goods = (new \yii\db\Query())
|
||
->select(['a.*', 'b.typePid'])
|
||
->from('{{%ybwm_order_goods}} as a')
|
||
->join('LEFT JOIN', '{{%ybwm_core_goods}} as b', 'a.goodsId=b.id')
|
||
->where($where, [':orderId' => $orderId])
|
||
->all();
|
||
$order['goodsArr'] = $goods;
|
||
return $goods;
|
||
}
|
||
|
||
public function actionPrintContent(){
|
||
$data = axios_request();
|
||
$orderId = $data['orderId'];
|
||
$orderType=$data['orderType']?:1;
|
||
$storeId=$data['storeId']?:$this->shop_id;
|
||
switch ($orderType) {
|
||
case 1:
|
||
$order = (new \yii\db\Query())
|
||
->from('{{%ybwm_takeout_order}} as a')
|
||
->select(['a.refundType','a.deliveryMode', 'a.payAt','a.storeId','a.uniacid','a.otherInfo', 'a.id', 'a.platformCouponPreferential', 'a.preferentialMoney', 'a.newMoney', 'a.deliveryPreferential', 'a.couponPreferential', '(a.preferentialMoney+a.newMoney+a.deliveryPreferential+IFNULL(a.platformCouponPreferential,0)+IFNULL(a.couponPreferential,0)) discount', 'a.mealOutState', 'a.mealOutTime', 'a.selfCode', 'a.appointment', 'a.serviceAt', 'a.outTradeNo', 'a.takeNo', 'a.money', 'a.boxMoney', 'a.originMoney', 'a.deliveryMoney', 'a.receivedName', 'a.receivedAddress', 'a.receivedTel', 'a.lat', 'a.lng', 'a.deliveryMode', 'a.payMode', 'from_unixtime(a.createdAt)createdAt', 'a.num', 'a.state', 'a.userNote', 'a.receiptAt'])
|
||
->where('a.id=:id', [':id' => $orderId])->one();
|
||
$support=1;
|
||
break;
|
||
case 2:
|
||
$order = (new \yii\db\Query())
|
||
->from('{{%ybwm_instore_order}}')
|
||
->where('id=:id', [':id' => $orderId])->one();
|
||
$order['createdAt']=date('Y-m-d H:i:s',$order['createdAt']);
|
||
$support=2;
|
||
break;
|
||
case 3:
|
||
$order = (new \yii\db\Query())
|
||
->from('{{%ybwm_instore_order}}')
|
||
->where('id=:id', [':id' => $orderId])->one();
|
||
$order['createdAt']=date('Y-m-d H:i:s',$order['createdAt']);
|
||
$support=3;
|
||
break;
|
||
case 4:
|
||
$order = (new \yii\db\Query())
|
||
->from('{{%ybwm_cashier_order}}')
|
||
->where('id=:id', [':id' => $orderId])->one();
|
||
$member= (new \yii\db\Query())
|
||
->from('{{%ybwm_member}}')
|
||
->where('id=:id', [':id' => $order['userId']])->one();
|
||
$order['userName']=$member['userName'];
|
||
|
||
$order['createdAt']=date('Y-m-d H:i:s',$order['createdAt']);
|
||
$support=4;
|
||
break;
|
||
case 5:
|
||
$support=5;
|
||
$order = (new \yii\db\Query())
|
||
->from('{{%ybwm_queuing}}')
|
||
->where('id=:id', [':id' => $orderId])->one();
|
||
$order['createdAt']=date('Y-m-d H:i:s',$order['createdAt']);
|
||
break;
|
||
}
|
||
$print = (new \yii\db\Query())
|
||
->from('{{%ybwm_print}}')
|
||
->where('deleteAt=0 AND display=1 AND uniacid=:uniacid AND storeId=:storeId AND support='.$support.' AND type=4', [':uniacid' => $order['uniacid'], ':storeId' => $order['storeId']])->All();
|
||
if (!$print) {
|
||
return $this->result(1, '成功',[]);
|
||
// return false;
|
||
}
|
||
|
||
$store = (new \yii\db\Query())
|
||
->select('id,name,storeTel')
|
||
->from('{{%ybwm_store}}')
|
||
->where('id=:storeId', [':storeId' => $order['storeId']])->one();
|
||
$order['storeTel']=$store['storeTel'];
|
||
$newArr = [];
|
||
$content=[];
|
||
foreach ($print as $key => $value) {
|
||
//$rst = json_decode($value['data'], true);
|
||
if ($value['printMode'] == 1) {
|
||
$content = self::typeContent($orderId,$support);
|
||
}
|
||
if ($value['printMode'] == 2) {
|
||
$content = self::typeContent($orderId,$support, $value['type'], $value['printMode'], $value['categoryIds']);
|
||
}
|
||
if ($value['printMode'] == 4) {
|
||
$content = self::typeContent($orderId, $support,$value['type'], $value['printMode'], $value['label']);
|
||
|
||
}
|
||
$order['goodsArr']=$content;
|
||
$order['storeName']=$store['name'];
|
||
$newArr[$value['name']]=$order;
|
||
|
||
}
|
||
return $this->result(1, '成功', $newArr);
|
||
}
|
||
|
||
public function actionOrderStatistic(){
|
||
$result=axios_request();
|
||
$storeId=$result['storeId']?:$this->shop_id;
|
||
$beginToday=mktime(0,0,0,date('m'),date('d'),date('Y'));
|
||
$endToday=mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;
|
||
$data['money']=Statistics::getPayMoney($this->wqData['uniacid'],$storeId,$beginToday,$endToday);
|
||
$data['orderNum']=Statistics::payOkNum($this->wqData['uniacid'],$storeId,$beginToday,$endToday);
|
||
return $this->result(1,'成功',$data);
|
||
}
|
||
|
||
//确认催单
|
||
public function actionReminder(){
|
||
$result=axios_request();
|
||
$res = Yii::$app->db->createCommand()->update('{{%ybwm_reminder}}', ['state' => 1], ['orderId' => $result['orderId']])->execute();
|
||
if (!$res) {
|
||
return $this->result(2, '失败');
|
||
}
|
||
return $this->result(1,'成功');
|
||
}
|
||
}
|