NewsCategoryController.php 5.1 KB
<?php

namespace App\Http\Controllers\Bside\News;

use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Requests\Bside\News\NewsCategoryRequest;
use App\Models\News\News as NewsModel;
use App\Models\News\NewsCategory as NewsCategoryModel;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

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

    /**
     * @name :获取当前分类详情
     * @return void
     * @author :liyuhang
     * @method
     */
    public function info(Request $request,NewsCategoryModel $newsCategory){
        $request->validate([
            'id'=>['required']
        ],[
            'id.required' => 'ID不能为空'
        ]);
        $info = $newsCategory->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(NewsCategoryRequest $request,NewsCategoryModel $newsCategoryModel,NewsModel $newsModel){
        $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 = $newsCategoryModel->add($this->param);
        if($rs === false){
            DB::rollBack();
            $this->response('error',Code::USER_ERROR);
        }
        //判断当前分内是否为一级分类
        if(isset($this->param['pid']) && !empty($this->param['pid'])){
            //查看当前上级分类下是否有其他分类
            $cate_info = $newsCategoryModel->read(['pid'=>$this->param['pid'],'id'=>['!=',$newsCategoryModel->id]]);
            if($cate_info === false){
                //查看当前上一级分类下是否有商品
                $news_info = $newsModel->read(['category_id'=>$this->param['pid'],'pid'=>0]);
                if($news_info !== false){
                    //更新所有商品到当前分类
                    $rs = $newsModel->edit(['category_id'=>$newsCategoryModel->id],['category_id'=>$this->param['pid']]);
                    if($rs === false){
                        DB::rollBack();
                        $this->response('error',Code::USER_ERROR);
                    }
                }
            }
        }
        DB::commit();
        //TODO::写入日志
        $this->response('success',Code::SUCCESS);
    }

    /**
     * @name :编辑分类
     * @return void
     * @author :liyuhang
     * @method
     */
    public function edit(NewsCategoryRequest $request,NewsCategoryModel $newsCategory){
        $request->validate([
            'id'=>['required']
        ],[
            'id.required' => 'ID不能为空'
        ]);
        $this->param['Operator_id'] = $this->uid;
        $rs = $newsCategory->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,NewsCategoryModel $newsCategory){
        $request->validate([
            'id'=>['required'],
        ],[
            'id.required' => 'ID不能为空',
        ]);
        $this->param['Operator_id'] = $this->uid;
        $rs = $newsCategory->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,NewsCategoryModel $newsCategory,NewsModel $news){
        $request->validate([
            'id'=>['required'],
        ],[
            'id.required' => 'ID不能为空',
        ]);
        foreach ($this->param['id'] as $v){
            //查询是否有子分类
            $rs = $newsCategory->read(['pid'=>$v],['id']);
            if($rs !== false){
                $this->response('当前分类拥有子分类不允许删除',Code::USER_ERROR);
            }
            //查看当前分内下是否有商品
            $rs = $news->read(['category_id'=>$v],['id']);
            if($rs !== false){
                $this->response('当前分类拥有商品',Code::USER_ERROR);
            }
        }
        $this->param['id'] = ['in',$this->param['id']];
        $rs = $newsCategory->del($this->param);
        if($rs === false){
            $this->response('error',Code::USER_ERROR);
        }
        $this->response('success');
    }
}