From 06508ca830dffcb9b9b21282bcac48c85bfd57da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Wed, 12 Nov 2025 19:07:19 +0800 Subject: [PATCH] =?UTF-8?q?=E7=82=B9=E6=AD=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/controller/SingerSong.php | 16 ++++++++ application/api/model/Chat.php | 4 ++ application/api/model/SingerSong.php | 49 +++++++++++++++++++++++ 3 files changed, 69 insertions(+) diff --git a/application/api/controller/SingerSong.php b/application/api/controller/SingerSong.php index e748456..97dbbd1 100644 --- a/application/api/controller/SingerSong.php +++ b/application/api/controller/SingerSong.php @@ -98,4 +98,20 @@ class SingerSong extends BaseCom return V($reslut['code'], $reslut['msg'], $reslut['data']); } + + //点歌 + public function singerSong() + { + $song_id = input('song_id', 0); + if (!$song_id) { + return V(0, '请选择歌曲'); + } + $room_id = input('room_id', 0); + if (!$room_id) { + return V(0, '请选择房间'); + } + $reslut = model('SingerSong')->singerSong($this->uid, $song_id ,$room_id); + return V($reslut['code'], $reslut['msg'], $reslut['data']); + } + } \ No newline at end of file diff --git a/application/api/model/Chat.php b/application/api/model/Chat.php index 8e66e36..3f4f2d8 100644 --- a/application/api/model/Chat.php +++ b/application/api/model/Chat.php @@ -124,6 +124,10 @@ class Chat extends Model //红包领完推送 // RedPacketComplete = 1061, + //点歌房推送信息 + //歌曲发生变化 + // SongChange = 1070, + diff --git a/application/api/model/SingerSong.php b/application/api/model/SingerSong.php index 72d2dbc..a75bee5 100644 --- a/application/api/model/SingerSong.php +++ b/application/api/model/SingerSong.php @@ -34,6 +34,9 @@ class SingerSong extends Model { //查询是否提交过认证 $res = db::name('vs_singer')->where(['user_id' => $user_id])->find(); + if ($res && $res['status'] == 1) { + return ['code' => 0, 'msg' => '认证已通过,无需重复提交']; + } if ($res) { $data = [ 'song' => $song, @@ -118,4 +121,50 @@ class SingerSong extends Model } } + + + /* + * 点歌 + * @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) { + return ['code' => 0, 'msg' => '歌曲不存在']; + } + //查询用户余额 + $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']) { + return ['code' => 0, 'msg' => '余额不足']; + } + + //走送礼流程 + $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() + ]; + $result = db::name('vs_song_log')->insert($data); + if (!$result) { + return ['code' => 0, 'msg' => '点歌失败']; + } + //给前端推送 + $text = [ + 'text' => '房间点歌变化' + ]; + //聊天室推送系统消息 + model('Chat')->sendMsg(1070,$room_id,$text); + + return ['code' => 1, 'msg' => '点歌成功']; + } else { + return ['code' => 0, 'msg' => $res['msg']]; + } + } } \ No newline at end of file