TaoLer/app/admin/controller/Forum.php

330 lines
8.3 KiB
PHP
Raw Normal View History

2020-01-01 13:17:19 +08:00
<?php
namespace app\admin\controller;
use app\common\controller\AdminController;
use app\common\model\Cate;
use app\common\model\Comment;
2020-01-14 15:47:11 +08:00
use app\common\model\Article;
2020-01-01 13:17:19 +08:00
use think\facade\View;
use think\facade\Request;
use think\facade\Db;
2021-08-03 17:33:48 +08:00
use think\facade\Cache;
use taoler\com\Files;
2020-01-01 13:17:19 +08:00
class Forum extends AdminController
{
//帖子列表
public function list()
{
2020-02-24 16:49:43 +08:00
if(Request::isAjax()){
$data = Request::only(['id','name','title','sec']);
$where =array();
if (!empty($data['sec'])) {
switch ($data['sec']) {
case '1':
2020-02-27 14:14:09 +08:00
$data['a.status'] = 1;
2020-02-24 16:49:43 +08:00
break;
case '2':
$data['is_top'] = 1;
break;
case '3':
$data['is_hot'] = 1;
break;
case '4':
2020-02-27 14:14:09 +08:00
$data['is_reply'] = 0;
break;
case '5':
$data['a.status'] = -1;
break;
case '6':
2020-02-27 14:14:09 +08:00
$data['a.status'] = 0;
2020-02-24 16:49:43 +08:00
break;
2020-02-27 14:14:09 +08:00
}
2020-02-24 16:49:43 +08:00
}
unset($data['sec']);
2020-02-27 14:14:09 +08:00
unset($data['status']);
2020-02-24 16:49:43 +08:00
if(!empty($data['id'])){
$data['a.id'] = $data['id'];
unset($data['id']);
}
2020-02-27 14:14:09 +08:00
2020-02-24 16:49:43 +08:00
if(!empty($data['title'])){
$where[] = ['title', 'like', '%'.$data['title'].'%'];
unset($data['title']);
}
2020-02-27 14:14:09 +08:00
$map = array_filter($data,[$this,"filtr"]);
2020-02-24 16:49:43 +08:00
2020-01-01 13:17:19 +08:00
$forumList = Db::name('article')
->alias('a')
->join('user u','a.user_id = u.id')
2022-08-02 21:13:36 +08:00
->join('cate c','a.cate_id = c.id')
->field('a.id as aid,ename,name,user_img,title,content,a.update_time as update_time,is_top,a.is_hot as is_hot,is_reply,a.status as status')
2020-01-01 13:17:19 +08:00
->where('a.delete_time',0)
2020-02-24 16:49:43 +08:00
->where($map)
->where($where)
2020-01-01 13:17:19 +08:00
->order('a.create_time', 'desc')
->paginate(15);
$res = [];
2020-02-24 16:49:43 +08:00
$count = $forumList->total();
if($count){
2020-01-01 13:17:19 +08:00
$res['code'] = 0;
$res['msg'] = '';
2020-02-24 16:49:43 +08:00
$res['count'] = $count;
2020-01-01 13:17:19 +08:00
foreach($forumList as $k=>$v){
2022-08-02 21:13:36 +08:00
$url = $this->getRouteUrl($v['aid'],$v['ename']);
2022-04-17 17:09:19 +08:00
$res['data'][]= ['id'=>$v['aid'],'poster'=>$v['name'],'avatar'=>$v['user_img'],'title'=>htmlspecialchars($v['title']),'url'=>$url,'content'=>htmlspecialchars($v['content']),'posttime'=>date("Y-m-d",$v['update_time']),'top'=>$v['is_top'],'hot'=>$v['is_hot'],'reply'=>$v['is_reply'],'check'=>$v['status']];
2020-01-01 13:17:19 +08:00
}
2020-02-24 16:49:43 +08:00
} else {
$res = ['code'=>-1,'msg'=>'没有查询结果!'];
2020-01-01 13:17:19 +08:00
}
return json($res);
}
return View::fetch();
}
//编辑帖子
2020-01-14 15:47:11 +08:00
public function listform()
2020-01-01 13:17:19 +08:00
{
if(Request::isAjax()){
$data = Request::param();
$form = Db::name('article')->find($data['id']);
//halt($form);
}
return View::fetch();
}
2020-01-14 15:47:11 +08:00
//删除帖子
public function listdel($id)
{
if(Request::isAjax()){
2021-10-12 16:46:49 +08:00
$arr = explode(",",$id);
foreach($arr as $v){
$article =Article::find($v);
$result = $article->together(['comments'])->delete();
}
2020-01-14 15:47:11 +08:00
2021-10-12 16:46:49 +08:00
if($result){
return json(['code'=>0,'msg'=>'删除成功']);
}else{
return json(['code'=>-1,'msg'=>'删除失败']);
2020-01-14 15:47:11 +08:00
}
2021-10-12 16:46:49 +08:00
}
2020-01-14 15:47:11 +08:00
}
2021-10-12 16:46:49 +08:00
2022-08-02 20:48:54 +08:00
/**
* 置顶、加精、评论开关,审核等状态管理
*
* @return void
*/
2020-01-14 15:47:11 +08:00
public function check()
{
2022-08-02 20:48:54 +08:00
$param = Request::only(['id','name','value']);
$data = ['id'=>$param['id'],$param['name']=>$param['value']];
2020-01-14 15:47:11 +08:00
//获取状态
2022-08-02 20:48:54 +08:00
$res = Db::name('article')->save($data);
Cache::delete('article_'.$data['id']);
2020-01-14 15:47:11 +08:00
if($res){
2022-08-02 20:48:54 +08:00
return json(['code'=>0,'msg'=>'设置成功','icon'=>6]);
2020-01-14 15:47:11 +08:00
}else {
2022-08-02 20:48:54 +08:00
return json(['code'=>-1,'msg'=>'失败啦','icon'=>6]);
2020-01-14 15:47:11 +08:00
}
}
2020-01-01 13:17:19 +08:00
//帖子分类
public function tags()
{
if(Request::isAjax()){
$list = Cate::select();
if($list){
$res['code'] = 0;
$res['msg'] = '';
$res['count']= count($list);
$res['data'] = [];
foreach($list as $k=>$v){
2021-08-03 17:33:48 +08:00
$res['data'][] = ['sort'=>$v['sort'],'id' => $v['id'],'tags'=>$v['catename'],'ename'=>$v['ename'],'detpl'=>$v['detpl'],'icon'=>$v['icon'],'is_hot'=>$v['is_hot'],'desc'=>$v['desc']];
2020-01-01 13:17:19 +08:00
}
}
return json($res);
}
2021-08-03 17:33:48 +08:00
//详情模板
$sys = $this->getSystem();
$template = Files::getDirName('../view/'.$sys['template'].'/index/article/');
View::assign(['template'=>$template]);
2020-01-01 13:17:19 +08:00
return View::fetch();
}
2021-08-03 17:33:48 +08:00
//添加和编辑帖子分类
public function tagsform()
2020-01-01 13:17:19 +08:00
{
2021-08-03 17:33:48 +08:00
$addOrEdit = !is_null(input('id'));//true是编辑false新增
$msg = $addOrEdit ? lang('edit') : lang('add');
2020-01-01 13:17:19 +08:00
if(Request::isAjax()){
$data = Request::param();
2020-03-13 22:59:38 +08:00
$list = Db::name('cate')->cache('catename')->save($data);
2020-01-01 13:17:19 +08:00
if($list){
2021-08-03 17:33:48 +08:00
return json(['code'=>0,'msg'=> $msg.'分类成功']);
2020-01-01 13:17:19 +08:00
}else{
2021-08-03 17:33:48 +08:00
return json(['code'=>-1,'msg'=> $msg.'分类失败']);
2020-01-01 13:17:19 +08:00
}
}
2021-08-03 17:33:48 +08:00
$tplname = $addOrEdit ? Db::name('cate')->where('id',input('id'))->value('detpl') : '';
//详情模板
$sys = $this->getSystem();
$template = Files::getDirName('../view/'.$sys['template'].'/index/article/');
View::assign(['template'=>$template,'tplname'=>$tplname]);
return View::fetch();
2020-01-01 13:17:19 +08:00
}
2021-08-03 17:33:48 +08:00
//详情页模板设置
public function tplSet()
2020-01-01 13:17:19 +08:00
{
2021-08-03 17:33:48 +08:00
if(Request::isPost()){
$data = Request::only(['id','detpl']);
Db::name('cate')->cache('catename')->update($data);
2020-01-01 13:17:19 +08:00
}
2021-08-03 17:33:48 +08:00
2020-01-01 13:17:19 +08:00
}
//删除帖子分类
public function tagsdelete()
{
if(Request::isAjax()){
2021-08-03 17:33:48 +08:00
$id = Request::param('id');
2020-01-01 13:17:19 +08:00
$cate = new Cate;
2021-08-03 17:33:48 +08:00
$result = $cate->del($id);
2020-01-01 13:17:19 +08:00
2021-08-03 17:33:48 +08:00
if($result == 1){
Cache::tag('catename')->clear();
return json(['code'=>0,'msg'=>'删除分类成功']);
}else{
return json(['code'=>-1,'msg'=>$result]);
}
2020-01-01 13:17:19 +08:00
}
}
//帖子评论
public function replys()
{
if(Request::isAjax()) {
$data = Request::only(['name','content','status']);
2020-02-24 16:49:43 +08:00
$map = array_filter($data);
$where = array();
if(!empty($map['content'])){
$where[] = ['a.content','like','%'.$map['content'].'%'];
unset($map['content']);
}
if(isset($data['status']) && $data['status'] !== '' ){
$where[] = ['a.status','=',(int)$data['status']];
unset($map['status']);
}
2020-02-24 16:49:43 +08:00
2020-01-12 15:03:13 +08:00
/*
$replys = Comment::field('id,article_id,user_id,content,create_time')->with([
'user' => function($query){
$query->field('id,name,user_img');
},
'article' => function($query){
$query->field('id,title');
}
])->paginate(15);
*/
$replys = Db::name('comment')
->alias('a')
->join('user u','a.user_id = u.id')
->join('article c','a.article_id = c.id')
2022-08-02 21:13:36 +08:00
->join('cate ca','c.cate_id = ca.id')
->field('a.id as aid,name,ename,title,user_img,a.content as content,a.create_time as create_time,a.status as astatus,c.id as cid')
2020-01-12 15:03:13 +08:00
->where('a.delete_time',0)
2020-02-24 16:49:43 +08:00
->where($map)
->where($where)
2020-01-12 15:03:13 +08:00
->order('a.create_time', 'desc')
->paginate(15);
2020-01-01 13:17:19 +08:00
$count = $replys->total();
$res = [];
2020-02-24 16:49:43 +08:00
if ($count) {
2020-01-01 13:17:19 +08:00
$res = ['code'=>0,'msg'=>'','count'=>$count];
foreach($replys as $k => $v){
2022-08-02 21:13:36 +08:00
$url = $this->getRouteUrl($v['cid'],$v['ename']);
2020-01-12 15:03:13 +08:00
//$res['data'][] = ['id'=>$v['id'],'replyer'=>$v->user->name,'cardid'=>$v->article->title,'avatar'=>$v->user->user_img,'content'=>$v['content'],'replytime'=>$v['create_time']];
2022-08-02 18:47:24 +08:00
$res['data'][] = ['id'=>$v['aid'],'replyer'=>$v['name'],'title'=>htmlspecialchars($v['title']),'avatar'=>$v['user_img'],'content'=>htmlspecialchars($v['content']),'replytime'=>date("Y-m-d",$v['create_time']),'check'=>$v['astatus'],'url'=>$url];
2020-01-01 13:17:19 +08:00
}
2020-02-24 16:49:43 +08:00
} else {
$res = ['code'=>-1,'msg'=>'没有查询结果!'];
2020-01-01 13:17:19 +08:00
}
return json($res);
}
2020-01-01 13:17:19 +08:00
return View::fetch();
}
2020-01-14 15:47:11 +08:00
//评论编辑
2020-01-01 13:17:19 +08:00
public function replysform()
{
return View::fetch();
}
2020-01-14 15:47:11 +08:00
//评论删除
public function redel($id)
{
if(Request::isAjax()){
$comm =Comment::find($id);
$result = $comm->delete();
if($result){
return json(['code'=>0,'msg'=>'删除成功']);
}else{
return json(['code'=>-1,'msg'=>'删除失败']);
}
}
}
//评论审核
public function recheck()
{
$data = Request::param();
//获取状态
$res = Db::name('comment')->where('id',$data['id'])->save(['status' => $data['status']]);
if($res){
if($data['status'] == 1){
return json(['code'=>0,'msg'=>'评论审核通过','icon'=>6]);
} else {
return json(['code'=>0,'msg'=>'评论被禁止','icon'=>5]);
}
}else {
return json(['code'=>-1,'msg'=>'审核出错']);
}
}
2020-04-02 23:41:48 +08:00
//帖子分类开启热点
//评论审核
public function tagshot()
{
$data = Request::only(['id','is_hot']);
$cate = Db::name('cate')->save($data);
if($cate){
if($data['is_hot'] == 1){
return json(['code'=>0,'msg'=>'设置热点成功','icon'=>6]);
} else {
return json(['code'=>0,'msg'=>'取消热点显示','icon'=>5]);
}
}else{
$res = ['code'=>-1,'msg'=>'热点设置失败'];
}
return json($res);
}
2020-02-27 14:38:50 +08:00
//array_filter过滤函数
public function filtr($arr){
if($arr === '' || $arr === null){
return false;
}
return true;
}
2020-01-01 13:17:19 +08:00
}