BlogCategoryController.php 3.5 KB
<?php

namespace App\Http\Controllers\Bside\Blog;

use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\Blog\BlogCategoryLogic;
use App\Http\Requests\Bside\Blog\BlogCategoryRequest;
use App\Models\Blog\Blog as BlogModel;
use App\Models\Blog\BlogCategory as BlogCategoryModel;
use App\Models\RouteMap\RouteMap;

class BlogCategoryController extends BaseController
{
    /**
     * @name :博客分类列表
     * @author :liyuhang
     * @method
     */
    public function lists(BlogCategoryModel $blogCategoryModel){
        //搜索条件
        $this->map['project_id'] = $this->user['project_id'];
        $lists = $blogCategoryModel->lists($this->map,$this->page,$this->row,$this->order,
            ['id','pid','name','num','alias','status','sort','remark','created_at','updated_at']);
        if(!empty($lists['list'])){
            $blogModel = new BlogModel();
            foreach ($lists['list'] as $k => $v){
                $v['num'] = $blogModel->formatQuery(['category_id'=>['like','%,' . $v['id'] . ',%']])->count();
                $v['alias'] = RouteMap::getRoute(RouteMap::SOURCE_BLOG_CATE, $v['id'], $this->user['project_id']);
                $v['url'] = $this->user['domain'] . RouteMap::PATH_BLOG_CATE . '/' . $v['alias'];
                $v['hasChildren'] =  (($blogCategoryModel->read(['pid'=>$v['id']])) != false) ? true : false;
                $lists['list'][$k] = $v;
            }
        }
        $this->response('success',Code::SUCCESS,$lists);
    }

    /**
     * @name   :(添加/编辑时获取顶级分类)topList
     * @author :lyh
     * @method :post
     * @time   :2023/6/13 9:03
     */
    public function categoryTopList(BlogCategoryLogic $blogCategoryLogic){
        $list = $blogCategoryLogic->categoryTopList();
        $this->response('success',Code::SUCCESS,$list);
    }

    /**
     * @name :获取当前分类详情
     * @author :liyuhang
     * @method
     */
    public function info(BlogCategoryLogic $blogCategoryLogic){
        $this->request->validate([
            'id'=>['required']
        ],[
            'id.required' => 'ID不能为空'
        ]);
        $info = $blogCategoryLogic->info_blog_category();
        $info['url'] = $this->user['domain'] . $info['alias'];
        $this->response('success',Code::SUCCESS,$info);
    }

    /**
     * @remark :保存数据
     * @name   :save
     * @author :lyh
     * @method :post
     * @time   :2023/9/7 14:04
     */
    public function save(BlogCategoryRequest $request,BlogCategoryLogic $blogCategoryLogic){
        $request->validated();
        $blogCategoryLogic->categorySave();
        $this->response('success');
    }


    /**
     * @name :编辑状态/与排序
     * @author :liyuhang
     * @method
     */
    public function status(BlogCategoryLogic $blogCategoryLogic){
        $this->request->validate([
            'id'=>['required'],
        ],[
            'id.required' => 'ID不能为空',
        ]);
        $blogCategoryLogic->status_blog_category();
        $this->response('success');
    }

    /**
     * @name :删除分类
     * @author :liyuhang
     * @method
     */
    public function del(BlogCategoryLogic $blogCategoryLogic){
        $this->request->validate([
            'id'=>['required','array'],
        ],[
            'id.required' => 'ID不能为空',
            'id.array' => 'ID为数组',
        ]);
        $blogCategoryLogic->del_blog_category();
        //TODO::写入操作日志
        $this->response('success');
    }
}