2025-11-12 17:10:17 +08:00
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
|
|
namespace app\api\model;
|
|
|
|
|
|
|
|
|
|
|
|
use think\Db;
|
|
|
|
|
|
use think\Model;
|
|
|
|
|
|
|
|
|
|
|
|
class SingerSong extends Model
|
|
|
|
|
|
{
|
|
|
|
|
|
/*
|
|
|
|
|
|
* 歌手认证 状态及等级
|
|
|
|
|
|
*/
|
|
|
|
|
|
public function singerAuthStatus($user_id)
|
|
|
|
|
|
{
|
|
|
|
|
|
$res = db::name('vs_singer')->where(['user_id' => $user_id])->find();
|
|
|
|
|
|
if ($res) {
|
|
|
|
|
|
$data = [
|
|
|
|
|
|
'status' => $res['status'],
|
|
|
|
|
|
'level' => $res['level'],
|
|
|
|
|
|
];
|
|
|
|
|
|
} else {
|
|
|
|
|
|
$data = [
|
|
|
|
|
|
'status' => -1,
|
|
|
|
|
|
'level' => 0,
|
|
|
|
|
|
];
|
|
|
|
|
|
}
|
|
|
|
|
|
return $data ;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
* 歌手认证
|
|
|
|
|
|
*/
|
|
|
|
|
|
public function singerAuth($user_id, $song)
|
|
|
|
|
|
{
|
|
|
|
|
|
//查询是否提交过认证
|
|
|
|
|
|
$res = db::name('vs_singer')->where(['user_id' => $user_id])->find();
|
2025-11-12 19:07:19 +08:00
|
|
|
|
if ($res && $res['status'] == 1) {
|
2025-11-13 15:26:17 +08:00
|
|
|
|
return ['code' => 0, 'msg' => '认证已通过,无需重复提交', 'data' => null];
|
2025-11-12 19:07:19 +08:00
|
|
|
|
}
|
2025-11-12 17:10:17 +08:00
|
|
|
|
if ($res) {
|
|
|
|
|
|
$data = [
|
|
|
|
|
|
'song' => $song,
|
|
|
|
|
|
'status' => 0,
|
|
|
|
|
|
'updatetime' => time()
|
|
|
|
|
|
];
|
|
|
|
|
|
$result = db::name('vs_singer')->where(['id' => $res['id']])->update($data);
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$data = [
|
|
|
|
|
|
'user_id' => $user_id,
|
|
|
|
|
|
'song' => $song,
|
|
|
|
|
|
'status' => 0,
|
|
|
|
|
|
'createtime' => time()
|
|
|
|
|
|
];
|
|
|
|
|
|
$result = db::name('vs_singer')->insert($data);
|
|
|
|
|
|
}
|
|
|
|
|
|
if ($result) {
|
2025-11-13 15:26:17 +08:00
|
|
|
|
return ['code' => 1, 'msg' => '提交成功', 'data' => null];
|
2025-11-12 17:10:17 +08:00
|
|
|
|
} else {
|
2025-11-13 15:26:17 +08:00
|
|
|
|
return ['code' => 0, 'msg' => '提交失败', 'data' => null];
|
2025-11-12 17:10:17 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
* 歌手添加歌曲
|
|
|
|
|
|
* @param song_name 歌曲名称
|
|
|
|
|
|
* @param gift_id 礼物id
|
|
|
|
|
|
* @param gift_num 礼物数量
|
|
|
|
|
|
*/
|
|
|
|
|
|
public function singerAddSong($user_id, $song_name, $gift_id, $gift_num)
|
|
|
|
|
|
{
|
2025-11-14 14:49:38 +08:00
|
|
|
|
//查询是否是认证歌手
|
|
|
|
|
|
$res = db::name('vs_singer')->where(['user_id' => $user_id])->find();
|
|
|
|
|
|
if (!$res || $res['status'] != 1) {
|
|
|
|
|
|
return ['code' => 0, 'msg' => '请先认证歌手', 'data' => null];
|
|
|
|
|
|
}
|
2025-11-12 17:10:17 +08:00
|
|
|
|
//查询是否提交过歌曲
|
|
|
|
|
|
$res = db::name('vs_singer_song')->where(['user_id' => $user_id, 'song_name' => $song_name])->find();
|
|
|
|
|
|
if ($res) {
|
2025-11-13 15:26:17 +08:00
|
|
|
|
return ['code' => 0, 'msg' => '请勿重复提交歌曲', 'data' => null];
|
2025-11-12 17:10:17 +08:00
|
|
|
|
}
|
|
|
|
|
|
$data = [
|
|
|
|
|
|
'user_id' => $user_id,
|
|
|
|
|
|
'song_name' => $song_name,
|
|
|
|
|
|
'gift_id' => $gift_id,
|
|
|
|
|
|
'gift_num' => $gift_num,
|
|
|
|
|
|
'createtime' => time()
|
|
|
|
|
|
];
|
|
|
|
|
|
$result = db::name('vs_singer_song')->insert($data);
|
|
|
|
|
|
if ($result) {
|
2025-11-13 15:26:17 +08:00
|
|
|
|
return ['code' => 1, 'msg' => '提交成功', 'data' => null];
|
2025-11-12 17:10:17 +08:00
|
|
|
|
} else {
|
2025-11-13 15:26:17 +08:00
|
|
|
|
return ['code' => 0, 'msg' => '提交失败', 'data' => null];
|
2025-11-12 17:10:17 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
* 获取房间内麦位上歌手歌曲
|
|
|
|
|
|
* @param room_id 房间id
|
|
|
|
|
|
* @param user_id 用户id
|
|
|
|
|
|
*/
|
2025-11-14 16:03:51 +08:00
|
|
|
|
public function getSong($uid, $user_id, $room_id, $page, $page_limit)
|
2025-11-12 17:10:17 +08:00
|
|
|
|
{
|
2025-11-12 17:45:49 +08:00
|
|
|
|
if($user_id > 0){
|
2025-11-13 17:25:45 +08:00
|
|
|
|
$count = db::name('vs_singer_song')->where(['user_id' => $user_id])->count();
|
|
|
|
|
|
$res = db::name('vs_singer_song')->where(['user_id' => $user_id])->page($page, $page_limit)->select();
|
2025-11-12 17:45:49 +08:00
|
|
|
|
}else{
|
|
|
|
|
|
//查询当前房间内麦位上的歌手
|
|
|
|
|
|
$room_singer = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => ['<',9]])->column('user_id');
|
|
|
|
|
|
if ($room_singer) {
|
2025-11-14 16:03:51 +08:00
|
|
|
|
//$uid 是当前自己,有自己就去除自己
|
|
|
|
|
|
$room_singer = array_diff($room_singer, [$uid]);
|
2025-11-13 17:25:45 +08:00
|
|
|
|
$count = db::name('vs_singer_song')->where(['user_id' => ['in', $room_singer]])->count();
|
|
|
|
|
|
$res = db::name('vs_singer_song')->where(['user_id' => ['in', $room_singer]])->page($page, $page_limit)->select();
|
2025-11-12 17:45:49 +08:00
|
|
|
|
}else{
|
|
|
|
|
|
$res = [];
|
2025-11-13 17:25:45 +08:00
|
|
|
|
$count = 0;
|
2025-11-12 17:45:49 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if ($res) {
|
|
|
|
|
|
foreach ($res as $k => $v) {
|
|
|
|
|
|
$res[$k]['gift_name'] = db::name('vs_gift')->where(['gid' => $v['gift_id']])->value('gift_name');
|
2025-11-12 18:30:28 +08:00
|
|
|
|
$res[$k]['gift_price'] = db::name('vs_gift')->where(['gid' => $v['gift_id']])->value('gift_price');
|
2025-11-13 18:42:48 +08:00
|
|
|
|
$res[$k]['base_image'] = db::name('vs_gift')->where(['gid' => $v['gift_id']])->value('base_image');
|
2025-11-17 11:25:00 +08:00
|
|
|
|
$res[$k]['singer_nickname'] = db::name('user')->where(['id' => $v['user_id']])->value('nickname');
|
2025-11-12 17:10:17 +08:00
|
|
|
|
}
|
2025-11-13 17:25:45 +08:00
|
|
|
|
return ['code' => 1, 'msg' => '获取成功', 'data' => ['count' => $count, 'lists' =>$res]];
|
2025-11-12 17:45:49 +08:00
|
|
|
|
} else {
|
2025-11-13 18:03:04 +08:00
|
|
|
|
return ['code' => 1, 'msg' => '暂无数据', 'data' => ['count' => $count, 'lists' =>$res]];
|
2025-11-12 17:10:17 +08:00
|
|
|
|
}
|
2025-11-12 17:45:49 +08:00
|
|
|
|
|
2025-11-12 17:10:17 +08:00
|
|
|
|
}
|
2025-11-12 19:07:19 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
* 点歌
|
|
|
|
|
|
* @param song_id 歌曲id
|
|
|
|
|
|
* @param user_id 用户id
|
|
|
|
|
|
*/
|
|
|
|
|
|
public function singerSong($user_id, $song_id, $room_id)
|
|
|
|
|
|
{
|
|
|
|
|
|
//查询歌曲信息
|
|
|
|
|
|
$song = db::name('vs_singer_song')->where(['id' => $song_id])->find();
|
|
|
|
|
|
if (!$song) {
|
2025-11-13 15:26:17 +08:00
|
|
|
|
return ['code' => 0, 'msg' => '歌曲不存在', 'data' => null];
|
2025-11-12 19:07:19 +08:00
|
|
|
|
}
|
2025-11-14 16:03:51 +08:00
|
|
|
|
//查询歌曲是否是自己的
|
2025-11-14 17:21:52 +08:00
|
|
|
|
if ($song['user_id'] == $user_id) {
|
2025-11-14 16:03:51 +08:00
|
|
|
|
return ['code' => 0, 'msg' => '不能点自己歌曲', 'data' => null];
|
|
|
|
|
|
}
|
2025-11-12 19:07:19 +08:00
|
|
|
|
//查询用户余额
|
|
|
|
|
|
$user_money = db::name('user_wallet')->where(['user_id' => $user_id])->value('coin');
|
|
|
|
|
|
$gift_price = db::name('vs_gift')->where(['gid' => $song['gift_id']])->value('gift_price');
|
|
|
|
|
|
if ($user_money < $gift_price * $song['gift_num']) {
|
2025-11-13 15:26:17 +08:00
|
|
|
|
return ['code' => 0, 'msg' => '余额不足', 'data' => null];
|
2025-11-12 19:07:19 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//走送礼流程
|
|
|
|
|
|
$res = model('GiveGift')->give_gift($user_id,$song['user_id'],$song['gift_id'],$song['gift_num'],2,1,$room_id);
|
|
|
|
|
|
if ($res['code'] == 1) {
|
|
|
|
|
|
$data = [
|
|
|
|
|
|
'user_id' => $user_id,
|
|
|
|
|
|
'room_id' => $room_id,
|
|
|
|
|
|
'singer_song_id' => $song_id,
|
|
|
|
|
|
'createtime' => time()
|
|
|
|
|
|
];
|
2025-11-17 10:54:22 +08:00
|
|
|
|
//插入数据库并获取ID
|
|
|
|
|
|
$result = db::name('vs_song_log')->insertGetId($data);
|
2025-11-12 19:07:19 +08:00
|
|
|
|
if (!$result) {
|
2025-11-13 15:26:17 +08:00
|
|
|
|
return ['code' => 0, 'msg' => '点歌失败', 'data' => null];
|
2025-11-12 19:07:19 +08:00
|
|
|
|
}
|
2025-11-17 10:54:22 +08:00
|
|
|
|
//获取当前房间内点歌总数
|
|
|
|
|
|
$song_info_count = db::name('vs_song_log')->where(['room_id' => $room_id,'status' => ['in',[0,1]]])->count();
|
2025-11-12 19:07:19 +08:00
|
|
|
|
//给前端推送
|
|
|
|
|
|
$text = [
|
2025-11-17 10:54:22 +08:00
|
|
|
|
'text' => '房间点歌数量变化',
|
|
|
|
|
|
'count' => $song_info_count
|
2025-11-12 19:07:19 +08:00
|
|
|
|
];
|
2025-11-17 10:54:22 +08:00
|
|
|
|
model('Chat')->sendMsg(1072,$room_id,$text);
|
|
|
|
|
|
|
|
|
|
|
|
if($song_info_count == 1){
|
|
|
|
|
|
//修改房间当前演唱歌曲
|
|
|
|
|
|
db::name('vs_song_log')->where(['id' => $result])->update(['status' => 1]);
|
|
|
|
|
|
$song_info = db::name('vs_song_log')->where(['id' => $result])->find();
|
2025-11-17 11:32:40 +08:00
|
|
|
|
$song_info['boss_user_id'] = $song_info['user_id'];
|
2025-11-17 10:54:22 +08:00
|
|
|
|
$song_info['boss_nickname'] = db::name('user')->where(['id' => $song_info['user_id']])->value('nickname');
|
|
|
|
|
|
$song_info['boss_avatar'] = db::name('user')->where(['id' => $song_info['user_id']])->value('avatar');
|
2025-11-17 11:25:00 +08:00
|
|
|
|
$song_info['boss_dress'] = model('api/Decorate')->user_decorate_detail($song_info['user_id'], 1);
|
|
|
|
|
|
$song_info['boss_mic_cycle'] = model('api/Decorate')->user_decorate_detail($song_info['user_id'],3);
|
2025-11-17 10:54:22 +08:00
|
|
|
|
$singer_song = db::name('vs_singer_song')->where(['id' => $song_info['singer_song_id']])->find();
|
2025-11-17 11:32:40 +08:00
|
|
|
|
$song_info['singer_user_id'] = $singer_song['user_id'];
|
2025-11-17 10:54:22 +08:00
|
|
|
|
$song_info['singer_nickname'] = db::name('user')->where(['id' => $singer_song['user_id']])->value('nickname');
|
|
|
|
|
|
$song_info['singer_avatar'] = db::name('user')->where(['id' => $singer_song['user_id']])->value('avatar');
|
2025-11-17 11:25:00 +08:00
|
|
|
|
$song_info['singer_dress'] = model('api/Decorate')->user_decorate_detail($singer_song['user_id'], 1);
|
|
|
|
|
|
$song_info['singer_mic_cycle'] = model('api/Decorate')->user_decorate_detail($singer_song['user_id'],3);
|
2025-11-17 10:54:22 +08:00
|
|
|
|
$song_info['song_name'] = $singer_song['song_name'];
|
|
|
|
|
|
|
|
|
|
|
|
$song_info_data = [
|
|
|
|
|
|
'text' => '房间当前演唱歌曲变化',
|
|
|
|
|
|
'song_info' => $song_info
|
|
|
|
|
|
];
|
|
|
|
|
|
model('Chat')->sendMsg(1070,$room_id,$song_info_data);
|
2025-11-17 14:56:45 +08:00
|
|
|
|
}elseif ($song_info_count == 2){
|
|
|
|
|
|
//给前端推送下首歌曲信息
|
|
|
|
|
|
$next_song_info = db::name('vs_song_log')->where(['id' => $result])->find();
|
|
|
|
|
|
$next_song_info['boss_nickname'] = db::name('user')->where(['id' => $next_song_info['user_id']])->value('nickname');
|
|
|
|
|
|
$next_song_info['boss_avatar'] = db::name('user')->where(['id' => $next_song_info['user_id']])->value('avatar');
|
|
|
|
|
|
$singer_song = db::name('vs_singer_song')->where(['id' => $next_song_info['singer_song_id']])->find();
|
|
|
|
|
|
$next_song_info['singer_nickname'] = db::name('user')->where(['id' => $singer_song['user_id']])->value('nickname');
|
|
|
|
|
|
$next_song_info['singer_avatar'] = db::name('user')->where(['id' => $singer_song['user_id']])->value('avatar');
|
|
|
|
|
|
$next_song_info['song_name'] = $singer_song['song_name'];
|
|
|
|
|
|
|
|
|
|
|
|
$data = [
|
|
|
|
|
|
'text' => '房间下一首演唱歌曲变化',
|
|
|
|
|
|
'next_song_info' => $next_song_info
|
|
|
|
|
|
];
|
|
|
|
|
|
model('Chat')->sendMsg(1071,$next_song_info['room_id'],$data);
|
2025-11-17 10:54:22 +08:00
|
|
|
|
}
|
2025-11-13 15:26:17 +08:00
|
|
|
|
return ['code' => 1, 'msg' => '点歌成功', 'data' => null];
|
2025-11-12 19:07:19 +08:00
|
|
|
|
} else {
|
2025-11-13 15:26:17 +08:00
|
|
|
|
return ['code' => 0, 'msg' => $res['msg'], 'data' => null];
|
2025-11-12 19:07:19 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-11-12 19:39:23 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
* 点歌列表
|
|
|
|
|
|
* @param room_id 房间id
|
|
|
|
|
|
* @param type 类型 1:已点列表,2:今日列表,3:昨日列表,4:本周列表,5:本月列表
|
|
|
|
|
|
*/
|
2025-11-13 17:25:45 +08:00
|
|
|
|
public function singerSongList($room_id,$type,$page,$page_limit)
|
2025-11-12 19:39:23 +08:00
|
|
|
|
{
|
|
|
|
|
|
$where = [
|
|
|
|
|
|
'room_id' => $room_id
|
|
|
|
|
|
];
|
|
|
|
|
|
switch ($type) {
|
|
|
|
|
|
case 2:
|
|
|
|
|
|
$where['createtime'] = ['between time',[strtotime(date('Y-m-d')),time()]];
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 3:
|
|
|
|
|
|
$where['createtime'] = ['between time',[strtotime(date('Y-m-d',strtotime("-1 day"))),strtotime(date('Y-m-d'))]];
|
|
|
|
|
|
$where['status'] = 2;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 4:
|
|
|
|
|
|
$where['createtime'] = ['between time',[strtotime(date('Y-m-d',strtotime("-1 week"))),time()]];
|
|
|
|
|
|
$where['status'] = 2;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 5:
|
|
|
|
|
|
$where['createtime'] = ['between time',[strtotime(date('Y-m-d',strtotime("-1 month"))),time()]];
|
|
|
|
|
|
$where['status'] = 2;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 1:
|
|
|
|
|
|
default:
|
|
|
|
|
|
$where['status'] = ['in','1,0'];
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
2025-11-13 17:25:45 +08:00
|
|
|
|
$res = db::name('vs_song_log')->where($where)->order('sort desc')->page($page,$page_limit)->select();
|
2025-11-14 17:05:21 +08:00
|
|
|
|
$count = db::name('vs_song_log')->where($where)->count();
|
2025-11-12 19:39:23 +08:00
|
|
|
|
if ($res) {
|
|
|
|
|
|
foreach ($res as $k => $v) {
|
|
|
|
|
|
$res[$k]['boss_nickname'] = db::name('user')->where(['id' => $v['user_id']])->value('nickname');
|
|
|
|
|
|
$res[$k]['song_name'] = db::name('vs_singer_song')->where(['id' => $v['singer_song_id']])->value('song_name');
|
|
|
|
|
|
$res[$k]['gift_name'] = db::name('vs_gift')->where(['gid' => db::name('vs_singer_song')->where(['id' => $v['singer_song_id']])->value('gift_id')])->value('gift_name');
|
|
|
|
|
|
$res[$k]['gift_price'] = db::name('vs_gift')->where(['gid' => db::name('vs_singer_song')->where(['id' => $v['singer_song_id']])->value('gift_id')])->value('gift_price');
|
|
|
|
|
|
$res[$k]['base_image'] = db::name('vs_gift')->where(['gid' => db::name('vs_singer_song')->where(['id' => $v['singer_song_id']])->value('gift_id')])->value('base_image');
|
|
|
|
|
|
$res[$k]['gift_num'] = db::name('vs_singer_song')->where(['id' => $v['singer_song_id']])->value('gift_num');
|
2025-11-17 11:25:00 +08:00
|
|
|
|
$res[$k]['singer_nickname'] = db::name('user')->where(['id' => db::name('vs_singer_song')->where(['id' => $v['singer_song_id']])->value('user_id')])->value('nickname');
|
2025-11-12 19:39:23 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-11-14 17:05:21 +08:00
|
|
|
|
return ['code' => 1, 'msg' => '获取成功', 'data' => ['count' => $count, 'lists' =>$res]];
|
2025-11-12 19:39:23 +08:00
|
|
|
|
}
|
2025-11-13 11:25:46 +08:00
|
|
|
|
|
|
|
|
|
|
|
2025-11-14 17:36:20 +08:00
|
|
|
|
/*
|
|
|
|
|
|
* 点歌各类型各个总数
|
|
|
|
|
|
* @param type 类型 1:已点列表,2:今日列表,3:昨日列表,4:本周列表,5:本月列表
|
|
|
|
|
|
* @param room_id 房间id
|
|
|
|
|
|
*/
|
|
|
|
|
|
public function singerSongCount($room_id)
|
|
|
|
|
|
{
|
|
|
|
|
|
$where = [
|
|
|
|
|
|
'room_id' => $room_id
|
|
|
|
|
|
];
|
|
|
|
|
|
$res = [
|
2025-11-14 17:46:06 +08:00
|
|
|
|
'already' => db::name('vs_song_log')->where($where)->where(['status' => ['in','1,0']])->count(),
|
2025-11-14 17:36:20 +08:00
|
|
|
|
'total' => db::name('vs_song_log')->where($where)->count(),
|
|
|
|
|
|
'today' => db::name('vs_song_log')->where($where)->where('createtime', 'between time', [strtotime(date('Y-m-d')), time()])->count(),
|
|
|
|
|
|
'yesterday' => db::name('vs_song_log')->where($where)->where('createtime', 'between time', [strtotime(date('Y-m-d', strtotime("-1 day"))), strtotime(date('Y-m-d'))])->count(),
|
|
|
|
|
|
'week' => db::name('vs_song_log')->where($where)->where('createtime', 'between time', [strtotime(date('Y-m-d', strtotime("-1 week"))), time()])->count(),
|
|
|
|
|
|
'month' => db::name('vs_song_log')->where($where)->where('createtime', 'between time', [strtotime(date('Y-m-01')), strtotime(date('Y-m-t'))])->count()
|
|
|
|
|
|
];
|
2025-11-14 18:03:43 +08:00
|
|
|
|
return ['code' => 1, 'msg' => '获取成功', 'data' => $res];
|
2025-11-14 17:36:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-11-13 11:25:46 +08:00
|
|
|
|
/*
|
|
|
|
|
|
* 歌手等级收礼升级
|
|
|
|
|
|
* @param user_id 用户id
|
|
|
|
|
|
*/
|
|
|
|
|
|
public function singerLevelUp($user_id,$coin)
|
|
|
|
|
|
{
|
|
|
|
|
|
//判断用户是否认证歌手
|
|
|
|
|
|
$is_singer = db::name('vs_singer')->where(['user_id' => $user_id,'status' => 1])->find();
|
|
|
|
|
|
if ($is_singer) {
|
|
|
|
|
|
//增加经验值并且判断是否可以升级
|
|
|
|
|
|
$exp = db::name('vs_singer')->where(['id' => $is_singer['id']])->value('exp');
|
|
|
|
|
|
$exp_coin = round($coin / get_system_config_value('singer_coin_exp'), 2);
|
|
|
|
|
|
$exps = $exp + $exp_coin;
|
|
|
|
|
|
//查询等级
|
2025-11-14 17:55:10 +08:00
|
|
|
|
$level = db::name('vs_singer_level')->where(['change_value' => ['<=', $exps]])->order('change_value desc')->find();
|
2025-11-13 11:25:46 +08:00
|
|
|
|
if ($level) {
|
|
|
|
|
|
db::name('vs_singer')->where(['id' => $is_singer['id']])->update(['exp' => $exps,'level' => $level['level']]);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
2025-11-17 10:08:12 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
* 切歌
|
|
|
|
|
|
* @param room_id 房间id
|
|
|
|
|
|
* @param user_id 用户id
|
|
|
|
|
|
* @param song_id 歌曲id
|
|
|
|
|
|
*/
|
|
|
|
|
|
public function singerSongCut($user_id,$song_id)
|
|
|
|
|
|
{
|
|
|
|
|
|
$sonng_log = db::name('vs_song_log')->where(['id' => $song_id])->find();
|
|
|
|
|
|
$singer_user_id = db::name('vs_singer_song')->where(['id' => $sonng_log['singer_song_id']])->value('user_id');
|
|
|
|
|
|
//判断用户是否是房主
|
|
|
|
|
|
$room_info = db::name('vs_room')->where('id', $sonng_log['room_id'])->field('user_id')->find();
|
|
|
|
|
|
//判断用户是否是主持
|
|
|
|
|
|
$room_user_info = db::name('vs_room_host')->where(['room_id' => $sonng_log['room_id'], 'user_id' => $user_id,'delete_time' => null])->find();
|
|
|
|
|
|
if ($room_info['user_id'] != $user_id && !$room_user_info && $singer_user_id != $user_id) {
|
|
|
|
|
|
return ['code' => 0, 'msg' => '您没有权限切歌','data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
if ($sonng_log) {
|
|
|
|
|
|
if ($sonng_log['status'] == 1) {
|
|
|
|
|
|
$up = db::name('vs_song_log')->where(['id' => $song_id])->update(['status' => 2]);
|
|
|
|
|
|
if ($up) {
|
|
|
|
|
|
$id = db::name('vs_song_log')->where(['room_id' => $sonng_log['room_id'],'status' => 0])->order('sort desc')->value('id');
|
|
|
|
|
|
if($id){
|
|
|
|
|
|
db::name('vs_song_log')->where(['id' => $id])->update(['status' => 1]);
|
|
|
|
|
|
//给前端推送
|
2025-11-17 10:54:22 +08:00
|
|
|
|
//获取当前房间内点歌总数
|
|
|
|
|
|
$song_info_count = db::name('vs_song_log')->where(['room_id' => $sonng_log['room_id'],'status' => ['in',[0,1]]])->count();
|
|
|
|
|
|
//给前端推送
|
2025-11-17 10:08:12 +08:00
|
|
|
|
$text = [
|
2025-11-17 10:54:22 +08:00
|
|
|
|
'text' => '房间点歌数量变化',
|
|
|
|
|
|
'count' => $song_info_count
|
2025-11-17 10:08:12 +08:00
|
|
|
|
];
|
|
|
|
|
|
model('Chat')->sendMsg(1072,$sonng_log['room_id'],$text);
|
2025-11-17 10:54:22 +08:00
|
|
|
|
|
|
|
|
|
|
//房间当前演唱歌曲
|
|
|
|
|
|
$song_info = db::name('vs_song_log')->where(['id' => $id])->find();
|
2025-11-17 11:32:40 +08:00
|
|
|
|
$song_info['boss_user_id'] = $song_info['user_id'];
|
2025-11-17 10:54:22 +08:00
|
|
|
|
$song_info['boss_nickname'] = db::name('user')->where(['id' => $song_info['user_id']])->value('nickname');
|
|
|
|
|
|
$song_info['boss_avatar'] = db::name('user')->where(['id' => $song_info['user_id']])->value('avatar');
|
2025-11-17 11:32:40 +08:00
|
|
|
|
$song_info['boss__dress'] = model('api/Decorate')->user_decorate_detail($song_info['user_id'], 1);
|
|
|
|
|
|
$song_info['boss__mic_cycle'] = model('api/Decorate')->user_decorate_detail($song_info['user_id'],3);
|
2025-11-17 10:54:22 +08:00
|
|
|
|
$singer_song = db::name('vs_singer_song')->where(['id' => $song_info['singer_song_id']])->find();
|
2025-11-17 11:32:40 +08:00
|
|
|
|
$song_info['singer_user_id'] = $singer_song['user_id'];
|
2025-11-17 10:54:22 +08:00
|
|
|
|
$song_info['singer_nickname'] = db::name('user')->where(['id' => $singer_song['user_id']])->value('nickname');
|
|
|
|
|
|
$song_info['singer_avatar'] = db::name('user')->where(['id' => $singer_song['user_id']])->value('avatar');
|
2025-11-17 11:25:00 +08:00
|
|
|
|
$song_info['singer_dress'] = model('api/Decorate')->user_decorate_detail($singer_song['user_id'], 1);
|
|
|
|
|
|
$song_info['singer_mic_cycle'] = model('api/Decorate')->user_decorate_detail($singer_song['user_id'],3);
|
2025-11-17 10:54:22 +08:00
|
|
|
|
$song_info['song_name'] = $singer_song['song_name'];
|
|
|
|
|
|
|
|
|
|
|
|
$song_info_data = [
|
|
|
|
|
|
'text' => '房间当前演唱歌曲变化',
|
|
|
|
|
|
'song_info' => $song_info
|
|
|
|
|
|
];
|
|
|
|
|
|
model('Chat')->sendMsg(1070,$sonng_log['room_id'],$song_info_data);
|
|
|
|
|
|
|
|
|
|
|
|
//给前端推送下首歌曲信息
|
|
|
|
|
|
$next_song_info = db::name('vs_song_log')->where(['room_id' => $sonng_log['room_id'],'status' => 0])->order('sort desc')->find();
|
|
|
|
|
|
$next_song_info['boss_nickname'] = db::name('user')->where(['id' => $next_song_info['user_id']])->value('nickname');
|
|
|
|
|
|
$next_song_info['boss_avatar'] = db::name('user')->where(['id' => $next_song_info['user_id']])->value('avatar');
|
|
|
|
|
|
$singer_song = db::name('vs_singer_song')->where(['id' => $next_song_info['singer_song_id']])->find();
|
|
|
|
|
|
$next_song_info['singer_nickname'] = db::name('user')->where(['id' => $singer_song['user_id']])->value('nickname');
|
|
|
|
|
|
$next_song_info['singer_avatar'] = db::name('user')->where(['id' => $singer_song['user_id']])->value('avatar');
|
|
|
|
|
|
$next_song_info['song_name'] = $singer_song['song_name'];
|
|
|
|
|
|
|
|
|
|
|
|
$data = [
|
|
|
|
|
|
'text' => '房间下一首演唱歌曲变化',
|
|
|
|
|
|
'next_song_info' => $next_song_info
|
|
|
|
|
|
];
|
|
|
|
|
|
model('Chat')->sendMsg(1071,$next_song_info['room_id'],$data);
|
|
|
|
|
|
|
2025-11-17 10:08:12 +08:00
|
|
|
|
}else{
|
2025-11-17 14:33:50 +08:00
|
|
|
|
$song_info_data = [
|
|
|
|
|
|
'text' => '房间当前演唱歌曲变化',
|
|
|
|
|
|
'song_info' => null
|
|
|
|
|
|
];
|
|
|
|
|
|
model('Chat')->sendMsg(1070,$sonng_log['room_id'],$song_info_data);
|
|
|
|
|
|
|
2025-11-17 11:58:16 +08:00
|
|
|
|
$data = [
|
|
|
|
|
|
'text' => '房间下一首演唱歌曲变化',
|
|
|
|
|
|
'next_song_info' => null
|
|
|
|
|
|
];
|
|
|
|
|
|
model('Chat')->sendMsg(1071,$sonng_log['room_id'],$data);
|
2025-11-17 10:08:12 +08:00
|
|
|
|
return ['code' => 0, 'msg' => '暂无歌曲,请点歌吧','data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return ['code' => 0, 'msg' => '切歌失败','data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return ['code' => 0, 'msg' => '网络错误','data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
return ['code' => 1, 'msg' => '切歌成功','data' => null];
|
|
|
|
|
|
}
|
2025-11-12 17:10:17 +08:00
|
|
|
|
}
|