LabelsController.php 5.4 KB
<?php
/**
+-----------------------------------------------------------------------------------------------------------------------
 * 管理端控制层: Label 控制类
+-----------------------------------------------------------------------------------------------------------------------
 *
 * PHP version 7
 *
 * @label  App\Admin\Controllers
 * @package   App\Admin\Controllers
 * @author    Richer <yangzi1028@163.com>
 * @date      2023年4月21日17:31:34
 * @copyright 2020-2022 Richer (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
namespace App\Admin\Controllers;

use App\Admin\Forms\LabelForm;
use App\Admin\Grids\LabelGrid;
use App\Models\Category\CategoryLabel;
use App\Models\Category\CategoryLabelItem;
use App\Models\Label;
use App\Models\LabelItem;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Http\JsonResponse;

/**
 * Class LabelsController.
 *
 * @package App\Admin\Controllers
 */
class LabelsController extends BaseController
{
    use LabelGrid, LabelForm;

    /**
     * LabelsController constructor.
     *
     * @param CategoryLabel $model 注入model
     */
    public function __construct(CategoryLabel  $model)
    {
        // 资源显示的中名称
        $this->title            = $model::OBJ_NAME_ZH;
        // 是否可查看
        $this->can_view         = false;
        // 是否可新增
        $this->can_create       = true;
        // 是否可编辑
        $this->can_edit         = true;
        // 是否可删除
        $this->can_delete       = true;
        // 是否开启下拉菜单
        $this->dropdownActions  = false;

        // 执行父类构造方法
        parent::__construct($model);
    }

    /**
     * 获取 明细
     *
     * @param $id
     * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
     */
    public function items($id)
    {
        $list = null;
        try {
            // 获取数据,如果没有获取到抛出异常
            $model = $this->model->findOrFail($id);

            $list = $model->items()->get();
            return view('admin::label.items', compact('id', 'list')) ;

        } catch (ModelNotFoundException $e) {
            return view('admin::label.items', compact('id', 'list')) ;
        }
    }

    /**
     * 添加实例界面
     *
     * @param  $id
     */
    public function itemPage($id)
    {
        $item_id = request('item_id', 0);
        $item = null;
        if ($item_id) {
            $item = CategoryLabelItem::find($item_id);
        }
        // 获取数据,如果没有获取到抛出异常
        return view('admin::label.item', compact('id', 'item_id','item')) ;
    }

    /**
     * 添加站点
     *
     * @param integer $id 主键id
     *
     * @return JsonResponse
     */
    public function addItem($id)
    {
        try {
            $item_id = request('item_id', 0);
            if ($item_id > 0) {
                // 获取数据,如果没有获取到抛出异常
                $model = CategoryLabelItem::findOrFail($item_id);
                $model->name = request('name');
                $model->save();
            } else {
                // 获取数据,如果没有获取到抛出异常
                $model = $this->model->findOrFail($id);
                $name = request('name');
                // 判断是否已经存在了
                if ($model->items()->where('name', $name)->first()) {
                    return response()->json(
                        [
                            'code'    => 1,
                            'status'  => 0,
                            'message' => '操作失败,该名称已经存在。',
                        ]
                    );
                }
                $model->items()->create([
                    'name' => request('name'),
                ]);
            }

            return response()->json(
                [
                    'code' => 0,
                    'status' => 1,
                    'message' => __('operate_succeeded'),
                ]
            );
        } catch (\Exception $e) {
            return response()->json(
                [
                    'code'    => 1,
                    'status'  => 0,
                    'message' => $e->getMessage(),
                ]
            );
        }
    }

    /**
     * 删除明细
     *
     * @param integer $id 主键id
     *
     * @return JsonResponse
     */
    public function deleteItem($id)
    {
        try {
            // 获取数据,如果没有获取到抛出异常
            $result = CategoryLabelItem::where('id', request('id'))->delete();

            if ($result) {
                return response()->json(
                    [
                        'code'    => 0,
                        'status'  => 1,
                        'message' =>__('operate_succeeded'),
                    ]
                );
            }

            return response()->json(
                [
                    'code'    => 1,
                    'status'  => 1,
                    'message' =>__('操作失败。'),
                ]
            );


        } catch (\Exception $e) {
            return response()->json(
                [
                    'code'    => 1,
                    'status'  => 0,
                    'message' => $e->getMessage(),
                ]
            );
        }
    }
}