Files

235 lines
8.6 KiB
PHP
Raw Permalink Normal View History

2025-08-07 20:21:47 +08:00
<?php
namespace app\adminapi\controller;
use app\common\controller\adminApi;
use think\Db;
class UserZone extends adminApi
{
protected $noNeedLogin = [];
protected $noNeedRight = ['zone_lists','topic_lists','zone_detail','add_topic','del_zone','del_comment','zone_top_or_show','del_topic'];
protected $table = 'user_zone';
public function _initialize()
{
parent::_initialize();
}
/**
* 话题列表
*/
public function topic_lists(){
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$search_name = input('search_name', '');
$where=[];
//标签名称
if($search_name != ''){
$where['title'] = ['like', '%'.$search_name.'%'];
}
$count = db::name('topic')->where($where)->count();
$lists = db::name('topic')->where($where)->order('createtime desc')->page($page, $page_limit)->select();
foreach ($lists as &$value) {
if($value['createtime'] > 0){
$value['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
}
if($value['updatetime'] > 0){
$value['updatetime'] = date('Y-m-d H:i:s', $value['updatetime']);
}
$value['num'] = db::name('user_zone_topic')->where(['topic_id'=>$value['id']])->count();
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $lists
];
return V(1,"成功", $return_data);
}
//添加话题
public function add_topic(){
$id = input('id', 0);
$title = input('title', '');
$content = input('content', '');
$pic = input('pic', '');
if($title){
$data['title'] = '#'.$title;
}
if($content){
$data['content'] = $content;
}
if($pic){
$data['pic'] = $pic;
}
$data['createtime'] = time();
if($id > 0){
$res = db::name('topic')->where(['id'=>$id])->update($data);
}else{
$res = db::name('topic')->insert($data);
}
return V($res ? 1 : 0, $res ? '添加成功' : '添加失败');
}
//删除话题
public function del_topic(){
$id = input('id', 0);
$res = db::name('topic')->where(['id'=>$id])->update(['is_delete'=> time(),'updatetime'=> time()]);
return V($res ? 1 : 0, $res ? '删除成功' : '删除失败');
}
//动态列表
public function zone_lists(){
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$search_name = input('search_name', '');
$where['is_delete'] = 1;
//标签名称
if($search_name != ''){
$where['content'] = ['like', '%'.$search_name.'%'];
}
$count = db::name('user_zone')->where($where)->count();
$lists = db::name('user_zone')->where($where)->order('createtime desc')->page($page, $page_limit)->select();
foreach ($lists as &$value) {
if($value['createtime'] > 0){
$value['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
}
if($value['updatetime'] > 0){
$value['updatetime'] = date('Y-m-d H:i:s', $value['updatetime']);
}
if($value['delete_time'] > 0){
$value['delete_time'] = date('Y-m-d H:i:s', $value['delete_time']);
}
if($value['images']){
$value['images'] = explode(',', $value['images'])[0];
}
$value['rewards_num'] = db::name('user_zone_rewards')->where(['zone_id'=>$value['id']])->sum('gift_price_total');
$value['topic_title'] = db::name('topic')->where(['id'=>$value['topic_id']])->value('title');
$value['user_nickname'] = db::name('user')->where(['id'=>$value['user_id']])->value('nickname').'-'.
db::name('user')->where(['id'=>$value['user_id']])->value('user_code');
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $lists
];
return V(1,"成功", $return_data);
}
//动态详情
public function zone_detail(){
$id = input('id', 0);
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$detail = db::name('user_zone')->where(['id'=>$id])->find();
if($detail){
if($detail['createtime'] > 0){
$detail['createtime'] = date('Y-m-d H:i:s', $detail['createtime']);
}
if($detail['updatetime'] > 0){
$detail['updatetime'] = date('Y-m-d H:i:s', $detail['updatetime']);
}
//打赏金额
$detail['rewards_num'] = db::name('user_zone_rewards')->where(['zone_id'=>$detail['id']])->sum('gift_price_total');
//打赏人数
$detail['rewards_user_num'] = db::name('user_zone_rewards')->where(['zone_id'=>$detail['id']])->count();
//标签
$detail['title'] = [];
if(isset($detail['topic_id'])){
$top = explode(',', $detail['topic_id']);
foreach ($top as $kk){
$title = db::name('topic')->where(['id' => $kk])->find();
if(isset($title)){
$title['topic_id'] = $title['id'];
}
$detail['title'][] =$title?? [];
}
}
//评论列表
$coment = model('api/UserZone')->getCommentsWithReplies($detail['id'], $page, $page_limit);
$detail['comment_lists'] = $coment['data'];
}
return V(1,"成功", $detail);
}
//删除动态
public function del_zone(){
$id = input('id', 0);
$res = db::name('user_zone')->where(['id'=>$id])->update(['is_delete'=> 2,'delete_time'=> time()]);
if($res){
//删除动态下的标签引用
$top_zone = db::name('user_zone_topic')->where('zone_id',$id)->select();
if($top_zone){
foreach ($top_zone as $v){
db::name('user_zone_topic')->where('id',$v['id'])->delete();
}
}
}
2025-08-07 20:21:47 +08:00
return V($res ? 1 : 0, $res ? '删除成功' : '删除失败');
}
//删除评论
public function del_comment(){
$id = input('id', 0);
$res = db::name('user_zone_comment')->where(['id'=>$id])->update(['is_delete'=> 2,'updatetime'=> time()]);
2026-01-03 16:48:11 +08:00
if($res){
$zone_id = db::name('user_zone_comment')->where(['id'=>$id])->value('zone_id');
//删除评论下的回复
$dd = db::name('user_zone_comment')->where('pid', $id)->find();
if($dd){
$reslut1 = db::name('user_zone_comment')->where('pid', $id)->update(['is_delete' => 2,'updatetime' => time()]);
if (!$reslut1) {
return ['code' => 0, 'msg' => '请重试!!', 'data' => null];
}
}
//减少评论数量
$num = db::name('user_zone_comment')->where('pid', $id)->count();
if($num > 0){
$num = $num + 1;
}else{
$num = 1;
}
$reslut2 = db::name('user_zone')->where('id', $zone_id)->setDec('comment_num', $num);
if (!$reslut2) {
return ['code' => 0, 'msg' => '请重试!!', 'data' => null];
}
}
2025-08-07 20:21:47 +08:00
return V($res ? 1 : 0, $res ? '删除成功' : '删除失败');
}
2026-01-03 16:48:11 +08:00
public function comment_zone()
{
$id = input('id', 0);
$content = input('content', '');
$comment_data = db::name('user_zone_comment')->where(['id'=>$id])->find();
$zid = $comment_data['zone_id'];
$pid = $id;
$reply_to = input('reply_to', 0);
2026-01-04 11:49:34 +08:00
if(!$reply_to){
$reply_to = $comment_data['user_id'];
}
$reslut = model('api/UserZone')->comment_zone(21216, $zid, $content,$pid, $reply_to);
2026-01-03 16:48:11 +08:00
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
2025-08-07 20:21:47 +08:00
//动态置顶或显示操作操作
public function zone_top_or_show(){
$id = input('id', 0);
$type = input('type', 0);
$status = input('status', 0);
if($type ==1){
$data['is_recommend'] = $status;
}else{
$data['show_status'] = $status;
}
$data['updatetime'] = time();
$res = db::name('user_zone')->where(['id'=>$id])->update($data);
return V($res ? 1 : 0, $res ? '操作成功' : '操作失败');
}
}