69 lines
2.5 KiB
PHP
69 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use DB;
|
|
use App\Http\Controllers\Controller;
|
|
use Dcat\Admin\Layout\Column;
|
|
use Dcat\Admin\Layout\Content;
|
|
use Dcat\Admin\Layout\Row;
|
|
use Dcat\Admin\Form;
|
|
use Dcat\Admin\Grid;
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Good;
|
|
|
|
class TotalController extends Controller
|
|
{
|
|
public function goodsTotal(Request $request)
|
|
{
|
|
$content = New Content();
|
|
$grid = new Grid(null, function ($grid) use ($request){
|
|
$grid->column('id', '商品ID');
|
|
$grid->column('goods_name', '商品名称');
|
|
$grid->column('total_goods_num', '销售数量')->display(function(){
|
|
return $this->total_goods_num??0;
|
|
});
|
|
|
|
$grid->disableCreateButton();
|
|
$grid->disableActions();
|
|
$grid->disableBatchDelete();
|
|
$grid->disablePagination();
|
|
|
|
$grid->model()->setData($this->goodsTotalData($request));
|
|
|
|
$grid->filter(function (Grid\Filter $filter) {
|
|
$filter->between('created_at', '统计时间')->date();
|
|
});
|
|
});
|
|
return $content->header('统计')
|
|
->description('商品统计')
|
|
->body($grid);
|
|
}
|
|
|
|
public function goodsTotalData(Request $request){
|
|
$time = $request->input('created_at');
|
|
// $order_task = DB::table('orders')->where('order_status', 1)->where('pay_status', 1);
|
|
|
|
$order_task = DB::table('order_goods')
|
|
->select('order_goods.goods_id', DB::raw('SUM(order_goods.goods_num) AS total_goods_num'))
|
|
->leftJoin('orders', 'orders.id', '=', 'order_goods.order_id')
|
|
->where('orders.order_status', 1)
|
|
->where('orders.pay_status', 1);
|
|
if($time){
|
|
if($time['start']){
|
|
$order_task->where('orders.created_at', '>=', $time['start'].' 00:00:00');
|
|
}
|
|
if($time['end']){
|
|
$order_task->where('orders.created_at', '<=', $time['end'].' 23:59:59');
|
|
}
|
|
}
|
|
$order_task->groupBy('order_goods.goods_id');
|
|
|
|
$data = Good::select('goods.id', 'goods_name', 'order_task.total_goods_num')
|
|
->leftJoinSub($order_task, 'order_task', function ($join) {
|
|
$join->on('order_task.goods_id', '=', 'goods.id');
|
|
})->orderBy('order_task.total_goods_num', 'desc')->get()->toArray();
|
|
// dd($data);
|
|
return $data;
|
|
}
|
|
} |