order-food-admin/app/Admin/Controllers/TotalController.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;
}
}