|
|
<?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 ?? []; }}
|