nk-lihaink-cn/app/admin/controller/ArticleCate.php

150 lines
3.8 KiB
PHP

<?php
/**
* @copyright Copyright (c) 2021 勾股工作室
* @license https://opensource.org/licenses/Apache-2.0
* @link https://www.gougucms.com
*/
declare (strict_types = 1);
namespace app\admin\controller;
use app\admin\BaseController;
use app\admin\model\ArticleCate as ArticleCateModel;
use app\admin\validate\ArticleCateValidate;
use think\exception\ValidateException;
use think\facade\Db;
use think\facade\View;
class ArticleCate extends BaseController
{
/**
* 构造函数
*/
public function __construct()
{
$this->model = new ArticleCateModel();
}
/**
* 数据列表
*/
public function datalist()
{
if (request()->isAjax()) {
$list = $this->model->where('delete_time',0)->order('sort asc')->select();
return to_assign(0, '', $list);
}
else{
return view();
}
}
//获取子分类id.$is_self=1包含自己
public function get_cate_son($id = 0, $is_self = 1)
{
$cates = $this->model->where('delete_time',0)->order('sort asc')->select()->toArray();
$cates_list = get_data_node($cates, $id);
$cates_array = array_column($cates_list, 'id');
if ($is_self == 1) {
//包括自己在内
$cates_array[] = $id;
}
return $cates_array;
}
/**
* 添加
*/
public function add()
{
$param = get_params();
if (request()->isAjax()) {
// 检验完整性
try {
validate(ArticleCateValidate::class)->check($param);
} catch (ValidateException $e) {
// 验证失败 输出错误信息
return to_assign(1, $e->getError());
}
$this->model->addArticleCate($param);
}else{
$pid = isset($param['pid']) ? $param['pid'] : 0;
View::assign('pid', $pid);
return view();
}
}
/**
* 编辑
*/
public function edit()
{
$param = get_params();
if (request()->isAjax()) {
// 检验完整性
try {
validate(ArticleCateValidate::class)->check($param);
} catch (ValidateException $e) {
// 验证失败 输出错误信息
return to_assign(1, $e->getError());
}
$cate_array = $this->get_cate_son($param['id']);
if (in_array($param['pid'], $cate_array)) {
return to_assign(1, '上级分类不能是该分类本身或其子分类');
}
$this->model->editArticleCate($param);
}else{
$id = isset($param['id']) ? $param['id'] : 0;
$detail = $this->model->getArticleCateById($id);
if (!empty($detail)) {
View::assign('detail', $detail);
return view();
}
else{
throw new \think\exception\HttpException(404, '找不到页面');
}
}
}
/**
* 查看信息
*/
public function read()
{
$param = get_params();
$id = isset($param['id']) ? $param['id'] : 0;
$detail = $this->model->getArticleCateById($id);
if (!empty($detail)) {
View::assign('detail', $detail);
return view();
}
else{
throw new \think\exception\HttpException(404, '找不到页面');
}
}
/**
* 删除
*/
public function del()
{
$param = get_params();
$id = isset($param['id']) ? $param['id'] : 0;
$type = isset($param['type']) ? $param['type'] : 0;
$count_cate = Db::name('ArticleCate')->where(["pid"=>$id,"delete_time"=>0])->count();
if ($count_cate > 0) {
return to_assign(1, "该分类下还有子分类,无法删除");
}
$count_article = Db::name('Article')->where(["cate_id" => $id,"delete_time"=>0])->count();
if ($count_article > 0) {
return to_assign(1, "该分类下还有文章,无法删除");
}
$this->model->delArticleCateById($id,$type);
}
}