2025-08-13 10:43:56 +08:00
< ? php
namespace app\api\model ;
use think\Db ;
use think\Log ;
use think\Model ;
class UserZone extends Model
{
//发布(动态)
public function publish_zone ( $uid , $images , $content , $topic_id = '' , $room_id = '' , $ip = '' )
{
// $images_data = explode(',', json_decode($images));
if ( empty ( $content )) {
return [ 'code' => 0 , 'msg' => '发布内容和图片不能为空' , 'data' => null ];
}
//维禁判断
if ( ! empty ( $content )) {
$result = model ( 'Tencent' ) -> content_moderation ( 'Text' , $content );
if ( $result [ 'code' ] != 1 ) {
return [ 'code' => 0 , 'msg' => '内容存在违禁词!' , 'data' => null ];
}
}
$data = [];
$data [ 'user_id' ] = $uid ;
$data [ 'images' ] = $images ;
$data [ 'content' ] = $content ;
$data [ 'show_status' ] = 1 ; ///1:显示 0不显示
$data [ 'topic_id' ] = $topic_id ;
$data [ 'room_id' ] = $room_id ;
$data [ 'ip' ] = $ip ;
$data [ 'createtime' ] = time ();
$reslut = $this -> save ( $data );
//获取上一步的id
$did = $this -> id ;
if ( $reslut ) {
//$topic_id 有值
if ( isset ( $topic_id )) {
$top = explode ( ',' , $topic_id );
foreach ( $top as $kk ){
//插入关联表
$datad = [];
$datad [ 'zone_id' ] = $did ;
$datad [ 'topic_id' ] = $kk ;
$res = db :: name ( 'user_zone_topic' ) -> insert ( $datad );
}
}
//判断是不是第一次发布
$count = db :: name ( 'user_zone' ) -> where ( 'user_id' , $uid ) -> count ();
if ( $count <= 1 ){
//首次发布动态【完成任务】
model ( 'DailyTasks' ) -> tasks_complete ( $uid , 12 );
}
//发布的是几张 图片
$count_images = count ( explode ( ',' , $images ));
if ( $count_images == 9 ){
$first = db :: name ( 'vs_user_zone_manjiujiang' ) -> where ( 'user_id' , $uid ) -> find ();
if ( ! $first ){
//发布动态头图上传满九张【完成任务】第一次给奖励
model ( 'DailyTasks' ) -> tasks_complete ( $uid , 13 );
db :: name ( 'vs_user_zone_manjiujiang' ) -> insert ([ 'user_id' => $uid , 'createtime' => time ()]);
}
}
//注册后累计发布M条动态, 奖励X金币 【完成任务】
model ( 'DailyTasks' ) -> tasks_complete ( $uid , 16 );
return [ 'code' => 1 , 'msg' => '发布成功' , 'data' => null ];
} else {
return [ 'code' => 0 , 'msg' => '发布失败' , 'data' => null ];
}
}
//获取动态列表
public function get_zone_list ( $uid , $page , $page_limit , $topic_id = 0 )
{
$page = intval ( $page );
$page_limit = $page_limit < 10 ? $page_limit : 15 ;
$map = [];
if ( $topic_id ){
//查询引用话题的动态ID
$topic_id = db :: name ( 'user_zone_topic' ) -> where ( 'topic_id' , $topic_id ) -> field ( 'zone_id' ) -> select ();
$topic_id = array_map ( function ( $item ){
return $item [ 'zone_id' ];
}, $topic_id );
$map [ 'a.id' ] = [ 'in' , $topic_id ];
}
$map [ 'a.show_status' ] = 1 ; //1:显示 0不显示
$map [ 'a.is_delete' ] = 1 ; //是否删除 1否2是
$map [ 'b.status' ] = [ '<>' , 0 ]; //是否注销 1正常, 2禁止登录, 0注销
$order_string = 'a.createtime desc' ; //排序规则
$list = db :: name ( 'user_zone' ) -> alias ( 'a' ) -> join ( 'fa_user b' , 'a.user_id = b.id' , 'left' )
-> where ( $map )
-> field ( 'a.id,a.user_id,a.images,a.content,a.like_num,a.comment_num,a.is_recommend,b.nickname,b.sex,b.avatar,b.user_code,a.room_id,a.ip,a.createtime,a.topic_id' )
-> order ( $order_string ) -> page ( $page , $page_limit ) -> select ();
foreach ( $list as $k => & $v ) {
//头像装扮
$v [ 'dress' ] = model ( 'Decorate' ) -> user_decorate_detail ( $v [ 'user_id' ], 1 );
$v [ 'title' ] = [];
if ( isset ( $v [ 'topic_id' ])){
$top = explode ( ',' , $v [ 'topic_id' ]);
foreach ( $top as $kk ){
$title = db :: name ( 'topic' ) -> where ([ 'id' => $kk ]) -> find ();
if ( isset ( $title )){
$title [ 'topic_id' ] = $title [ 'id' ];
$title [ 'count' ] = db :: name ( 'user_zone_topic' ) -> where ( 'topic_id' , $kk ) -> count ();
}
$v [ 'title' ][] = $title ;
}
}
//房间分享到动态
if ( $v [ 'room_id' ]){
//查询房主此时是否在聊天室
$room_id = db :: name ( 'vs_room_visitor' ) -> where ([ 'user_id' => $v [ 'user_id' ], 'is_delete' => 1 ]) -> value ( 'room_id' );
if ( $room_id ) {
$room = db :: name ( 'vs_room' ) -> where ([ 'id' => $room_id , 'room_status' => 1 ]) -> field ( 'id,room_name,room_number,room_cover,room_intro,today_hot_value as hot_value,type_id' ) -> find ();
$v [ 'room_id' ] = $room [ 'id' ];
$v [ 'room_cover' ] = $room [ 'room_cover' ];
$v [ 'room_type' ] = db :: name ( 'vs_room_type' ) -> where ([ 'id' => $room [ 'type_id' ], 'status' => 1 ]) -> field ( 'type_name' );
$v [ 'room_intro' ] = $room [ 'intro' ];
$v [ 'hot_value' ] = $room [ 'hot_value' ];
$v [ 'room_number' ] = $room [ 'room_number' ];
$v [ 'room_name' ] = $room [ 'room_name' ];
} else {
$v [ 'room_id' ] = 0 ;
}
//分享出去的URL
$v [ 'share_url' ] = get_system_config_value ( 'web_site' ) . '/api/Share/zone_detail?id=' . $v [ 'id' ];
} else {
$v [ 'is_like' ] = 0 ; //是否点赞is_room
$praise = db :: name ( 'user_zone_like' ) -> where ([ 'zone_id' => $v [ 'id' ], 'user_id' => $uid , 'delete_time' => 0 ]) -> find ();
if ( ! empty ( $praise )) {
$v [ 'is_like' ] = 1 ;
}
$v [ 'room_id' ] = 0 ; //是否在聊天室
//判断是否在聊天室
$room_id = db :: name ( 'vs_room_visitor' ) -> where ([ 'user_id' => $v [ 'user_id' ], 'is_delete' => 1 ]) -> order ( 'id desc' ) -> value ( 'room_id' );
if ( isset ( $room_id )) {
$v [ 'room_id' ] = $room_id ;
}
$v [ 'rewards_num' ] = 0 ; //打赏
$rewards = db :: name ( 'user_zone_rewards' ) -> where ( 'zone_id' , $v [ 'id' ]) -> field ( 'sum(gift_price_total) as rewards_num' ) -> find ();
if ( isset ( $rewards )) {
$v [ 'rewards_num' ] = $rewards [ 'rewards_num' ] ? ? 0 ;
}
//分享出去的URL
$v [ 'share_url' ] = get_system_config_value ( 'web_url' ) . '/share/index.html?id=' . $v [ 'id' ];
}
}
//根据 is_recommend = 1推荐 排序 推荐的拍前面
$top = array_filter (( array ) $list , function ( $item ) { return $item [ 'is_recommend' ] == 1 ; });
$untop = array_filter (( array ) $list , function ( $item ) { return $item [ 'is_recommend' ] != 1 ; });
$list = array_merge ( $top , $untop );
return [ 'code' => 1 , 'msg' => '获取成功' , 'data' => $list ];
}
//动态详情
public function get_zone_info ( $zid , $uid = 0 )
{
$map = [];
$map [ 'a.id' ] = $zid ;
$map [ 'a.show_status' ] = 1 ; //1:显示 0不显示
$map [ 'a.is_delete' ] = 1 ; //是否删除 1否2是
$model = Db :: name ( 'UserZone' ) -> alias ( 'a' ) -> join ( 'fa_user b' , 'a.user_id = b.id' );
$model = $model -> where ( $map );
$info = $model -> field ( 'a.id,a.user_id,a.images,a.content,a.like_num,a.read_num,a.comment_num,a.is_recommend,a.createtime,a.ip,b.nickname,b.sex,b.avatar,b.user_code,a.topic_id' ) -> find ();
if ( empty ( $info )) {
return [ 'code' => 0 , 'msg' => '动态不存在' , 'data' => null ];
}
$info [ 'title' ] = [];
if ( isset ( $info [ 'topic_id' ])){
$top = explode ( ',' , $info [ 'topic_id' ]);
foreach ( $top as $kk ){
$title = db :: name ( 'topic' ) -> where ([ 'id' => $kk ]) -> find ();
if ( isset ( $title )){
$title [ 'topic_id' ] = $title [ 'id' ];
$title [ 'count' ] = db :: name ( 'user_zone_topic' ) -> where ( 'topic_id' , $kk ) -> count ();
}
$info [ 'title' ][] = $title ;
}
}
$info [ 'is_like' ] = 0 ; //是否点赞
if ( isset ( $uid ) && $uid > 0 ){
$praise = db :: name ( 'user_zone_like' ) -> where ([ 'zone_id' => $info [ 'id' ], 'user_id' => $uid , 'delete_time' => 0 ]) -> find ();
if ( ! empty ( $praise )) {
$info [ 'is_like' ] = 1 ;
}
}
//点赞列表
$info [ 'like_list' ] = [];
$praise_list = db :: name ( 'user_zone_like' ) -> alias ( 'a' ) -> join ( 'fa_user b' , 'a.user_id = b.id' )
-> field ( 'a.user_id,b.nickname,b.sex,b.avatar,b.birthday' )
-> where ([ 'a.zone_id' => $zid , 'a.delete_time' => 0 ])
-> limit ( 3 )
-> select ();
if ( ! empty ( $praise_list )) {
foreach ( $praise_list as $k => & $v ) {
if ( $v [ 'birthday' ]) {
$v [ 'age' ] = getAge ( $v [ 'birthday' ]);
$v [ 'constellation' ] = get_user_constellation ( $v [ 'birthday' ]);
} else {
$v [ 'age' ] = 0 ;
$v [ 'constellation' ] = '' ;
}
}
$info [ 'like_list' ] = $praise_list ;
}
$info [ 'room_id' ] = " 0 " ;
//判断是否在聊天室
$rid = db :: name ( 'vs_room_visitor' ) -> where ([ 'user_id' => $info [ 'user_id' ], 'is_delete' => 1 ]) -> order ( 'id desc' ) -> value ( 'room_id' );
if ( $rid ) {
$info [ 'room_id' ] = $rid ;
}
//打赏列表
$info [ 'rewards_list' ] = [];
$info [ 'rewards_num' ] = 0 ; //打赏金额
$rewards = db :: name ( 'user_zone_rewards' ) -> where ([ 'zone_id' => $info [ 'id' ]]) -> field ( 'sum(gift_price_total) as rewards_num' ) -> find ();
if ( $rewards ) {
$info [ 'rewards_num' ] = $rewards [ 'rewards_num' ] ? ? 0 ;
$rewards_list = db :: name ( 'user_zone_rewards' ) -> alias ( 'a' ) -> join ( 'fa_user b' , 'a.user_id = b.id' )
-> where ([ 'a.zone_id' => $zid ]) -> field ( 'a.user_id,a.gift_price_total,b.nickname,b.avatar' )
-> order ( 'a.gift_price_total desc' )
-> select ();
if ( ! empty ( $rewards_list )) {
foreach ( $rewards_list as $k => & $v ) {
$v [ 'room_id' ] = 0 ; //是否在聊天室
$rrid = db :: name ( 'vs_room_visitor' ) -> where ([ 'user_id' => $v [ 'user_id' ], 'is_delete' => 1 ]) -> value ( 'room_id' );
if ( $rrid ) {
$v [ 'room_id' ] = $rrid ;
}
}
$info [ 'rewards_list' ] = $rewards_list ;
}
}
//评论数量
// $info['comment_num'] = db::name('user_zone_comment')->where(['zone_id' => $zid])->count();
$info [ 'comment_list' ] = [];
$comment_list = db :: name ( 'user_zone_comment' ) -> alias ( 'a' ) -> join ( 'fa_user b' , 'a.user_id = b.id' )
-> where ([ 'a.zone_id' => $zid , 'a.is_delete' => 1 , 'pid' => 0 , 'is_show' => 1 ])
-> field ( 'a.id,a.user_id,a.content,a.createtime,b.nickname,b.avatar,b.sex,b.birthday' )
-> order ( 'a.createtime desc' )
-> limit ( 3 )
-> select ();
if ( ! empty ( $comment_list )) {
foreach ( $comment_list as $k => & $v ) {
//时间戳转换为日期格式
$v [ 'createtime' ] = date ( 'Y-m-d H:i:s' , $v [ 'createtime' ]);
if ( $v [ 'birthday' ]) {
$v [ 'age' ] = getAge ( $v [ 'birthday' ]);
$v [ 'constellation' ] = get_user_constellation ( $v [ 'birthday' ]);
} else {
$v [ 'age' ] = 0 ;
$v [ 'constellation' ] = '' ;
}
}
$info [ 'comment_list' ] = $comment_list ;
}
//分享出去的URL
$info [ 'share_url' ] = get_system_config_value ( 'web_url' ) . '/share/index.html?id=' . $zid ;
return [ 'code' => 1 , 'msg' => '获取成功' , 'data' => $info ];
}
//(动态)评论
public function comment_zone ( $uid , $zid , $content , $pid , $reply_to )
{
$info = db :: name ( 'user_zone' ) -> find ( $zid );
if ( empty ( $info )) {
return [ 'code' => 0 , 'msg' => " 评论的动态不存在 " , 'data' => null ];
}
Db :: startTrans ();
$data = [];
$data [ 'zone_id' ] = $zid ;
$data [ 'user_id' ] = $uid ;
$data [ 'pid' ] = $pid ;
$data [ 'reply_to' ] = $reply_to ;
$data [ 'content' ] = $content ;
// $data['praise_num'] = 0;
$data [ 'is_show' ] = 1 ;
$data [ 'createtime' ] = time ();
$reslut = db :: name ( 'user_zone_comment' ) -> insert ( $data );
if ( ! $reslut ) {
Db :: rollback ();
return [ 'code' => 0 , 'msg' => '请重试,' , 'data' => null ];
}
//评论別人的帖子- 每天第一条奖励【完成任务】
2025-09-05 17:50:50 +08:00
// if($info['user_id'] != $uid){
2025-08-13 10:43:56 +08:00
//今天的第一条评论奖励
$first_comment = db :: name ( 'user_zone_comment' ) -> where ([ 'user_id' => $uid , 'createtime' => [ 'between' , [ strtotime ( date ( 'Y-m-d 00:00:00' )), strtotime ( date ( 'Y-m-d 23:59:59' ))]]]) -> count ();
if ( $first_comment == 1 ) {
model ( 'DailyTasks' ) -> tasks_complete ( $uid , 5 );
}
2025-09-05 17:50:50 +08:00
// }
2025-08-13 10:43:56 +08:00
//增加评论数量
$reslut = db :: name ( 'user_zone' ) -> where ( 'id' , $zid ) -> setInc ( 'comment_num' , 1 );
if ( ! $reslut ) {
Db :: rollback ();
return [ 'code' => 0 , 'msg' => '请重试。' , 'data' => null ];
}
//提醒说说动态发布人有人评论
$user_info = db :: name ( 'user' ) -> where ( 'id' , $uid ) -> find ();
$content = $user_info [ 'nickname' ] . " 评论了您的动态 " ;
// model('api/user_message')->send_message($info['user_id'], 4,$info['zid'], "我的动态", $content);
Db :: commit ();
return [ 'code' => 1 , 'msg' => " 评论成功 " , 'data' => null ];
}
/**
* 获取评论及其回复
*/
public function getCommentsWithReplies ( $zid , $page , $page_limit )
{
// 获取顶级评论
$page = intval ( $page );
$page_limit = $page_limit < 30 ? $page_limit : 30 ;
$map = [];
$map [ 'a.is_show' ] = 1 ;
$map [ 'a.zone_id' ] = $zid ;
$map [ 'a.pid' ] = 0 ;
$map [ 'a.is_delete' ] = 1 ; //是否删除 1否2是
$order_string = 'a.createtime desc' ; //排序规则
$model = Db :: name ( 'user_zone_comment' ) -> alias ( 'a' ) -> join ( 'fa_user b' , 'a.user_id = b.id' );
$model = $model -> where ( $map );
$list = $model -> field ( 'a.id,a.zone_id,a.content,a.createtime,a.user_id,b.nickname,b.avatar' )
-> order ( $order_string ) -> page ( $page , $page_limit ) -> select ();
if ( $list ) {
$commentIds = array_column ( $list , 'id' );
foreach ( $list as $k => & $v ) {
//判断评论用户是否是作者
$v [ 'is_author' ] = 0 ;
$uid = Db :: name ( 'user_zone' ) -> where ( 'id' , $zid ) -> value ( 'user_id' );
if ( isset ( $uid ) && $v [ 'user_id' ] == $uid ) {
$v [ 'is_author' ] = 1 ;
}
}
// 获取这些评论的回复
$replies = Db :: name ( 'user_zone_comment' ) -> alias ( 'a' ) -> join ( 'fa_user b' , 'a.user_id = b.id' )
-> whereIn ( 'a.pid' , $commentIds )
-> where ( 'a.is_show' , 1 )
-> where ( 'a.is_delete' , 1 )
-> field ( 'a.id,a.reply_to,a.zone_id,a.content,a.createtime,a.user_id,b.nickname,b.avatar,a.pid' )
-> order ( 'a.createtime' , 'asc' )
-> select ();
if ( $replies ){
foreach ( $replies as $k => & $vv ) {
//判断评论用户是否是作者
$vv [ 'is_author' ] = 0 ;
$uidd = Db :: name ( 'user_zone' ) -> where ( 'id' , $zid ) -> value ( 'user_id' );
if ( isset ( $uidd ) && $vv [ 'user_id' ] == $uidd ) {
$vv [ 'is_author' ] = 1 ;
}
$vv [ 'reply_to_user' ] = " " ;
if ( isset ( $vv [ 'reply_to' ])){
$vv [ 'reply_to_user' ] = Db :: name ( 'user' ) -> where ( 'id' , $vv [ 'reply_to' ]) -> value ( 'nickname' );
}
}
// 将回复按父评论ID分组
$replyGroups = [];
foreach ( $replies as $reply ) {
$replyGroups [ $reply [ 'pid' ]][] = $reply ;
}
}
// 将回复关联到对应的评论
foreach ( $list as & $comment ) {
$comment [ 'replies' ] = $replyGroups [ $comment [ 'id' ]] ? ? [];
}
}
return [ 'code' => 1 , 'msg' => '获取成功' , 'data' => $list ];
}
/**
* 获取评论总数
*/
public function getCommentCount ( $zid )
{
return Db :: name ( 'user_zone_comment' ) -> where ([ 'zone_id' => $zid , 'is_show' => 1 , 'is_delete' => 1 ]) -> count ();
}
//点赞 取消点赞
public function praise_zone ( $uid , $zid )
{
//第一条点赞奖励 【任务废弃】
// $first_praise = db::name('user_zone_like')->where('user_id',$uid)->find();
// if(empty($first_praise)){
// $kay = get_system_config_value('task_like_others_for_the_first_time');
// model('DailyTasks')->daily_tasks_complete($uid,$kay);
// }
$map [ 'user_id' ] = $uid ;
$map [ 'zone_id' ] = $zid ;
$info = db :: name ( 'user_zone_like' ) -> where ( $map ) -> find ();
if ( ! empty ( $info )) {
if ( $info [ 'delete_time' ] == 0 ) {
$del1 = db :: name ( 'user_zone' ) -> where ( 'id' , $zid ) -> setDec ( 'like_num' );
$del = db :: name ( 'user_zone_like' ) -> where ( $map ) -> update ([ 'delete_time' => time ()]);
if ( ! $del || ! $del1 ) {
return [ 'code' => 0 , 'msg' => '请重试!' , 'data' => null ];
}
return [ 'code' => 1 , 'msg' => '取消点赞成功' , 'data' => null ];
} else {
$add1 = db :: name ( 'user_zone' ) -> where ( 'id' , $zid ) -> setInc ( 'like_num' );
$add = db :: name ( 'user_zone_like' ) -> where ( $map ) -> update ([ 'delete_time' => 0 ]);
if ( ! $add || ! $add1 ) {
return [ 'code' => 0 , 'msg' => '请重试!' , 'data' => null ];
}
return [ 'code' => 1 , 'msg' => '点赞成功' , 'data' => null ];
}
} else {
Db :: startTrans ();
$data = [];
$data [ 'user_id' ] = $uid ;
$data [ 'zone_id' ] = $zid ;
$data [ 'createtime' ] = time ();
$reslut = db :: name ( 'user_zone_like' ) -> insert ( $data );
if ( ! $reslut ) {
Db :: rollback ();
return [ 'code' => 0 , 'msg' => '请重试!' , 'data' => null ];
}
//增加点赞数量
$reslut = db :: name ( 'user_zone' ) -> where ( 'id' , $zid ) -> setInc ( 'like_num' );
if ( ! $reslut ) {
Db :: rollback ();
return [ 'code' => 0 , 'msg' => '请重试!!' , 'data' => null ];
}
Db :: commit ();
return [ 'code' => 1 , 'msg' => " 点赞成功 " , 'data' => null ];
}
}
//点赞列表
public function get_like_list ( $zid , $page , $page_limit )
{
$page = intval ( $page );
$page_limit = $page_limit < 30 ? $page_limit : 30 ;
$praise_list = db :: name ( 'user_zone_like' ) -> alias ( 'a' ) -> join ( 'fa_user b' , 'a.user_id = b.id' )
-> field ( 'a.user_id,b.nickname,b.sex,b.avatar,b.birthday' )
-> where ( 'a.zone_id' , $zid )
-> where ( 'a.delete_time' , 0 )
-> page ( $page , $page_limit )
-> select ();
if ( ! empty ( $praise_list )) {
foreach ( $praise_list as $k => & $v ) {
if ( $v [ 'birthday' ]) {
$v [ 'age' ] = getAge ( $v [ 'birthday' ]);
$v [ 'constellation' ] = get_user_constellation ( $v [ 'birthday' ]);
} else {
$v [ 'age' ] = 0 ;
$v [ 'constellation' ] = '' ;
}
}
}
return $praise_list ;
}
//引用话题的动态
public function get_zone_topic_list ( $uid , $topic_id , $page , $page_limit )
{
$list = $this -> get_zone_list ( $uid , $page , $page_limit , $topic_id );
return $list [ 'data' ];
}
//用户主页的动态列表
/*
* @ param $uid 当前用户id
* @ param $from_id 访问id 要看谁的ID
*/
public function get_user_zone_list ( $uid , $from_id , $page = 1 , $page_limit = 0 )
{
$page = intval ( $page );
$page_limit = $page_limit < 30 ? $page_limit : 30 ;
$map = [];
$map [ 'user_id' ] = $from_id ;
$map [ 'show_status' ] = 1 ; //1:显示
$map [ 'is_delete' ] = 1 ; //是否删除 1否2是
$order_string = 'createtime desc' ; //排序规则
$model = Db :: name ( 'user_zone' );
$list = $model -> where ( $map )
-> field ( 'id,images,content,like_num,comment_num,user_id,createtime,topic_id' )
-> order ( $order_string ) -> page ( $page , $page_limit ) -> select ();
foreach ( $list as $k => & $v ) {
$v [ 'is_like' ] = 0 ; //是否点赞
$praise = db :: name ( 'user_zone_like' ) -> where ([ 'zone_id' => $v [ 'id' ], 'user_id' => $uid ]) -> find ();
if ( ! empty ( $praise )) {
$v [ 'is_like' ] = 1 ;
}
$v [ 'rewards_num' ] = 0 ;
$rewards = db :: name ( 'user_zone_rewards' ) -> where ([ 'zone_id' => $v [ 'id' ]]) -> field ( 'sum(gift_price_total) as rewards_num' ) -> find ();
if ( $rewards ) {
$v [ 'rewards_num' ] = $rewards [ 'rewards_num' ] ? ? 0 ;
}
$v [ 'avatar' ] = db :: name ( 'user' ) -> where ( 'id' , $v [ 'user_id' ]) -> value ( 'avatar' );
$v [ 'nickname' ] = db :: name ( 'user' ) -> where ( 'id' , $v [ 'user_id' ]) -> value ( 'nickname' );
$v [ 'sex' ] = db :: name ( 'user' ) -> where ( 'id' , $v [ 'user_id' ]) -> value ( 'sex' );
//头像装扮
$v [ 'dress' ] = model ( 'Decorate' ) -> user_decorate_detail ( $v [ 'user_id' ], 1 );
$v [ 'title' ] = [];
if ( isset ( $v [ 'topic_id' ])){
$top = explode ( ',' , $v [ 'topic_id' ]);
foreach ( $top as $kk ){
$title = db :: name ( 'topic' ) -> where ([ 'id' => $kk ]) -> find ();
if ( isset ( $title )){
$title [ 'topic_id' ] = $title [ 'id' ];
$title [ 'count' ] = db :: name ( 'user_zone_topic' ) -> where ( 'topic_id' , $kk ) -> count ();
}
$v [ 'title' ][] = $title ;
}
}
}
return $list ;
}
//删除动态
public function delete_zone ( $uid , $zid )
{
$map [ 'user_id' ] = $uid ;
$map [ 'id' ] = $zid ;
$map [ 'is_delete' ] = 1 ;
$zone_info = db :: name ( 'user_zone' ) -> where ( $map ) -> find ();
if ( empty ( $zone_info )) {
return [ 'code' => 0 , 'msg' => '信息不存在' , 'data' => null ];
}
$data = [];
$data [ 'is_delete' ] = 2 ;
$data [ 'delete_time' ] = time ();
$reslut = db :: name ( 'user_zone' ) -> where ( 'id' , $zid ) -> update ( $data );
2025-08-19 15:34:03 +08:00
$top_zone = db :: name ( 'user_zone_topic' ) -> where ( 'zone_id' , $zid ) -> select ();
if ( $top_zone ){
foreach ( $top_zone as $v ){
db :: name ( 'user_zone_topic' ) -> where ( 'id' , $v [ 'id' ]) -> delete ();
}
}
2025-08-13 10:43:56 +08:00
if ( $reslut ) {
return [ 'code' => 1 , 'msg' => '删除成功' , 'data' => null ];
} else {
return [ 'code' => 0 , 'msg' => '删除失败' , 'data' => null ];
}
}
//删除评论
public function delete_zone_comment ( $uid , $cid )
{
$map = [];
$map [ 'user_id' ] = $uid ;
$map [ 'id' ] = $cid ;
$map [ 'is_delete' ] = 1 ;
$comment_info = db :: name ( 'user_zone_comment' ) -> where ( $map ) -> find ();
if ( empty ( $comment_info )) {
return [ 'code' => 0 , 'msg' => '评论不存在' , 'data' => null ];
}
$data = [];
$data [ 'is_delete' ] = 2 ;
$data [ 'updatetime' ] = time ();
//开启事务
Db :: startTrans ();
try {
$reslut = db :: name ( 'user_zone_comment' ) -> where ( 'id' , $cid ) -> update ( $data );
if ( ! $reslut ) {
Db :: rollback ();
return [ 'code' => 0 , 'msg' => '请重试!' , 'data' => null ];
}
//删除评论的回复
$dd = db :: name ( 'user_zone_comment' ) -> where ( 'pid' , $cid ) -> find ();
if ( $dd ){
$reslut1 = db :: name ( 'user_zone_comment' ) -> where ( 'pid' , $cid ) -> update ([ 'is_delete' => 2 , 'updatetime' => time ()]);
if ( ! $reslut1 ) {
Db :: rollback ();
return [ 'code' => 0 , 'msg' => '请重试!!' , 'data' => null ];
}
}
//减少评论数量
$num = db :: name ( 'user_zone_comment' ) -> where ( 'pid' , $cid ) -> count ();
if ( $num > 0 ){
$num = $num + 1 ;
} else {
$num = 1 ;
}
$reslut2 = db :: name ( 'user_zone' ) -> where ( 'id' , $comment_info [ 'zone_id' ]) -> setDec ( 'comment_num' , $num );
if ( ! $reslut2 ) {
Db :: rollback ();
return [ 'code' => 0 , 'msg' => '请重试!!' , 'data' => null ];
}
Db :: commit ();
return [ 'code' => 1 , 'msg' => '删除成功' , 'data' => null ];
}
catch ( \Exception $e ) {
Db :: rollback ();
return [ 'code' => 0 , 'msg' => " 请重试. " , 'data' => null ];
}
}
//扩列
public function expand_zone ( $uid , $type , $page , $page_limit )
{
$page = intval ( $page );
$page_limit = $page_limit < 30 ? $page_limit : 30 ;
if ( $type ){
$map [ 'a.sex' ] = $type ;
} else {
$map [ 'a.sex' ] = [ 'in' , [ 1 , 2 ]];
}
$map [ 'a.status' ] = 1 ;
//查询用户信息
$user_info = db :: name ( 'user' ) -> alias ( 'a' ) -> join ( 'fa_user_data b' , 'a.id = b.user_id' )
-> where ( $map ) -> field ( 'a.id as user_id,a.sex,a.nickname,a.avatar,a.birthday,a.address_ip as loginip,b.home_bgimages' )
-> order ( 'a.id desc' )
-> page ( $page , $page_limit )
-> select ();
if ( $user_info ){
foreach ( $user_info as & $v ){
if ( $v [ 'loginip' ] == null ){
$v [ 'loginip' ] = '未知' ;
} else {
//获取字符串的长度和 判断字符串里面是否有,
if (( mb_strlen ( $v [ 'loginip' ], 'utf-8' ) > 8 && mb_strpos ( $v [ 'loginip' ], ',' ) !== false )){
$ipd = explode ( ',' , $v [ 'loginip' ]);
2025-08-20 17:32:40 +08:00
// $v['loginip'] = $ipd[0].' · '.$ipd[1];//省·市
$sheng = $ipd [ 0 ] == '(null)' ? '' : $ipd [ 0 ];
$shi = $ipd [ 1 ] ? ? '' ;
$v [ 'loginip' ] = $sheng . ' ' . $shi ; //省·市
2025-08-13 10:43:56 +08:00
} else {
$v [ 'loginip' ] = '未知' ;
}
}
$v [ 'room_id' ] = 0 ;
//是否在房间
$is_room = db :: name ( 'vs_room_visitor' ) -> where ([ 'user_id' => $v [ 'user_id' ], 'is_delete' => 1 ]) -> order ( 'id desc' ) -> value ( 'room_id' );
if ( $is_room ) {
$v [ 'room_id' ] = $is_room ;
}
//用户等级标
$v [ 'icon' ][ 0 ] = model ( 'UserData' ) -> user_wealth_icon ( $v [ 'user_id' ]); //财富图标
$v [ 'icon' ][ 1 ] = model ( 'UserData' ) -> user_charm_icon ( $v [ 'user_id' ]); //魅力图标
}
}
return $user_info ;
}
//相互关注的用户
public function mutual_follow ( $uid , $page , $page_limit )
{
$page = intval ( $page );
$page_limit = $page_limit < 30 ? $page_limit : 30 ;
$map = [];
$map [ 'a.user_id' ] = $uid ; //我关注的
$map [ 'a.type' ] = 1 ;
$model = Db :: name ( 'user_follow' ) -> alias ( 'a' ) -> join ( 'fa_user b' , 'a.follow_id = b.id' );
$list = $model -> where ( $map )
-> field ( 'b.id as user_id,b.nickname,b.avatar,b.sex' )
-> order ( 'a.id desc' )
-> page ( $page , $page_limit )
-> select ();
$user_list = [];
if ( $list ){
foreach ( $list as & $v ){
//我关注的是否关注我了
$is_follow = db :: name ( 'user_follow' ) -> where ([ 'user_id' => $v [ 'id' ], 'follow_id' => $uid , 'type' => 1 ]) -> find ();
if ( $is_follow ){
$i = 0 ;
$user_list [ $i ][ 'user_id' ] = $v [ 'user_id' ];
$user_list [ $i ][ 'nickname' ] = $v [ 'nickname' ];
$user_list [ $i ][ 'avatar' ] = $v [ 'avatar' ];
$user_list [ $i ][ 'sex' ] = $v [ 'sex' ];
$i ++ ;
}
}
}
return $user_list ? ? [];
}
}