1898 lines
100 KiB
PHP
1898 lines
100 KiB
PHP
<?php
|
|
namespace app\controllers\channelApi;
|
|
use app\models\common\WeChatPay;
|
|
use Composer\Package\Loader\ValidatingArrayLoader;
|
|
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\CallbackOrder;
|
|
use app\models\common\Message;
|
|
use app\models\common\Power;
|
|
use app\models\common\Member;
|
|
use app\models\common\Printing;
|
|
use app\models\common\Good;
|
|
use app\controllers\common\FuiouController;
|
|
class OrderController extends CommonController{
|
|
//商品加入购物车
|
|
public function actionSaveShopCar(){
|
|
$request = Yii::$app->request;
|
|
$result = axios_request();
|
|
$item=$result['item']?:1;
|
|
$tableId=$result['tableId']?:0;
|
|
$userId = $this->wqData['userId'];
|
|
$uniacid = $this->wqData['uniacid'];
|
|
$userData['userId']=$userId;
|
|
$storeId=$result['storeId'];
|
|
if($item==1){
|
|
$goodsType=1;
|
|
$takeOutSetData = Config::getStoreSet('takeOutSet', $result['storeId']);
|
|
}
|
|
if($item==2){
|
|
$goodsType=2;
|
|
$takeOutSetData = Config::getStoreSet('instoreSet', $result['storeId']);
|
|
$multiplayerMode = $takeOutSetData['orderMode']?:1;
|
|
if($multiplayerMode==1){
|
|
$userData=[];
|
|
}
|
|
}
|
|
if($item==3){
|
|
$goodsType=2;
|
|
$takeOutSetData = Config::getStoreSet('fastSet', $result['storeId']);
|
|
}
|
|
if ($request->isPost){
|
|
if(!$result['storeId']){
|
|
echo json_encode(['code' => 2, 'msg' => '无效的门店']);die;
|
|
}
|
|
if(!$result['type']){
|
|
echo json_encode(['code' => 2, 'msg' => '无效的请求']);die;
|
|
}
|
|
$goodInfo = (new \yii\db\Query())
|
|
->from('{{%ybwm_core_goods}}')
|
|
->where(['id' => $result['goodsId'], 'uniacid' => $uniacid])
|
|
->one();
|
|
$maiId=Store::getMainStore($uniacid);
|
|
$storeRe=(new \yii\db\Query())
|
|
->from('{{%ybwm_store}}')
|
|
->where('uniacid=:uniacid AND id=:id',[':uniacid'=>$uniacid,':id'=>$storeId])
|
|
->one();
|
|
if($storeRe['isMain']==2&&$storeRe['goodsModel']<3) {
|
|
$storeGood=(new \yii\db\Query())
|
|
->from('{{%ybwm_store_goods}}')
|
|
->where(['goodsId' => $result['goodsId'], 'storeId' => $result['storeId'], 'uniacid' => $uniacid])
|
|
->one();
|
|
$goodInfo['price']=$storeGood['price'];
|
|
$goodInfo['stock']=$storeGood['stock'];
|
|
$goodInfo['display']=$storeGood['display'];
|
|
$goodInfo['data']=$storeGood['data'];
|
|
}
|
|
if($goodInfo['display']<>1){
|
|
echo json_encode(['code' => 2, 'msg' => '商品已下架或未上架']);die;
|
|
}
|
|
//判断库存
|
|
if($result['groupId']){
|
|
$count= (new \yii\db\Query())
|
|
->from('{{%ybwm_shop_car}}')
|
|
->where(['tableId'=>$tableId,'item'=>$item,'goodsId' => $result['goodsId'], 'groupId' => $result['groupId'],'storeId' => $result['storeId'],'uniacid'=>$uniacid])
|
|
->andWhere($userData)
|
|
->count('num');
|
|
if($storeRe['isMain']==1||$storeRe['goodsModel']==3) {
|
|
$specsInfo=(new \yii\db\Query())
|
|
->from('{{%ybwm_good_specs}}')
|
|
->where(['id' => $result['groupId']])
|
|
->one();
|
|
$stock=$specsInfo['SalesStock'];
|
|
}else{
|
|
$specsList=json_decode($goodInfo['data'],true)['specs'];
|
|
foreach ($specsList as $vo){
|
|
if($result['groupId']==$vo['id']){
|
|
$specsInfo=$vo;
|
|
$stock=$specsInfo['SalesStock'];
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
|
|
}else{
|
|
$count= (new \yii\db\Query())
|
|
->from('{{%ybwm_shop_car}}')
|
|
->where(['tableId'=>$tableId,'item'=>$item,'goodsId' => $result['goodsId'], 'storeId' => $result['storeId'],'uniacid'=>$uniacid])
|
|
->andWhere($userData)
|
|
->one()['num'];
|
|
$stock=$goodInfo['stock'];
|
|
}
|
|
|
|
if($result['type']==1){
|
|
$result['num']=$result['num']?$result['num']:1;
|
|
$maxCount=$count+$result['num'];
|
|
|
|
if($maxCount>$stock){
|
|
echo json_encode(['code' => 2, 'msg' => '库存不足']);die;
|
|
}
|
|
}
|
|
if($result['id']){
|
|
$row = (new \yii\db\Query())
|
|
->from('{{%ybwm_shop_car}}')
|
|
->where(['id' => $result['id']])
|
|
->one();
|
|
if($result['type']==1) {
|
|
if($result['groupId']){
|
|
if ($result['storeId'] == $maiId['id']) {
|
|
$stock = (new \yii\db\Query())
|
|
->from('{{%ybwm_good_specs}}')
|
|
->where(['id' => $row['groupId']])
|
|
->one()['SalesStock'];
|
|
} else {
|
|
$specsList = json_decode($goodInfo['data'], true)['specs'];
|
|
foreach ($specsList as $vo) {
|
|
if ($row['groupId'] == $vo['id']) {
|
|
$stock = $vo['SalesStock'];
|
|
}
|
|
}
|
|
}
|
|
if ($row['num'] + $result['num'] > $stock) {
|
|
echo json_encode(['code' => 2, 'msg' => '库存不足']);die;
|
|
|
|
}
|
|
}
|
|
}
|
|
$originalPrice=Good::getGoodMoneyByCar($result['id']);//商品原价
|
|
$vipMoney=Member::getDiscountByGood($userId,$row['goodsId'],$originalPrice)['money'];//VIP原价
|
|
$activityPrice=Good::getGoodActivity($uniacid,$result['storeId'],$originalPrice,$row['goodsId'],$goodsType);//商品活动价
|
|
if($activityPrice['type']>0){
|
|
$activityPrice['activityMoney']=Member::getDiscountByGood($userId,$row['goodsId'],$activityPrice['activityMoney'])['money'];
|
|
}
|
|
if($result['type']==1){
|
|
if($row['num']+1>$goodInfo['maxNum']&&$goodInfo['maxNum']>0){
|
|
echo json_encode(['code' => 2, 'msg' => '超出限购数量']);die;
|
|
}
|
|
|
|
if($activityPrice['type']==5){
|
|
//买一送一
|
|
if($activityPrice['limitNum']>0 AND $row['discountNum']>=$activityPrice['limitNum']){
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['discountNum' =>$activityPrice['limitNum'],'num' =>$row['num']+1], ['id' =>$result['id']])->execute();
|
|
}else{
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['discountPrice'=>0,'discountNum' =>bcdiv($row['num']+2,2,0),'num' =>$row['num']+2], ['id' =>$result['id']])->execute();
|
|
}
|
|
}elseif($activityPrice['type']==4){
|
|
//第二件半价
|
|
if($row['num']==1){
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['discountPrice'=>$activityPrice['activityMoney'],'discountNum' =>$row['discountNum']+1,'num' =>$row['num']+1], ['id' =>$result['id']])->execute();
|
|
}else{
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['num' =>$row['num']+1], ['id' =>$result['id']])->execute();
|
|
}
|
|
}elseif($activityPrice['type']!=0){
|
|
if($activityPrice['limitNum']>0 AND $row['discountNum']>=$activityPrice['limitNum']) {
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['discountNum' =>$activityPrice['limitNum'],'num' => $row['num'] + 1], ['id' => $result['id']])->execute();
|
|
}else{
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['discountPrice' => $activityPrice['activityMoney'], 'discountNum' => $row['num'] + 1, 'num' => $row['num'] + 1], ['id' => $result['id']])->execute();
|
|
}
|
|
}else{
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['num' =>$row['num']+1], ['id' =>$result['id']])->execute();
|
|
}
|
|
}else{
|
|
//减法
|
|
if($activityPrice['type']==5){
|
|
$allNum=bcsub($row['num'],$row['discountNum'],0);
|
|
}else{
|
|
$allNum=$row['num'];
|
|
}
|
|
if ($row['num'] == 1 || ($allNum <= $goodInfo['minNum'] AND $goodInfo['minNum'] > 0)) {
|
|
$re=Yii::$app->db->createCommand()->delete('{{%ybwm_shop_car}}', ['id' =>$result['id']])->execute();
|
|
}else{
|
|
if($activityPrice['type']==1 || $activityPrice['type']==2 || $activityPrice['type']==3){
|
|
if($row['discountNum']>$activityPrice['limitNum'] AND $activityPrice['limitNum']!=0){
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['discountNum'=>$activityPrice['limitNum'],'num' =>$row['num']-1], ['id' => $result['id']])->execute();
|
|
}else{
|
|
if($row['num']==$row['discountNum']){
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['discountNum'=>$row['discountNum']-1,'num' =>$row['num']-1], ['id' => $result['id']])->execute();
|
|
}else{
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['num' =>$row['num']-1], ['id' => $result['id']])->execute();
|
|
}
|
|
}
|
|
}
|
|
if($activityPrice['type']==4){
|
|
if($row['num']==2){
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['discountNum' => 0, 'num' => $row['num'] - 1], ['id' => $result['id']])->execute();
|
|
}else{
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['num' => $row['num'] - 1], ['id' => $result['id']])->execute();
|
|
}
|
|
}
|
|
if($activityPrice['type']==5) {
|
|
$originalNum=$row['num']-$row['discountNum'];
|
|
if ($originalNum>$activityPrice['limitNum'] AND $activityPrice['limitNum']>0) {
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['num' => $row['num'] - 1], ['id' => $result['id']])->execute();
|
|
} else {
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['discountNum' => $row['discountNum'] - 1, 'num' => $row['num'] - 2], ['id' => $result['id']])->execute();
|
|
}
|
|
}
|
|
if($activityPrice['type']==0) {
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['num' => $row['num'] - 1], ['id' => $result['id']])->execute();
|
|
}
|
|
}
|
|
}
|
|
}else{
|
|
//如果是有规格商品
|
|
if($result['groupId']){
|
|
$ids=array_column($result['material'],'materialId');
|
|
if(count($ids)>1){
|
|
$ids=implode(',',$ids);
|
|
}else{
|
|
$ids=$ids[0]?:'';
|
|
}
|
|
//dd($ids);die;
|
|
//判断购物车是否有商品
|
|
$row = (new \yii\db\Query())
|
|
->from('{{%ybwm_shop_car}}')
|
|
->where(['tableId'=>$tableId,'item'=>$item,'goodsId' => $result['goodsId'], 'groupId' => $result['groupId'],'attribute' => $result['attribute'],'materialIds' =>$ids, 'storeId' => $result['storeId'], 'uniacid'=>$uniacid])
|
|
->andWhere($userData)
|
|
->one();
|
|
//print_R(['goodsId' => $result['goodsId'], 'groupId' => $result['groupId'],'attribute' => $result['attribute'],'materialIds' =>$ids, 'storeId' => $result['storeId'], 'userId' => $userId,'uniacid'=>$uniacid]);die;
|
|
if($result['type']==1){
|
|
if($row){
|
|
$addNum=1;
|
|
}else{
|
|
$addNum=$goodInfo['minNum'];
|
|
}
|
|
$number=$result['num']?:$addNum;
|
|
$count=$row['num']+$number;
|
|
if($count>$goodInfo['maxNum']&&$goodInfo['maxNum']>0){
|
|
echo json_encode(['code' => 2, 'msg' => '超出限购数量']);die;
|
|
}
|
|
if($row){
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['num' => $number+$row['num']], ['id' => $row['id']])->execute();
|
|
}else{
|
|
//写入部分
|
|
if ($result['groupId']) {
|
|
$groupName = $specsInfo['specsName'];
|
|
}
|
|
|
|
$boxType = $takeOutSetData['boxType'];
|
|
if ($boxType== 2) {
|
|
//是有规格
|
|
$boxMoney = $specsInfo['boxMoney'];
|
|
}else{
|
|
$boxMoney = $takeOutSetData['boxMoney'];
|
|
}
|
|
if ($result['material']) {
|
|
$materialData = array_column($result['material'], 'materialId');
|
|
$materData = (new \yii\db\Query())
|
|
->from('{{%ybwm_good_materia}}')
|
|
->where(['goodId' => $result['goodsId'], 'uniacid' => $uniacid])
|
|
->andWhere(['in', 'id', $materialData])
|
|
->all();
|
|
$materialMoney = array_sum(array_column($materData, 'SalesPrice'));
|
|
$nameStr = implode(',', array_column($materData, 'materialName'));
|
|
$materJson = json_encode($result['material']);
|
|
}
|
|
$money = $specsInfo['SalesPrice'];
|
|
$newMoney=Member::getDiscountByGood($userId,$result['goodsId'],$money);
|
|
$data = array(
|
|
'userId' => $userId,
|
|
'storeId' => $result['storeId'],
|
|
'goodsId' => $result['goodsId'],
|
|
'name' => $goodInfo['name'],
|
|
'icon' => $goodInfo['icon'],
|
|
'num' => $number,
|
|
'boxMoney' => $boxMoney,
|
|
'money' => $newMoney['money'],
|
|
'item' => $item,
|
|
'tableId' => $tableId,
|
|
'createdAt' => time(),
|
|
'uniacid' => $uniacid,
|
|
'groupId' => $result['groupId'] ?: '',
|
|
'groupName' => $groupName,
|
|
'attribute' => $result['attribute'],
|
|
'material' => $materJson ?: '',
|
|
'materialIds' => $ids ?: '',
|
|
'materialName' => $nameStr ?: '',
|
|
'materialMoney' => $materialMoney ?: 0.00,
|
|
'originalMoney'=>$money,
|
|
);
|
|
$re = Yii::$app->db->createCommand()->insert('{{%ybwm_shop_car}}', $data)->execute();
|
|
}
|
|
}else{
|
|
if($goodInfo['minNum']){
|
|
if($row['num']>$goodInfo['minNum']){
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['num' =>$row['num']-1], ['tableId'=>$tableId,'item'=>$item,'goodsId' =>$result['goodsId']])->execute();
|
|
}else{
|
|
$re=Yii::$app->db->createCommand()->delete('{{%ybwm_shop_car}}', ['tableId'=>$tableId,'item'=>$item,'goodsId' =>$result['goodsId']])->execute();
|
|
}
|
|
}else{
|
|
if($row['num']>1){
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['num' =>$row['num']-1], ['tableId'=>$tableId,'item'=>$item,'goodsId' =>$result['goodsId']])->execute();
|
|
}else{
|
|
$re=Yii::$app->db->createCommand()->delete('{{%ybwm_shop_car}}', ['tableId'=>$tableId,'item'=>$item,'goodsId' =>$result['goodsId']])->execute();
|
|
}
|
|
}
|
|
}
|
|
}else{
|
|
///////无规格/////////
|
|
$material=$result['material']?json_encode($result['material']):'';
|
|
$row=(new \yii\db\Query())
|
|
->from('{{%ybwm_shop_car}}')
|
|
->where(['tableId'=>$tableId,'item'=>$item,'goodsId' => $result['goodsId'],'storeId' => $result['storeId'], 'uniacid'=>$uniacid,'material'=>$material,'attribute'=>$result['attribute']])
|
|
->andWhere($userData)
|
|
->one();
|
|
//print_R(['goodsId' => $result['goodsId'],'storeId' => $result['storeId'], 'userId' => $userId,'uniacid'=>$uniacid,'material'=>$material,'attribute'=>$result['attribute']]);die;
|
|
$newMoney=Member::getDiscountByGood($userId,$result['goodsId'],$goodInfo['price'])['money'];//VIP原价
|
|
$activityPrice=Good::getGoodActivity($uniacid,$result['storeId'],$goodInfo['price'],$result['goodsId'],$goodsType);//商品活动价
|
|
$oldActivityPrice=$activityPrice['activityMoney'];
|
|
if($activityPrice['type']>0){
|
|
$activityPrice['activityMoney']=Member::getDiscountByGood($userId,$result['goodsId'],$activityPrice['activityMoney'])['money'];
|
|
}
|
|
if($result['type']==1){
|
|
if($row){
|
|
$number=1;
|
|
if($result['num']){
|
|
if($result['num']+$row['num']<$goodInfo['minNum']){
|
|
echo json_encode(['code' => 2, 'msg' => '起购数量不足'.$goodInfo['minNum']]);die;
|
|
}
|
|
}
|
|
}else{
|
|
$number=$goodInfo['minNum']?:1;
|
|
if($result['num']){
|
|
if($result['num']<$goodInfo['minNum']){
|
|
$result['num']=$goodInfo['minNum'];
|
|
// echo json_encode(['code' => 2, 'msg' => '起购数量不足'.$goodInfo['minNum']]);die;
|
|
}
|
|
}
|
|
}
|
|
if($result['num']){
|
|
$number=$result['num'];
|
|
}
|
|
if($row['num']+$number>$goodInfo['maxNum']&&$goodInfo['maxNum']>0){
|
|
echo json_encode(['code' => 2, 'msg' => '超出限购数量']);die;
|
|
}
|
|
if($row){
|
|
//购物车有数据
|
|
if($activityPrice['type']==1 || $activityPrice['type']==2 || $activityPrice['type']==3){
|
|
if($activityPrice['limitNum']!=0){
|
|
//每单限制
|
|
$discountNum=$activityPrice['limitNum']-$row['discountNum'];
|
|
if($discountNum>=$number){
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['discountPrice'=>$activityPrice['activityMoney'],'discountNum' => $number+$row['discountNum'], 'num'=> $number+$row['num']], ['id' => $row['id']])->execute();
|
|
}else{
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['discountPrice'=>$activityPrice['activityMoney'],'discountNum' => $discountNum+$row['discountNum'], 'num'=> $number+$row['num']], ['id' => $row['id']])->execute();
|
|
}
|
|
}else{
|
|
//无限制
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['discountPrice'=>$activityPrice['activityMoney'],'discountNum' => $number+$row['discountNum'], 'num'=> $number+$row['num']], ['id' => $row['id']])->execute();
|
|
|
|
}
|
|
}
|
|
|
|
if($activityPrice['type']==4 AND $row['num']==1){
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['discountPrice'=>$activityPrice['activityMoney'],'discountNum' => $number+$row['discountNum'], 'num'=> $number+$row['num']], ['id' => $row['id']])->execute();
|
|
}
|
|
if($activityPrice['type']==4 AND $row['num']>=2){
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['num'=>$number+$row['num']], ['id' => $row['id']])->execute();
|
|
}
|
|
if($activityPrice['type']==5){
|
|
if($activityPrice['limitNum']!=0 AND ($row['discountNum']+$number)>=$activityPrice['limitNum']){
|
|
//每单限制
|
|
$addNum=$activityPrice['limitNum']-$row['discountNum'];
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['discountPrice'=>$activityPrice['activityMoney'],'discountNum' => $activityPrice['limitNum'], 'num'=> $number+$row['num']+$addNum], ['id' => $row['id']])->execute();
|
|
}else{
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['discountPrice'=>$activityPrice['activityMoney'],'discountNum' => $number+$row['discountNum'], 'num'=> bcmul($number,2,0)+$row['num']], ['id' => $row['id']])->execute();
|
|
}
|
|
}
|
|
|
|
if($activityPrice['type']==0){
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['num'=>$number+$row['num']], ['id' => $row['id']])->execute();
|
|
|
|
}
|
|
}else{
|
|
$boxType = $takeOutSetData['boxType'];
|
|
if($boxType==1){
|
|
$boxMoney=$takeOutSetData['boxMoney'];
|
|
}else{
|
|
$boxMoney=$goodInfo['boxMoney'];
|
|
}
|
|
if ($result['material']) {
|
|
$materialData = array_column($result['material'], 'materialId');
|
|
$materData = (new \yii\db\Query())
|
|
->from('{{%ybwm_good_materia}}')
|
|
->where(['goodId' => $result['goodsId'], 'uniacid' => $uniacid])
|
|
->andWhere(['in', 'id', $materialData])
|
|
->all();
|
|
$materialMoney = array_sum(array_column($materData, 'SalesPrice'));
|
|
$nameStr = implode(',', array_column($materData, 'materialName'));
|
|
$materJson = json_encode($result['material']);
|
|
}
|
|
$ids=array_column($result['material'],'materialId');
|
|
if(count($ids)>1){
|
|
$ids=implode(',',$ids);
|
|
}else{
|
|
$ids=$ids[0];
|
|
}
|
|
if($activityPrice['type']==1 || $activityPrice['type']==2 || $activityPrice['type']==3){
|
|
if($activityPrice['limitNum']!=0 AND $activityPrice['limitNum']<$number){
|
|
$carNum=$number;
|
|
$discountNum=$activityPrice['limitNum'];
|
|
$discountPrice=$activityPrice['activityMoney'];
|
|
}else{
|
|
$carNum=$number;
|
|
$discountNum=$number;
|
|
$discountPrice=$activityPrice['activityMoney'];
|
|
}
|
|
}
|
|
if($activityPrice['type']==5){
|
|
if($activityPrice['limitNum']!=0 AND $activityPrice['limitNum']<$number){
|
|
$carNum=bcadd($number,$activityPrice['limitNum'],0);
|
|
$discountNum=$activityPrice['limitNum'];
|
|
$discountPrice=$activityPrice['activityMoney'];
|
|
}else{
|
|
$carNum=bcadd($number,$number,0);
|
|
$discountNum=$number;
|
|
$discountPrice=$activityPrice['activityMoney'];
|
|
}
|
|
}
|
|
if($activityPrice['type']==4){
|
|
if($number>=2){
|
|
$carNum=$number;
|
|
$discountNum=1;
|
|
$discountPrice=$activityPrice['activityMoney'];
|
|
}else{
|
|
$carNum=$number;
|
|
$discountNum=0;
|
|
$discountPrice=0;
|
|
}
|
|
}
|
|
if($activityPrice['type']==0){
|
|
$carNum=$number;
|
|
$discountNum=0;
|
|
$discountPrice=0;
|
|
}
|
|
$data = array(
|
|
'userId' => $userId,
|
|
'storeId' => $result['storeId'],
|
|
'goodsId' => $result['goodsId'],
|
|
'name' => $goodInfo['name'],
|
|
'icon' => $goodInfo['icon'],
|
|
'num' => $carNum,
|
|
'boxMoney' => $boxMoney,
|
|
'discountType' => $activityPrice['type'],
|
|
'discountId' => $activityPrice['id'],
|
|
'money' => $newMoney,
|
|
'discountPrice'=>$discountPrice,//活动商品单价
|
|
'discountNum'=>$discountNum,//活动商品数量
|
|
'item' => $item,
|
|
'tableId' => $tableId,
|
|
'createdAt' => time(),
|
|
'uniacid' => $uniacid,
|
|
'originalMoney'=>$goodInfo['price'],
|
|
'originalDiscountPrice'=>$oldActivityPrice,
|
|
'attribute' => $result['attribute'],
|
|
'material' => $materJson ?: '',
|
|
'materialIds' => $ids ?: '',
|
|
'materialName' => $nameStr ?: '',
|
|
'materialMoney' => $materialMoney ?: 0.00,
|
|
);
|
|
$re = Yii::$app->db->createCommand()->insert('{{%ybwm_shop_car}}', $data)->execute();
|
|
}
|
|
}else{
|
|
$updateData = ['tableId' => $tableId, 'userId' => $userId, 'storeId' => $result['storeId'], 'item' => $item, 'goodsId' => $result['goodsId']];
|
|
if($multiplayerMode==1) {
|
|
$updateData = ['tableId' => $tableId,'storeId' => $result['storeId'], 'item' => $item, 'goodsId' => $result['goodsId']];
|
|
}
|
|
if( ($goodInfo['minNum'] AND $row['num']>$goodInfo['minNum']) || (!$goodInfo['minNum'] AND $row['num']>1) ){
|
|
if($activityPrice['type']==1 || $activityPrice['type']==2 || $activityPrice['type']==3){
|
|
if($row['discountNum']>$activityPrice['limitNum']&&$activityPrice['limitNum']!=0){
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['discountNum'=>$activityPrice['limitNum'],'num' =>$row['num']-1], $updateData)->execute();
|
|
}else{
|
|
if($row['num']==$row['discountNum']){
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['discountNum'=>$row['discountNum']-1,'num' =>$row['num']-1], $updateData)->execute();
|
|
}else{
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['num' =>$row['num']-1], $updateData)->execute();
|
|
}
|
|
}
|
|
}
|
|
|
|
if($activityPrice['type']==4){
|
|
if($row['num']==2){
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['discountNum'=>$row['discountNum']-1,'num' =>$row['num']-1], $updateData)->execute();
|
|
}else{
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['num' =>$row['num']-1], $updateData)->execute();
|
|
}
|
|
}
|
|
if($activityPrice['type']==5){
|
|
$originalNum=$row['num']-$row['discountNum'];
|
|
if($originalNum==1){
|
|
$re=Yii::$app->db->createCommand()->delete('{{%ybwm_shop_car}}', $updateData)->execute();
|
|
}else{
|
|
if ($originalNum>$activityPrice['limitNum'] AND $activityPrice['limitNum']>0) {
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['num' => $row['num'] - 1], $updateData)->execute();
|
|
} else {
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['discountNum' => $row['discountNum'] - 1, 'num' => $row['num'] - 2], $updateData)->execute();
|
|
}
|
|
}
|
|
}
|
|
|
|
if($activityPrice['type']==0){
|
|
$re = Yii::$app->db->createCommand()->update('{{%ybwm_shop_car}}', ['num' =>$row['num']-1], $updateData)->execute();
|
|
}
|
|
}else{
|
|
$re=Yii::$app->db->createCommand()->delete('{{%ybwm_shop_car}}', $updateData)->execute();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$data = (new \yii\db\Query())
|
|
->select('(num-discountNum) as originalNum,(discountPrice+materialMoney) as discountPrice,discountNum,discountType,id,(originalMoney*(num-discountNum)+originalDiscountPrice*discountNum+materialMoney*num) as originalMoney,name,icon,(money+materialMoney) as money,attribute,goodsId,groupId,groupName,material,materialIds,materialMoney,materialName,num,boxMoney,materialMoney,(money*(num-discountNum)+discountPrice*discountNum+materialMoney*num) as totalMoney')
|
|
->from('{{%ybwm_shop_car}}')
|
|
->where(['tableId'=>$tableId,'item'=>$item,'uniacid' => $uniacid, 'storeId' => $result['storeId']])
|
|
->andWhere($userData)
|
|
->all();
|
|
$materTotal = 0;
|
|
$goodTotal = 0;
|
|
$boxMoneyTotal = 0;
|
|
$originalMoney=0;
|
|
foreach ($data as $v) {
|
|
$goodTotal += $v['totalMoney'];
|
|
$originalMoney+=$v['originalMoney'];
|
|
$materTotal +=bcmul($v['materialMoney'],$v['num'],2);
|
|
$boxMoneyTotal +=bcmul($v['boxMoney'],$v['num'],2);
|
|
}
|
|
$boxType = $takeOutSetData['boxType'];
|
|
if ($boxType == 1) {
|
|
$boxMoneyTotal = $takeOutSetData['boxMoney'];
|
|
}
|
|
$reduce=Order::reduce($result['storeId'],$userId,$goodTotal,$item);
|
|
$currency=Config::getSystemSet('currency',$this->wqData['uniacid']);
|
|
$actGoods = (new \yii\db\Query())
|
|
->from('{{%ybwm_shop_car}}')
|
|
->where(['tableId'=>$tableId,'item'=>$item,'uniacid' => $uniacid, 'storeId' => $result['storeId']])
|
|
->andWhere($userData)
|
|
->andWhere('discountType!=0')
|
|
->one();
|
|
if(in_array('1',$currency['goodsActivityRule']) AND $actGoods){
|
|
$reduce=[
|
|
'money'=>0,
|
|
'id'=>0
|
|
];
|
|
}
|
|
if($item==2){
|
|
$boxMoneyTotal = 0;
|
|
}
|
|
$newData = array(
|
|
'vipDiscount'=>bcsub($originalMoney,$goodTotal,2)?:0,
|
|
'boxMoney' => round($boxMoneyTotal,2),
|
|
'data' => $data,
|
|
'price' => bcadd(bcsub($goodTotal,$reduce['money'],2),$boxMoneyTotal,2),
|
|
'oldPrice' => bcadd($goodTotal , $boxMoneyTotal,2),
|
|
'reduce'=>$reduce['money']
|
|
);
|
|
}
|
|
$count=(new \yii\db\Query())
|
|
->from('{{%ybwm_shop_car}}')
|
|
->where(['tableId'=>$tableId,'item'=>$item,'uniacid' => $uniacid, 'goodsId'=>$result['goodsId'],'storeId' => $result['storeId']])
|
|
->andWhere($userData)
|
|
->sum('num')?:0;
|
|
|
|
if ($re) {
|
|
echo json_encode(['code' => 1, 'msg' => '成功', 'data' => $newData, 'count' =>$count]);
|
|
die;
|
|
} else {
|
|
echo json_encode(['code' => 2, 'msg' => '数据异常']);
|
|
}
|
|
}
|
|
|
|
//获取购物车内商品列表
|
|
public function actionGetCarList(){
|
|
$request = Yii::$app->request;
|
|
$result=axios_request();
|
|
$item=$result['item']?:1;
|
|
$tableId=$result['tableId']?:0;
|
|
if($request->isGet){
|
|
$userId=$this->wqData['userId'];
|
|
$uniacid=$this->wqData['uniacid'];
|
|
$storeModeSet = Config::getStoreSet('instoreSet', $result['storeId']);
|
|
$multiplayerMode = $storeModeSet['orderMode'];
|
|
if($multiplayerMode==2 || $item!=2){
|
|
//拼桌
|
|
$data=(new \yii\db\Query())
|
|
->select('(num-discountNum) as originalNum,discountType,(discountPrice+materialMoney) as discountPrice,discountNum,id,name,icon,(money+materialMoney) as money,attribute,goodsId,groupId,groupName,material,materialIds,materialMoney,materialName,num,boxMoney,materialMoney,(money*(num-discountNum)+discountPrice*discountNum+materialMoney*num) as totalMoney,(originalMoney*(num-discountNum)+originalDiscountPrice*discountNum+materialMoney*num) as originalMoney')
|
|
->from('{{%ybwm_shop_car}}')
|
|
->where(['tableId'=>$tableId,'item'=>$item,'uniacid'=>$uniacid,'userId'=>$userId,'storeId'=>$result['storeId']])
|
|
->all();
|
|
}else{
|
|
//多人
|
|
$data=(new \yii\db\Query())
|
|
->select('(num-discountNum) as originalNum,discountType,(discountPrice+materialMoney) as discountPrice,discountNum,id,name,icon,(money+materialMoney) as money,attribute,goodsId,groupId,groupName,material,materialIds,materialMoney,materialName,num,boxMoney,materialMoney,(money*(num-discountNum)+discountPrice*discountNum+materialMoney*num) as totalMoney,(originalMoney*(num-discountNum)+originalDiscountPrice*discountNum+materialMoney*num) as originalMoney')
|
|
->from('{{%ybwm_shop_car}}')
|
|
->where(['tableId'=>$tableId,'item'=>$item,'uniacid'=>$uniacid,'storeId'=>$result['storeId']])
|
|
->all();
|
|
}
|
|
|
|
$goodTotal=0;
|
|
$boxMoneyTotal=0;
|
|
$originalMoney=0;
|
|
foreach ($data as $v){
|
|
$goodTotal+=$v['totalMoney'];
|
|
$originalMoney+=$v['originalMoney'];
|
|
$boxMoneyTotal=bcadd($boxMoneyTotal,bcmul($v['boxMoney'],$v['num'],2),2);
|
|
}
|
|
if($item==1){
|
|
$takeOutSetData=Config::getStoreSet('takeOutSet',$result['storeId']);
|
|
}
|
|
if($item==3){
|
|
$takeOutSetData=Config::getStoreSet('fastSet',$result['storeId']);
|
|
}
|
|
$boxType=$takeOutSetData['boxType'];
|
|
if($boxType==1){
|
|
$boxMoneyTotal=$takeOutSetData['boxMoney'];
|
|
}
|
|
if($item==2){
|
|
$boxMoneyTotal=0;
|
|
}
|
|
$reduce=Order::reduce($result['storeId'],$userId,$goodTotal,$item);
|
|
$newData=array(
|
|
'vipDiscount'=>bcsub($originalMoney,$goodTotal,2)?:0,
|
|
'boxMoney'=>$boxMoneyTotal,
|
|
'data'=>$data,
|
|
'price' => bcadd(bcsub($goodTotal,$reduce['money'],2) ,$boxMoneyTotal,2),
|
|
'oldPrice' => bcadd($goodTotal,$boxMoneyTotal,2),
|
|
'reduce'=>$reduce['money']
|
|
);
|
|
echo json_encode(['code'=>1,'msg'=>'成功','data'=>$newData]);die;
|
|
}else{
|
|
echo json_encode(['code'=>2,'msg'=>'购物车内未添加商品']);
|
|
}
|
|
}
|
|
//$re=Yii::$app->db->createCommand()->delete('{{%ybwm_shop_car}}',['id'=>$row['id']])->execute();
|
|
//清空购物车
|
|
public function actionDelCar(){
|
|
$request = Yii::$app->request;
|
|
if($request->isGet){
|
|
return $this->result(2, '请求异常');
|
|
}
|
|
$result=axios_request();
|
|
$tableId=$result['tableId']?:0;
|
|
$item=$result['item']?:1;
|
|
$storeModeSet = Config::getStoreSet('instoreSet', $result['storeId']);
|
|
$multiplayerMode = $storeModeSet['orderMode'];
|
|
if($multiplayerMode==2 || !$tableId) {
|
|
$res = Yii::$app->db->createCommand()->delete('{{%ybwm_shop_car}}', ['tableId' => $tableId, 'item' => $item, 'userId' => $this->wqData['userId'], 'storeId' => $result['storeId']])->execute();
|
|
}else{
|
|
$res = Yii::$app->db->createCommand()->delete('{{%ybwm_shop_car}}', ['tableId' => $tableId, 'item' => $item, 'storeId' => $result['storeId']])->execute();
|
|
}
|
|
if($res){
|
|
return $this->result(1, '成功');
|
|
}else{
|
|
return $this->result(2, '失败');
|
|
}
|
|
}
|
|
|
|
//外卖下订单
|
|
//外卖下订单
|
|
public function actionSaveOrder() {
|
|
$request = Yii::$app->request;
|
|
$result=axios_request();
|
|
$item=1;
|
|
$userId=$this->wqData['userId'];
|
|
$now=time();
|
|
$uniacid=$this->wqData['uniacid'];
|
|
if($request->isGet){
|
|
return $this->result(2, '请求异常');
|
|
}
|
|
$bind_data = $this->isBindPayChannel($result['storeId'],$uniacid,2);
|
|
if(!$bind_data){
|
|
return $this->result(2, '请求异常');
|
|
}
|
|
//判断单点时不配送
|
|
$carGoodsIdData=(new \yii\db\Query())
|
|
->select('goodsId')
|
|
->from('{{%ybwm_shop_car}}')
|
|
->where('tableId=:tableId AND userId=:userId AND storeId=:storeId AND item=:item',[':tableId'=>0,':userId'=>$userId,':item'=>$item,'storeId'=>$result['storeId']])
|
|
->groupBy('goodsId')
|
|
->all();
|
|
if(empty($carGoodsIdData)){
|
|
return $this->result(2, '请求异常,请重新下单!');
|
|
}
|
|
$carGoodsIds = array_column($carGoodsIdData,'goodsId');
|
|
$carGoodsIdsStr = implode(',',$carGoodsIds);
|
|
$carData=(new \yii\db\Query())
|
|
->from('{{%ybwm_shop_car}}')
|
|
->where('tableId=:tableId AND userId=:userId AND storeId=:storeId AND item=:item',[':tableId'=>0,':userId'=>$userId,':item'=>$item,'storeId'=>$result['storeId']])
|
|
->andWhere("goodsId in ({$carGoodsIdsStr})")
|
|
->all();
|
|
$storeInfo=(new \yii\db\Query())
|
|
->from('{{%ybwm_store}}')
|
|
->where('id=:id',[':id'=>$result['storeId']])
|
|
->one();
|
|
foreach ($carData as $v){
|
|
if($storeInfo['isMain']==1||$storeInfo['goodsModel']==3){
|
|
$goodsInfo=(new \yii\db\Query())->from('{{%ybwm_core_goods}}')->select('deleteAt,name,stock,price,display')->where(['id'=>$v['goodsId']])->one();
|
|
if($v['groupId']){
|
|
$stock=(new \yii\db\Query())
|
|
->from('{{%ybwm_good_specs}}')
|
|
->where(['id' => $v['groupId']])
|
|
->one()['SalesStock'];
|
|
}else{
|
|
$stock=$goodsInfo['stock'];
|
|
}
|
|
}else{
|
|
$goodsInfo=(new \yii\db\Query())->from('{{%ybwm_store_goods}} a')
|
|
->select('b.name,a.stock,a.price,b.deleteAt,a.display,a.data')
|
|
->leftJoin('{{%ybwm_core_goods}} b','a.goodsId=b.id')
|
|
->where(['a.goodsId'=>$v['goodsId'],'a.storeId'=>$result['storeId']])->one();
|
|
if($v['groupId']){
|
|
$specsList=json_decode($goodsInfo['data'],true)['specs'];
|
|
foreach ($specsList as $vo){
|
|
if($v['groupId']==$vo['id']){
|
|
$stock=$vo['SalesStock'];
|
|
}
|
|
}
|
|
}else{
|
|
$stock=$goodsInfo['stock'];
|
|
}
|
|
}
|
|
$count=$v['num'];
|
|
if($count>$stock){
|
|
echo json_encode(['code' => 2, 'msg' => '库存不足']);die;
|
|
}
|
|
// if($goodsInfo['stock']<1){
|
|
// return $this->result(2, '商品'.$goodsInfo['name'].'库存不足');
|
|
// }
|
|
if($goodsInfo['display']<>1){
|
|
return $this->result(2, '商品'.$goodsInfo['name'].'已下架');
|
|
}
|
|
if($goodsInfo['deleteAt']>0){
|
|
return $this->result(2, '商品'.$goodsInfo['name'].'已删除');
|
|
}
|
|
$checkPice = Good::checkPriceChange($v['id']);
|
|
if($checkPice['state'] == false){
|
|
return $this->result(2, $checkPice['message']);
|
|
}
|
|
}
|
|
if(count($carData)==1){
|
|
$goodsInfo=(new \yii\db\Query())->from('{{%ybwm_core_goods}}')->where(['id'=>$carData[0]['goodsId']])->one();
|
|
if($goodsInfo['aloneType']==1){
|
|
return $this->result(2, '单点时不配送');
|
|
}
|
|
}
|
|
|
|
$user=(new \yii\db\Query())
|
|
->from('{{%ybwm_member}}')
|
|
->where('id=:id',[':id'=>$userId])->one();
|
|
if ($user['isBlack'] == 1) {
|
|
return $this->result(2, '账号异常,请联系管理员!!!');
|
|
}
|
|
$userAddress=(new \yii\db\Query())
|
|
->from('{{%ybwm_user_address}}')
|
|
->where('id=:id',[':id'=>$result['userAddId']])->one();
|
|
if (!$userAddress AND $result['deliveryMode'] != 1) {
|
|
return $this->result(2, '用户地址有误');
|
|
}
|
|
$appType = $this->wqData['appType'];
|
|
$moneyArr=Order::getCarMoney($userId,$result['storeId']);
|
|
$originalMoney=$moneyArr['originalMoney'];
|
|
$data['vipDiscount']=bcsub($originalMoney,$moneyArr['goodsMoney'],2);//会员优惠金额
|
|
$data['originMoney'] = $moneyArr['goodsMoney']; //订单商品总价(不包含餐盒费)
|
|
//echo "商品总价".$data['originMoney'];
|
|
$takeOutSet=Config::getStoreSet('takeOutSet',$result['storeId']);
|
|
$takeOutSet['boxType']=$takeOutSet['boxType']?:1;
|
|
if($takeOutSet['boxType']==1){
|
|
$data['boxMoney'] = $takeOutSet['boxMoney']?:0; //订单餐盒费
|
|
}else{
|
|
$data['boxMoney'] = $moneyArr['boxMoney']?:0; //订单餐盒费
|
|
}
|
|
//echo "餐盒费".$data['boxMoney'];
|
|
$data['deliveryPreferential']=0;
|
|
if ($result['deliveryMode'] != 1) {
|
|
if(!$result['serviceTime']){
|
|
return $this->result(2, '送达时间不能为空');
|
|
}
|
|
$deliveryMoney = Order::getDeliveryMoney($userAddress['lat'],$userAddress['lng'],$result['storeId'],bcadd($data['originMoney'],$data['boxMoney'],2));
|
|
if ($deliveryMoney ===false) {
|
|
return $this->result(2, '不在配送范围内');
|
|
}
|
|
$data['deliveryMoney'] = $deliveryMoney['money']?:0; //订单运费
|
|
$data['deliveryPreferential'] = $deliveryMoney['discount']?:0; //配送费优惠
|
|
}else{
|
|
if(!$result['serviceTime']){
|
|
return $this->result(2, '自取时间不能为空');
|
|
}
|
|
}
|
|
//echo "配送费".$data['deliveryMoney'];
|
|
$data['num'] = $moneyArr['goodsNum']; //购买商品数量
|
|
|
|
|
|
$currency=Config::getSystemSet('currency',$this->wqData['uniacid']);
|
|
$reduce=Order::reduce($result['storeId'],$this->wqData['userId'],$data['originMoney']);//满减
|
|
$actGoods = (new \yii\db\Query())
|
|
->from('{{%ybwm_shop_car}}')
|
|
->where('userId=:userId AND storeId=:storeId AND item=:item AND tableId=0 AND discountType!=0', [':item'=>$item,':userId' => $userId, ':storeId' => $result['storeId']])->one();
|
|
if(in_array('1',$currency['goodsActivityRule']) AND $actGoods){
|
|
$reduce=[
|
|
'money'=>0,
|
|
'id'=>0
|
|
];
|
|
}
|
|
$data['preferentialMoney']=$reduce['money']?:0;
|
|
$data['preferentialId']=$reduce['id']?:0;
|
|
$moneyArr['goodsMoney']=bcsub($moneyArr['goodsMoney'],$reduce['money'],2);
|
|
// echo "减去满减之后的钱".$moneyArr['goodsMoney'];
|
|
$data['newMoney']=Order::newReduction($this->wqData['userId'],$result['storeId'])?:0;//新客
|
|
if($data['newMoney']>0){
|
|
$moneyArr['goodsMoney']=bcsub($moneyArr['goodsMoney'],$data['newMoney'],2)<=0?0.01:bcsub($moneyArr['goodsMoney'],$data['newMoney'],2);
|
|
//echo "减去新客之后的钱".$moneyArr['goodsMoney'];
|
|
}
|
|
$data['platformCouponPreferential']=0;
|
|
$data['couponPreferential']=0;
|
|
if($result['couponId']){
|
|
$data['couponId']=json_encode($result['couponId']);
|
|
if($result['couponId']['store']){
|
|
$storeCoupon=(new \yii\db\Query())
|
|
->select('type,money,discount,goodsType,goodsArr')
|
|
->from('{{%ybwm_user_coupon}}')
|
|
->where('id=:id AND state=2',[':id'=>$result['couponId']['store']])->one();
|
|
if(!$storeCoupon){
|
|
return $this->result(2, '优惠券不存在或已使用');
|
|
}
|
|
|
|
if($storeCoupon['type']==1){
|
|
$data['couponPreferential']=$storeCoupon['money'];
|
|
$moneyArr['goodsMoney']=bcsub($moneyArr['goodsMoney'],$storeCoupon['money'],2)>0?bcsub($moneyArr['goodsMoney'],$storeCoupon['money'],2):0.01;
|
|
}else{
|
|
// $data['couponPreferential']=bcsub($moneyArr['goodsMoney'],bcmul($storeCoupon['discount']/10,$moneyArr['goodsMoney'],2),2);
|
|
$data['couponPreferential']=Member::couponMoney($userId,$result['storeId'],$result['couponId']['store']);
|
|
$moneyArr['goodsMoney']=bcsub($moneyArr['goodsMoney'],$data['couponPreferential'],2)>0?bcsub($moneyArr['goodsMoney'],$data['couponPreferential'],2):0.01;
|
|
}
|
|
}
|
|
|
|
if($result['couponId']['platform']){
|
|
$platformCoupon=(new \yii\db\Query())
|
|
->select('type,money,discount,goodsType,goodsArr,subsidy')
|
|
->from('{{%ybwm_user_coupon}}')
|
|
->where('id=:id AND state=2',[':id'=>$result['couponId']['platform']])->one();
|
|
if(!$platformCoupon){
|
|
return $this->result(2, '优惠券不存在或已使用');
|
|
}
|
|
if($platformCoupon['subsidy']){
|
|
$data['subsidy']=$platformCoupon['subsidy'];//补贴
|
|
}
|
|
if($platformCoupon['type']==1){
|
|
$data['platformCouponPreferential']=$platformCoupon['money'];
|
|
$moneyArr['goodsMoney']=bcsub($moneyArr['goodsMoney'],$platformCoupon['money'],2)>0?bcsub($moneyArr['goodsMoney'],$platformCoupon['money'],2):0.01;
|
|
}else{
|
|
//$data['platformCouponPreferential']=bcsub($moneyArr['goodsMoney'],bcmul($platformCoupon['discount']/10,$moneyArr['goodsMoney'],2),2);
|
|
$data['platformCouponPreferential']=Member::couponMoney($userId,$result['storeId'],$result['couponId']['platform']);
|
|
$moneyArr['goodsMoney']=bcsub($moneyArr['goodsMoney'],$data['platformCouponPreferential'],2)>0?bcsub($moneyArr['goodsMoney'],$data['platformCouponPreferential'],2):0.01;
|
|
}
|
|
}
|
|
//echo "减去优惠券之后的钱".$moneyArr['goodsMoney'];
|
|
}
|
|
if($result['changeId']){
|
|
//换购
|
|
$change=(new \yii\db\Query())
|
|
->from('{{%ybwm_change_pay}}')
|
|
->where('id=:id',[':id'=>$result['changeId']])->one();
|
|
$changeGoods=json_decode($change['goodsArr'],true);
|
|
$changeMoney=0;
|
|
$changeData=[];
|
|
for($i=0;$i<count($changeGoods);$i++){
|
|
if($result['changeGoodsId']==$changeGoods[$i]['id']){
|
|
$changeGoods[$i]['stock']=$changeGoods[$i]['stock']-1;
|
|
$changeMoney=$changeGoods[$i]['money'];
|
|
$changeData['money']=$changeGoods[$i]['money'];
|
|
$changeData['goodsId']=$changeGoods[$i]['id'];
|
|
$changeData['attribute']='';
|
|
$changeData['data']='';
|
|
$changeData['material']='';
|
|
$changeData['name']=$changeGoods[$i]['name'];
|
|
$changeData['icon']=$changeGoods[$i]['icon'];
|
|
$changeData['num']=1;
|
|
$changeData['item']=$item;
|
|
$changeData['storeId']=$result['storeId'];
|
|
$changeData['uniacid']=$uniacid;
|
|
$changeData['createdAt']=time();
|
|
$changeData['isChange']=1;
|
|
break;
|
|
}
|
|
}
|
|
$data['originMoney']=bcadd($changeMoney,$data['originMoney'],2);//加完换购的钱
|
|
$moneyArr['goodsMoney']=bcadd($moneyArr['goodsMoney'],$changeMoney,2);
|
|
$data['changeId']=$result['changeId'];
|
|
}
|
|
// echo $moneyArr['goodsMoney'];die;
|
|
if($result['isOut']==1 AND $result['deliveryMode']==1){
|
|
$data['money']=bcadd($moneyArr['goodsMoney'],$data['deliveryMoney'],2);//订单支付金额
|
|
$data['boxMoney']=0;
|
|
}else{
|
|
$data['money']=bcadd(bcadd($moneyArr['goodsMoney'],$data['boxMoney'],2),$data['deliveryMoney'],2);//订单支付金额
|
|
}
|
|
|
|
//下单返红包
|
|
$grant=(new \yii\db\Query())
|
|
->from('{{%ybwm_order_grant_coupon}}')
|
|
->where('uniacid=:uniacid AND deleteAt=0 AND display=1 AND startTime<=:startTime AND endTime>:endTime AND orderMoney<=:orderMoney',[':orderMoney'=>$data['money'],':startTime'=>$now,':endTime'=>$now,':uniacid'=>$uniacid])
|
|
->andWhere([
|
|
'or',
|
|
['and',['storeType'=>1,'storeId'=>$result['storeId']]],
|
|
['storeType'=>2],
|
|
['and',['storeType'=>3],['like','storeArr',$result['storeId']]]
|
|
])->one();
|
|
|
|
|
|
if($grant){
|
|
$startTime=strtotime(date("Y-m-d")." 00:00:00");
|
|
$endTime=strtotime(date("Y-m-d")." 23:59:59");
|
|
$grantCount=(new \yii\db\Query())
|
|
->from('{{%ybwm_user_coupon}}')
|
|
->where('receiveType=4 AND couponId=:couponId AND createdAt>=:startTime AND createdAt<=:endTime',[':startTime'=>$startTime,':endTime'=>$endTime,':couponId'=>$grant['id']])
|
|
->count();
|
|
$userGrantCount=(new \yii\db\Query())
|
|
->from('{{%ybwm_user_coupon}}')
|
|
->where('userId=:userId AND receiveType=4 AND couponId=:couponId AND createdAt>=:startTime AND createdAt<=:endTime',[':startTime'=>$startTime,':endTime'=>$endTime,':userId'=>$userId,':couponId'=>$grant['id']])
|
|
->count();
|
|
if($grantCount<$grant['grantNum'] AND ($grant['limitType']==1 or $grant['maxNum']>$userGrantCount)){
|
|
$data['grantCouponId'] = $grant['id'];
|
|
$data['grantCouponName'] = $grant['name'];
|
|
}
|
|
}
|
|
$give=Order::give($result['storeId'],$data['money'],1);
|
|
$data['giveName']=$give?:"";
|
|
//echo "最终金额".$data['money'];die;
|
|
$data['origin'] = $appType;
|
|
$data['serviceAt'] = $result['serviceAt'];
|
|
$data['appointment'] = $result['appointment'] ?: 2;
|
|
|
|
|
|
$data['serviceTime'] = strtotime($result['serviceTime']);
|
|
$data['outTradeNo'] = '3409' . date("YmdHis") . randomAESKey(6);
|
|
$data['storeId'] = $result['storeId'];
|
|
$data['receiveCode'] = randomAESKey(4);
|
|
$data['pickCode'] = randomAESKey(4);
|
|
|
|
if ($result['deliveryMode'] == 1) {
|
|
$data['receivedTel'] = $result['userTel'];
|
|
$data['deliveryMode'] = 10;
|
|
|
|
} else {
|
|
$data['area'] = $userAddress['area'];
|
|
$data['receivedName'] = $userAddress['userName'];
|
|
$data['receivedAddress'] = $userAddress['address'] . $userAddress['details']; //收货地址
|
|
$data['receivedTel'] = $userAddress['userTel'];
|
|
$data['sex'] = $userAddress['sex'];
|
|
$storeSet = Config::getStoreSet('deliveryMode', $result['storeId']);
|
|
$data['deliveryMode'] = $storeSet['first']?:1;
|
|
}
|
|
|
|
$data['isOut'] = $result['isOut'];
|
|
$data['lat'] = $userAddress['lat'];
|
|
$data['lng'] = $userAddress['lng'];
|
|
$data['userNote'] = $result['userNote'];
|
|
$data['userDeleteAt'] = 0;
|
|
$data['userId'] = $userId;
|
|
$data['state'] = 1;
|
|
$data['uniacid'] = $uniacid;
|
|
$data['createdAt'] = $now;
|
|
// print_R($data);die;
|
|
if(!$data['originMoney']){
|
|
return $this->result(2, '数据异常');
|
|
}
|
|
$transaction = Yii::$app->db->beginTransaction(); //开始事务
|
|
try {
|
|
Yii::$app->db->createCommand()->insert('{{%ybwm_takeout_order}}', $data)->execute();
|
|
$orderId = Yii::$app->db->getLastInsertID();
|
|
$arr = (new \yii\db\Query())
|
|
->from('{{%ybwm_shop_car}}')
|
|
->where('userId=:userId AND storeId=:storeId AND item=:item AND tableId=0', [':item'=>$item,':userId' => $userId, ':storeId' => $result['storeId']])->all();
|
|
for ($j = 0; $j < count($arr); $j++) {
|
|
$orderGood = [];
|
|
$discountOrderGood = [];
|
|
$discountNum=$arr[$j]['discountNum'];//活动商品
|
|
$originalNum=$arr[$j]['num']-$arr[$j]['discountNum'];//原价商品
|
|
if($discountNum){
|
|
$discountOrderGood['groupId'] = $arr[$j]['groupId']?:0;
|
|
$discountOrderGood['goodsId'] = $arr[$j]['goodsId'];
|
|
$discountOrderGood['attribute'] = $arr[$j]['attribute']?:'';
|
|
$discountOrderGood['data'] = $arr[$j]['groupName']?:'';
|
|
$discountOrderGood['material'] = $arr[$j]['materialName']?:'';
|
|
$discountOrderGood['orderId'] = $orderId;
|
|
$discountOrderGood['name'] = $arr[$j]['name'];
|
|
$discountOrderGood['num'] = $discountNum;
|
|
$discountOrderGood['icon'] = $arr[$j]['icon'];
|
|
$discountOrderGood['storeId'] = $result['storeId'];
|
|
$discountOrderGood['uniacid'] = $uniacid;
|
|
$discountOrderGood['createdAt'] = $now;
|
|
$discountOrderGood['item'] = $item;
|
|
$discountOrderGood['isActivity'] = $arr[$j]['discountType']?:0;
|
|
$discountOrderGood['money'] = $arr[$j]['discountPrice'];
|
|
$discountOrderGoodsRes=Yii::$app->db->createCommand()->insert('{{%ybwm_order_goods}}', $discountOrderGood)->execute();
|
|
if(!$discountOrderGoodsRes){
|
|
$transaction->rollBack();//事务回滚
|
|
return $this->result(2, '下单失败','订单商品表插入失败');
|
|
}
|
|
$comboGoodsArr=(new \yii\db\Query())->from('{{%ybwm_core_goods}}')->select('comboGoodsArr')->where(['id'=>$arr[$j]['goodsId']])->one();
|
|
if($comboGoodsArr = json_decode($comboGoodsArr['comboGoodsArr'],true)){
|
|
foreach ($comboGoodsArr as $v){
|
|
$discountOrderGoodOne['groupId'] = 0;
|
|
$discountOrderGoodOne['goodsId'] = $v['id'];
|
|
$discountOrderGoodOne['attribute'] = '';
|
|
$discountOrderGoodOne['data'] = '';
|
|
$discountOrderGoodOne['material'] = '';
|
|
$discountOrderGoodOne['orderId'] = $orderId;
|
|
$discountOrderGoodOne['name'] = $v['name'];
|
|
$discountOrderGoodOne['num'] = $v['num'];
|
|
$discountOrderGoodOne['icon'] = $v['icon'];
|
|
$discountOrderGoodOne['storeId'] = $v['storeId'];
|
|
$discountOrderGoodOne['uniacid'] = $uniacid;
|
|
$discountOrderGoodOne['createdAt'] = $now;
|
|
$discountOrderGoodOne['item'] = $item;
|
|
$discountOrderGoodOne['isActivity'] = 0;
|
|
$discountOrderGoodOne['money'] = 0;
|
|
$discountOrderGoodsResOne=Yii::$app->db->createCommand()->insert('{{%ybwm_order_goods}}', $discountOrderGoodOne)->execute();
|
|
if(!$discountOrderGoodsResOne){
|
|
$transaction->rollBack();//事务回滚
|
|
return $this->result(2, '下单失败','订单商品表插入失败');
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if($originalNum){
|
|
$orderGood['groupId'] = $arr[$j]['groupId']?:0;
|
|
$orderGood['goodsId'] = $arr[$j]['goodsId'];
|
|
$orderGood['attribute'] = $arr[$j]['attribute']?:'';
|
|
$orderGood['data'] = $arr[$j]['groupName']?:'';
|
|
$orderGood['material'] = $arr[$j]['materialName']?:'';
|
|
$orderGood['orderId'] = $orderId;
|
|
$orderGood['name'] = $arr[$j]['name'];
|
|
$orderGood['num'] = $originalNum;
|
|
$orderGood['icon'] = $arr[$j]['icon'];
|
|
$orderGood['storeId'] = $result['storeId'];
|
|
$orderGood['uniacid'] = $uniacid;
|
|
$orderGood['createdAt'] = $now;
|
|
$orderGood['item'] = $item;
|
|
$orderGood['money'] = $arr[$j]['money'];
|
|
$orderGoodsRes=Yii::$app->db->createCommand()->insert('{{%ybwm_order_goods}}', $orderGood)->execute();
|
|
if(!$orderGoodsRes){
|
|
$transaction->rollBack();//事务回滚
|
|
return $this->result(2, '下单失败','订单商品表插入失败');
|
|
}
|
|
$comboGoodsArr=(new \yii\db\Query())->from('{{%ybwm_core_goods}}')->select('comboGoodsArr')->where(['id'=>$arr[$j]['goodsId']])->one();
|
|
if($comboGoodsArr = json_decode($comboGoodsArr['comboGoodsArr'],true)){
|
|
|
|
foreach ($comboGoodsArr as $v){
|
|
$discountOrderGoodOne['groupId'] = 0;
|
|
$discountOrderGoodOne['goodsId'] = $v['id'];
|
|
$discountOrderGoodOne['attribute'] = '';
|
|
$discountOrderGoodOne['data'] = '';
|
|
$discountOrderGoodOne['material'] = '';
|
|
$discountOrderGoodOne['orderId'] = $orderId;
|
|
$discountOrderGoodOne['name'] = $v['name'];
|
|
$discountOrderGoodOne['num'] = $v['num'];
|
|
$discountOrderGoodOne['icon'] = $v['icon'];
|
|
$discountOrderGoodOne['storeId'] = $v['storeId'];
|
|
$discountOrderGoodOne['uniacid'] = $uniacid;
|
|
$discountOrderGoodOne['createdAt'] = $now;
|
|
$discountOrderGoodOne['item'] = $item;
|
|
$discountOrderGoodOne['isActivity'] = 0;
|
|
$discountOrderGoodOne['money'] = 0;
|
|
$discountOrderGoodsResOne=Yii::$app->db->createCommand()->insert('{{%ybwm_order_goods}}', $discountOrderGoodOne)->execute();
|
|
if(!$discountOrderGoodsResOne){
|
|
$transaction->rollBack();//事务回滚
|
|
return $this->result(2, '下单失败','订单商品表插入失败');
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//换购
|
|
if($changeData){
|
|
$changeData['orderId']= $orderId;
|
|
$changeOrderGoods=Yii::$app->db->createCommand()->insert('{{%ybwm_order_goods}}', $changeData)->execute();
|
|
Yii::$app->db->createCommand()->update('{{%ybwm_change_pay}}', ['goodsArr'=>json_encode($changeGoods)],['id'=>$result['changeId']])->execute();
|
|
if(!$changeOrderGoods){
|
|
$transaction->rollBack();//事务回滚
|
|
return $this->result(2, '下单失败','换购商品插入失败');
|
|
}
|
|
}
|
|
if($result['couponId']){
|
|
if($result['couponId']['store']){
|
|
$useCoupon = Yii::$app->db->createCommand()->update('{{%ybwm_user_coupon}}', ['state'=>1,'useTime'=>$now], 'id=:id', ['id' =>$result['couponId']['store']])->execute();
|
|
if(!$useCoupon){
|
|
$transaction->rollBack();//事务回滚
|
|
return $this->result(2, '下单失败','优惠券修改失败');
|
|
}
|
|
}
|
|
if($result['couponId']['platform']){
|
|
$platformUseCoupon = Yii::$app->db->createCommand()->update('{{%ybwm_user_coupon}}', ['state'=>1,'useTime'=>$now], 'id=:id', ['id' =>$result['couponId']['platform']])->execute();
|
|
if(!$platformUseCoupon){
|
|
$transaction->rollBack();//事务回滚
|
|
return $this->result(2, '下单失败','优惠券修改失败');
|
|
}
|
|
}
|
|
}
|
|
|
|
Yii::$app->db->createCommand()->delete('{{%ybwm_shop_car}}',['item'=>$item,'userId'=>$this->wqData['userId'],'storeId'=>$result['storeId']])->execute();
|
|
$transaction->commit();//提交事务
|
|
}catch(Exception $e){// 如果有一条查询失败,则会抛出异常
|
|
file_put_contents('./error.txt',$e->getMessage());
|
|
$transaction->rollBack();//事务回滚
|
|
return $this->result(2, '下单失败','下单失败');
|
|
}
|
|
Order::reduceStock($orderId);
|
|
// WeChatPay::reporting($orderId);
|
|
return $this->result(1, '下单成功', $orderId);
|
|
}
|
|
|
|
//商家取餐时间
|
|
public function actionStoreTime(){
|
|
$result=axios_request();
|
|
$deliveryTime=Order::productionTime($result['storeId']);
|
|
if($result['userAddId']){
|
|
$userAddress=(new \yii\db\Query())
|
|
->from('{{%ybwm_user_address}}')
|
|
->where('id=:id',[':id'=>$result['userAddId']])->one();
|
|
$lat=$userAddress['lat'];
|
|
$lng=$userAddress['lng'];
|
|
$deliveryTime=Order::getDeliveryTime($lat,$lng,$result['storeId']);//配送时间
|
|
}
|
|
$weekarray = array("周日", "周一", "周二", "周三", "周四", "周五", "周六");
|
|
$storeSet=Config::getStoreSet("takeOutSet",$result['storeId']);
|
|
$timeType=$storeSet['timeType'];//1.24小时2.自定义时间
|
|
$timeArr=$storeSet['timeArr'];//时间数组
|
|
|
|
$advance=Config::getStoreSet("advanceSet",$result['storeId']);//预约设置
|
|
$advanceStartTime=$advance['startTime']?:0;//预定开始时间
|
|
$isOpen=Store::getStoreOutBusiness($result['storeId']);
|
|
$dayArr[]=array(
|
|
'dayTitle'=>"今天(".$weekarray[date("w")].")",
|
|
'day'=>date("Y-m-d"),
|
|
);
|
|
if(!in_array($result['orderType'],$advance['open'])){
|
|
$timeData[]=array(
|
|
'timeTitle'=>'现在下单'.date("H:i",time()+$deliveryTime*60),
|
|
'time'=>date("Y-m-d H:i",time()+$deliveryTime*60),
|
|
);
|
|
$dayArr[0]['time']=$timeData;
|
|
return $this->result(1,'成功',$dayArr);
|
|
}
|
|
$day=$advance['day']+$advanceStartTime;//提前预约时间
|
|
$interval=$advance['interval'];//间隔时间
|
|
// $restOpen=$advance['restOpen'];//休息时间约定1开启2关闭
|
|
for($i=1;$i<=$day;$i++){
|
|
if($i==1){
|
|
$dayArr[]=array(
|
|
'dayTitle'=>"明天(".$weekarray[date("w",strtotime("+1 day"))].")",
|
|
'day'=>date("Y-m-d",strtotime("+1 day")),
|
|
);
|
|
}else{
|
|
$dayArr[]=array(
|
|
'dayTitle'=>date("m-d",strtotime("+".$i." day"))."(".$weekarray[date("w",strtotime("+".$i." day"))].")",
|
|
'day'=>date("Y-m-d",strtotime("+".$i." day")),
|
|
);
|
|
}
|
|
}
|
|
|
|
|
|
if($timeType==1){
|
|
for($j=0;$j<count($dayArr);$j++){
|
|
$startTime=strtotime(date("Y-m-d 00:00:00"))+86400*$j;
|
|
$endTime=strtotime(date("Y-m-d 23:59:59"))+86400*$j;
|
|
$second = floor(( $endTime- $startTime) % 86400 / 60); //相差多少分钟
|
|
$timeNum = ceil($second / $interval);
|
|
$timeData=[];
|
|
if($j==0){
|
|
$timeData[]=array(
|
|
'timeTitle'=>'现在下单'.date("H:i",time()+$deliveryTime*60),
|
|
'time'=>date("Y-m-d H:i",time()+$deliveryTime*60),
|
|
);
|
|
}
|
|
for($t=1;$t<=$timeNum;$t++){
|
|
$time=$startTime+$t*$interval*60;
|
|
if($time>strtotime($timeData[0]['time']) AND $time<$endTime){
|
|
$timeData[]=array(
|
|
'timeTitle'=>date("H:i",$time),
|
|
'time'=>date("Y-m-d H:i",$time),
|
|
);
|
|
}
|
|
}
|
|
$dayArr[$j]['time']=$timeData;
|
|
}
|
|
}else{
|
|
for($j=0;$j<count($dayArr);$j++){
|
|
$timeData=[];
|
|
$now=strtotime(date("Y-m-d H:i",time()+$deliveryTime*60));
|
|
if($j==0 AND $isOpen==1){
|
|
$timeData[]=array(
|
|
'timeTitle'=>'现在下单'.date("H:i",time()+$deliveryTime*60),
|
|
'time'=>date("Y-m-d H:i",time()+$deliveryTime*60),
|
|
);
|
|
}
|
|
for($a=0;$a<count($timeArr);$a++){
|
|
$startTime=strtotime(date("Y-m-d ".$timeArr[$a]['startTime']))+86400*$j;
|
|
if($timeArr[$a]['ciri']===true){
|
|
$endTime=strtotime(date("Y-m-d ".$timeArr[$a]['endTime']))+86400+86400*$j;
|
|
}else{
|
|
$endTime=strtotime(date("Y-m-d ".$timeArr[$a]['endTime']))+86400*$j;
|
|
}
|
|
$second = floor(( $endTime- $startTime) % 86400 / 60); //相差多少分钟
|
|
$timeNum = ceil($second / $interval);
|
|
for($t=1;$t<=$timeNum;$t++){
|
|
$time=$startTime+$t*$interval*60;
|
|
if($time>$now AND $time<$endTime){
|
|
$timeData[]=array(
|
|
'timeTitle'=>date("H:i",$time),
|
|
'time'=>date("Y-m-d H:i",$time),
|
|
);
|
|
}
|
|
}
|
|
}
|
|
$dayArr[$j]['time']=$timeData;
|
|
}
|
|
}
|
|
if(!$dayArr[0]['time']){
|
|
unset($dayArr[0]);
|
|
}
|
|
if($advanceStartTime==1){
|
|
unset($dayArr[0]);
|
|
}
|
|
if($advanceStartTime==2){
|
|
unset($dayArr[0]);
|
|
unset($dayArr[1]);
|
|
}
|
|
// for($k=0;$k<=$startTime;$k++){
|
|
// unset($dayArr[$k]);
|
|
// }
|
|
$dayArr=array_values($dayArr);
|
|
return $this->result(1,'成功',$dayArr);
|
|
}
|
|
//订单设置集合
|
|
public function actionOrderSet(){
|
|
$set=Config::getSystemSet('currency',$this->wqData['uniacid']);
|
|
$fast=Config::getSystemSet('instoreSet',$this->wqData['uniacid']);
|
|
$set['instore']=$fast;
|
|
$set['confirmSwitch']=$set['confirmSwitch']?:2;
|
|
return $this->result(1,'成功',$set);
|
|
}
|
|
//我的订单
|
|
public function actionOrderList(){
|
|
$result=axios_request();
|
|
$page=$result['page']?:1;
|
|
$size=$result['size']?:10;
|
|
$table=(new \yii\db\Query())
|
|
->select(['a.id','a.appointment','a.selfCode', 'a.takeNo','a.money','a.num','a.deliveryMode','a.payMode','a.createdAt','a.state','a.userNote','s.name as storeName','s.icon as storeIcon','s.storeTel','a.storeId'])
|
|
->from('{{%ybwm_takeout_order}} as a')
|
|
->join('LEFT JOIN', '{{%ybwm_store}} as s', 's.id = a.storeId')
|
|
->where('a.uniacid=:uniacid AND a.deleteAt=0 AND a.userDeleteAt=0 AND a.userId=:userId',[':uniacid'=>$this->wqData['uniacid'],':userId'=>$this->wqData['userId']]);
|
|
if($result['type']==1){
|
|
$table->andWhere('a.state in (1,2,3,4,9,11)');
|
|
}else{
|
|
$table->andWhere('a.state in (5,6,7,8,10)');
|
|
}
|
|
$table->offset(($page - 1) * $size)->limit($size);
|
|
$res=$table->orderby('id desc')->all();
|
|
$set=Config::getSystemSet('currency',$this->wqData['uniacid']);
|
|
for($i=0;$i<count($res);$i++){
|
|
$goods=$table=(new \yii\db\Query())
|
|
->from('{{%ybwm_order_goods}}')
|
|
->where('orderId=:orderId AND item=1',[':orderId'=>$res[$i]['id']])->all();
|
|
$res[$i]['goodsArr']=$goods;
|
|
$res[$i]['isTk']=2;
|
|
if($res[$i]['state']==2 || (($res[$i]['state']==3 || $res[$i]['state']==4) AND $set['receivingRefund']==1) ){
|
|
$res[$i]['isTk']=1;
|
|
}
|
|
}
|
|
return $this->result(1,'成功',$res);
|
|
|
|
}
|
|
//订单详情
|
|
public function actionOrderInfo()
|
|
{
|
|
$result=axios_request();
|
|
$table=(new \yii\db\Query())
|
|
->select(['a.id','a.giveName','a.otherInfo','a.vipDiscount','a.grantCouponName','a.couponPreferential','a.platformCouponPreferential','a.deliveryPreferential','a.preferentialMoney','a.boxMoney','a.outTradeNo','a.deliveryMoney','a.newMoney','a.serviceAt','a.receivedName','a.receivedAddress','a.receivedTel','a.isOut','a.selfCode', 'a.takeNo','a.money','a.num','a.deliveryMode','a.payMode','a.payAt','a.createdAt','a.state','a.userNote','s.lat as storeLat','s.lng as storeLng','s.name as storeName','s.icon as storeIcon','s.address','s.storeTel','a.storeId'])
|
|
->from('{{%ybwm_takeout_order}} as a')
|
|
->join('LEFT JOIN', '{{%ybwm_store}} as s', 's.id = a.storeId')
|
|
->where('a.uniacid=:uniacid AND a.deleteAt=0 AND a.userDeleteAt=0 AND a.id=:id',[':uniacid'=>$this->wqData['uniacid'],':id'=>$result['orderId']]);
|
|
$res=$table->one();
|
|
$goods=(new \yii\db\Query())
|
|
->from('{{%ybwm_order_goods}}')
|
|
->where('orderId=:orderId AND item=1',[':orderId'=>$res['id']])->all();
|
|
$res['goodsArr']=$goods;
|
|
$set=Power::getPower($this->wqData['uniacid'],'makeName');
|
|
$yunbeiName=Power::getPower($this->wqData['uniacid'],'yunbeiName');
|
|
$otherInfo=json_decode($res['otherInfo'],true)?:[];
|
|
if($res['deliveryMode']==1){
|
|
$res['deliveryName']='商家配送';
|
|
}elseif($res['deliveryMode']==2){
|
|
$res['deliveryName']='达达配送';
|
|
$res['deliveryInfo']['riderName']=$otherInfo['dm_name']?:'';
|
|
$res['deliveryInfo']['riderTel']=$otherInfo['dm_mobile']?:'';
|
|
$status='';
|
|
if($otherInfo['order_status']==1){
|
|
$status= '待接单';
|
|
}elseif($otherInfo['status']==2){
|
|
$status= '待取货';
|
|
}elseif($otherInfo['status']==3){
|
|
$status= '配送中';
|
|
}elseif($otherInfo['status']==4){
|
|
$status= '已完成';
|
|
}elseif($otherInfo['status']==5){
|
|
$status= '已取消';
|
|
}elseif($otherInfo['status']==8){
|
|
$status= '指派单';
|
|
}elseif($otherInfo['status']==9){
|
|
$status= '妥投异常之物品返回中';
|
|
}elseif($otherInfo['status']==10){
|
|
$status= '妥投异常之物品返回完成';
|
|
}elseif($otherInfo['status']==100){
|
|
$status= '骑士到店';
|
|
}
|
|
$res['deliveryInfo']['stateMsg']=$status;
|
|
}elseif($res['deliveryMode']==3){
|
|
$res['deliveryName']='点我达配送';
|
|
|
|
$res['deliveryInfo']['riderName']=$otherInfo['content']['rider_name']?:'';
|
|
$res['deliveryInfo']['riderTel']=$otherInfo['content']['rider_mobile']?:'';
|
|
$status='';
|
|
if($otherInfo['order_status']=='created'){
|
|
$status= '已下单';
|
|
}elseif($otherInfo['status']=='dispatched'){
|
|
$status= '已接单';
|
|
}elseif($otherInfo['status']=='arrived'){
|
|
$status= '已到店';
|
|
}elseif($otherInfo['status']=='obtained'){
|
|
$status= '已离店';
|
|
}elseif($otherInfo['status']=='completed'){
|
|
$status= '已完成';
|
|
}elseif($otherInfo['status']=='abnormal'){
|
|
$status= '异常';
|
|
}elseif($otherInfo['status']=='canceled'){
|
|
$status= '已取消';
|
|
}
|
|
$res['deliveryInfo']['stateMsg']=$status;
|
|
}elseif($res['deliveryMode']==4){
|
|
$res['deliveryName']=$set['makeName']?:'码科配送';
|
|
$res['deliveryInfo']['riderName']=$otherInfo['rider_name']?:'';
|
|
$res['deliveryInfo']['riderTel']=$otherInfo['rider_mobile']?:'';
|
|
$status='';
|
|
if($otherInfo['status']=='loading'){
|
|
$status= '待付款';
|
|
}elseif($otherInfo['status']=='cancel'){
|
|
$status= '订单已取消';
|
|
}elseif($otherInfo['status']=='payed'){
|
|
$status= '待接单';
|
|
}elseif($otherInfo['status']=='wait_to_shop'){
|
|
$status= '待到店';
|
|
}elseif($otherInfo['status']=='accepted'){
|
|
$status= '待取件';
|
|
}elseif($otherInfo['status']=='geted'){
|
|
$status= '待收件';
|
|
}elseif($otherInfo['status']=='gotoed'){
|
|
$status= '待评价';
|
|
}elseif($otherInfo['status']=='completed'){
|
|
$status= '订单已完成';
|
|
}
|
|
$res['deliveryInfo']['stateMsg']=$status;
|
|
}elseif($res['deliveryMode']==5){
|
|
$res['deliveryName']='顺丰配送';
|
|
$res['deliveryInfo']['riderName']=$otherInfo['operator_name']?:'';
|
|
$res['deliveryInfo']['riderTel']=$otherInfo['operator_phone']?:'';
|
|
$res['deliveryInfo']['stateMsg']=$otherInfo['status_desc']?:'';
|
|
}elseif($res['deliveryMode']==6){
|
|
$res['deliveryName']='蜂鸟跑腿';
|
|
$res['deliveryInfo']['riderName']=$otherInfo['carrier_driver_name']?:'';
|
|
$res['deliveryInfo']['riderTel']=$otherInfo['carrier_driver_phone']?:'';
|
|
$status='';
|
|
if($otherInfo['order_status']==1){
|
|
$status= '已接单';
|
|
}elseif($otherInfo['status']==20){
|
|
$status= '已分配骑手';
|
|
}elseif($otherInfo['status']==80){
|
|
$status= '骑手已到店';
|
|
}elseif($otherInfo['status']==2){
|
|
$status= '配送中';
|
|
}elseif($otherInfo['status']==3){
|
|
$status= '已送达';
|
|
}elseif($otherInfo['status']==5){
|
|
$status= '系统拒单/配送异常';
|
|
}
|
|
$res['deliveryInfo']['stateMsg']=$status;
|
|
}elseif($res['deliveryMode']==7){
|
|
$res['deliveryName']='闪送';
|
|
$res['deliveryInfo']['riderName']=$otherInfo['courier']['name']?:'';
|
|
$res['deliveryInfo']['riderTel']=$otherInfo['courier']['mobile']?:'';
|
|
$res['deliveryInfo']['stateMsg']=$otherInfo['statusDesc']?:'';
|
|
}elseif($res['deliveryMode']==8){
|
|
$res['deliveryName']='UU跑腿';
|
|
$res['deliveryInfo']['riderName']=$otherInfo['courier']['driver_name']?:'';
|
|
$res['deliveryInfo']['riderTel']=$otherInfo['courier']['driver_mobile']?:'';
|
|
$res['deliveryInfo']['stateMsg']=$otherInfo['state_text']?:'';
|
|
}elseif($res['deliveryMode']==9){
|
|
$res['deliveryName']=$yunbeiName['yunbeiName']?:'云贝配送';
|
|
$res['deliveryInfo']['riderName']=$otherInfo['result']['riderName']?:'';
|
|
$res['deliveryInfo']['riderTel']=$otherInfo['result']['riderTel']?:'';
|
|
$res['deliveryInfo']['stateMsg']=$otherInfo['result']['stateMsg']?:'';
|
|
}elseif($res['deliveryMode']==10){
|
|
$res['deliveryName']='到店自提';
|
|
$set=Config::getSystemSet('takeOutSet',$this->wqData['uniacid']);
|
|
if($set['address']){
|
|
$res['address']=$set['address'];
|
|
}
|
|
}
|
|
return $this->result(1,'成功',$res);
|
|
}
|
|
//取消订单
|
|
public function actionCancelOrder(){
|
|
$request = Yii::$app->request;
|
|
$result=axios_request();
|
|
if($request->isGet){
|
|
return $this->result(2, '请求异常');
|
|
}
|
|
$res = Order::cancel($result['orderId']);
|
|
if($res===true){
|
|
return $this->result(1,'成功');
|
|
}else{
|
|
return $this->result(2,'失败',$res);
|
|
}
|
|
|
|
}
|
|
//催单ybwm_reminder
|
|
public function actionReminder(){
|
|
$request = Yii::$app->request;
|
|
$result=axios_request();
|
|
if($request->isGet){
|
|
return $this->result(2, '请求异常');
|
|
}
|
|
$set=Config::getSystemSet('currency',$this->wqData['uniacid']);
|
|
$reminder=$set['reminder']*60;//接单多少分钟后可以催单
|
|
$interval=$set['interval'];//催单间隔
|
|
$order=$table=(new \yii\db\Query())
|
|
->select('receiptAt,state,storeId,uniacid')
|
|
->from('{{%ybwm_takeout_order}}')
|
|
->where('id=:id',[':id'=>$result['orderId']])->one();
|
|
if($order['receiptAt']+$reminder>time() AND $set['reminderSwitch']==1){
|
|
$msg=($order['receiptAt']+$reminder-time())/60;
|
|
return $this->result(2,intval($msg)."分钟后才能催单");
|
|
}
|
|
$reminder=(new \yii\db\Query())
|
|
->from('{{%ybwm_reminder}}')
|
|
->where('userId=:userId AND orderId=:orderId AND createdAt>:createdAt',[':userId'=>$this->wqData['userId'],':orderId'=>$result['orderId'],':createdAt'=>time()-$interval*60])->one();
|
|
if($reminder AND $set['reminderSwitch']==1){
|
|
return $this->result(2,'催单间隔为'.$interval.'分钟');
|
|
}
|
|
$data['userId']=$this->wqData['userId'];
|
|
$data['orderId']=$result['orderId'];
|
|
$data['createdAt']=time();
|
|
$data['uniacid']=$this->wqData['uniacid'];
|
|
$data['storeId']=$order['storeId'];
|
|
$res = YII::$app->db->createCommand()->insert('{{%ybwm_reminder}}', $data)->execute();
|
|
if($res){
|
|
CallbackOrder::voiceType($order['uniacid'],$order['storeId'],'reminderOrder',$result['orderId']);
|
|
Order::takeoutVoice($result['orderId'], 'reminder');
|
|
Message::newReminderOrder($result['orderId']);
|
|
return $this->result(1,'成功');
|
|
}else{
|
|
return $this->result(2,'失败');
|
|
}
|
|
}
|
|
//申请退款
|
|
public function actionRefund(){
|
|
$request = Yii::$app->request;
|
|
$result=axios_request();
|
|
if($request->isGet){
|
|
return $this->result(2, '请求异常');
|
|
}
|
|
$order=$table=(new \yii\db\Query())
|
|
->select('state,storeId,uniacid')
|
|
->from('{{%ybwm_takeout_order}}')
|
|
->where('id=:id',[':id'=>$result['orderId']])
|
|
->andWhere(['in','state',[3,4]])
|
|
->one();
|
|
if(!$order){
|
|
return $this->result(2, '订单状态异常或不存在');
|
|
}
|
|
$set=Config::getSystemSet('currency',$this->wqData['uniacid']);
|
|
if($set['receivingRefund']==2 AND ($order['state']==3 || $order['state']==4 )){
|
|
return $this->result(2, '商家已接单不可退款');
|
|
}
|
|
$data['refundNo'] = date("YmdHis") . rand(111111, 999999);
|
|
$data['state'] =9;
|
|
$data['applyAt'] =time();
|
|
$data['beforeRefundState'] =$order['state'];
|
|
$res = YII::$app->db->createCommand()->update('{{%ybwm_takeout_order}}', $data, ['id'=>$result['orderId']])->execute();
|
|
if($res){
|
|
Order::reduceStock($result['orderId'],2);
|
|
CallbackOrder::voiceType($order['uniacid'],$order['storeId'],'chargebackOrder',$result['orderId']);
|
|
Message::storeSendSms($order['storeId'],2);//短信提醒
|
|
$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++){
|
|
Message::refundOrder($result['orderId'],$openIdList[$i]['openId']);
|
|
}
|
|
}
|
|
Order::takeoutVoice($result['orderId'], 'afterSale');
|
|
Printing::refundOrderPrint($result['orderId']);
|
|
return $this->result(1,'成功');
|
|
}else{
|
|
return $this->result(2,'失败');
|
|
}
|
|
}
|
|
|
|
//确认收货
|
|
public function actionReceiving(){
|
|
$request = Yii::$app->request;
|
|
$result=axios_request();
|
|
if($request->isGet){
|
|
return $this->result(2, '请求异常');
|
|
}
|
|
$order=(new \yii\db\Query())
|
|
->select('state,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, '订单状态异常或不存在');
|
|
}
|
|
$res=Order::receiving($result['orderId']);
|
|
if($res){
|
|
//确认收货已完成集点活动
|
|
Member::saveColletCoupon($result['orderId'],$order['uniacid'],$order['storeId'],$order['userId']);
|
|
return $this->result(1,'成功');
|
|
}else{
|
|
return $this->result(2,'失败');
|
|
}
|
|
}
|
|
//下单集合
|
|
public function actionOrderMuster() {
|
|
$result=axios_request();
|
|
$now=time();
|
|
$result['userId']=56;
|
|
$data['newReduction']=Order::newReduction($this->wqData['userId'],$result['storeId']);
|
|
$changePay=(new \yii\db\Query())
|
|
->select('name,id,goodsArr,limitType')
|
|
->from('{{%ybwm_change_pay}}')
|
|
->where('deleteAt=0 AND display=1 AND startTime<=:startTime AND endTime>:endTime',[':startTime'=>$now,':endTime'=>$now])
|
|
->andWhere(['uniacid'=>$this->wqData['uniacid']])
|
|
->andWhere(['or',['storeId'=>$result['storeId'],'storeType'=>1],['storeType'=>2],['and',['storeType'=>3],['like','storeArr',$result['storeId']]]])
|
|
->andWhere(['like','useType',1])
|
|
->one();
|
|
if($changePay){
|
|
//每个用户每天换购的次数
|
|
if($changePay['limitType']==2){
|
|
$startTime=strtotime(date('Y-m-d')." 00:00:00");
|
|
$endTime=strtotime(date('Y-m-d')." 23:59:59");
|
|
$orderInfo=(new \yii\db\Query())->from('{{%ybwm_takeout_order}} a')
|
|
->leftJoin('{{%ybwm_order_goods}} b','a.id=b.orderId')
|
|
->where(['not in','a.state',[1,7,8,10]])
|
|
->andWhere(['b.item'=>1,'isChange'=>1,'a.storeId'=>$result['storeId'],'a.userId'=>$result['userId']])
|
|
->andWhere(['>=','a.payAt',$startTime])
|
|
->andWhere(['<=','a.payAt',$endTime])
|
|
->one();
|
|
if($orderInfo){
|
|
$data['changePay']=[];
|
|
return $this->result(1,'成功',$data);
|
|
}
|
|
}
|
|
$goodsArr=json_decode($changePay['goodsArr'],true);
|
|
for($i=0;$i<count($goodsArr);$i++){
|
|
if($goodsArr[$i]['stock']<=0){
|
|
unset($goodsArr[$i]);
|
|
}
|
|
}
|
|
$changePay['goodsArr']=array_values($goodsArr);
|
|
|
|
}
|
|
$data['changePay']=$changePay?:[];
|
|
return $this->result(1,'成功',$data);
|
|
}
|
|
|
|
//下单有礼
|
|
public function actionPayPolitely(){
|
|
$result=axios_request();
|
|
|
|
if($result['orderType']==2){
|
|
//充值
|
|
$order=(new \yii\db\Query())
|
|
->select('money,payMode')
|
|
->from('{{%ybwm_user_balance_order}}')
|
|
->where('id=:id',[':id'=>$result['id']])->one();//订单
|
|
$data['money']=$order['money'];
|
|
$data['payModeName']=$this->payMode[$order['payMode']];
|
|
return $this->result(1,'成功',$data);
|
|
}
|
|
if($result['orderType']==3){
|
|
//积分商城
|
|
$order=(new \yii\db\Query())
|
|
->select('money,payMode')
|
|
->from('{{%ybwm_integral_order}}')
|
|
->where('id=:id',[':id'=>$result['id']])->one();//订单
|
|
$data['money']=$order['money'];
|
|
$data['payModeName']=$this->payMode[$order['payMode']];
|
|
return $this->result(1,'成功',$data);
|
|
}
|
|
if($result['orderType']==4){
|
|
//券包
|
|
$order=(new \yii\db\Query())
|
|
->select('money,payMode')
|
|
->from('{{%ybwm_roll_bag_order}}')
|
|
->where('id=:id',[':id'=>$result['id']])->one();//订单
|
|
$data['money']=$order['money'];
|
|
$data['payModeName']=$this->payMode[$order['payMode']];
|
|
return $this->result(1,'成功',$data);
|
|
}
|
|
if($result['orderType']==5){
|
|
//收银
|
|
$order=(new \yii\db\Query())
|
|
->select('money,payMode')
|
|
->from('{{%ybwm_cashier_order}}')
|
|
->where('id=:id',[':id'=>$result['id']])->one();//订单
|
|
$data['money']=$order['money'];
|
|
$data['payModeName']=$this->payMode[$order['payMode']];
|
|
return $this->result(1,'成功',$data);
|
|
}
|
|
if($result['orderType']==6 || $result['orderType']==7){
|
|
//店内
|
|
$order=(new \yii\db\Query())
|
|
->select('money,payMode')
|
|
->from('{{%ybwm_instore_order}}')
|
|
->where('id=:id',[':id'=>$result['id']])->one();//订单
|
|
$data['money']=$order['money'];
|
|
$data['payModeName']=$this->payMode[$order['payMode']];
|
|
return $this->result(1,'成功',$data);
|
|
}
|
|
if($result['orderType']==8){
|
|
//会员卡
|
|
$order=(new \yii\db\Query())
|
|
->select('money,payMode')
|
|
->from('{{%ybwm_user_vip_order}}')
|
|
->where('id=:id',[':id'=>$result['id']])->one();//订单
|
|
$data['money']=$order['money'];
|
|
$data['payModeName']=$this->payMode[$order['payMode']];
|
|
return $this->result(1,'成功',$data);
|
|
}
|
|
if($result['orderType']==9){
|
|
//预约
|
|
$order=(new \yii\db\Query())
|
|
->select('money,payMode')
|
|
->from('{{%ybwm_appointment}}')
|
|
->where('id=:id',[':id'=>$result['id']])->one();//订单
|
|
$data['money']=$order['money'];
|
|
$data['payModeName']=$this->payMode[$order['payMode']];
|
|
return $this->result(1,'成功',$data);
|
|
}
|
|
$order=(new \yii\db\Query())
|
|
->select('storeId,money,payMode')
|
|
->from('{{%ybwm_takeout_order}}')
|
|
->where('id=:id',[':id'=>$result['id']])->one();//订单
|
|
$record=(new \yii\db\Query())
|
|
->from('{{%ybwm_pay_politely_record}}')
|
|
->where('orderId=:orderId',[':orderId'=>$result['id']])->one();//领取记录
|
|
if(!$record){
|
|
$record['payPolitely']=2;
|
|
}else{
|
|
$record['payPolitely']=1;
|
|
}
|
|
$record['couponName']='';
|
|
if($record['coupon']){
|
|
$coupon=(new \yii\db\Query())
|
|
->from('{{%ybwm_coupon}}')
|
|
->where(['in','id',json_decode($record['coupon'],true)])->one();//领取记录
|
|
$record['couponName']=$coupon['name'];
|
|
}
|
|
$record['storeId']=$order['storeId'];
|
|
$record['money']=$order['money'];
|
|
$record['payModeName']=$this->payMode[$order['payMode']];
|
|
$record['balance']=$record['balance']?:0;
|
|
$record['integral']=$record['integral']?:0;
|
|
$record['growth']=$record['growth']?:0;
|
|
return $this->result(1,'成功',$record);
|
|
}
|
|
//换购
|
|
public function actionChangePay(){
|
|
$result=axios_request();
|
|
$now=time();
|
|
$changePay=(new \yii\db\Query())
|
|
->select('name,id,goodsArr')
|
|
->from('{{%ybwm_change_pay}}')
|
|
->where('storeId=:storeId AND deleteAt=0 AND display=1 AND startTime<=:startTime AND endTime>:endTime',[':startTime'=>$now,':endTime'=>$now,':storeId'=>$result['storeId']])
|
|
->one();
|
|
if(!$changePay){
|
|
return $this->result(1,'成功',[]);
|
|
}
|
|
if($changePay['limitType']==2){
|
|
$startTime=strtotime(date("Y-m-d")." 00:00:00");
|
|
$endTime=strtotime(date("Y-m-d")." 23:59:59");
|
|
$order=(new \yii\db\Query())
|
|
->from('{{%ybwm_takeout_order}}')
|
|
->where('storeId=:storeId AND payAt<=:startTime AND payAt>:endTime AND state not in (7,8,10)',[':startTime'=>$startTime,':endTime'=>$endTime,':storeId'=>$result['storeId']])
|
|
->count()?:0;
|
|
if($order>=$changePay['num']){
|
|
return $this->result(1,'成功',[]);
|
|
}
|
|
}
|
|
|
|
$changePay['goodsArr']=json_decode($changePay['goodsArr']);
|
|
// $goodsId=array_column($goodsArr,'id');
|
|
// $goods=(new \yii\db\Query())
|
|
// ->select('name,id,icon,price')
|
|
// ->from('{{%ybwm_core_goods}}')
|
|
// ->where(['in','id',$goodsId])
|
|
// ->all();
|
|
return $this->result(1,'成功',$changePay);
|
|
}
|
|
//制作时间
|
|
public function actionProductionTime(){
|
|
$result=axios_request();
|
|
$makeTime = Config::getStoreSet('makeTime', $result['storeId']);
|
|
$makeTime['time']=$makeTime['time']?:3;
|
|
$makeTime['unit']=$makeTime['unit']?:'件';
|
|
if($makeTime['type']==1){
|
|
//按单
|
|
$orderCount=(new \yii\db\Query())
|
|
->from('{{%ybwm_takeout_order}}')
|
|
->where('storeId=:storeId AND ((state=3 AND deliveryMode!=10) or (deliveryMode=10 AND state=4) )',[':storeId'=>$result['storeId']])
|
|
->count();
|
|
$allCount=(new \yii\db\Query())
|
|
->from('{{%ybwm_takeout_order}}')
|
|
->where('storeId=:storeId AND state not in (1,7) AND payAt>:startTime AND payAt<:endTime',[':endTime'=>time(),':startTime'=>time()-3600,':storeId'=>$result['storeId']])
|
|
->count();
|
|
$data['num']=$orderCount?:0;
|
|
$data['unit']='单';
|
|
}else{
|
|
//按件
|
|
$orderCount=(new \yii\db\Query())
|
|
->from('{{%ybwm_takeout_order}}')
|
|
->where('storeId=:storeId AND ((state=3 AND deliveryMode!=10) or (deliveryMode=10 AND state=4) )',[':storeId'=>$result['storeId']])
|
|
->sum('num');
|
|
$allCount=(new \yii\db\Query())
|
|
->from('{{%ybwm_takeout_order}}')
|
|
->where('storeId=:storeId AND state not in (1,7) AND payAt>:startTime AND payAt<:endTime',[':endTime'=>time(),':startTime'=>time()-3600,':storeId'=>$result['storeId']])
|
|
->sum('num');
|
|
$data['num']=$orderCount?:0;
|
|
$data['unit']=$makeTime['unit'];
|
|
}
|
|
$data['proportion']=bcmul(bcdiv($data['num'],$allCount,2),100,0)?:0;
|
|
if($data['proportion']>100){
|
|
$data['proportion']=100;
|
|
}
|
|
$data['open']=$makeTime['open']?:2;
|
|
$data['allCount']=$allCount;
|
|
return $this->result(1,'成功',$data);
|
|
}
|
|
//取餐码
|
|
public function actionMealCode(){
|
|
$result=axios_request();
|
|
$order=(new \yii\db\Query())
|
|
->select('selfCode')
|
|
->from('{{%ybwm_takeout_order}}')
|
|
->where('id=:id',[':id'=>$result['id']])
|
|
->one();
|
|
if(!$order){
|
|
return $this->result(1,'成功','');
|
|
}
|
|
//$res='https://qrcode.jp/qr?q='.$order['selfCode'].'&s=10';
|
|
$res='https://api.pwmqr.com/qrcode/create/?url='.$order['selfCode'];
|
|
return $this->result(1,'成功',$res);
|
|
}
|
|
//代付订单详情
|
|
public function actionReplaceOrder(){
|
|
$result=axios_request();
|
|
$table=(new \yii\db\Query())
|
|
->select(['a.id','a.giveName','a.otherInfo','a.vipDiscount','a.grantCouponName','a.couponPreferential','a.platformCouponPreferential','a.deliveryPreferential','a.preferentialMoney','a.boxMoney','a.outTradeNo','a.deliveryMoney','a.newMoney','a.serviceAt','a.receivedName','a.receivedAddress','a.receivedTel','a.isOut','a.selfCode', 'a.takeNo','a.money','a.num','a.deliveryMode','a.payMode','a.payAt','a.createdAt','a.state','a.userNote','s.name as storeName','s.icon as storeIcon','s.address','s.storeTel','a.storeId'])
|
|
->from('{{%ybwm_takeout_order}} as a')
|
|
->join('LEFT JOIN', '{{%ybwm_store}} as s', 's.id = a.storeId')
|
|
->where('a.uniacid=:uniacid AND a.deleteAt=0 AND a.userDeleteAt=0 AND a.id=:id',[':uniacid'=>$this->wqData['uniacid'],':id'=>$result['orderId']]);
|
|
$res=$table->one();
|
|
$goods=(new \yii\db\Query())
|
|
->from('{{%ybwm_order_goods}}')
|
|
->where('orderId=:orderId AND item=1',[':orderId'=>$res['id']])->all();
|
|
$res['goodsArr']=$goods;
|
|
return $this->result(1,'成功',$res);
|
|
}
|
|
//评价
|
|
public function actionEvaluate(){
|
|
$result=axios_request();
|
|
if(!$result['body']){
|
|
return $this->result(2,'评论内容不能为空');
|
|
}
|
|
$order=(new \yii\db\Query())
|
|
->select('storeId,outTradeNo')
|
|
->from('{{%ybwm_takeout_order}}')
|
|
->where('id=:id AND state=5',[':id'=>$result['orderId']])
|
|
->one();
|
|
if(!$order){
|
|
return $this->result(2,'订单不存在或已评价');
|
|
}
|
|
$userId=$this->wqData['userId'];
|
|
$uniacid=$this->wqData['uniacid'];
|
|
$set=Config::getSystemSet('currency',$uniacid);
|
|
if ($set['evaluateExamine']==2){
|
|
$data['state']=2;
|
|
}
|
|
$data['userId']=$userId;
|
|
$data['storeId']=$order['storeId'];
|
|
$data['outTradeNo']=$order['outTradeNo'];
|
|
$data['orderId']=$result['orderId'];
|
|
$data['body']=$result['body'];
|
|
$data['anonymous']=$result['anonymous'];
|
|
$data['star']=$result['star'];
|
|
$data['type']=1;
|
|
$data['uniacid']=$uniacid;
|
|
$data['createdAt']=time();
|
|
$data['media']= is_array($result['media']) ? json_encode($result['media']) : '';
|
|
$data['label']=json_encode($result['label'],JSON_UNESCAPED_UNICODE)?:'';
|
|
$res = Yii::$app->db->createCommand()->insert('{{%ybwm_comment}}', $data)->execute();
|
|
if($res){
|
|
Yii::$app->db->createCommand()->update('{{%ybwm_takeout_order}}', ['state'=>6],['id'=>$result['orderId']])->execute();
|
|
return $this->result(1,'成功');
|
|
}else{
|
|
return $this->result(2,'失败');
|
|
}
|
|
|
|
}
|
|
//标签列表
|
|
public function actionLabelList(){
|
|
$result=axios_request();
|
|
$storeId=$result['storeId'];
|
|
$statistics=$result['statistics'];
|
|
$data= (new \yii\db\Query())
|
|
->from('{{%ybwm_core_category}}')
|
|
->where('display=1 AND deleteAt=0 AND storeId=:storeId AND item=14',[':storeId'=>$storeId])->all();
|
|
if($statistics==1){
|
|
for($i=0;$i<count($data);$i++) {
|
|
$data[$i]['evaluateNum'] = (new \yii\db\Query())
|
|
->from('{{%ybwm_comment}}')
|
|
->where(['state' => 2, 'deleteAt' => 0, 'storeId' => $storeId])->andWhere(['like', 'label',$data[$i]['name']])->count()?:0;
|
|
}
|
|
}
|
|
return $this->result(1,'成功',$data);
|
|
}
|
|
//评价列表
|
|
public function actionEvaluateList(){
|
|
$result=axios_request();
|
|
$page=$result['page']?:1;
|
|
$storeId=$result['storeId'];
|
|
$label=$result['label'];
|
|
$state=$result['state'];
|
|
$num=($page-1)*10;
|
|
$limit=10;
|
|
$data= (new \yii\db\Query())
|
|
->select('a.anonymous,a.star,a.media,a.body,b.portrait,b.userName,from_unixtime(a.createdAt)createdAt,a.reply,a.state')
|
|
->from('{{%ybwm_comment}} a')
|
|
->leftJoin('{{%ybwm_member}} b','a.userId=b.id')
|
|
->where(['a.state'=>2,'a.deleteAt'=>0,'a.storeId'=>$storeId]);
|
|
if($label){
|
|
$data->andWhere(['like','a.label',$label]);
|
|
}
|
|
if($state==1){
|
|
$data->andWhere('star>3');
|
|
}
|
|
if($state==2){
|
|
$data->andWhere('media!=""');
|
|
}
|
|
if($state==3){
|
|
$data->andWhere('star<3');
|
|
}
|
|
$res['count']=$data->count();
|
|
$starStatistics=(new \yii\db\Query())
|
|
->select(['sum(if(star>3,1,0)) as good','sum(if(star=3,1,0)) as middle','sum(if(star<3,1,0)) as difference','avg(star) as average'])
|
|
->from('{{%ybwm_comment}}')
|
|
->where(['deleteAt'=>0,'uniacid'=>$this->wqData['uniacid'],'storeId'=>$storeId,'state'=>2])->one();
|
|
$res['good']=$starStatistics['good'];
|
|
$res['middle']=$starStatistics['middle'];
|
|
$res['difference']=$starStatistics['difference'];
|
|
$res['img']=(new \yii\db\Query())->from('{{%ybwm_comment}}')
|
|
->where('state=2 AND deleteAt=0 AND uniacid=:uniacid AND storeId=:storeId AND media!=""',[':uniacid'=>$this->wqData['uniacid'],':storeId'=>$storeId])->count();
|
|
$res['list']=$data->offset($num)
|
|
->limit($limit)
|
|
->orderBy('a.id desc')
|
|
->all();
|
|
for($i=0;$i<count($res['list']);$i++){
|
|
$res['list'][$i]['media']=json_decode($res['list'][$i]['media'],true);
|
|
}
|
|
return $this->result(1,'成功',$res);
|
|
}
|
|
|
|
|
|
|
|
}
|