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(); if ($res && $res['status'] == 1) { return ['code' => 0, 'msg' => '认证已通过,无需重复提交', 'data' => null]; } 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) { return ['code' => 1, 'msg' => '提交成功', 'data' => null]; } else { return ['code' => 0, 'msg' => '提交失败', 'data' => null]; } } /* * 歌手添加歌曲 * @param song_name 歌曲名称 * @param gift_id 礼物id * @param gift_num 礼物数量 */ public function singerAddSong($user_id, $song_name, $gift_id, $gift_num) { //查询是否提交过歌曲 $res = db::name('vs_singer_song')->where(['user_id' => $user_id, 'song_name' => $song_name])->find(); if ($res) { return ['code' => 0, 'msg' => '请勿重复提交歌曲', 'data' => null]; } $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) { return ['code' => 1, 'msg' => '提交成功', 'data' => null]; } else { return ['code' => 0, 'msg' => '提交失败', 'data' => null]; } } /* * 获取房间内麦位上歌手歌曲 * @param room_id 房间id * @param user_id 用户id */ public function getSong($user_id, $room_id, $page, $page_limit) { if($user_id > 0){ $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(); }else{ //查询当前房间内麦位上的歌手 $room_singer = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => ['<',9]])->column('user_id'); if ($room_singer) { $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(); }else{ $res = []; $count = 0; } } if ($res) { foreach ($res as $k => $v) { $res[$k]['gift_name'] = db::name('vs_gift')->where(['gid' => $v['gift_id']])->value('gift_name'); $res[$k]['gift_price'] = db::name('vs_gift')->where(['gid' => $v['gift_id']])->value('gift_price'); $res[$k]['base_image'] = db::name('vs_gift')->where(['gid' => $v['base_image']])->value('base_image'); $res[$k]['nickname'] = db::name('user')->where(['id' => $v['user_id']])->value('nickname'); } return ['code' => 1, 'msg' => '获取成功', 'data' => ['count' => $count, 'lists' =>$res]]; } else { return ['code' => 0, 'msg' => '暂无数据', 'data' => null]; } } /* * 点歌 * @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' => '歌曲不存在', 'data' => null]; } //查询用户余额 $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' => '余额不足', 'data' => null]; } //走送礼流程 $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' => '点歌失败', 'data' => null]; } //给前端推送 $text = [ 'text' => '房间点歌变化' ]; //聊天室推送系统消息 model('Chat')->sendMsg(1070,$room_id,$text); return ['code' => 1, 'msg' => '点歌成功', 'data' => null]; } else { return ['code' => 0, 'msg' => $res['msg'], 'data' => null]; } } /* * 点歌列表 * @param room_id 房间id * @param type 类型 1:已点列表,2:今日列表,3:昨日列表,4:本周列表,5:本月列表 */ public function singerSongList($room_id,$type,$page,$page_limit) { $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; } $res = db::name('vs_song_log')->where($where)->order('sort desc')->page($page,$page_limit)->select(); 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'); $res[$k]['nickname'] = db::name('user')->where(['id' => db::name('vs_singer_song')->where(['id' => $v['singer_song_id']])->value('user_id')])->value('nickname'); } } return ['code' => 1, 'msg' => '获取成功', 'data' => $res]; } /* * 歌手等级收礼升级 * @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; //查询等级 $level = db::name('vs_singer_level')->where(['exp' => ['<=', $exps]])->order('exp desc')->find(); if ($level) { db::name('vs_singer')->where(['id' => $is_singer['id']])->update(['exp' => $exps,'level' => $level['level']]); } } return true; } }