6 changed files with 390 additions and 0 deletions
-
83app/Admin/Controllers/v3/OrderReportController.php
-
110app/Admin/Extensions/OrderReportPage.php
-
122app/Admin/Repositories/v3/OrderReport.php
-
3app/Admin/routes.php
-
12app/Models/v3/StoreAccount.php
-
60resources/views/order_report.php
@ -0,0 +1,83 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace App\Admin\Controllers\v3; |
||||
|
|
||||
|
use App\Admin\Repositories\v3\OrderReport; |
||||
|
use Dcat\Admin\Grid; |
||||
|
use Dcat\Admin\Controllers\AdminController; |
||||
|
use Dcat\Admin\Layout\Content; |
||||
|
use App\Models\v3\Market as marketModel; |
||||
|
use App\Admin\Extensions\OrderReportPage; |
||||
|
use Dcat\Admin\Widgets\Lazy; |
||||
|
use Illuminate\Support\Collection; |
||||
|
|
||||
|
class OrderReportController extends AdminController |
||||
|
{ |
||||
|
/** |
||||
|
* Make a grid builder. |
||||
|
* |
||||
|
* @return Grid |
||||
|
*/ |
||||
|
protected function grid() |
||||
|
{ |
||||
|
return Grid::make(new OrderReport(), function (Grid $grid) { |
||||
|
|
||||
|
// $grid->column('user_total','现存用户总数');
|
||||
|
// $grid->column('order_total_money','订单总额');
|
||||
|
// $grid->column('new_user_total_money','平台新用户补贴总额');
|
||||
|
// $grid->column('store_user_total_money','店铺用户每日首单补贴');
|
||||
|
// $grid->column('new_add_user','新增用户数');
|
||||
|
|
||||
|
$grid->column('name','统计名称(默认统计当天数据)'); |
||||
|
$grid->column('value','统计数量'); |
||||
|
|
||||
|
$grid->filter(function (Grid\Filter $filter) { |
||||
|
//市场
|
||||
|
$marketList = MarketModel::getMarketArray(); |
||||
|
$filter->equal('market_id','市场')->select($marketList); |
||||
|
$filter->equal('start_time','开始时间')->date(); |
||||
|
$filter->equal('end_time','结束时间')->date(); |
||||
|
}); |
||||
|
|
||||
|
// 每页1条
|
||||
|
$grid->paginate(10); |
||||
|
$grid->disableCreateButton(); |
||||
|
$grid->disableBatchActions(); |
||||
|
$grid->disableBatchDelete(); |
||||
|
|
||||
|
$grid->toolsWithOutline(); |
||||
|
|
||||
|
$grid->disableDeleteButton(); |
||||
|
$grid->disableEditButton(); |
||||
|
$grid->disableQuickEditButton(); |
||||
|
$grid->disableViewButton(); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
public function indexS(Content $content) |
||||
|
{ |
||||
|
$grid = $this->grid(); |
||||
|
return $content |
||||
|
->header('报表') |
||||
|
->description('合并表头功能示例') |
||||
|
->body(function ($row) use($grid){ |
||||
|
$row->column(4, 123); |
||||
|
$row->column(4, 123); |
||||
|
$row->column(4, 123); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
public function orderReport(Content $content) |
||||
|
{ |
||||
|
$marketId = request()->input('market_id'); |
||||
|
$startTime = request()->input('start_time'); |
||||
|
$endTime = request()->input('end_time'); |
||||
|
|
||||
|
// 实例化表单类并传递自定义参数
|
||||
|
$order = OrderReportPage::make(['market_id' => $marketId,'start_time'=>$startTime,'endTime'=>$endTime]); |
||||
|
return $content->header("统计") |
||||
|
->breadcrumb(['text' => '统计', 'url' => 'index']) |
||||
|
->body(Lazy::make($order)); |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,110 @@ |
|||||
|
<?php |
||||
|
|
||||
|
|
||||
|
namespace App\Admin\Extensions; |
||||
|
|
||||
|
use App\Admin\Common\LinkUrl; |
||||
|
use Dcat\Admin\Admin; |
||||
|
use Dcat\Admin\Support\LazyRenderable; |
||||
|
use Illuminate\Support\Facades\DB; |
||||
|
use App\Models\ImsCjdcOrder as orderModel; |
||||
|
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 |
||||
|
{ |
||||
|
|
||||
|
protected static $js = [LinkUrl::VUE_JS, LinkUrl::ELEMENT_UI_JS]; |
||||
|
protected static $css = [LinkUrl::DETAIL_CSS, LinkUrl::ELEMENT_UI_CSS]; |
||||
|
|
||||
|
public function render() |
||||
|
{ |
||||
|
$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(); |
||||
|
// 总补贴金额
|
||||
|
$storeNewUsers = $storeNewUser->get()->toArray(); |
||||
|
// 总用户
|
||||
|
$userTotal = $newUser->get()->toArray(); |
||||
|
|
||||
|
$query = [ |
||||
|
'order_total_num' => !empty($orderReport[0]['total_num'])?$orderReport[0]['total_num']:0, |
||||
|
'order_total_money' => !empty($orderReport[0]['total_money'])?$orderReport[0]['total_money']:0, |
||||
|
|
||||
|
'new_user_total_money' => !empty($storeNewUsers[0]['new_user_total'])?$storeNewUsers[0]['new_user_total']:0, |
||||
|
'store_user_total_money' => !empty($storeNewUsers[0]['store_total'])?$storeNewUsers[0]['store_total']:0, |
||||
|
'new_add_user' => !empty($storeNewUsers[0]['new_add_total'])?$storeNewUsers[0]['new_add_total']:0, |
||||
|
|
||||
|
'user_total' => !empty($userTotal[0]['total'])?$userTotal[0]['total']:0, |
||||
|
]; |
||||
|
|
||||
|
if ($query) { |
||||
|
// $marketList = MarketModel::getMarket();
|
||||
|
|
||||
|
Admin::script( |
||||
|
<<<JS |
||||
|
|
||||
|
var app = new Vue({ |
||||
|
el:"#order_report", |
||||
|
data:{ |
||||
|
|
||||
|
order_total_num:"{$query['order_total_num']}", |
||||
|
order_total_money:"{$query['order_total_money']}", |
||||
|
new_user_total_money:"{$query['new_user_total_money']}", |
||||
|
store_user_total_money:"{$query['store_user_total_money']}", |
||||
|
new_add_user:"{$query['new_add_user']}", |
||||
|
user_total:"{$query['user_total']}", |
||||
|
}, |
||||
|
methods: { |
||||
|
|
||||
|
} |
||||
|
}); |
||||
|
JS |
||||
|
); |
||||
|
|
||||
|
} |
||||
|
return view('order_report'); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
@ -0,0 +1,122 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace App\Admin\Repositories\v3; |
||||
|
|
||||
|
use App\Models\v3\Store as Model; |
||||
|
use Dcat\Admin\Grid\Model as GridModel; |
||||
|
use Dcat\Admin\Repositories\EloquentRepository; |
||||
|
use Illuminate\Support\Facades\DB; |
||||
|
use App\Models\ImsCjdcOrder as orderModel; |
||||
|
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 OrderReport extends EloquentRepository |
||||
|
{ |
||||
|
/** |
||||
|
* Model. |
||||
|
* |
||||
|
* @var string |
||||
|
*/ |
||||
|
protected $eloquentClass = Model::class; |
||||
|
|
||||
|
/** |
||||
|
* 获取统计列表数据 |
||||
|
* 订单 用户 |
||||
|
* 订单总金额 现存用户总数 |
||||
|
* 新用户补贴金额 新增用户总数 |
||||
|
* 商户首单补贴金额 |
||||
|
*/ |
||||
|
public function get(GridModel $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){ |
||||
|
$startTime = $startTime.' 00:00:00'; |
||||
|
$orderMain->where([['created_at','>=',strtotime($startTime)]]); |
||||
|
$storeNewUser->where([['time','>=',$startTime]]); |
||||
|
$newUser->where([['created_at','>=',strtotime($startTime)]]); |
||||
|
} |
||||
|
if($endTime){ |
||||
|
$endTime = $endTime.' 23:59:59'; |
||||
|
$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]]); |
||||
|
|
||||
|
$orderMain->where([['created_at','<=',strtotime($todayEnd)]]); |
||||
|
$storeNewUser->where([['time','<=',$todayEnd]]); |
||||
|
} |
||||
|
// 订单总额
|
||||
|
$orderReport = $orderMain->get()->toArray(); |
||||
|
// 总补贴金额
|
||||
|
$storeNewUsers = $storeNewUser->get()->toArray(); |
||||
|
// 总用户
|
||||
|
$userTotal = $newUser->get()->toArray(); |
||||
|
|
||||
|
$query = [ |
||||
|
'order_total_num' => !empty($orderReport[0]['total_num'])?$orderReport[0]['total_num']:0, |
||||
|
'order_total_money' => !empty($orderReport[0]['total_money'])?$orderReport[0]['total_money']:0, |
||||
|
|
||||
|
'new_user_total_money' => !empty($storeNewUsers[0]['new_user_total'])?$storeNewUsers[0]['new_user_total']:0, |
||||
|
'store_user_total_money' => !empty($storeNewUsers[0]['store_total'])?$storeNewUsers[0]['store_total']:0, |
||||
|
'new_add_user' => !empty($storeNewUsers[0]['new_add_total'])?$storeNewUsers[0]['new_add_total']:0, |
||||
|
|
||||
|
'user_total' => !empty($userTotal[0]['total'])?$userTotal[0]['total']:0, |
||||
|
]; |
||||
|
$list = [ |
||||
|
[ |
||||
|
'key' => 'user_total', |
||||
|
'name' => '现存用户总数', |
||||
|
'value' => $query['user_total'] |
||||
|
], |
||||
|
[ |
||||
|
'key' => 'order_total_num', |
||||
|
'name' => '订单总额', |
||||
|
'value' => $query['order_total_num'] |
||||
|
], |
||||
|
[ |
||||
|
'key' => 'new_user_total_money', |
||||
|
'name' => '平台新用户补贴总额', |
||||
|
'value' => $query['new_user_total_money'] |
||||
|
], |
||||
|
[ |
||||
|
'key' => 'store_user_total_money', |
||||
|
'name' => '店铺用户每日首单补贴', |
||||
|
'value' => $query['store_user_total_money'] |
||||
|
], |
||||
|
[ |
||||
|
'key' => 'new_add_user', |
||||
|
'name' => '新增用户数', |
||||
|
'value' => $query['new_add_user'] |
||||
|
] |
||||
|
]; |
||||
|
|
||||
|
return $model->makePaginator( |
||||
|
count($list),$list |
||||
|
); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,12 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace App\Models\v3; |
||||
|
|
||||
|
use Illuminate\Database\Eloquent\Model; |
||||
|
|
||||
|
class StoreAccount extends Model |
||||
|
{ |
||||
|
|
||||
|
protected $table = 'ims_cjdc_store_account'; |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,60 @@ |
|||||
|
<div id="order_report"> |
||||
|
<!-- 搜索 --> |
||||
|
<div> |
||||
|
<form action="" pjax-container="" method="get"> |
||||
|
<div> |
||||
|
<select class="form-control" name="market_id" > |
||||
|
<option value="0">选择市场</option> |
||||
|
<option value="1">海尔青啤市场</option> |
||||
|
<option value="2">东沟岭市场</option> |
||||
|
<option value="3">铜鼓岭市场</option> |
||||
|
<option value="4">华园菜市</option> |
||||
|
<option value="5">平西市场</option> |
||||
|
</select> |
||||
|
</div> |
||||
|
<div> |
||||
|
<div style="margin-top: 20px;"> |
||||
|
<div class="form-group"> |
||||
|
<div class="input-group input-group-sm"> |
||||
|
<div class="input-group-prepend"> |
||||
|
<span class="input-group-text bg-white text-capitalize"><b>时间</b> <i class="feather icon-calendar"></i></span> |
||||
|
</div> |
||||
|
<input autocomplete="off" type="text" class="form-control" id="filter_column__time_start" placeholder="时间" name="start_time" value="" > |
||||
|
<span class="input-group-addon" style="border-left: 0; border-right: 0;">To</span> |
||||
|
<input autocomplete="off" type="text" class="form-control" id="filter_column__time_end" placeholder="时间" name="end_time" value="" > |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div> |
||||
|
<input type="submit" value="查询"/> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
<!-- 搜索 end --> |
||||
|
<!-- 订单数据 --> |
||||
|
<div style="margin-top: 20px;"> |
||||
|
<div> |
||||
|
<p>订单总额(元): {{order_total_money}}</p> |
||||
|
</div> |
||||
|
<div> |
||||
|
<p>平台新用户补贴总额(元): {{new_user_total_money}}</p> |
||||
|
</div> |
||||
|
<div> |
||||
|
<p>店铺用户每日首单补贴(元): {{store_user_total_money}}</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- 订单数据 end --> |
||||
|
<!-- 用户数据 --> |
||||
|
<div> |
||||
|
<div> |
||||
|
<div> |
||||
|
<p>现存用户总数(位): {{user_total}}</p> |
||||
|
</div> |
||||
|
<div> |
||||
|
<p>新增用户数(位): {{new_add_user}}</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- 用户数据 end --> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue