request; $result=axios_request(); $item=3; if($request->isGet){ return $this->result(2, '请求异常'); } $now=time(); $userId=$this->wqData['userId']; $uniacid=$this->wqData['uniacid']; $appType = $this->wqData['appType']; $user=(new \yii\db\Query()) ->from('{{%ybwm_member}}') ->where('id=:id',[':id'=>$userId])->one(); if ($user['isBlack'] == 1) { return $this->result(2, '账号异常,请联系管理员!!!'); } $moneyData = Order::getCarMoney($userId, $result['storeId'],3); $originalMoney=$moneyData['originalMoney']; $data['vipDiscount']=bcsub($originalMoney,$moneyData['goodsMoney'],2);//会员优惠金额 $data['originMoney'] = $moneyData['goodsMoney']; //商品金额 $data['people'] = $result['people']; //人数 $data['goodsNum'] = $moneyData['goodsNum']; //商品数量 $data['outTradeNo'] = date("YmdHis") . rand(111111, 999999); $data['storeId'] = $result['storeId']; $data['userId'] = $userId; $data['state'] = 1; $data['origin'] = $appType; $data['isOut'] = $result['isOut']?:1;//1店内就餐2打包带走 if($data['isOut']==1){ $tablewareMoney=0; }else{ $fastSet = Config::getStoreSet('fastSet', $result['storeId']); $boxType=$fastSet['boxType']?:2; if($boxType==1){ //按单 $tablewareMoney=$fastSet['boxMoney']?:0; }else{ $tablewareMoney=$moneyData['boxMoney']; } } $data['newMoney']=Order::newReduction($this->wqData['userId'],$result['storeId'])?:0;//新客 $data['tablewareMoney'] =$tablewareMoney; //餐具费 $data['money'] = bcadd($data['originMoney'], $data['tablewareMoney'], 2); $reduce=Order::reduce($result['storeId'],$this->wqData['userId'],$data['originMoney'],3);//满减 $data['preferentialMoney']=$reduce['money']?:0; $data['money']=bcsub($data['money'],$reduce['money'],2);//减去满减 if($data['newMoney']>0){ $data['money']=bcsub($data['money'],$data['newMoney'],2)?:0.01; //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']; $data['money']=bcsub($data['money'],$storeCoupon['money'],2)>0?bcsub($data['money'],$storeCoupon['money'],2):0.01; }else{ $data['couponPreferential']=Member::couponMoney($userId,$result['storeId'],$result['couponId']['store'],3); $data['money']=bcsub($data['money'],$data['couponPreferential'],2)>0?bcsub($data['money'],$data['couponPreferential'],2):0.01; } } if($result['couponId']['platform']){ $platformCoupon=(new \yii\db\Query()) ->select('type,money,discount,goodsType,goodsArr') ->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']; $data['money']=bcsub($data['money'],$platformCoupon['money'],2)>0?bcsub($data['money'],$platformCoupon['money'],2):0.01; }else{ $data['platformCouponPreferential']=Member::couponMoney($userId,$result['storeId'],$result['couponId']['platform'],3); $data['money']=bcsub($data['money'],$data['platformCouponPreferential'],2)>0?bcsub($data['money'],$data['platformCouponPreferential'],2):0.01; } } } $data['uniacid'] = $uniacid; // $data['eatType'] = $result['eatType'] ?: 1;//1.餐前支付2餐后支付 $data['createdAt'] = $now; $data['userNote'] = $result['userNote']; //备注 $data['orderMode'] = 2; $transaction = Yii::$app->db->beginTransaction(); //开始事务 $res =Yii::$app->db->createCommand()->insert('{{%ybwm_instore_order}}', $data)->execute(); $orderId = Yii::$app->db->getLastInsertID(); if ($res) { $arr = (new \yii\db\Query()) ->from('{{%ybwm_shop_car}}') ->where('userId=:userId AND storeId=:storeId AND item=:item', [':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['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, '下单失败','订单商品表插入失败'); } } if($originalNum){ $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, '下单失败','订单商品表插入失败'); } } } Yii::$app->db->createCommand()->delete('{{%ybwm_shop_car}}',['item'=>$item,'userId'=>$this->wqData['userId'],'storeId'=>$result['storeId']])->execute(); 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, '下单失败','优惠券修改失败'); } } } WeChatPay::reporting($orderId,'CREATE_DEAL',3); $transaction->commit(); return $this->result(1, '成功', $orderId); } else { return $this->result(2, '失败'); } } //我的快餐订单 public function actionMyFastOrder() { $result=axios_request(); $page=$result['page']?:1; $size=$result['size']?:10; $state=$result['state']; $table=(new \yii\db\Query()) ->select(['a.id','a.money','a.callNo','a.goodsNum','a.isOut','a.payMode','a.createdAt','a.state','a.userNote','s.name as storeName','s.icon as storeIcon','s.storeTel','a.storeId']) ->from('{{%ybwm_instore_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 AND orderMode=2',[':uniacid'=>$this->wqData['uniacid'],':userId'=>$this->wqData['userId']]); if($state==1){ $table->andWhere('a.state=3'); } if($state==2){ $table->andWhere('a.state=4'); } $table->offset(($page - 1) * $size)->limit($size); $res=$table->orderby('id desc')->all(); for($i=0;$ifrom('{{%ybwm_order_goods}}') ->where('orderId=:orderId AND item=3',[':orderId'=>$res[$i]['id']])->all(); $res[$i]['goodsArr']=$goods; $res[$i]['isTk']=2; if($res[$i]['state']==2){ $res[$i]['isTk']=1; } } return $this->result(1,'成功',$res); } //快餐订单详情 public function actionFastOrderInfo() { $result=axios_request(); $id=$result['id']; $res=(new \yii\db\Query()) ->select(['a.vipDiscount','a.id','a.money','a.preferentialMoney','a.platformCouponPreferential','a.couponPreferential','a.outTradeNo','a.payMode','a.tablewareMoney','a.callNo','a.goodsNum','a.isOut','a.payMode','a.createdAt','a.state','a.userNote','s.name as storeName','s.icon as storeIcon','s.storeTel','s.address as storeAddress','s.lat as storeLat','s.lng as storeLng','a.storeId']) ->from('{{%ybwm_instore_order}} as a') ->join('LEFT JOIN', '{{%ybwm_store}} as s', 's.id = a.storeId') ->where('a.id=:id',[':id'=>$id])->one(); $goods=(new \yii\db\Query()) ->from('{{%ybwm_order_goods}}') ->where('orderId=:orderId AND item=3',[':orderId'=>$id])->all(); $res['goodsArr']=$goods; return $this->result(1,'成功',$res); } //快餐取消订单// public function actionRefundFast() { $request = Yii::$app->request; $result=axios_request(); if($request->isGet){ return $this->result(2, '请求异常'); } $res = Order::fastCancel($result['orderId']); if($res===true){ return $this->result(1,'成功'); }else{ return $this->result(2,'失败',$res); } } //桌子详情 public function actionTableInfo() { $result=axios_request(); $tableId=$result['tableId']; $list=(new \yii\db\Query()) ->select('a.id,a.manyType,a.userId,a.state,a.name,t.name as typeName,e.name as areaName,a.storeId') ->from('{{%ybwm_table}} as a') ->join('LEFT JOIN', '{{%ybwm_table_type}} as t', 't.id = a.typeId') ->join('LEFT JOIN', '{{%ybwm_table_area}} as e', 'e.id = a.areaId') ->where('a.id=:id',[':id'=>$tableId])->one(); $system = Config::getSystemSet('instoreSet', $this->wqData['uniacid']); $storeSet = Config::getStoreSet('instoreSet', $list['storeId']); $waitTime = $system['closeTime'] ?: 15; $time = time() - 60 * $waitTime; $clearTime = $storeSet['closeTime'] ?: 3; $clearTime = time() - 60 * $clearTime; $res =Yii::$app->db->createCommand()->update('{{%ybwm_instore_order}}', ['state' =>4],'eatType=1 AND tableId=:tableId AND state=1 AND createdAt<:time AND orderMode=1', ['tableId'=>$tableId,'time'=>$time])->execute(); if ($res AND $system['autoClose']==1) { Yii::$app->db->createCommand()->update('{{%ybwm_table}}', ['state' =>1,'userId'=>0],'id=:id', ['id'=>$tableId])->execute(); } $clearOrder=(new \yii\db\Query()) ->select('id,state,createdAt') ->from('{{%ybwm_instore_order}}') ->where('tableId=:tableId AND eatType=1',[':tableId'=>$tableId])->orderBy('id desc')->one(); if($clearOrder['state']==2 AND $clearOrder['createdAt']<$clearTime AND $storeSet['autoClose']==1){ Order::inStoreCheckOut($clearOrder['id']); } $systemDistance = $system['distance'] ?: 500; // $sql = "SELECT a.manyType,a.userId,a.state,a.number,a.storeId,b.name as typeName FROM " . tablename('ybo2o_table') . " a" . " left join " . tablename("ybo2o_table_type") . " b on b.id=a.typeId where a.id=" . $_GPC['id']; // $list = pdo_fetch($sql); if (!$list) { $this->result(1, '餐桌信息有误'); } $store =(new \yii\db\Query()) ->from('{{%ybwm_store}}') ->where('id=:id',[':id'=>$list['storeId']])->one(); if ($result['lat'] AND $system['distanceOpen'] == 1) { $distance = getDistance($result['lat'], $result['lng'], $store['lat'], $store['lng']); if ($distance * 100 > $systemDistance) { return $this->result(2, '距离商家太远,无法下单'); } } $order =(new \yii\db\Query()) ->from('{{%ybwm_instore_order}}') ->where('tableId=:tableId AND state in (1,2)',[':tableId'=>$tableId])->orderBy('id desc')->one(); $instoreSet = Config::getStoreSet('instoreSet', $list['storeId']); if($instoreSet['orderMode']==2){ $order=false; } if($order){ $goods=(new \yii\db\Query()) ->from('{{%ybwm_order_goods}}') ->where('orderId=:orderId AND item=2 AND addType=2',[':orderId'=>$order['id']])->all(); $order['goodsArr']=$goods; $order['storeSet'] = Config::getStoreSet('instoreSet', $res['storeId']); $addGoodsArr=[]; $addNum=(new \yii\db\Query()) ->select('addNum') ->from('{{%ybwm_order_goods}}') ->where('orderId=:orderId AND addType=1 AND item=2',[':orderId'=>$order['id']])->orderBy('addNum desc')->one(); if($addNum){ for($i=1;$i<=$addNum['addNum'];$i++){ $addGoods=(new \yii\db\Query()) ->from('{{%ybwm_order_goods}}') ->where('orderId=:orderId AND addNum=:addNum AND addType=1 AND item=2',[':orderId'=>$order['id'],':addNum'=>$i])->orderBy('id desc')->all(); $addGoodsArr[] = $addGoods; } } $order['addGoods'] = $addGoodsArr; } $list['orderInfo'] = $order; if (!$list['userId']) { Yii::$app->db->createCommand()->update('{{%ybwm_table}}', ['state' =>2,'userId'=>$this->wqData['userId']],'id=:id', ['id'=>$tableId])->execute(); } return $this->result(1, '成功', $list); } //堂食下订单 public function actionSaveInStoreOrder() { $request = Yii::$app->request; $result=axios_request(); //test数据 start $result['tableId'] = 21; $result['storeId'] = 14; $result['people'] = 1; $result['userNote'] = '微辣!微辣!微辣!'; $result['people'] = 1; $result['people'] = 1; //test数据 end $item=2; // if($request->isGet){ // return $this->result(2, '请求异常'); // } $tableTypeInfo=(new \yii\db\Query()) ->from('{{%ybwm_table}} a') ->leftJoin('{{%ybwm_table_type}} b','a.typeId=b.id') ->where(['a.id'=>$result['tableId']])->one(); if($result['people']>$tableTypeInfo['maxNum']){ return $this->result(2, '超过桌台类型人数限制'); } $tableTypeInfo=(new \yii\db\Query()) ->from('{{%ybwm_table}} a') ->leftJoin('{{%ybwm_table_type}} b','a.typeId=b.id') ->where(['a.id'=>$result['tableId']])->one(); if($result['people']>$tableTypeInfo['maxNum']){ return $this->result(2, '超过桌台类型人数限制'); } $now=time(); $userId=$this->wqData['userId']; $uniacid=$this->wqData['uniacid']; $appType=$this->wqData['appType']; $user=(new \yii\db\Query()) ->from('{{%ybwm_member}}') ->where('id=:id',[':id'=>$userId])->one(); if ($user['isBlack'] == 1) { return $this->result(2, '账号异常,请联系管理员!!!'); } $storeSet = Config::getStoreSet('instoreSet', $result['storeId']); $moneyData = Order::getCarMoney($userId, $result['storeId'],2,$result['tableId']); $originalMoney=$moneyData['originalMoney']; $data['vipDiscount']=bcsub($originalMoney,$moneyData['goodsMoney'],2);//会员优惠金额 $data['originMoney'] = $moneyData['goodsMoney']; //商品金额 $data['people'] = $result['people']; //人数 $data['goodsNum'] = $moneyData['goodsNum']; //商品数量 $data['outTradeNo'] = date("YmdHis") . rand(111111, 999999); $data['storeId'] = $result['storeId']; $data['userId'] = $userId; $data['state'] = 1; $data['origin'] = $appType; if($storeSet['payMode']==2 AND $storeSet['receiving']==1){ $data['state'] = 2; $data['receiptAt']=time(); } if($storeSet['serviceType']==2){//按桌台收取 $data['tablewareMoney'] = $storeSet['serviceMoney']; //桌台费 $data['tablewareNum']=1; }else{ //按人数收取 $data['tablewareNum']=$result['people']; $data['tablewareMoney'] = bcmul($storeSet['serviceMoney'], $result['people'], 2); //桌台费 } $data['money'] = bcadd($data['originMoney'], $data['tablewareMoney'], 2); $reduce=Order::reduce($result['storeId'],$this->wqData['userId'],$data['originMoney'],2);//满减 $data['preferentialMoney']=$reduce['money']?:0; $data['money']=0.01;//bcsub($data['money'],$reduce['money'],2);//减去满减 $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']; $data['money']=bcsub($data['money'],$storeCoupon['money'],2)>0?bcsub($data['money'],$storeCoupon['money'],2):0.01; }else{ $data['couponPreferential']=Member::couponMoney($userId,$result['storeId'],$result['couponId']['store'],2,$result['tableId']); $data['money']=bcsub($data['money'],$data['couponPreferential'],2)>0?bcsub($data['money'],$data['couponPreferential'],2):0.01; } } if($result['couponId']['platform']){ $platformCoupon=(new \yii\db\Query()) ->select('type,money,discount,goodsType,goodsArr') ->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']; $data['money']=bcsub($data['money'],$platformCoupon['money'],2)>0?bcsub($data['money'],$platformCoupon['money'],2):0.01; }else{ $data['platformCouponPreferential']=Member::couponMoney($userId,$result['storeId'],$result['couponId']['platform'],2,$result['tableId']); $data['money']=bcsub($data['money'],$data['platformCouponPreferential'],2)>0?bcsub($data['money'],$data['platformCouponPreferential'],2):0.01; } } } $tableInfo=(new \yii\db\Query()) ->select('a.name,t.name as typeName,e.name as areaName,t.minNum,t.maxNum') ->from('{{%ybwm_table}} as a') ->join('LEFT JOIN', '{{%ybwm_table_type}} as t', 't.id = a.typeId') ->join('LEFT JOIN', '{{%ybwm_table_area}} as e', 'e.id = a.areaId') ->where('a.id=:id',[':id'=>$result['tableId']])->one(); $data['uniacid'] = $uniacid; $data['eatType'] = $result['eatType'] ?: 1; $data['createdAt'] = time(); $data['regionName'] = $tableInfo['areaName']; //桌子区域类型 $data['typeName'] = $tableInfo['typeName'] . "(" . $tableInfo['minNum'] . "-" . $tableInfo['maxNum'] . ")"; //桌子分类名称 $data['number'] = $tableInfo['name']; //餐桌编号 $data['userNote'] = $result['userNote']; //备注 $data['tableId'] = $result['tableId']; //桌子id $transaction = Yii::$app->db->beginTransaction(); //开始事务 $res =Yii::$app->db->createCommand()->insert('{{%ybwm_instore_order}}', $data)->execute(); $orderId = Yii::$app->db->getLastInsertID(); if ($res) { if($storeSet['orderMode']==2){ $arr = (new \yii\db\Query()) ->from('{{%ybwm_shop_car}}') ->where('userId=:userId AND tableId=:tableId AND storeId=:storeId AND item=:item', [':userId'=>$userId,':item'=>$item,':tableId' => $result['tableId'], ':storeId' => $result['storeId']])->all(); }else{ $arr = (new \yii\db\Query()) ->from('{{%ybwm_shop_car}}') ->where('tableId=:tableId AND storeId=:storeId AND item=:item', [':item'=>$item,':tableId' => $result['tableId'], ':storeId' => $result['storeId']])->all(); } // if(!$arr){ // $transaction->rollBack();//事务回滚 // return $this->result(2, '下单失败','购物车商品异常'); // } $arr = [ [ 'discountNum' => 1, 'num' => 20, 'goodsId' => 115, 'groupId' => 0, 'money' => 0.01, 'groupName' => '家常炒菜1', 'attribute' => '', 'materialName' => '', 'name' => '家常炒菜', 'icon' => 'http://s883i38834.vicp.fun/web/static/yb_wm/8/2024/03/15/202403151651341480.png', 'discountType' => 0.00, 'discountPrice' => 0.00, ], ]; for ($j = 0; $j < count($arr); $j++) { $orderGood = []; $discountOrderGood = []; $discountNum=$arr[$j]['discountNum'];//活动商品数量 $originalNum=$arr[$j]['num']-$arr[$j]['discountNum'];//原价商品数量 if($discountNum){ $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['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($storeSet['orderMode']==2){ Yii::$app->db->createCommand()->delete('{{%ybwm_shop_car}}',['item'=>$item,'tableId'=>$result['tableId'],'userId'=>$this->wqData['userId'],'storeId'=>$result['storeId']])->execute(); }else{ Yii::$app->db->createCommand()->delete('{{%ybwm_shop_car}}',['item'=>$item,'tableId'=>$result['tableId'],'storeId'=>$result['storeId']])->execute(); } if($data['eatType'] == 2){ Order::reduceStock($orderId,1,2); Order::instoreVoice($orderId, 'inNewOrder'); Message::newInStoreOrder($orderId); } if ($data['eatType'] == 2 AND $data['state']==2) { Printing::orderPrint($orderId,2); Message::inStoreOrder($orderId); Yii::$app->db->createCommand()->update('{{%ybwm_table}}',['state'=>3],['id'=>$result['tableId']])->execute(); } 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, '下单失败','优惠券修改失败'); } } } WeChatPay::reporting($orderId,'CREATE_DEAL',3); $transaction->commit(); return $this->result(1, '成功', $orderId); } else { return $this->result(2, '失败'); } } //我的店内订单 public function actionMyInStoreOrder() { $result=axios_request(); $page=$result['page']?:1; $size=$result['size']?:10; $state=$result['state']; $table=(new \yii\db\Query()) ->select(['a.id','a.eatType','a.money','a.people','a.typeName','a.number','a.callNo','a.goodsNum','a.isOut','a.payMode','a.createdAt','a.state','a.userNote','s.name as storeName','s.icon as storeIcon','s.storeTel','a.storeId']) ->from('{{%ybwm_instore_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 AND a.orderMode=1',[':uniacid'=>$this->wqData['uniacid'],':userId'=>$this->wqData['userId']]); if($state==1){ $table->andWhere('a.state=1'); } if($state==2){ $table->andWhere('a.state=3'); } if($state==3){ $table->andWhere('a.state=4'); } $table->offset(($page - 1) * $size)->limit($size); $res=$table->orderby('id desc')->all(); for($i=0;$ifrom('{{%ybwm_order_goods}}') ->where('orderId=:orderId AND item=2',[':orderId'=>$res[$i]['id']])->all(); $res[$i]['goodsArr']=$goods; $res[$i]['isTk']=2; if($res[$i]['state']==2){ $res[$i]['isTk']=1; } } return $this->result(1,'成功',$res); } //订单详情 public function actionInStoreOrderInfo() { $result=axios_request(); $id=$result['id']; $res=(new \yii\db\Query()) ->select(['a.vipDiscount','a.id','a.preferentialMoney','a.platformCouponPreferential','a.couponPreferential','a.money','a.eatType','a.tableId','a.typeName','a.number','a.people','a.outTradeNo','a.payMode','a.tablewareMoney','a.callNo','a.goodsNum','a.isOut','a.payMode','a.createdAt','a.state','a.userNote','s.name as storeName','s.icon as storeIcon','s.storeTel','a.storeId']) ->from('{{%ybwm_instore_order}} as a') ->join('LEFT JOIN', '{{%ybwm_store}} as s', 's.id = a.storeId') ->where('a.id=:id',[':id'=>$id])->one(); $goods=(new \yii\db\Query()) ->from('{{%ybwm_order_goods}}') ->where('orderId=:orderId AND item=2 AND addType=2',[':orderId'=>$id])->all(); $res['goodsArr']=$goods; $res['storeSet'] = Config::getStoreSet('instoreSet', $res['storeId']); $addGoodsArr=[]; $addNum=(new \yii\db\Query()) ->select('addNum') ->from('{{%ybwm_order_goods}}') ->where('orderId=:orderId AND addType=1 AND item=2',[':orderId'=>$id])->orderBy('addNum desc')->one(); if($addNum){ for($i=1;$i<=$addNum['addNum'];$i++){ $addGoods=(new \yii\db\Query()) ->from('{{%ybwm_order_goods}}') ->where('orderId=:orderId AND addNum=:addNum AND addType=1 AND item=2',[':orderId'=>$id,':addNum'=>$i])->orderBy('id desc')->all(); $addGoodsArr[] = $addGoods; } } $res['addGoods'] = $addGoodsArr; $system = Config::getStoreSet('instoreSet',$res['storeId']); $res['onLine']=$system['onLine']; return $this->result(1,'成功',$res); } //获取活码详细 public function actionGetCodeInfo() { $result=axios_request(); $data=$result['data']; if($data['type']=='fastOrder'){ //快餐 return $this->result(1,'成功',['type'=>$data['type'],'storeId'=>$data['id']]); } if($data['type']=='cashier'){ //收银 return $this->result(1,'成功',['type'=>$data['type'],'storeId'=>$data['id']]); } if($data['type']=='goods'){ //点餐页 return $this->result(1,'成功',['type'=>$data['type'],'storeId'=>$data['id']]); } //桌子 $code=(new \yii\db\Query()) ->select('data') ->from('{{%ybwm_code}}') ->where('id=:id',[':id'=>$data['id']])->one(); if(!$code['data']){ return $this->result(2,'该码未绑定参数'); } return $this->result(1,'成功',json_decode($code['data'],true)); } //判断购物车必选品 public function actionShopCarRequire() { $result=axios_request(); $item=$result['item']; if($item==1){ $goodsType=1; }else{ $goodsType=2; } $tableId=$result['tableId']?:0; $userId=$this->wqData['userId']; $typeId=Good::getGoodSData($this->wqData['uniacid'],$result['storeId'],$this->wqData['userId'],$goodsType,1); $requireId=array_column($typeId,'id'); $storeModeSet = Config::getStoreSet($result['storeId'], $this->wqData['uniacid']); $multiplayerMode = $storeModeSet['orderMode']; for($i=0;$ifrom('{{%ybwm_shop_car}} as a') ->join('LEFT JOIN', '{{%ybwm_core_goods}} as s', 's.id = a.goodsId') ->where(['a.tableId'=>$tableId,'a.item'=>$item,'s.typePid'=>$requireId[$i],'a.userId' => $userId,'a.storeId' => $result['storeId']]) ->one(); }else{ $res=(new \yii\db\Query()) ->from('{{%ybwm_shop_car}} as a') ->join('LEFT JOIN', '{{%ybwm_core_goods}} as s', 's.id = a.goodsId') ->where(['a.tableId'=>$tableId,'a.item'=>$item,'s.typePid'=>$requireId[$i],'a.storeId' => $result['storeId']]) ->one(); } if(!$res){ return $this->result(2,'请添加必选品'); } } return $this->result(1,'成功'); } //我的购物车 public function actionMyInStoreCar() { $result=axios_request(); $tableId=$result['tableId']?:0; $uniacid=$this->wqData['uniacid']; $userId=$this->wqData['userId']; $time = time() - 60 * 60 * 2; Yii::$app->db->createCommand()->delete('{{%ybwm_shop_car}}', 'tableId=:tableId AND storeId=:storeId AND item=2 AND createdAt<:createdAt',[':tableId' => $tableId, ':storeId' => $result['storeId'], ':createdAt' => $time])->execute(); $storeModeSet = Config::getStoreSet($result['storeId'], $uniacid); $multiplayerMode = $storeModeSet['orderMode']; if ($multiplayerMode == 2) { //拼桌模式 $userList=(new \yii\db\Query()) ->select('userId') ->from('{{%ybwm_shop_car}}') ->where(['tableId' => $tableId,'userId'=>$userId, 'storeId' => $result['storeId'], 'item' =>2]) ->groupBy('userId') ->all(); } else { $userList=(new \yii\db\Query()) ->select('userId') ->from('{{%ybwm_shop_car}}') ->where(['tableId' => $tableId,'storeId' => $result['storeId'], 'item' =>2]) ->groupBy('userId') ->all(); } $table=(new \yii\db\Query()) ->select('a.name,t.name as typeName,a.userId,a.state,a.storeId') ->from('{{%ybwm_table}} as a') ->join('LEFT JOIN', '{{%ybwm_table_type}} as t', 't.id = a.typeId') ->where(['a.id'=>$tableId]) ->one(); if ($table['userId'] == 0) { Yii::$app->db->createCommand()->delete('{{%ybwm_table}}', ['state' => 2, 'userId' => $userId],['id' => $tableId])->execute(); } $data['table'] = $table; $data['money'] = 0; for ($u = 0; $u < count($userList); $u++) { $data2 = []; $user=(new \yii\db\Query()) ->select('userName,portrait') ->from('{{%ybwm_member}}') ->where(['id'=>$userList[$u]['userId']]) ->one(); $data2['userName'] = $user['userName']; $data2['portrait'] = $user['portrait']; $list =(new \yii\db\Query()) ->from('{{%ybwm_shop_car}}') ->where(['userId' => $userList[$u]['userId'], 'tableId' => $tableId, 'storeId' => $result['storeId'], 'item' => 2]) ->all(); for ($i = 0; $i < count($list); $i++) { $data['money'] = (float) bcadd(bcmul($list[$i]['money'], $list[$i]['num'], 2), $data['money'], 2); // $goodsArr['name'] = $list[$i]['name']; // $goodsArr['goodsId'] = $list[$i]['goodsId']; // $goodsArr['groupId'] = $list[$i]['groupId']; // $goodsArr['num'] = $list[$i]['num']; // $goodsArr['price'] = $list[$i]['money']; // $goodsArr['icon'] = $list[$i]['icon']; // $goodsArr['groupName'] = $list[$i]['groupName']; // $goodsArr['material'] = $list[$i]['material']; // $goodsArr['attribute'] = $list[$i]['attribute']; // $goodsArr['isSpec'] = $list[$i]['goodsId'] ? 1 : 2; // $goodsArr['id'] = $list[$i]['id']; $data2['goodsArr'][] = $list[$i]; } $data['userInfo'][] = $data2; } return $this->result(1,'成功',$data); } //关闭堂食订单 public function actionCloseInOrder() { $result=axios_request(); $order = (new \yii\db\Query()) ->from('{{%ybwm_instore_order}}') ->where(['id' => $result['orderId']]) ->one(); if ($order['state'] != 1) { return $this->result(2, '订单状态异常'); } $res =Order::inStoreClose($result['orderId']); //$res =Yii::$app->db->createCommand()->update('{{%ybwm_instore_order}}',['state'=>4], ['id' => $result['orderId']])->execute(); if ($res) { return $this->result(1, '成功'); } else { return $this->result(2, '失败'); } } //加菜 public function actionAddFood(){ $request = Yii::$app->request; $result=axios_request(); $userId=$this->wqData['userId']; $uniacid=$this->wqData['uniacid']; $now=time(); if($request->isGet){ return $this->result(2, '请求异常'); } $order =(new \yii\db\Query()) ->from('{{%ybwm_instore_order}}') ->where(['id' => $result['orderId']]) ->one(); $orderGoods =(new \yii\db\Query()) ->select('addNum') ->from('{{%ybwm_order_goods}}') ->where(['orderId' => $result['orderId'],'addType'=>1,'item'=>2]) ->orderBy('addNum desc') ->one(); $addNum=$orderGoods['addNum']?:0; if($order['state'] > 2) { return $this->result(2, '订单状态异常'); } if($order['eatType'] == 1) { return $this->result(2, '餐前支付不允许加菜'); } $moneyData = Order::getCarMoney($userId, $order['storeId'],2,$order['tableId']); $arr = (new \yii\db\Query()) ->from('{{%ybwm_shop_car}}') ->where('tableId=:tableId AND userId=:userId AND storeId=:storeId AND item=:item', [':tableId'=>$order['tableId'],':item'=>2,':userId' => $userId, ':storeId' => $order['storeId']])->all(); // var_dump($arr);die; $goodsIdArr = []; for ($j = 0; $j < count($arr); $j++) { $orderGood = []; $orderGood['goodsId'] = $arr[$j]['goodsId']; $orderGood['attribute'] = $arr[$j]['attribute']?:''; $orderGood['data'] = $arr[$j]['groupName']?:''; $orderGood['material'] = $arr[$j]['materialName']?:''; $orderGood['orderId'] = $result['orderId']; $orderGood['name'] = $arr[$j]['name']; $orderGood['num'] = $arr[$j]['num']; $orderGood['icon'] = $arr[$j]['icon']; $orderGood['storeId'] = $order['storeId']; $orderGood['uniacid'] = $uniacid; $orderGood['item'] = 2; $orderGood['createdAt'] = $now; $orderGood['money'] = $arr[$j]['money']; $orderGood['addType'] = 1; $orderGood['addNum'] = $addNum+1; Yii::$app->db->createCommand()->insert('{{%ybwm_order_goods}}', $orderGood)->execute(); $goodsIdArr[]= Yii::$app->db->getLastInsertID(); $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'] = $result['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'] = 2; $discountOrderGoodOne['isActivity'] = 0; $discountOrderGoodOne['money'] = 0; $discountOrderGoodsResOne=Yii::$app->db->createCommand()->insert('{{%ybwm_order_goods}}', $discountOrderGoodOne)->execute(); if(!$discountOrderGoodsResOne){ return $this->result(2, '下单失败','订单商品表插入失败'); } $goodsIdArr[]= Yii::$app->db->getLastInsertID(); } } } Printing::instoreOrderPrint($order['id'],$support=2,$goodsIdArr); $storeSet = Config::getStoreSet('instoreSet', $order['storeId']); if($storeSet['orderMode']==2){ Yii::$app->db->createCommand()->delete('{{%ybwm_shop_car}}',['item'=>2,'tableId'=>$order['tableId'],'userId'=>$this->wqData['userId'],'storeId'=>$order['storeId']])->execute(); }else{ Yii::$app->db->createCommand()->delete('{{%ybwm_shop_car}}',['item'=>2,'tableId'=>$order['tableId'],'storeId'=>$order['storeId']])->execute(); } Yii::$app->db->createCommand()->update('{{%ybwm_instore_order}}',['money'=>new \yii\db\Expression('money +'.$moneyData['goodsMoney']),'originMoney'=>new \yii\db\Expression('originMoney +'.$moneyData['goodsMoney']),'goodsNum'=>new \yii\db\Expression('goodsNum +'.$moneyData['goodsNum'])],['id'=>$result['orderId']])->execute(); // pdo_update('ybo2o_instore_order', array('money +=' => $moneyData['goodsMoney'], 'goodsNum +=' => $moneyData['goodsNum']), array('id' => $result['orderId'])); return $this->result(1, '成功', $result['orderId']); } }