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