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;$ifrom('{{%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'现在下单'.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'现在下单'.date("H:i",time()+$deliveryTime*60), 'time'=>date("Y-m-d H:i",time()+$deliveryTime*60), ); } for($a=0;$a$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;$ifrom('{{%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;$iresult(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;$iresult(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;$ifrom('{{%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;$iresult(1,'成功',$res); } }