shop_id=$this->storeId?:Store::getMainStore($this->wqData['uniacid'])['id']; $this->shop_id=$this->shop_id?:0; $request = Yii::$app->request; if ($request->isPost) { if (!$this->shop_id) { return $this->result(3, '无效的门店,请先添加商店'); die; } } } public function actionGetFinanceData(){ $result=axios_request(); $uniacid=$this->wqData['uniacid']; $storeId=$result['storeId']?$result['storeId']:$this->shop_id; $startTime=strtotime(date('Y-m-d 00:00:00',strtotime($result['startTime']))); $endTime=strtotime(date('Y-m-d 23:59:59',strtotime($result['endTime']))); $payMoney=(new \yii\db\Query()) ->select(['sum(money) as money']) ->from('{{%ybwm_takeout_order}}') ->where('uniacid=:uniacid',[':uniacid'=>$uniacid]) ->andWhere(['in','state',[2,3,4,5,6,9]]) ->andWhere('payAt>=:startTime AND payAt<=:endTime',[':startTime'=>$startTime,':endTime'=>$endTime]) ->andWhere('storeId=:storeId',['storeId'=>$storeId])->one()['money']?:0.00; //微信支付 $wxPay=(new \yii\db\Query()) ->select(['sum(money) as money']) ->from('{{%ybwm_takeout_order}}') ->where('uniacid=:uniacid',[':uniacid'=>$uniacid]) ->andWhere(['in','state',[2,3,4,5,6,9]]) ->andWhere('payAt>=:startTime AND payAt<=:endTime',[':startTime'=>$startTime,':endTime'=>$endTime]) ->andWhere('storeId=:storeId',['storeId'=>$storeId])->andWhere(['payMode'=>1])->one()['money']?:0.00; //余额支付 $balance=(new \yii\db\Query()) ->select(['sum(money) as money']) ->from('{{%ybwm_takeout_order}}') ->where('uniacid=:uniacid',[':uniacid'=>$uniacid]) ->andWhere(['in','state',[2,3,4,5,6,9]]) ->andWhere('payAt>=:startTime AND payAt<=:endTime',[':startTime'=>$startTime,':endTime'=>$endTime]) ->andWhere('storeId=:storeId',['storeId'=>$storeId])->andWhere(['payMode'=>5])->one()['money']?:0.00; //支付订单数 $payNum=Statistics::getPayNum($uniacid,$storeId,$startTime,$endTime); //外卖订单 $outOrderNum=(new \yii\db\Query()) ->from('{{%ybwm_takeout_order}}') ->where('uniacid=:uniacid',[':uniacid'=>$uniacid]) ->andWhere(['in','state',[2,3,4,5,6,9]]) ->andWhere('payAt>=:startTime AND payAt<=:endTime',[':startTime'=>$startTime,':endTime'=>$endTime]) ->andWhere('storeId=:storeId',['storeId'=>$storeId]) ->andWhere(['<>','deliveryMode',10])->count(); //自提订单 $inOrderNum=(new \yii\db\Query()) ->from('{{%ybwm_takeout_order}}') ->where('uniacid=:uniacid',[':uniacid'=>$uniacid]) ->andWhere(['in','state',[2,3,4,5,6,9]]) ->andWhere('payAt>=:startTime AND payAt<=:endTime',[':startTime'=>$startTime,':endTime'=>$endTime]) ->andWhere('storeId=:storeId',['storeId'=>$storeId]) ->andWhere(['deliveryMode'=>10])->count(); //支付人数 $userCount=Statistics::getPayPeople($uniacid,$storeId,$startTime,$endTime); //浏览量 $viewsCount=Statistics::getViews($uniacid,$storeId,$startTime,$endTime); //访客量 $visitCount=Statistics::getVisitCount($uniacid,$storeId,$startTime,$endTime); //总退款金额 $refundQuery=(new \yii\db\Query()) ->select('sum(money)money') ->from('{{%ybwm_takeout_order}}') ->where('uniacid=:uniacid',[':uniacid'=>$uniacid]) ->andWhere(['state'=>10]) ->andWhere('payAt>=:startTime AND payAt<=:endTime',[':startTime'=>$startTime,':endTime'=>$endTime]) ->andWhere('storeId=:storeId',['storeId'=>$storeId]); $refundMoney=$refundQuery->one()['money']?:0.00; //用户退款 $userRefundMoney=(new \yii\db\Query()) ->select('sum(money)money') ->from('{{%ybwm_takeout_order}}') ->where('uniacid=:uniacid',[':uniacid'=>$uniacid]) ->andWhere(['state'=>10]) ->andWhere('payAt>=:startTime AND payAt<=:endTime',[':startTime'=>$startTime,':endTime'=>$endTime]) ->andWhere('storeId=:storeId',['storeId'=>$storeId]) ->andWhere(['refundType'=>3])->count()?:0; //商家退款 $storeRefundMoney=(new \yii\db\Query()) ->select('sum(money)money') ->from('{{%ybwm_takeout_order}}') ->where('uniacid=:uniacid',[':uniacid'=>$uniacid]) ->andWhere(['state'=>10]) ->andWhere('payAt>=:startTime AND payAt<=:endTime',[':startTime'=>$startTime,':endTime'=>$endTime]) ->andWhere('storeId=:storeId',['storeId'=>$storeId]) ->andWhere(['in','refundType',[1,4]])->count()?:0.00; //客单价 $unitPrice=Statistics::getUnitPrice($uniacid,$storeId,$startTime,$endTime); //下单转化率 $singleRate=bcmul(Statistics::getConversion($uniacid,$storeId,$startTime,$endTime),100,2).'%'; //下单跳失率 $jumpRate=bcmul(bcdiv(bcsub($visitCount,$userCount,2),$visitCount,2),100,2).'%'; $startTime=strtotime(date('Y-m-d 00:00:00',bcsub($endTime,14*24*60*60))); $payMoneyArr=Bill::billDataByDay($uniacid,$startTime,$endTime,$storeId); $countArr=Bill::billDataByDay($uniacid,$startTime,$endTime,$storeId,2); $cashierTable=(new \yii\db\Query()) ->from('{{%ybwm_cashier_order}}') ->where('uniacid=:uniacid',[':uniacid'=>$uniacid]) ->andWhere(['in','state',[2]]) ->andWhere('payAt>=:startTime AND payAt<=:endTime',[':startTime'=>$startTime,':endTime'=>$endTime]) ->andWhere('storeId=:storeId',['storeId'=>$storeId]); $cashierCount=(clone $cashierTable)->count()?:0;//当面付订单数 $cashierUser=(clone $cashierTable)->groupBy('userId')->count()?:0;//当面付支付人数 $cashierPay=(clone $cashierTable)->sum('money')?:0;//当面付金额 $cashierWxPay=(clone $cashierTable)->andWhere('payMode=1')->sum('money')?:0;//当面付微信支付 $cashierBalancePay=(clone $cashierTable)->andWhere('payMode=5')->sum('money')?:0;//当面付微信支付 $fastTable=(new \yii\db\Query()) ->from('{{%ybwm_instore_order}}') ->where('uniacid=:uniacid AND orderMode=2',[':uniacid'=>$uniacid]) ->andWhere(['in','state',[2,3,4,6]]) ->andWhere('payAt>=:startTime AND payAt<=:endTime',[':startTime'=>$startTime,':endTime'=>$endTime]) ->andWhere('storeId=:storeId',['storeId'=>$storeId]); $fastPay=(clone $fastTable)->sum('money')?:0;//快餐金额 $fastBalancePay=(clone $fastTable)->andWhere('payMode=5')->sum('money')?:0;//快餐余额支付 $fastWxPay=(clone $fastTable)->andWhere('payMode=1')->sum('money')?:0;//快餐微信支付 $fastCount=(clone $fastTable)->count()?:0;//快餐订单数 $fastUser=(clone $fastTable)->groupBy('userId')->count()?:0;//快餐支付人数 $instoreTable=(new \yii\db\Query()) ->from('{{%ybwm_instore_order}}') ->where('uniacid=:uniacid AND orderMode=1',[':uniacid'=>$uniacid]) ->andWhere(['in','state',[3]]) ->andWhere('payAt>=:startTime AND payAt<=:endTime',[':startTime'=>$startTime,':endTime'=>$endTime]) ->andWhere('storeId=:storeId',['storeId'=>$storeId]); $instoreCount=(clone $instoreTable)->count()?:0;//堂食订单数 $instorePay=(clone $instoreTable)->sum('money')?:0;//堂食营业额 $instoreActualPay=(clone $instoreTable)->andWhere('payMode!=6')->sum('money')?:0;//堂食实际金额 $instoreWxPay=(clone $instoreTable)->andWhere('payMode=1')->sum('money')?:0;//堂食微信支付 $instoreBalancePay=(clone $instoreTable)->andWhere('payMode=5')->sum('money')?:0;//堂食余额支付 $instoreBalanceOfflinePay=(clone $instoreTable)->andWhere('payMode=6')->sum('money')?:0;//堂食线下订单金额 $instoreBalanceOfflineCount=(clone $instoreTable)->andWhere('payMode=6')->count()?:0;//堂食线下订单数 $data=array( 'payMoney'=>$payMoney,//有效支付金额 'wxPay'=>$wxPay,//微信支付 'balance'=>$balance,//余额支付 'payNum'=>$payNum,//支付订单数 'outOrderNum'=>$outOrderNum,//外卖订单 'inOrderNum'=>$inOrderNum,//自提订单 'userCount'=>$userCount,//支付人数 'viewsCount'=>$viewsCount,//浏览量 'visitCount'=>$visitCount,//访客量 'refundMoney'=>$refundMoney,//总退款金额 'userRefundMoney'=>$userRefundMoney,//用户取消订单 'storeRefundMoney'=>$storeRefundMoney,//商家拒单订单 'unitPrice'=>$unitPrice,//客单价 'singleRate'=>$singleRate,//下单转化率 'jumpRate'=>$jumpRate,//下单跳失率 'payMoneyArr'=>$payMoneyArr, //支付金额折线图 'countArr'=>$countArr, //支付订单数折线图 'cashierCount'=>$cashierCount, 'cashierPay'=>$cashierPay, 'cashierWxPay'=>$cashierWxPay, 'cashierBalancePay'=>$cashierBalancePay, 'fastCount'=>$fastCount, 'fastPay'=>$fastPay, 'fastWxPay'=>$fastWxPay, 'fastBalancePay'=>$fastBalancePay, 'instoreCount'=>$instoreCount, 'instorePay'=>$instorePay, 'instoreActualPay'=>$instoreActualPay, 'instoreWxPay'=>$instoreWxPay, 'instoreBalancePay'=>$instoreBalancePay, 'instoreBalanceOfflinePay'=>$instoreBalanceOfflinePay, 'instoreBalanceOfflineCount'=>$instoreBalanceOfflineCount, 'cashierUser'=>$cashierUser, 'fastUser'=>$fastUser, ); return $this->result(1,'成功',$data); } }