NavController.php 4.5 KB
<?php

namespace App\Http\Controllers\Bside\Nav;


use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\Nav\NavLogic;
use App\Http\Requests\Bside\Nav\NavRequest;
use App\Models\Nav\BNav;
use App\Models\Nav\BNavGroup;

/**
 * 导航栏目 b端编辑 c端显示
 * @author:dc
 * @time 2023/5/8 16:31
 * Class NavController
 * @package App\Http\Controllers\Bside
 */
class NavController extends BaseController
{


    /**
     * @remark :获取列表数据
     * @name   :index
     * @author :lyh
     * @method :post
     * @time   :2023/12/4 15:00
     */
    public function index(BNav $nav){
        $this->map['project_id'] = $this->user['project_id'];
        $lists = $nav->list($this->map,$this->order = ['sort','id'],['*'],'asc');
        $data = array();
        if(!empty($lists)){
            foreach ($lists as $v){
                $v = (array)$v;
                $v = $this->handleReturnInfo($v);
                if ($v['pid'] == 0) {
                    $v['sub'] = _get_child($v['id'], $lists);
                    $data[]   = $v;
                }
            }
        }
        $this->response('success',Code::SUCCESS,$data);
    }

    /**
     * @remark :单独处理图片文件
     * @name   :HandleReturnInfo
     * @author :lyh
     * @method :post
     * @time   :2024/1/26 9:44
     */
    public function handleReturnInfo($param){
        if(isset($param['image']) && !empty($param['image'])){
            $param['image'] = getImageUrl($param['image'],$this->user['storage_type'],$this->user['project_location']);
        }
        if(isset($param['remark_image']) && !empty($param['remark_image'])){
            $param['remark_image'] = getImageUrl($param['remark_image'],$this->user['storage_type'],$this->user['project_location']);
        }
        return $this->success($param);
    }

    /**
     * @remark :获取当前id下的所有子集
     * @name   :getSubList
     * @author :lyh
     * @method :post
     * @time   :2023/12/4 15:04
     */
    public function getSubList(NavLogic $logic){
        $data = $logic->getSubList();
        $this->response('success',Code::SUCCESS,$data);
    }

    /**
     * @remark :保存数据
     * @name   :save
     * @author :lyh
     * @method :post
     * @time   :2023/8/21 11:32
     */
    public function save(NavRequest $request,NavLogic $logic){
        $request->validated();
        $logic->navSave();
        $this->response('success');
    }


    /**
     * @remark :删除菜单
     * @name   :delete
     * @author :lyh
     * @method :post
     * @time   :2023/8/23 11:09
     */
    public function delete(NavLogic $logic){
        $this->request->validate([
            'id'=>'required',
        ],[
            'id.required' => '产品ID不能为空',
        ]);
        $logic->navDelete();
        $this->response('success');

    }


    /**
     * @author:dc
     * @time 2023/5/9 16:14
     */
    public function urls(){
        // todo::需要配合 c端来
        $data = [
            ['url'=>'index', 'name'=>'首页'],
            ['url'=>'news', 'name'=>'新闻'],
            ['url'=>'products', 'name'=>'产品'],
            ['url'=>'search', 'name'=>'搜索页'],
            ['url'=>'blog', 'name'=>'博客']
        ];
        $this->response('success',Code::SUCCESS,$data);
    }

    /**
     * @remark :排序
     * @name   :sort
     * @author :lyh
     * @method :post
     * @time   :2023/8/22 9:49
     */
    public function sort(NavLogic $navLogic){
        $this->request->validate([
            'id'=>'required',
            'sort'=>'required'
        ],[
            'id.required' => '产品ID不能为空',
            'sort.required'=>'排序字段不能为空'
        ]);
        $navLogic->navSort();
        $this->response('success');
    }

    /**
     * 一键导入子菜单
     * @author zbj
     * @date 2023/11/21
     */
    public function import(NavLogic $navLogic){
        $this->request->validate([
            'id'=>'required',
        ],[
            'id.required' => 'ID不能为空',
        ]);
        $navLogic->importNav();
        $this->response('success');
    }

    /**
     * @remark :菜单列表排序
     * @name   :setSortList
     * @author :lyh
     * @method :post
     * @time   :2023/12/18 13:44
     */
    public function setSortList(NavLogic $navLogic){
        $this->request->validate([
            'sort_list'=>'required',
        ],[
            'sort_list.required' => '排序不能为空',
        ]);
        $navLogic->setSortList();
        $this->response('success');
    }
}