Files
mier-php/application/api/model/RoomMicro.php
2025-08-11 10:22:05 +08:00

148 lines
5.8 KiB
PHP

<?php
namespace app\api\model;
use think\Db;
use think\Model;
class RoomMicro extends Model
{
//创建房间麦位
public function create_room_micro($rid){
$micro_num = 12;
$insert_all = [];
for ($i = 0; $i < $micro_num; $i++){
$insert = [];
$insert['rid'] = $rid;
$insert['micro_id'] = $i + 1;
$insert['update_time'] = time();
$insert_all[] = $insert;
}
$reslut = db::name('room_micro')->insertAll($insert_all);
if($reslut){
return ['code' => 200, 'msg' => '创建成功', 'data' => null];
}else{
return ['code' => 201, 'msg' => '创建失败', 'data' => null];
}
}
//麦位魅力值明细
public function get_room_micro_charm_list($uid, $rid, $user_id){
$map = [];
$map[] = ['rid', '=', $rid];
$map[] = ['uid', '=', $user_id];
$info = db::name('room_user_cc')->where($map)->find();
if(!$info){
$data = [];
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
$map = [];
$map[] = ['cid', '=', $info['cid']];
$map[] = ['change_value', '>', 0];
$list = db::name('room_user_micro_charm_log')->alias('a')->join('yy_user b', 'a.uid = b.uid')->field('a.id, a.uid, b.nick_name, b.base64_nick_name, b.head_pic,a.change_value')->where($map)->order('change_value desc')->limit(20)->select();
foreach ($list as $k => &$v){
$v['nick_name'] = mb_convert_encoding(base64_decode($v['base64_nick_name']), 'UTF-8', 'UTF-8');
$v['head_pic'] = localpath_to_netpath($v['head_pic']);
$user_level_info = model('api/User')->get_user_charm_contribution_info($v['uid']);
$v['charm_level_image'] = $user_level_info['data']['charm_level_image'];
$v['contribution_level_image'] = $user_level_info['data']['contribution_level_image'];
$user_nobility_info = model('api/User')->get_user_nobility_info($v['uid']);
$v['nobility_image'] = $user_nobility_info['data']['nobility_image'];
}
return ['code' => 200, 'msg' => '获取成功', 'data' => $list];
}
//定时关闭主持三分钟不在的房间
public function close_room_status(){
set_time_limit(0);
ini_set('memory_limit', '1024M');
// exit;
$end_time = time() - 300;
$map = [];
$map[] = ['room_host_uid', '=', 0];
$map[] = ['room_status', '=', 1];
$map[] = ['down_up_time', '>', 0];
$map[] = ['down_up_time', '<', $end_time];
$list = db::name('room')->where($map)->select();
if(!empty($list)){
foreach($list as $k => $v){
$is_close = 1;
if($v['cate_id'] == 26){
$map = [];
$map[] = ['rid', '=', $v['rid']];
$map[] = ['is_stop', '=', 2];
$map[] = ['is_delete', '=', 1];
$room_auction_info = db::name('room_new_auction_log')->where($map)->find();
if($room_auction_info){
$is_close = 2;
}
}
if($v['cate_id'] == 27){
//当前是否已有进行中的K歌
$map = [];
$map[] = ['rid', '=', $v['rid']];
$map[] = ['is_delete', '=', 1];
$room_auction_info = db::name('room_song_log')->where($map)->find();
if($room_auction_info){
$is_close = 2;
}
}
if($v['cate_id'] == 28){
$map = [];
$map[] = ['rid', '=', $v['rid']];
$map[] = ['status', '=', 2];
$map[] = ['is_delete', '=', 1];
$room_auction_info = db::name('room_auction_log')->where($map)->find();
if($room_auction_info){
$room_micro_uid = db::name('room_micro')->where('rid', $v['rid'])->where('micro_id', 1)->value('uid');
if($room_micro_uid > 0){
$is_close = 2;
}else{
db::name('room_auction_log')->where('rid', $v['rid'])->where('is_delete', 1)->update(['is_delete' => 2, 'update_time' => time()]);
}
}
}
if($v['cate_id'] == 29){
$map = [];
$map[] = ['rid', '=', $v['rid']];
$map[] = ['is_delete', '=', 1];
$room_dating_log = db::name('room_dating_log')->where($map)->find();
if($room_dating_log){
$is_close = 2;
}
}
if($is_close == 1){
db::name('room')->where('rid', $v['rid'])->update(['room_status' => 3, 'down_up_time' => 0]);
//删除房间挂件
db::name('room_pendant_gift_log')->where('rid', $v['rid'])->update(['is_show' => 2, 'update_time' => time()]);
$push_room_data = [];
$push_room_data['rid'] = $v['rid'];
$push_room_data['type'] = 2;
$push_data = [];
$push_data['code'] = 369;
$push_data['msg'] = "房间类型变更推送";
$push_data['data'] = $push_room_data;
model('api/WebSocketPush')->send_to_group($v['rid'], $push_data);
}
}
}
echo date('Y-m-d H:i:s').' 执行成功';
}
}