295 lines
9.6 KiB
PHP
295 lines
9.6 KiB
PHP
<?php
|
|
/**
|
|
* 后台管理系统-文章管理
|
|
*/
|
|
namespace app\admin\controller;
|
|
use app\admin\controller\Base;
|
|
use think\facade\Db;
|
|
use think\facade\View;
|
|
use think\facade\Request;
|
|
|
|
class Article extends Base
|
|
{
|
|
// 文章列表
|
|
public function articlelist()
|
|
{
|
|
$lists = Db::table('yz_article')
|
|
->where('delete_time', null)
|
|
->where('status', '<>', 3)
|
|
->order('id DESC')
|
|
->select()
|
|
->each(function ($item) {
|
|
$item['cate'] = Db::table('yz_article_category')->where('id', $item['cate'])->value('name');
|
|
$item['create_time'] = date('Y-m-d H:i:s', $item['create_time']);
|
|
$item['publishdate'] = $item['publishdate'] ? date('Y-m-d H:i:s', $item['publishdate']) : '';
|
|
return $item;
|
|
});
|
|
View::assign([
|
|
'lists' => $lists
|
|
]);
|
|
return View::fetch();
|
|
}
|
|
|
|
// 添加文章
|
|
public function add()
|
|
{
|
|
if (Request::isPost()) {
|
|
$data = [
|
|
'title' => input('post.title'),
|
|
'cate' => input('post.cate'),
|
|
'image' => input('post.image'),
|
|
'content' => input('post.content'),
|
|
'author' => input('post.author'),
|
|
'desc' => input('post.desc'),
|
|
'status' => input('post.status', 2),
|
|
'publishdate' => time(),
|
|
'create_time' => time()
|
|
];
|
|
|
|
$insert = Db::table('yz_article')->insert($data);
|
|
if (empty($insert)) {
|
|
return json(['code' => 1, 'msg' => '添加失败', 'data' => []]);
|
|
}
|
|
return json(['code' => 0, 'msg' => '添加成功', 'data' => []]);
|
|
} else {
|
|
$lists = Db::table('yz_article')
|
|
->order('id DESC')
|
|
->select()
|
|
->each(function ($item, $key) {
|
|
$item['create_time'] = time();
|
|
return $item;
|
|
});
|
|
View::assign([
|
|
'lists' => $lists
|
|
]);
|
|
return View::fetch();
|
|
}
|
|
}
|
|
|
|
// 编辑文章
|
|
public function edit()
|
|
{
|
|
if (Request::isPost()) {
|
|
$id = input('get.id');
|
|
$data = [
|
|
'title' => input('post.title'),
|
|
'cate' => input('post.cate'),
|
|
'image' => input('post.image'),
|
|
'content' => input('post.content'),
|
|
'author' => input('post.author'),
|
|
'desc' => input('post.desc'),
|
|
'status' => input('post.status', 2),
|
|
'update_time' => time()
|
|
];
|
|
|
|
$update = Db::table('yz_article')->where('id', $id)->update($data);
|
|
return json(['code' => $update === false ? 1 : 0, 'msg' => $update === false ? '更新失败' : '更新成功', 'data' => []]);
|
|
} else {
|
|
$id = input('get.id');
|
|
$info = Db::table('yz_article')->where('id', $id)->find();
|
|
if ($info === null) {
|
|
return json(['code' => 1, 'msg' => '文章不存在', 'data' => []]);
|
|
}
|
|
|
|
$cates = Db::table('yz_article_category')
|
|
->where('delete_time', null)
|
|
->where('status', 1)
|
|
->order('sort asc, id asc')
|
|
->select()
|
|
->toArray();
|
|
|
|
$info['content'] = !empty($info['content']) ? htmlspecialchars_decode(str_replace(["\r\n", "\r", "\n"], '', addslashes($info['content']))) : '';
|
|
|
|
$currentCate = Db::table('yz_article_category')
|
|
->where('id', $info['cate'])
|
|
->where('delete_time', null)
|
|
->where('status', 1)
|
|
->find();
|
|
$info['cate_name'] = $currentCate ? $currentCate['name'] : '';
|
|
|
|
View::assign([
|
|
'info' => $info,
|
|
'cates' => $cates
|
|
]);
|
|
return View::fetch();
|
|
}
|
|
}
|
|
|
|
// 删除文章
|
|
public function delete()
|
|
{
|
|
$id = input('post.id');
|
|
$data = [
|
|
'delete_time' => time(),
|
|
];
|
|
$delete = Db::table('yz_article')->where('id', $id)->update($data);
|
|
if ($delete === false) {
|
|
return json(['code' => 1, 'msg' => '删除失败', 'data' => []]);
|
|
}
|
|
return json(['code' => 0, 'msg' => '删除成功', 'data' => []]);
|
|
}
|
|
|
|
// 文章分类
|
|
public function articlecate()
|
|
{
|
|
if (Request::isPost()) {
|
|
$count = Db::table('yz_article_category')
|
|
->where('delete_time', null)
|
|
->where('status', 1)
|
|
->count();
|
|
$page = (int) input('post.page', 1);
|
|
$limit = (int) input('post.limit', 10);
|
|
$lists = Db::table('yz_article_category')
|
|
->where('delete_time', null)
|
|
->where('status', 1)
|
|
->order('id asc')
|
|
->page($page, $limit)
|
|
->select()
|
|
->each(function ($item) {
|
|
$item['create_time'] = date('Y-m-d H:i:s', $item['create_time']);
|
|
return $item;
|
|
});
|
|
return json(['code' => 0, 'msg' => '获取成功', 'data' => $lists]);
|
|
} else {
|
|
// 获取分类列表
|
|
$lists = Db::table('yz_article_category')
|
|
->where('delete_time', null)
|
|
->where('status', 1)
|
|
->order('id asc')
|
|
->select()
|
|
->each(function ($item) {
|
|
$item['create_time'] = date('Y-m-d H:i:s', $item['create_time']);
|
|
return $item;
|
|
});
|
|
|
|
View::assign([
|
|
'lists' => $lists
|
|
]);
|
|
return View::fetch();
|
|
}
|
|
}
|
|
|
|
//获取分类结构
|
|
public function getcate()
|
|
{
|
|
// 获取所有分类
|
|
$lists = Db::table('yz_article_category')
|
|
->where('delete_time', null)
|
|
->where('status', 1)
|
|
->order('sort asc, id asc')
|
|
->select()
|
|
->toArray();
|
|
|
|
// 构建父子结构
|
|
$tree = [];
|
|
foreach ($lists as $item) {
|
|
if ($item['cid'] == 0) {
|
|
// 顶级分类
|
|
$tree[] = $item;
|
|
} else {
|
|
// 子分类
|
|
foreach ($tree as &$parent) {
|
|
if ($parent['id'] == $item['cid']) {
|
|
if (!isset($parent['children'])) {
|
|
$parent['children'] = [];
|
|
}
|
|
$parent['children'][] = $item;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return json(['code' => 0, 'msg' => '获取成功', 'data' => $tree]);
|
|
}
|
|
|
|
// 添加文章分类
|
|
public function cateadd()
|
|
{
|
|
if (Request::isPost()) {
|
|
// 将时间戳转换为 'Y-m-d H:i:s' 格式
|
|
$currentDateTime = time();
|
|
$data = [
|
|
'name' => input('post.name'),
|
|
'cid' => input('post.cid'),
|
|
'sort' => input('post.sort', 0),
|
|
'status' => input('post.status', 1),
|
|
'create_time' => $currentDateTime
|
|
];
|
|
|
|
$insert = Db::table('yz_article_category')->insert($data);
|
|
if (empty($insert)) {
|
|
return json(['code' => 1, 'msg' => '添加失败', 'data' => []]);
|
|
}
|
|
return json(['code' => 0, 'msg' => '添加成功', 'data' => []]);
|
|
} else {
|
|
$lists = Db::table('yz_article_category')
|
|
->order('id DESC')
|
|
->select()
|
|
->each(function ($item, $key) {
|
|
$item['create_time'] = time();
|
|
return $item;
|
|
});
|
|
View::assign([
|
|
'lists' => $lists
|
|
]);
|
|
return View::fetch();
|
|
}
|
|
}
|
|
|
|
//编辑文章分类
|
|
public function cateedit()
|
|
{
|
|
if (Request::isPost()) {
|
|
$data = [
|
|
'id' => input('post.id'),
|
|
'name' => input('post.name'),
|
|
'cid' => input('post.cid'),
|
|
'sort' => input('post.sort', 0),
|
|
'status' => input('post.status', 1),
|
|
'update_time' => time()
|
|
];
|
|
|
|
$update = Db::table('yz_article_category')
|
|
->where('id', $data['id'])
|
|
->update($data);
|
|
|
|
if ($update === false) {
|
|
return json(['code' => 1, 'msg' => '更新失败', 'data' => []]);
|
|
}
|
|
return json(['code' => 0, 'msg' => '更新成功', 'data' => []]);
|
|
} else {
|
|
$id = input('get.id');
|
|
$info = Db::table('yz_article_category')->where('id', $id)->find();
|
|
View::assign([
|
|
'info' => $info
|
|
]);
|
|
return View::fetch();
|
|
}
|
|
}
|
|
|
|
//删除文章分类
|
|
public function catedel()
|
|
{
|
|
$id = input('post.id');
|
|
|
|
// 检查是否有子分类
|
|
$hasChildren = Db::table('yz_article_category')
|
|
->where('cid', $id)
|
|
->where('delete_time', null)
|
|
->find();
|
|
|
|
if ($hasChildren) {
|
|
return json(['code' => 1, 'msg' => '该分类下有子分类,无法删除', 'data' => []]);
|
|
}
|
|
|
|
$delete = Db::table('yz_article_category')
|
|
->where('id', $id)
|
|
->update(['delete_time' => time()]);
|
|
|
|
if ($delete === false) {
|
|
return json(['code' => 1, 'msg' => '删除失败', 'data' => []]);
|
|
}
|
|
return json(['code' => 0, 'msg' => '删除成功', 'data' => []]);
|
|
}
|
|
} |