Browse Source

订单统计

master
liangyuyan 5 years ago
parent
commit
79b6d89302
  1. 10
      app/Admin/Controllers/v3/OrderReportController.php
  2. 56
      app/Admin/Extensions/OrderReportPage.php
  3. 59
      app/Admin/Repositories/OrderReport.php
  4. 96
      app/Admin/Repositories/v3/OrderReport.php
  5. 1
      app/Admin/routes.php

10
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','现存总用户');
});
}

56
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,

59
app/Admin/Repositories/OrderReport.php

@ -1,59 +0,0 @@
<?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 App\Models\ImsCjdcOrder as OrderModel;
use Illuminate\Support\Facades\DB;
class OrderReport extends EloquentRepository
{
/**
* Model.
*
* @var string
*/
protected $eloquentClass = Model::class;
/**
* 获取统计列表数据
*/
public function get(GridModel $model)
{
$this->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;
}
}

96
app/Admin/Repositories/v3/OrderReport.php

@ -0,0 +1,96 @@
<?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)
{
$this->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;
}
}

1
app/Admin/routes.php

@ -84,5 +84,6 @@ Route::group([
// 订单统计
$router->any('/order_report', 'v3\OrderReportController@index');
// $router->any('/order_statistics', 'v3\OrderReportController');
});
Loading…
Cancel
Save