链街Dcat后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

184 lines
12 KiB

<?php
namespace App\Admin\Repositories\v3;
use App\Admin\Controllers\v3\OrderReportController;
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\ImsCjdcOrderMain as orderMainModel;
use App\Models\FinancialRecord as FinancialRecordModel;
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_money,SUM( CASE WHEN note = '用户下单成功,平台奖励' THEN money ELSE 0 END ) AS store_total_money"));
// 新商户流水 获取所有模型
$financialRecordModelZero = FinancialRecordModel::getFinancialRecordModel(5);
$financialRecordModelOne = FinancialRecordModel::getFinancialRecordModel(1);
$financialRecordModelTwo = FinancialRecordModel::getFinancialRecordModel(2);
$financialRecordModelThree = FinancialRecordModel::getFinancialRecordModel(3);
$financialRecordModelFour = FinancialRecordModel::getFinancialRecordModel(4);
$storeNewUserNewZero = $financialRecordModelZero::select(DB::raw('SUM( CASE WHEN money_type = 4 THEN 1 ELSE 0 END ) AS new_add_total, SUM( CASE WHEN money_type = 4 THEN money ELSE 0 END ) AS new_user_total_money, SUM( CASE WHEN money_type = 5 THEN money ELSE 0 END ) as store_total_money '))->where([['created_at','>',strtotime('2020-09-19 00:00:00')]]);
$storeNewUserNewOne = $financialRecordModelOne::select(DB::raw('SUM( CASE WHEN money_type = 4 THEN 1 ELSE 0 END ) AS new_add_total, SUM( CASE WHEN money_type = 4 THEN money ELSE 0 END ) AS new_user_total_money, SUM( CASE WHEN money_type = 5 THEN money ELSE 0 END ) as store_total_money '))->where([['created_at','>',strtotime('2020-09-19 00:00:00')]]);
$storeNewUserNewTwo = $financialRecordModelTwo::select(DB::raw('SUM( CASE WHEN money_type = 4 THEN 1 ELSE 0 END ) AS new_add_total, SUM( CASE WHEN money_type = 4 THEN money ELSE 0 END ) AS new_user_total_money, SUM( CASE WHEN money_type = 5 THEN money ELSE 0 END ) as store_total_money '))->where([['created_at','>',strtotime('2020-09-19 00:00:00')]]);
$storeNewUserNewThree = $financialRecordModelThree::select(DB::raw('SUM( CASE WHEN money_type = 4 THEN 1 ELSE 0 END ) AS new_add_total, SUM( CASE WHEN money_type = 4 THEN money ELSE 0 END ) AS new_user_total_money, SUM( CASE WHEN money_type = 5 THEN money ELSE 0 END ) as store_total_money '))->where([['created_at','>',strtotime('2020-09-19 00:00:00')]]);
$storeNewUserNewFour = $financialRecordModelFour::select(DB::raw('SUM( CASE WHEN money_type = 4 THEN 1 ELSE 0 END ) AS new_add_total, SUM( CASE WHEN money_type = 4 THEN money ELSE 0 END ) AS new_user_total_money, SUM( CASE WHEN money_type = 5 THEN money ELSE 0 END ) as store_total_money '))->where([['created_at','>',strtotime('2020-09-19 00:00:00')]]);
$newUser = UserModel::select(DB::raw('count(id) AS total'));
if($marketId){
$orderMain->where('market_id',$marketId);
// 查询这个市场下的店铺id
$storeIds = StoreModel::where('market_id',$marketId)->pluck('user_id','id')->toArray();
$storeIdsArr = array_keys($storeIds);
$userIdsArr = array_values($storeIds);//dd([$storeIdsArr,$userIdsArr]);
$storeNewUser->whereIn('store_id',$storeIdsArr);
$storeNewUserNewZero->whereIn('user_id',$userIdsArr)->where('user_type',5);
$storeNewUserNewOne->whereIn('user_id',$userIdsArr)->where('user_type',5);
$storeNewUserNewTwo->whereIn('user_id',$userIdsArr)->where('user_type',5);
$storeNewUserNewThree->whereIn('user_id',$userIdsArr)->where('user_type',5);
$storeNewUserNewFour->whereIn('user_id',$userIdsArr)->where('user_type',5);
}
if($startTime){
$startTime = $startTime.' 00:00:00';
$orderMain->where([['created_at','>=',strtotime($startTime)]]);
$storeNewUser->where([['time','>=',$startTime]]);
$storeNewUserNewZero->where([['created_at','>=',strtotime($startTime)]]);
$storeNewUserNewOne->where([['created_at','>=',strtotime($startTime)]]);
$storeNewUserNewTwo->where([['created_at','>=',strtotime($startTime)]]);
$storeNewUserNewThree->where([['created_at','>=',strtotime($startTime)]]);
$storeNewUserNewFour->where([['created_at','>=',strtotime($startTime)]]);
$newUser->where([['created_at','>=',strtotime($startTime)]]);
}
if($endTime){
$endTime = $endTime.' 23:59:59';
$orderMain->where([['created_at','<=',strtotime($endTime)]]);
$storeNewUser->where([['time','<=',$endTime]]);
$storeNewUserNewZero->where([['created_at','<=',strtotime($endTime)]]);
$storeNewUserNewOne->where([['created_at','<=',strtotime($endTime)]]);
$storeNewUserNewTwo->where([['created_at','<=',strtotime($endTime)]]);
$storeNewUserNewThree->where([['created_at','<=',strtotime($endTime)]]);
$storeNewUserNewFour->where([['created_at','<=',strtotime($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]]);
$storeNewUserNewZero->where([['created_at','>=',strtotime($todayStart)]]);
$storeNewUserNewOne->where([['created_at','>=',strtotime($todayStart)]]);
$storeNewUserNewTwo->where([['created_at','>=',strtotime($todayStart)]]);
$storeNewUserNewThree->where([['created_at','>=',strtotime($todayStart)]]);
$storeNewUserNewFour->where([['created_at','>=',strtotime($todayStart)]]);
$orderMain->where([['created_at','<=',strtotime($todayEnd)]]);
$storeNewUser->where([['time','<=',$todayEnd]]);
$storeNewUserNewZero->where([['created_at','<=',strtotime($todayEnd)]]);
$storeNewUserNewOne->where([['created_at','<=',strtotime($todayEnd)]]);
$storeNewUserNewTwo->where([['created_at','<=',strtotime($todayEnd)]]);
$storeNewUserNewThree->where([['created_at','<=',strtotime($todayEnd)]]);
$storeNewUserNewFour->where([['created_at','<=',strtotime($todayEnd)]]);
}
// 订单总额
$orderReport = $orderMain->get()->toArray();
// 补贴金额
$storeNewUsers = $storeNewUser->get()->toArray();
$storeNewUserNewsZero = $storeNewUserNewZero->get()->toArray();
$storeNewUserNewsOne = $storeNewUserNewOne->get()->toArray();
$storeNewUserNewsTwo = $storeNewUserNewTwo->get()->toArray();
$storeNewUserNewsThree = $storeNewUserNewThree->get()->toArray();
$storeNewUserNewsFour = $storeNewUserNewFour->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_money'])?$storeNewUsers[0]['new_user_total_money']:0,
'new_user_total_new_money_zero' => !empty($storeNewUserNews[0]['new_user_total_money'])?$storeNewUserNews[0]['new_user_total_money']:0,
'new_user_total_new_money_one' => !empty($storeNewUserNews[0]['new_user_total_money'])?$storeNewUserNews[0]['new_user_total_money']:0,
'new_user_total_new_money_two' => !empty($storeNewUserNews[0]['new_user_total_money'])?$storeNewUserNews[0]['new_user_total_money']:0,
'new_user_total_new_money_three' => !empty($storeNewUserNews[0]['new_user_total_money'])?$storeNewUserNews[0]['new_user_total_money']:0,
'new_user_total_new_money_four' => !empty($storeNewUserNews[0]['new_user_total_money'])?$storeNewUserNews[0]['new_user_total_money']:0,
'store_user_total_money' => !empty($storeNewUsers[0]['store_total_money'])?$storeNewUsers[0]['store_total_money']:0,
'store_user_total_new_money_zero' => !empty($storeNewUserNews[0]['store_total_money'])?$storeNewUserNews[0]['store_total_money']:0,
'store_user_total_new_money_one' => !empty($storeNewUserNews[0]['store_total_money'])?$storeNewUserNews[0]['store_total_money']:0,
'store_user_total_new_money_two' => !empty($storeNewUserNews[0]['store_total_money'])?$storeNewUserNews[0]['store_total_money']:0,
'store_user_total_new_money_three' => !empty($storeNewUserNews[0]['store_total_money'])?$storeNewUserNews[0]['store_total_money']:0,
'store_user_total_new_money_four' => !empty($storeNewUserNews[0]['store_total_money'])?$storeNewUserNews[0]['store_total_money']:0,
'new_add_user' => !empty($storeNewUsers[0]['new_add_total'])?$storeNewUsers[0]['new_add_total']:0,
'new_add_user_new_zero' => !empty($storeNewUserNews[0]['new_add_total'])?$storeNewUserNews[0]['new_add_total']:0,
'new_add_user_new_one' => !empty($storeNewUserNews[0]['new_add_total'])?$storeNewUserNews[0]['new_add_total']:0,
'new_add_user_new_two' => !empty($storeNewUserNews[0]['new_add_total'])?$storeNewUserNews[0]['new_add_total']:0,
'new_add_user_new_three' => !empty($storeNewUserNews[0]['new_add_total'])?$storeNewUserNews[0]['new_add_total']:0,
'new_add_user_new_four' => !empty($storeNewUserNews[0]['new_add_total'])?$storeNewUserNews[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' => 'new_add_user',
'name' => '新增用户数(人)',
'value' => $query['new_add_user'] + $query['new_add_user_new_zero'] + $query['new_add_user_new_one'] + $query['new_add_user_new_two'] + $query['new_add_user_new_three'] + $query['new_add_user_new_four']
],
[
'key' => 'order_total_num',
'name' => '订单总额(元)',
'value' => $query['order_total_num']
],
[
'key' => 'new_user_total_money',
'name' => '平台新用户补贴总额(元)',
'value' => $query['new_user_total_money'] + $query['new_user_total_new_money_zero'] + $query['new_user_total_new_money_one'] + $query['new_user_total_new_money_two'] + $query['new_user_total_new_money_three'] + $query['new_user_total_new_money_four']
],
[
'key' => 'store_user_total_money',
'name' => '店铺用户每日首单补贴(元)',
'value' => $query['store_user_total_money'] + $query['store_user_total_new_money_zero'] + $query['store_user_total_new_money_one'] + $query['store_user_total_new_money_two'] + $query['store_user_total_new_money_three'] + $query['store_user_total_new_money_four']
]
];
return $model->makePaginator(
count($list),$list
);
}
}