6 changed files with 198 additions and 0 deletions
			
			
		- 
					1app/Admin/Controllers/v3/GoodsActivityController.php
 - 
					98app/Admin/Controllers/v3/GoodsActivityReportController.php
 - 
					77app/Admin/Repositories/v3/GoodsReport.php
 - 
					2app/Admin/routes.php
 - 
					19resources/lang/zh-CN/goods-activity-report.php
 - 
					1resources/lang/zh-CN/goods-activity.php
 
@ -0,0 +1,98 @@ | 
				
			|||
<?php | 
				
			|||
 | 
				
			|||
namespace App\Admin\Controllers\v3; | 
				
			|||
 | 
				
			|||
use App\Admin\Actions\Grid\v3\OrderReportLastMonth; | 
				
			|||
use App\Admin\Actions\Grid\v3\OrderReportLastWeek; | 
				
			|||
use App\Admin\Actions\Grid\v3\OrderReportToday; | 
				
			|||
use App\Admin\Actions\Grid\v3\OrderReportYesterday; | 
				
			|||
use App\Admin\Repositories\v3\GoodsActivity; | 
				
			|||
use Dcat\Admin\Grid; | 
				
			|||
use Dcat\Admin\Controllers\AdminController; | 
				
			|||
use App\Models\v3\Market as MarketModel; | 
				
			|||
use App\Models\v3\Store as StoreModel; | 
				
			|||
use Dcat\Admin\Grid\Filter; | 
				
			|||
 | 
				
			|||
class GoodsActivityReportController extends AdminController | 
				
			|||
{ | 
				
			|||
    // public static $searchTime = [];
 | 
				
			|||
    /** | 
				
			|||
     * Make a grid builder. | 
				
			|||
     * | 
				
			|||
     * @return Grid | 
				
			|||
     */ | 
				
			|||
    protected function grid() | 
				
			|||
    { | 
				
			|||
        return Grid::make(new GoodsActivity(), function (Grid $grid) { | 
				
			|||
             | 
				
			|||
            $marketList = MarketModel::getMarketArray(); | 
				
			|||
            $storeList = StoreModel::getStoreArray(); | 
				
			|||
 | 
				
			|||
            // $grid->combine('默认统计今天的数据', ['name', 'value'])->responsive()->help('如果未选择时间,则默认只统计当天的所有市场的数据,特殊:现存用户默认统计所有的数据');
 | 
				
			|||
 | 
				
			|||
            $grid->column('id')->sortable(); | 
				
			|||
            $grid->column('cover_img')->image('',50); | 
				
			|||
            $grid->column('name'); | 
				
			|||
             | 
				
			|||
            $grid->column('market_id')->display(function($marketId){ | 
				
			|||
                $item = MarketModel::getMarketInfo($marketId,'name'); | 
				
			|||
                return empty($item) ? '' : $item->name; | 
				
			|||
            }); | 
				
			|||
            $grid->column('store_id')->display(function($storeId){ | 
				
			|||
                $item = StoreModel::getStoreInfo($storeId,'name'); | 
				
			|||
                return empty($item) ? '' : $item->name; | 
				
			|||
            })->width('12%'); | 
				
			|||
            $grid->column('price'); | 
				
			|||
            $grid->column('original_price'); | 
				
			|||
            $grid->column('total','销量')->as(function(){ | 
				
			|||
                return 0; | 
				
			|||
            }); | 
				
			|||
 | 
				
			|||
            $grid->filter(function (Filter $filter) use($marketList,$storeList) { | 
				
			|||
                // 更改为 panel 布局
 | 
				
			|||
                $filter->panel(); | 
				
			|||
                 | 
				
			|||
                $filter->equal('name')->select($marketList); | 
				
			|||
                $filter->equal('market_id','市场')->select($marketList); | 
				
			|||
                $filter->equal('store_id','店铺')->select($storeList); | 
				
			|||
                $filter->equal('start_time','开始时间')->date(); | 
				
			|||
                $filter->equal('end_time','结束时间')->date(); | 
				
			|||
            }); | 
				
			|||
 | 
				
			|||
            $grid->tools([new OrderReportToday(), new OrderReportYesterday(), new OrderReportLastWeek(), new OrderReportLastMonth()]); | 
				
			|||
 | 
				
			|||
            // 每页1条
 | 
				
			|||
            $grid->paginate(10); | 
				
			|||
            $grid->disableCreateButton(); | 
				
			|||
            $grid->disableBatchActions(); | 
				
			|||
            $grid->disableBatchDelete(); | 
				
			|||
 | 
				
			|||
            $grid->toolsWithOutline(); | 
				
			|||
             | 
				
			|||
            $grid->disableDeleteButton(); | 
				
			|||
            $grid->disableEditButton(); | 
				
			|||
            $grid->disableQuickEditButton(); | 
				
			|||
            $grid->disableViewButton(); | 
				
			|||
            $grid->disableActions(); | 
				
			|||
 | 
				
			|||
            $grid->disableRowSelector(); | 
				
			|||
        }); | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 获取一个时间段内的日期 | 
				
			|||
     */ | 
				
			|||
    public function periodDateArr($start_time,$end_time){ | 
				
			|||
        $start_time = strtotime($start_time); | 
				
			|||
        $end_time = strtotime($end_time); | 
				
			|||
        $i=0; | 
				
			|||
        $arr = []; | 
				
			|||
        while ($start_time<=$end_time){ | 
				
			|||
            $arr[date('Y-m-d',$start_time)]=date('Y年m月d日',$start_time); | 
				
			|||
            $start_time = strtotime('+1 day',$start_time); | 
				
			|||
            $i++; | 
				
			|||
        } | 
				
			|||
         | 
				
			|||
        return array_reverse($arr); | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
@ -0,0 +1,77 @@ | 
				
			|||
<?php | 
				
			|||
 | 
				
			|||
namespace App\Admin\Repositories\v3; | 
				
			|||
 | 
				
			|||
use App\Models\v3\GoodsActivity as Model; | 
				
			|||
use Dcat\Admin\Grid\Model as GridModel; | 
				
			|||
use Dcat\Admin\Repositories\EloquentRepository; | 
				
			|||
use Illuminate\Support\Facades\DB; | 
				
			|||
 | 
				
			|||
 | 
				
			|||
class GoodsReport extends EloquentRepository | 
				
			|||
{ | 
				
			|||
    /** | 
				
			|||
     * Model. | 
				
			|||
     * | 
				
			|||
     * @var string | 
				
			|||
     */ | 
				
			|||
    protected $eloquentClass = Model::class; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 获取统计列表数据 | 
				
			|||
    */ | 
				
			|||
    public function get(GridModel $model) | 
				
			|||
    { | 
				
			|||
        $marketId = request()->input('market_id'); | 
				
			|||
        $time = date('Y-m-d',time()); | 
				
			|||
        $startTime = request()->input('start_time'); | 
				
			|||
        $endTime = request()->input('end_time'); | 
				
			|||
        | 
				
			|||
        $orderMainOnline = Model::select(DB::raw('COUNT(id) AS total_num')); | 
				
			|||
        | 
				
			|||
        if($marketId){ | 
				
			|||
            $orderMainOnline->where('market_id',$marketId);  | 
				
			|||
        } | 
				
			|||
        if($startTime){ | 
				
			|||
            $date = $startTime; | 
				
			|||
            $startTime = $startTime.' 00:00:00'; | 
				
			|||
             | 
				
			|||
            $orderMainOnline->where([['created_at','>=',strtotime($startTime)]]); | 
				
			|||
 | 
				
			|||
        }else{ | 
				
			|||
            $date = '2020-06-01'; | 
				
			|||
        } | 
				
			|||
        if($endTime){ | 
				
			|||
            $date = $date.' 至 '.$endTime; | 
				
			|||
            $endTime = $endTime.' 23:59:59'; | 
				
			|||
             | 
				
			|||
            $orderMainOnline->where([['created_at','<=',strtotime($endTime)]]); | 
				
			|||
 | 
				
			|||
        }else{ | 
				
			|||
            $date .= ' 至 '.$time; | 
				
			|||
        } | 
				
			|||
        if(empty($startTime) && empty($endTime)){ | 
				
			|||
            | 
				
			|||
            $date = $time; | 
				
			|||
            $todayStart = $time.' 00:00:00'; | 
				
			|||
            $todayEnd = $time.' 23:59:59'; | 
				
			|||
 | 
				
			|||
            $orderMainOnline->where([['created_at','>=',strtotime($todayStart)]]); | 
				
			|||
        } | 
				
			|||
        | 
				
			|||
        $orderReportOnline = $orderMainOnline->get()->toArray(); | 
				
			|||
 | 
				
			|||
        $query =  [ | 
				
			|||
            'order_total_num_online' => !empty($orderReportOnline[0]['total_num'])?$orderReportOnline[0]['total_num']:0, | 
				
			|||
            'order_total_money_online' => !empty($orderReportOnline[0]['total_money'])?$orderReportOnline[0]['total_money']:0, | 
				
			|||
 | 
				
			|||
            'user_total' => !empty($userTotal[0]['total'])?$userTotal[0]['total']:0, | 
				
			|||
        ]; | 
				
			|||
         | 
				
			|||
        $list = []; | 
				
			|||
 | 
				
			|||
        return $model->makePaginator( | 
				
			|||
            count($list),$list | 
				
			|||
        ); | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
@ -0,0 +1,19 @@ | 
				
			|||
<?php  | 
				
			|||
return [ | 
				
			|||
    'labels' => [ | 
				
			|||
        'GoodsActivityReport' => '活动商品统计报表', | 
				
			|||
        'goods_activity_report' => '活动商品统计报表', | 
				
			|||
    ], | 
				
			|||
    'fields' => [ | 
				
			|||
        'id' => 'ID', | 
				
			|||
        'name' => '统计名称', | 
				
			|||
        'cover_img' => '封面图', | 
				
			|||
        'market_id' => '市场', | 
				
			|||
        'store_id' => '店铺', | 
				
			|||
        'price' => '售价', | 
				
			|||
        'original_price' => '原价', | 
				
			|||
        'total' => '统计数量', | 
				
			|||
    ], | 
				
			|||
    'options' => [ | 
				
			|||
    ], | 
				
			|||
]; | 
				
			|||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue