BlogCategoryController.php 5.1 KB
<?php

namespace App\Http\Controllers\Bside\Blog;

use App\Http\Controllers\Bside\BaseController;
use App\Http\Requests\Bside\Blog\BlogCategoryRequest;
use App\Models\Blog\Blog as BlogModel;
use App\Models\Blog\BlogCategory as BlogCategoryModel;
use Illuminate\Http\Request;

class BlogCategoryController extends BaseController
{
    /**
     * @name :博客分类列表
     * @return json
     * @author :liyuhang
     * @method
     */
    public function lists(BlogCategoryModel $blogCategoryModel){
        //搜索条件
        $lists = $blogCategoryModel->lists($this->map,$this->page,$this->row);
        $this->response('success',Code::SUCCESS,$lists);
    }

    /**
     * @name :获取当前分类详情
     * @return void
     * @author :liyuhang
     * @method
     */
    public function info(Request $request,BlogCategoryModel $blogCategoryModel){
        $request->validate([
            'id'=>['required']
        ],[
            'id.required' => 'ID不能为空'
        ]);
        $info = $blogCategoryModel->read($this->param);
        if($info === false){
            $this->response('error',Code::USER_ERROR);
        }
        $this->response('success',Code::SUCCESS,$info);
    }
    /**
     * @name :添加分类
     * @return json
     * @author :liyuhang
     * @method
     */
    public function add(BlogCategoryRequest $request,BlogCategoryModel $blogCategoryModel,BlogModel $blogModel){
        $request->validated();
        $this->param['project_id'] = $this->user['project_id'];
        $this->param['operator_id'] = $this->uid;
        $this->param['create_id'] = $this->uid;
        DB::beginTransaction();
        $rs = $blogCategoryModel->add($this->param);
        if($rs ===  false){
            DB::rollBack();
            $this->response('error',Code::USER_ERROR);
        }
        //TODO::判断当前分内是否为一级分类
        if(isset($this->param['pid']) && !empty($this->param['pid'])){
            //查看当前上级分类下是否有其他分类
            $cate_info = $blogCategoryModel->read(['pid'=>$this->param['pid'],'id'=>['!=',$blogCategoryModel->id]]);
            if($cate_info === false){
                //查看当前上一级分类下是否有商品
                $news_info = $blogModel->read(['category_id'=>$this->param['pid'],'pid'=>0]);
                if($news_info !== false){
                    //更新所有商品到当前分类
                    $rs = $blogModel->edit(['category_id'=>$blogCategoryModel->id],['category_id'=>$this->param['pid']]);
                    if($rs === false){
                        DB::rollBack();
                        $this->response('error',Code::USER_ERROR);
                    }
                }
            }
        }
        //TODO::写入日志
        DB::commit();
        $this->response('success');
    }

    /**
     * @name :编辑分类
     * @return void
     * @author :liyuhang
     * @method
     */
    public function edit(BlogCategoryRequest $request,BlogCategoryModel $blogCategoryModel){
        $request->validate([
            'id'=>['required']
        ],[
            'id.required' => 'ID不能为空'
        ]);
        $this->param['operator_id'] = $this->uid;
        $rs = $blogCategoryModel->edit($this->param,['id'=>$this->param['id']]);
        if($rs ===  false){
            $this->response('error',Code::USER_ERROR);
        }
        //TODO::写入日志
        $this->response('success',Code::SUCCESS);
    }

    /**
     * @name :编辑状态/与排序
     * @return void
     * @author :liyuhang
     * @method
     */
    public function status(Request $request,BlogCategoryModel $blogCategoryModel){
        $request->validate([
            'id'=>['required'],
        ],[
            'id.required' => 'ID不能为空',
        ]);
        $this->param['operator_id'] = $this->uid;
        $rs = $blogCategoryModel->edit($this->param,['id'=>$this->param['id']]);
        if($rs ===  false){
            $this->response('error',Code::USER_ERROR);
        }
        $this->response('success');
    }

    /**
     * @name :删除分类
     * @return void
     * @author :liyuhang
     * @method
     */
    public function del(Request $request,BlogCategoryModel $blogCategoryModel,BlogModel $blogModel){
        $request->validate([
            'id'=>['required'],
        ],[
            'id.required' => 'ID不能为空',
        ]);
        foreach ($this->param['id'] as $v){
            //查询是否有子分类
            $rs = $blogCategoryModel->read(['pid'=>$v],['id']);
            if($rs !== false){
                $this->response('当前分类拥有子分类不允许删除',Code::USER_ERROR);
            }
            //查看当前分内下是否有博客
            $rs = $blogModel->read(['category_id'=>$v],['id']);
            if($rs !== false){
                $this->response('当前分类拥有博客',Code::USER_ERROR);
            }
        }
        $this->param['id'] = ['in',$this->param['id']];
        $rs = BlogCategoryModel->del($this->param);
        if($rs === false){
            $this->response('error',Code::USER_ERROR);
        }
        //TODO::写入操作日志
        $this->response('success');
    }
}