From 79b6d8930234333c2180fae3a2c52e5b185e5edb Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Tue, 22 Sep 2020 18:07:20 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/v3/OrderReportController.php | 10 +- app/Admin/Extensions/OrderReportPage.php | 56 +++++++---- app/Admin/Repositories/OrderReport.php | 59 ------------ app/Admin/Repositories/v3/OrderReport.php | 96 +++++++++++++++++++ app/Admin/routes.php | 1 + 5 files changed, 144 insertions(+), 78 deletions(-) delete mode 100644 app/Admin/Repositories/OrderReport.php create mode 100644 app/Admin/Repositories/v3/OrderReport.php diff --git a/app/Admin/Controllers/v3/OrderReportController.php b/app/Admin/Controllers/v3/OrderReportController.php index 7763cb0..73ab17e 100644 --- a/app/Admin/Controllers/v3/OrderReportController.php +++ b/app/Admin/Controllers/v3/OrderReportController.php @@ -25,9 +25,15 @@ class OrderReportController extends AdminController */ protected function grid() { - $marketId = request()->get('market_id'); - return Grid::make(new OrderReport(), function (Grid $grid) { + // $marketId = request()->get('market_id'); + return Grid::make(new OrderReport(), function (Grid $grid) { + $grid->column('order_total_num','总订单数'); + $grid->column('order_total_money','订单总额'); + $grid->column('new_user_total_money','平台新用户补贴总额'); + $grid->column('store_user_total_money','店铺用户每日首单补贴'); + $grid->column('new_add_user','新增用户数'); + $grid->column('user_total','现存总用户'); }); } diff --git a/app/Admin/Extensions/OrderReportPage.php b/app/Admin/Extensions/OrderReportPage.php index 2f9891f..f9f35cf 100644 --- a/app/Admin/Extensions/OrderReportPage.php +++ b/app/Admin/Extensions/OrderReportPage.php @@ -12,6 +12,7 @@ use App\Models\ImsCjdcOrderMain as orderMainModel; use App\Models\v3\Market as MarketModel; use App\Models\StoreAccount as StoreAccountModel; use App\Models\v3\Store as StoreModel; +use App\Models\v3\User as UserModel; class OrderReportPage extends LazyRenderable { @@ -21,43 +22,63 @@ class OrderReportPage extends LazyRenderable public function render() { - $orderTable = 'lanzu_order_main'; - $accountTable = 'ims_cjdc_store_account'; - $financialTable = 'lanzu_financial_record'; - $marketId = request()->input('market_id'); $startTime = request()->input('start_time'); $endTime = request()->input('end_time'); - - $storeIds = StoreModel::where('market_id',$marketId)->pluck('id'); -dd($storeIds); $orderMain = orderMainModel::select(DB::raw('COUNT(id) AS total_num, SUM(money) AS total_money'))->whereIn('state',[4,5,10]); - $newUser = StoreAccountModel::select(DB::raw('SUM(money) AS total_money'))->where('note','新用户下单成功,平台奖励'); - // DB::select('SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(time),'%Y年%m月') AS '月份',SUM(money) AS '店铺新增用户补贴金额' FROM ims_cjdc_store_account '); + $storeNewUser = StoreAccountModel::select(DB::raw("SUM( CASE WHEN note = '新用户下单成功,平台奖励' THEN 1 ELSE 0 END ) AS new_add_total, SUM( CASE WHEN note = '新用户下单成功,平台奖励' THEN money ELSE 0 END ) AS new_user_total,SUM( CASE WHEN note = '用户下单成功,平台奖励' THEN money ELSE 0 END ) AS store_total")); + + $newUser = UserModel::select(DB::raw('count(id) AS total')); + if($marketId){ $orderMain->where('market_id',$marketId); // 查询这个市场下的店铺id $storeIds = StoreModel::where('market_id',$marketId)->pluck('id'); - $newUser->where(); + $storeNewUser->whereIn('store_id',$storeIds); } if($startTime){ $orderMain->where([['created_at','>=',strtotime($startTime)]]); + $storeNewUser->where([['time','>=',$startTime]]); + $newUser->where([['created_at','>=',strtotime($startTime)]]); } if($endTime){ $orderMain->where([['created_at','<=',strtotime($endTime)]]); + $storeNewUser->where([['time','<=',$endTime]]); + $newUser->where([['created_at','<=',strtotime($endTime)]]); + } + if(empty($startTime) && empty($endTime)){ + $time = date('Y-m-d',time()); + $todayStart = $time.'00:00:00'; + $todayEnd = $time.'23:59:59'; + $orderMain->where([['created_at','>=',strtotime($todayStart)]]); + $storeNewUser->where([['time','>=',$todayStart]]); + $newUser->where([['created_at','>=',strtotime($todayStart)]]); + + $orderMain->where([['created_at','<=',strtotime($todayEnd)]]); + $storeNewUser->where([['time','<=',$todayEnd]]); + $newUser->where([['created_at','<=',strtotime($todayEnd)]]); } // 订单总额 - $orderReport = $orderMain->get(); + $orderReport = $orderMain->get()->toArray(); // 总补贴金额 + $storeNewUser = $storeNewUser->get(); + // 总用户 + $userTotal = $newUser->get(); + $query = [ + 'order_total_num' => $orderReport['total_num'], + 'order_total_money' => $orderReport['total_money'], + 'new_user_total_money' => $storeNewUser['new_user_total'], + 'store_user_total_money' => $storeNewUser['store_total'], + 'new_add_user' => $userTotal['new_add_total'], + + 'user_total' => $newUser['total'], + ]; - - //订单数据 - $order = ['total_money'=>123]; - if ($orderReport) { + if ($query) { // $marketList = MarketModel::getMarket(); $result = []; $orderReport = json_encode($orderReport); @@ -70,10 +91,11 @@ dd($storeIds); var app = new Vue({ el:"#order_report", data:{ - order_report:$orderReport, + show_refund: JSON.parse(show_refund), - order_total_money:123, + order_total_num:$orderReport.total_num, + order_total_money:$orderReport.total_money, dialogFormVisible: false, // order_total_money:123, diff --git a/app/Admin/Repositories/OrderReport.php b/app/Admin/Repositories/OrderReport.php deleted file mode 100644 index 3052162..0000000 --- a/app/Admin/Repositories/OrderReport.php +++ /dev/null @@ -1,59 +0,0 @@ -setSort($model); - $this->setPaginate($model); - - /** - * 订单 用户 - * 订单总金额 现存用户总数 - * 新用户补贴金额 新增用户总数 - * 商户首单补贴金额 - */ - $orderModel = new OrderModel(); - $query = $orderModel::join('ims_cjdc_store as store','ims_cjdc_store_account.store_id','store.id') - ->select('store_id','store.market_id','store.name as store_name',DB::raw("count(distinct ims_cjdc_store_account.id) as new_user_total")) - ->whereRaw("note = '新用户下单成功,平台奖励'") - ->groupBy('store_id') - ->orderBy('store.market_id','desc') - ->orderBY('new_user_total','desc') - ->orderBY('store_id','desc'); - - - - $model->getQueries()->unique()->each(function ($value) use (&$query) { - if ($value['method'] == 'paginate') { - $value['arguments'][1] = $this->getGridColumns(); - } elseif ($value['method'] == 'get') { - $value['arguments'] = [$this->getGridColumns()]; - } - $query = call_user_func_array([$query, $value['method']], $value['arguments'] ?? []); - }); - - $query = $query->toArray(); - - $query = $model->makePaginator($query['total'],$query['data']); - return $query; - } -} diff --git a/app/Admin/Repositories/v3/OrderReport.php b/app/Admin/Repositories/v3/OrderReport.php new file mode 100644 index 0000000..d125519 --- /dev/null +++ b/app/Admin/Repositories/v3/OrderReport.php @@ -0,0 +1,96 @@ +setSort($model); + $this->setPaginate($model); + + $marketId = request()->input('market_id'); + $startTime = request()->input('start_time'); + $endTime = request()->input('end_time'); + + $orderMain = orderMainModel::select(DB::raw('COUNT(id) AS total_num, SUM(money) AS total_money'))->whereIn('state',[4,5,10]); + + $storeNewUser = StoreAccountModel::select(DB::raw("SUM( CASE WHEN note = '新用户下单成功,平台奖励' THEN 1 ELSE 0 END ) AS new_add_total, SUM( CASE WHEN note = '新用户下单成功,平台奖励' THEN money ELSE 0 END ) AS new_user_total,SUM( CASE WHEN note = '用户下单成功,平台奖励' THEN money ELSE 0 END ) AS store_total")); + + $newUser = UserModel::select(DB::raw('count(id) AS total')); + + if($marketId){ + $orderMain->where('market_id',$marketId); + + // 查询这个市场下的店铺id + $storeIds = StoreModel::where('market_id',$marketId)->pluck('id'); + $storeNewUser->whereIn('store_id',$storeIds); + } + if($startTime){ + $orderMain->where([['created_at','>=',strtotime($startTime)]]); + $storeNewUser->where([['time','>=',$startTime]]); + $newUser->where([['created_at','>=',strtotime($startTime)]]); + } + if($endTime){ + $orderMain->where([['created_at','<=',strtotime($endTime)]]); + $storeNewUser->where([['time','<=',$endTime]]); + $newUser->where([['created_at','<=',strtotime($endTime)]]); + } + if(empty($startTime) && empty($endTime)){ + $time = date('Y-m-d',time()); + $todayStart = $time.'00:00:00'; + $todayEnd = $time.'23:59:59'; + $orderMain->where([['created_at','>=',strtotime($todayStart)]]); + $storeNewUser->where([['time','>=',$todayStart]]); + $newUser->where([['created_at','>=',strtotime($todayStart)]]); + + $orderMain->where([['created_at','<=',strtotime($todayEnd)]]); + $storeNewUser->where([['time','<=',$todayEnd]]); + $newUser->where([['created_at','<=',strtotime($todayEnd)]]); + } + // 订单总额 + $orderReport = $orderMain->get()->toArray();//dd($orderReport); + // 总补贴金额 + $storeNewUser = $storeNewUser->get(); + // 总用户 + $userTotal = $newUser->get(); + + $query = [ + 'order_total_num' => $orderReport['total_num'], + 'order_total_money' => $orderReport['total_money'], + + 'new_user_total_money' => $storeNewUser['new_user_total'], + 'store_user_total_money' => $storeNewUser['store_total'], + 'new_add_user' => $userTotal['new_add_total'], + + 'user_total' => $newUser['total'], + ]; + + return $query; + } +} diff --git a/app/Admin/routes.php b/app/Admin/routes.php index c44a0d2..36eca6d 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -84,5 +84,6 @@ Route::group([ // 订单统计 $router->any('/order_report', 'v3\OrderReportController@index'); + // $router->any('/order_statistics', 'v3\OrderReportController'); });