SystemBannersController.php 4.5 KB
<?php
/**
+----------------------------------------------------------------------------------------------------------------------
 * 控制层:系统-轮播图 控制类
+----------------------------------------------------------------------------------------------------------------------
 *
 * PHP version 7
 *
 * @category  App\Admin\Controllers\System
 * @package   App\Admin\Controllers\System
 * @author    Richer <yangzi1028@163.com>
 * @date      2022年2月21日15:21:47
 * @copyright 2021-2022 Richer (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
namespace App\Admin\Controllers\System;

use App\Admin\Controllers\BaseController;
use App\Admin\Rewrite\Grid;
use App\Models\Goods\Goods;
use App\Models\Goods\GoodsCategory;
use App\Models\Goods\GoodsSpecification;
use App\Models\Groupon\Activity;
use App\Models\System\SystemBanner;
use Encore\Admin\Form;
use Encore\Admin\Layout\Content;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\DB;

/**
 * Class SystemBannersController
 *
 * @category  App\Admin\Controllers\System
 * @package   App\Admin\Controllers\System
 * @author    Richer <yangzi1028@163.com>
 * @date      2022年2月21日15:21:47
 * @copyright 2021-2022 Richer (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
class SystemBannersController extends BaseController
{
    public function __construct(SystemBanner $model)
    {
        // 资源显示的中名称
        $this ->title       = $model::OBJ_NAME_ZH;
        #可编辑
        $this->can_create    = true;
        #可编辑
        $this->can_view    = false;
        #可编辑
        $this->can_edit     = true;
        #可删除
        $this->can_delete   = true;
        // 执行父类构造方法
        parent::__construct($model);
    }

    /**
     * 为grid增加筛选条件
     *
     * @return Grid
     */
    public function renderGridFilter()
    {
        $this->grid->filter(function ($filter) {
            // 筛选条件默认展开
            $filter->expand();

//            $filter->like('name', '姓名');
//            $filter->like('mobile', '手机号');

            //4.去掉默认的搜索
            $filter->disableIdFilter();
        });

        return $this->grid;
    }

    /**
     * 设置默认查询条件
     * 增加数据权限的判断。步骤:
     * 1、判断用户是否是超级管理员,并判断用户的pid,如果pid为0 则为平台总用户,不进行数据权限的判断
     * 2、如果pid大于0 则为 平台子管理员,则需要进行数据权限的判断
     */
    public function setGridQuery()
    {
        //
    }


    /**
     * 渲染grid字段
     *
     * @return void
     */
    public function renderGridFields()
    {
        $this->gridRowNo();
        $this->gridSingleSelect('module', '模块', SystemBanner::MODULE_OPTIONS);
        $this->gridSingleImageField('image', '图片');

        $this->gridNumberField('sort', '排序', 1)->editable();
        $this->gridDateField('created_at', '创建时间');
    }

    /**
     * 渲染表单字段
     *
     * @param Int $id 用户id
     *
     * @return void
     */
    public function renderFormFields($id)
    {
        $this->formSingleSelectField('module', '模块', SystemBanner::MODULE_OPTIONS, 1);
        $this->formSingleImageField('image', '图片', 1, 1);
//        $this->formSingleSelectField('jumpable_type', '跳转模块', SystemBanner::JUMPABLE_OPTIONS)
//            ->load('jumpable_id', '/'.config('admin.route.prefix').'/system-banners/jumpable');
//        $this->formSingleSelectField('jumpable_id', '跳转商品', []);
        $this->formNumberField('sort', '排序', 1, 1, 1);
    }

    /**
     * @return \Illuminate\Http\JsonResponse
     */
    public function getJumpable()
    {
        $q = request('q');

        $list = [];
        switch ($q) {
            case Goods::OBJ_NAME:
                $list = Goods::where('status', config('constants.STATUS_OK'))
                    ->where('unshelved_status', config('constants.SHELVED')) // 上架状态
                    ->get(['id', DB::raw('name as text')]);
                break;
            case Activity::OBJ_NAME:
                $list = Activity::where('status', Activity::PROCESSING)
                    ->whereRaw("`pid` = id")
                    ->get(['id', DB::raw('goods_name as text')]);
                break;
        }
        return response()->json($list);
    }
}