链街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.
 
 
 
 

65 lines
2.5 KiB

<?php
namespace App\Admin\Repositories;
use App\Models\storeUserReport 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 StoreUserReport extends EloquentRepository
{
/**
* Model.
*
* @var string
*/
protected $eloquentClass = Model::class;
/**
* 获取统计列表数据
*/
public function get(GridModel $model)
{
$startTime = '2020-06-01';$endTime = '2020-08-01';
$this->setSort($model);
$this->setPaginate($model);
$orderModel = new orderModel();
//根据订单查询
// $query = $orderModel::join('ims_cjdc_store as store','order.store_id','store.id')
// ->join('ims_cjdc_user as user','order.user_id','user.id')
// ->select('store_id','store.market_id','store.name as store_name','mm_user_id',DB::raw("count(distinct order.user_id) as new_user_total"))
// ->whereRaw("UNIX_TIMESTAMP(pay_time) BETWEEN UNIX_TIMESTAMP(?) AND UNIX_TIMESTAMP(?)",[$startTime,$endTime])
// ->whereRaw("join_time BETWEEN UNIX_TIMESTAMP(?) AND UNIX_TIMESTAMP(?)",[$startTime,$endTime])
// ->groupBy('store_id')
// ->orderBy('market_id','desc')
// ->orderBY('new_user_total','desc');
// 根据流水查询
$query = $orderModel::join('ims_cjdc_store as store','order.store_id','store.id')
->join('ims_cjdc_user as user','order.user_id','user.id')
->select('store_id','store.market_id','store.name as store_name','mm_user_id',DB::raw("count(distinct order.user_id) as new_user_total"))
->whereRaw("join_time BETWEEN UNIX_TIMESTAMP(?) AND UNIX_TIMESTAMP(?)",[$startTime,$endTime])
->groupBy('store_id')
->orderBy('market_id','desc')
->orderBY('new_user_total','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;
}
}