BlogCategoryLogic.php 4.6 KB
<?php

namespace App\Http\Logic\Bside\Blog;

use App\Enums\Common\Code;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\Blog\BlogCategory as BlogCategoryModel;
use App\Models\Blog\Blog as BlogModel;
use App\Models\News\NewsCategory as NewsCategoryModel;
use Illuminate\Support\Facades\DB;

class BlogCategoryLogic extends BaseLogic
{
    public function __construct()
    {
        parent::__construct();

        $this->model = new BlogCategoryModel();
        $this->param = $this->requestAll;
    }


    /**
     * @name :添加时验证上级分类是否有商品,有则替换带当前分类下
     * @return void
     * @author :liyuhang
     * @method
     */
    public function add_blog_category(){
        DB::beginTransaction();
        $this->param['project_id'] = $this->user['project_id'];
        $this->param['operator_id'] = $this->user['id'];
        $this->param['create_id'] = $this->user['id'];
        $this->param['created_at'] = date('Y-m-d H:i:s');
        $this->param['updated_at'] = date('Y-m-d H:i:s');
        $cate_id = $this->model->insertGetId($this->param);
        if($cate_id === false){
            DB::rollBack();
            $this->fail('error',Code::USER_ERROR);
        }
        //判断为子分类时
        if(isset($this->param['pid']) && !empty($this->param['pid'])) {
            //查看当前上级分类下是否有其他分类
            $cate_info = $this->model->read(['pid' => $this->param['pid'], 'id' => ['!=', $cate_id]]);
            if ($cate_info === false) {
                //查看当前上一级分类下是否有新闻
                $blogModel = new BlogModel();
                $news_info = $blogModel->read(['category_id' => ['like', ',' . $this->param['pid'] . ',']]);
                if ($news_info !== false) {
                    $replacement = ',' . $cate_id . ',';
                    $old = ',' . $this->param['pid'] . ',';
                    //更新所有商品到当前分类
                    $rs = DB::table('gl_Blog')->where('category_id', 'like', '%' . $old . '%')
                        ->update(['category_id' => DB::raw("REPLACE(category_id, '$old', '$replacement')")]);
                    if ($rs === false) {
                        DB::rollBack();
                        $this->fail('error', Code::USER_ERROR);
                    }
                }
            }
        }
        DB::commit();
        return $this->success();
    }

    /**
     * @name :编辑分类
     * @return void
     * @throws \App\Exceptions\BsideGlobalException
     * @author :liyuhang
     * @method
     */
    public function edit_blog_category(){
        $this->param['operator_id'] = $this->user['id'];
        $rs = $this->model->edit($this->param,['id'=>$this->param['id']]);
        if($rs ===  false){
            $this->fail('error',Code::USER_ERROR);
        }
        return $this->success();
    }

    /**
     * @name :详情
     * @return array
     * @throws \App\Exceptions\BsideGlobalException
     * @author :liyuhang
     * @method
     */
    public function info_blog_category(){
        $info = $this->model->read($this->param);
        if($info === false){
            $this->fail('error',Code::USER_ERROR);
        }
        return $this->success($info);
    }

    /**
     * @name :编辑状态与排序
     * @return void
     * @author :liyuhang
     * @method
     */
    public function status_blog_category(){
        $this->param['operator_id'] = $this->user['id'];
        $rs = $this->model->edit($this->param,['id'=>$this->param['id']]);
        if($rs ===  false){
            $this->fail('error',Code::USER_ERROR);
        }
        return $this->success();
    }
    /**
     * @name :删除博客分类
     * @return void
     * @author :liyuhang
     * @method
     */
    public function del_blog_category(){
        $this->param = $this->requestAll;
        foreach ($this->param['id'] as $v){
            //查询是否有子分类
            $rs = $this->model->read(['pid'=>$v],['id']);
            if($rs !== false){
                $this->response('当前分类拥有子分类不允许删除',Code::USER_ERROR);
            }
            //查看当前分内下是否有博客
            $blogModel = new BlogModel();
            $rs = $blogModel->read(['category_id'=>$v],['id']);
            if($rs !== false){
                $this->response('当前分类拥有博客',Code::USER_ERROR);
            }
        }
        $this->param['id'] = ['in',$this->param['id']];
        $rs = $this->model->del($this->param);
        if($rs === false){
            $this->response('error',Code::USER_ERROR);
        }
        return $this->success();
    }
}