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.
124 lines
5.0 KiB
124 lines
5.0 KiB
<?php
|
|
|
|
namespace App\Admin\Repositories\v3;
|
|
|
|
use App\Models\LanzuOrderGoods 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\ImsCjdcOrder as OrderModel;
|
|
use App\Models\v3\GoodsActivity as GoodsActivityModel;
|
|
|
|
class GoodsActivityReport extends EloquentRepository
|
|
{
|
|
public $params = [];
|
|
/**
|
|
* Model.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $eloquentClass = Model::class;
|
|
|
|
public function __construct($params = [])
|
|
{
|
|
$this->params = $params;
|
|
}
|
|
|
|
/**
|
|
* 获取统计列表数据
|
|
*/
|
|
public function get(GridModel $model)
|
|
{
|
|
// 获取当前页数
|
|
$currentPage = $model->getCurrentPage();
|
|
// 获取每页显示行数
|
|
$perPage = $model->getPerPage();
|
|
|
|
$where = [];
|
|
if(!empty($this->params) && isset($this->params['market_id']) && !empty($this->params['market_id'])){
|
|
$where = ['market_id'=>$this->params['market_id']];
|
|
}
|
|
|
|
$selects = 'SUM(number) as total,SUM(('.GoodsActivityModel::TABLE_NAME.'.purchase_price-'.Model::$tableName.'.price)*number) as subsidy_total,'.Model::$tableName.'.price,'.GoodsActivityModel::TABLE_NAME.'.purchase_price,'.Model::$tableName.'.goods_id,'.Model::$tableName.'.name,'.Model::$tableName.'.cover_img,'.OrderMainModel::$tableName.'.market_id,'.OrderModel::$tableName.'.store_id';
|
|
$orderGoodsActivity = $this->getDataModel($selects,$where);
|
|
$list = $orderGoodsActivity->orderBy('total','desc')->groupBy('goods_id',Model::$tableName.'.name','cover_img',OrderMainModel::$tableName.'.market_id','store_id',Model::$tableName.'.price',GoodsActivityModel::TABLE_NAME.'.purchase_price')->paginate($perPage);
|
|
$list = $list->toArray();
|
|
|
|
return $model->makePaginator(
|
|
$list['total'] ?? 0,$list['data'] ?? []
|
|
);
|
|
|
|
}
|
|
|
|
public function getDataModel($selects,$params = [])
|
|
{
|
|
$time = date('Y-m-d',time());
|
|
// 获取筛选参数
|
|
$goodsId = $params['goods_id'] ?? request()->input('goods_id',0);
|
|
$name = $params['name'] ?? request()->input('name', '');
|
|
$marketId = $params['market_id'] ?? request()->input('market_id',0);
|
|
$storeId = $params['store_id'] ?? request()->input('store_id',0);
|
|
|
|
$startTime = $params['start_time'] ?? request()->input('start_time','');
|
|
$endTime = $params['end_time'] ?? request()->input('end_time','');
|
|
|
|
$orderGoodsActivity = Model::select(DB::raw($selects))
|
|
->join(OrderModel::$tableName,Model::$tableName.'.order_id','=',OrderModel::$tableName.'.id')
|
|
->join(OrderMainModel::$tableName,OrderModel::$tableName.'.order_main_id','=',OrderMainModel::$tableName.'.global_order_id')
|
|
->join(GoodsActivityModel::TABLE_NAME,Model::$tableName.'.goods_id','=',GoodsActivityModel::TABLE_NAME.'.id')
|
|
->where(Model::$tableName.'.activity_type',2)
|
|
->where(Model::$tableName.'.status',1)
|
|
->whereIn(OrderMainModel::$tableName.'.state',[4,5,10,11]);
|
|
|
|
if($goodsId){
|
|
$goodsIds = explode(',',$goodsId);
|
|
$orderGoodsActivity->whereIn(Model::$tableName.'.goods_id',$goodsIds);
|
|
}
|
|
if($name){
|
|
$orderGoodsActivity->where(Model::$tableName.'.name','like',"%$name%");
|
|
}
|
|
if($marketId){
|
|
$orderGoodsActivity->where('market_id',$marketId);
|
|
}
|
|
if($storeId){
|
|
$orderGoodsActivity->where('store_id',$storeId);
|
|
}
|
|
if($startTime){
|
|
$startTime = $startTime.' 00:00:00';
|
|
|
|
$orderGoodsActivity->where(Model::$tableName.'.created_at','>=',strtotime($startTime));
|
|
}
|
|
if($endTime){
|
|
$endTime = $endTime.' 23:59:59';
|
|
|
|
$orderGoodsActivity->where(Model::$tableName.'.created_at','<=',strtotime($endTime));
|
|
}
|
|
|
|
return $orderGoodsActivity;
|
|
}
|
|
|
|
/**
|
|
* 获取总数
|
|
*/
|
|
public function getCountData($params = [])
|
|
{
|
|
$selects = "SUM(".Model::$tableName.".number) as total,SUM((".GoodsActivityModel::TABLE_NAME.".purchase_price-".Model::$tableName.".price)*number) as subsidy_total,FROM_UNIXTIME(".Model::$tableName.".created_at,'%Y-%m-%d') as dtime";
|
|
$orderGoodsActivity = $this->getDataModel($selects,$params);
|
|
$total = $orderGoodsActivity->orderBy('dtime','desc')->groupBy('dtime')->get()->toArray();
|
|
|
|
return $total ?? [];
|
|
}
|
|
|
|
/**
|
|
* 分市场获取
|
|
*/
|
|
public function getMarketData($params = [])
|
|
{
|
|
$selects = "SUM(".Model::$tableName.".number) as total,SUM((".GoodsActivityModel::TABLE_NAME.".purchase_price-".Model::$tableName.".price)*number) as subsidy_total,".OrderMainModel::$tableName.".market_id";
|
|
$orderGoodsActivity = $this->getDataModel($selects,$params);
|
|
$total = $orderGoodsActivity->groupBy(OrderMainModel::$tableName.'.market_id')->get()->toArray();
|
|
|
|
return $total ?? [];
|
|
}
|
|
}
|