From b04bca9d80984ced47efd30e237159e437e34f9c Mon Sep 17 00:00:00 2001 From: chenbo <709206448@qq.com> Date: Sat, 9 Dec 2023 15:49:18 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E9=95=87=E8=AE=A2=E5=8D=95=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controller/api/dataview/Order.php | 65 +++++++++++++++++++++++++++ route/api.php | 1 + 2 files changed, 66 insertions(+) diff --git a/app/controller/api/dataview/Order.php b/app/controller/api/dataview/Order.php index 86b8b55a..319feac2 100755 --- a/app/controller/api/dataview/Order.php +++ b/app/controller/api/dataview/Order.php @@ -4,6 +4,7 @@ namespace app\controller\api\dataview; use app\common\dao\store\order\StoreOrderDao; use app\common\dao\store\order\StoreRefundOrderDao; +use app\common\model\store\order\StoreOrder; use app\common\repositories\BaseRepository; use app\common\repositories\store\order\StoreOrderRepository; use app\common\repositories\store\order\StoreRefundOrderRepository; @@ -607,4 +608,68 @@ class Order extends BaseController return app('json')->success($data); } + public function orderUserNumCount() + { + // 订单数 + $orderNum = $this->dayOrderNum('today'); + + $yesterdayNum = $this->dayOrderNum('yesterday'); + $monthOrderNum = $this->dayOrderNum(date('Y/m/d', strtotime('first day of')) . ' 00:00:00' . '-' . date('Y/m/d H:i:s')); + + $date = date('Y/m/01 00:00:00', strtotime('last Month')) . '-' . date('Y/m/d 00:00:00', strtotime('-1 day', strtotime('first day of'))); + $beforeOrderNum = $this->dayOrderNum($date); + + $monthOrderNumRate = $this->getRate($beforeOrderNum, $monthOrderNum); + $orderNumRate = $this->getRate($yesterdayNum, $orderNum); + + + // 支付数 + $orderPayNum = $this->dayOrderUserNum('today'); + $yesterdayNum = $this->dayOrderUserNum('yesterday'); + $monthOrderPayNum = $this->dayOrderUserNum(date('Y/m/d', strtotime('first day of')) . ' 00:00:00' . '-' . date('Y/m/d H:i:s')); + + $date = gmdate('Y/m/01 00:00:00', strtotime('last Month')) . '-' . date('Y/m/d 00:00:00', strtotime('-1 day', strtotime('first day of'))); + $beforeOrderNum = $this->dayOrderUserNum($date); + + $monthOrderPayRate = $this->getRate($beforeOrderNum, $monthOrderNum); + $orderOrderPayRate = $this->getRate($yesterdayNum, $orderNum); + + return app('json')->success(compact('orderNum', 'monthOrderNum', 'monthOrderNumRate', 'orderNumRate', 'orderPayNum', 'monthOrderPayNum', 'monthOrderPayRate', 'orderOrderPayRate')); + } + + public function dayOrderNum($day) + { + return StoreOrder::getDB()->alias('o') + ->join('product_order_log pog', 'o.order_id=pog.order_id') + ->where('o.paid', 1) + ->when($day, function ($query, $day) { + getModelTime($query, $day, 'o.pay_time'); + }) + ->where('pog.street_code', $this->streetCode) + ->count(); + } + + public function dayOrderUserNum($day, $merId = null) + { + return StoreOrder::getDB()->alias('o') + ->join('product_order_log pog', 'o.order_id=pog.order_id') + ->where('o.paid', 1) + ->when($day, function ($query, $day) { + getModelTime($query, $day, 'o.pay_time'); + }) + ->where('pog.street_code', $this->streetCode)->group('o.uid')->count(); + } + + protected function getRate($last, $today, $scale = 2) + { + if ($last == $today) + return 0; + else if ($last == 0) + return $today; + else if ($today == 0) + return -$last; + else + return (float)bcdiv(bcsub($today, $last, $scale), $last, $scale); + } + } \ No newline at end of file diff --git a/route/api.php b/route/api.php index 944abc26..9697bb20 100644 --- a/route/api.php +++ b/route/api.php @@ -742,6 +742,7 @@ Route::group('api/', function () { Route::get('take_order_list', 'Order/takeOrderList'); Route::get('take_order_count_title', 'Order/takeOrderCountTitle'); Route::get('street_currday_order_count', 'Order/streetCurrDayOrderCount'); + Route::get('order_user_num_count', 'Order/orderUserNumCount'); // api.dataview.User Route::get('user_merchat_count', 'User/userMerchantCount');