$v) { if (!empty($v)) { if (in_array($k, ['room_name'])) { $map[] = [$k, 'like', "%$v%"]; } else { $map[] = [$k, '=', $v]; } } } $user_list = db::name('room')->where($map)->order($order, $sort)->page($page, $limit)->select(); foreach ($user_list as $k => &$v) { $user = db::name('user')->where(['uid' => $v['room_owner_uid']])->find(); $v['nickname'] = $user['uid'] . '-' . $user['nick_name']; $v['head_pic'] = localpath_to_netpath($v['room_cover']); $v['room_type'] = db::name('room_type')->where(['tid' => $v['tid']])->value('type_name'); $v['room_cate_id'] = db::name('room_category')->where(['cate_id' => $v['cate_id']])->value('category_name'); $v['room_cover'] = localpath_to_netpath($v['room_cover']); $v['room_name'] = mb_convert_encoding(base64_decode($v['base64_room_name']), 'UTF-8', 'UTF-8'); } $data = []; $data['count'] = db::name('room')->where($map)->count(); $data['list'] = $user_list; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } public function edit_room_info($data) { $room_info = db::name('room')->where('rid', $data['rid'])->find(); if(!$room_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => '']; } // dump($data);exit; if($data['envelope_rate'] > 0.02){ return ['code' => 201, 'msg' => '红包流水比例不能大于0.02', 'data' => '']; } Db::startTrans(); try { $validate = validate('room'); $reslut = $validate->scene('adminEdit')->check($data); if ($reslut !== true) { Db::rollback(); return ['code' => 201, 'msg' => $validate->getError(), 'data' => null]; } $data['base64_room_name'] = base64_encode($data['room_name']); $reslut = model('room')->isUpdate(true)->save($data); if (!$reslut) { Db::rollback(); return ['code' => 201, 'msg' => '编辑失败', 'data' => '']; } if($data['cate_id'] != $room_info['cate_id']){ if($room_info['cate_id'] == 26){ $map = []; $map[] = ['rid', '=', $data['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){ return ['code' => 201, 'msg' => '当前有进行中的新人拍卖,无法切换', 'data' => null]; } } if($room_info['cate_id'] == 27){ //当前是否已有进行中的K歌 $map = []; $map[] = ['rid', '=', $data['rid']]; $map[] = ['is_delete', '=', 1]; $room_auction_info = db::name('room_song_log')->where($map)->find(); if($room_auction_info){ return ['code' => 201, 'msg' => '当前K歌进行中,无法切换', 'data' => null]; } } if($room_info['cate_id'] == 28){ $map = []; $map[] = ['rid', '=', $data['rid']]; $map[] = ['status', '=', 2]; $map[] = ['is_delete', '=', 1]; $room_auction_info = db::name('room_auction_log')->where($map)->find(); if($room_auction_info){ return ['code' => 201, 'msg' => '当前有尚未结束的拍卖,无法切换', 'data' => null]; } } if($room_info['cate_id'] == 29){ $map = []; $map[] = ['rid', '=', $data['rid']]; $map[] = ['is_delete', '=', 1]; $room_dating_log = db::name('room_dating_log')->where($map)->find(); if($room_dating_log){ return ['code' => 201, 'msg' => '当前玩法进行中,无法切换', 'data' => null]; } } //清理该房间所有麦位魅力值 $map = []; $map[] = ['rid', '=', $data['rid']]; $map[] = ['charm_value', '>', 0]; $list = db::name('room_user_cc')->where($map)->select(); if(!empty($list)){ foreach ($list as $k => $v){ $reslut = db::name('room_user_micro_charm_log')->where('cid', $v['cid'])->update(['change_value' => 0, 'update_time' => time()]); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '编辑失败', 'data' => '']; } } $reslut = db::name('room_user_cc')->where($map)->update(['charm_value' => 0, 'update_time' => time()]); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '编辑失败', 'data' => '']; } } } //获取机器人数量 if($data['robot_num'] != $room_info['robot_num']){ //在麦上的机器人数量 $yuan_uids = db::name('user')->where(['is_sys_tester'=>1,'belong_rid'=>$data['rid']])->column('uid'); if(empty($yuan_uids)){ $yuan_uids = [-1]; } $micro_uids = db::name('room_micro')->where([['rid','=',$data['rid']],['uid','in',$yuan_uids]])->column('uid'); $micro_uids_num = count($micro_uids); if($data['robot_num'] < $micro_uids_num){ return ['code' => 201, 'msg' => "当前机器人有{$micro_uids_num}在麦位上", 'data' => null]; } //清空原始人员 db::name('user')->where(['is_sys_tester'=>1,'belong_rid'=>$data['rid']])->where('uid','not in',$micro_uids)->update(['belong_rid'=>0,'update_time'=>time()]); //重新注入新人员 $new_num = $data['robot_num'] - $micro_uids_num; //当前空闲机器人 $kong_xian_num = db::name('user')->where(['is_sys_tester'=>1,'belong_rid'=>0])->count("*"); if($new_num > $kong_xian_num){ return ['code' => 201, 'msg' => "空闲机器人数量不足,剩余{$kong_xian_num}个", 'data' => '']; } //新机器人 if($new_num > 0){ $new_uids_arr = db::name('user')->where(['is_sys_tester'=>1,'belong_rid'=>0])->orderRand()->limit($new_num)->column('uid'); db::name('user')->where(['is_sys_tester'=>1])->where('uid','in',$new_uids_arr)->update(['belong_rid'=>$data['rid'],'update_time'=>time()]); } } Db::commit(); if($data['cate_id'] != $room_info['cate_id']){ $push_room_data = []; $push_room_data['rid'] = $data['rid']; $push_room_data['type'] = 1; $push_data = []; $push_data['code'] = 369; $push_data['msg'] = "房间类型变更推送"; $push_data['data'] = $push_room_data; $reslut = model('api/WebSocketPush')->send_to_group($data['rid'], $push_data); } return ['code' => 200, 'msg' => "成功", 'data' => null]; } catch (\Exception $e) { dump($e); //回滚事务 Db::rollback(); return ['code' => 201, 'msg' => "失败", 'data' => null]; } } public function add_room($data) { $user_info = db::name('user')->where(['uid' => $data['room_owner_uid']])->find(); if (empty($user_info)) { return ['code' => 201, 'msg' => '厅主不存在', 'data' => null]; } $map = []; $map[] = ['room_owner_uid', '=', $data['room_owner_uid']]; $map[] = ['tid', '=', $data['tid']]; $room_info = db::name('room')->where($map)->find(); if (!empty($room_info)) { return ['code' => 201, 'msg' => '该厅主已拥有该类型直播间', 'data' => null]; } if ($room_info['is_delete'] == 2) { return ['code' => 201, 'msg' => '该厅主房间正在删除状态中,请勿重复创建', 'data' => null]; } if (!$data['room_cover']) { return ['code' => 201, 'msg' => '房间封面不能为空', 'data' => null]; } $validate = validate('room'); $reslut = $validate->scene('adminAdd')->check($data); if ($reslut !== true) { return ['code' => 201, 'msg' => $validate->getError(), 'data' => null]; } $data['base64_room_name'] = base64_encode($data['room_name']); $data['room_host_uid'] = $data['room_owner_uid']; $reslut = model('room')->save($data); //更新用户为厅住身份 $update_data = []; $update_data['uid'] = $data['room_owner_uid']; $update_data['is_anchor'] = 2; db::name('user')->update($update_data); if (!$reslut) { return ['code' => 201, 'msg' => '添加失败', 'data' => '']; } else { return ['code' => 200, 'msg' => '添加成功', 'data' => '']; } } //获取房间信息 public function get_room_info($rid) { if (empty($rid)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $room_info = db::name('room')->where(['rid' => $rid])->find(); $user_info = db::name('user')->where(['uid' => $room_info['room_owner_uid']])->find(); $room_info['nickname'] = $user_info['nick_name'] . '-' . $user_info['uid']; $room_info['room_cover'] = localpath_to_netpath($room_info['room_cover']); $room_info['room_name'] = mb_convert_encoding(base64_decode($room_info['base64_room_name']), 'UTF-8', 'UTF-8'); // dump($room_info);die; return ['code' => 200, 'msg' => '获取成功', 'data' => $room_info]; } //删除房间 public function room_del($rid) { if (empty($rid)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } db::name('room')->where(['rid' => $rid])->update(['is_delete' => 2, 'delete_time' => time()]); return ['code' => 200, 'msg' => '删除成功', 'data' => null]; } public function get_room_visitor_list($data, $order, $sort, $page = 1, $limit = 20) { $room_info = db::name('room')->where(['rid' => $data['rid']])->find(); if (empty($room_info)) { return ['code' => 201, 'msg' => '房间信息不存在', 'data' => null]; } $map = []; $map[] = ['rid', '=', $data['rid']]; if (!empty($data['uid'])) { $map[] = ['uid', '=', $data['uid']]; } $room_micro_data = explode(',', $room_info['room_micro']); if (!empty($data['is_micro'])) { if ($data['is_micro'] == 1) { $map[] = ['uid', 'in', $room_micro_data]; } elseif ($data['is_micro'] == 2) { $map[] = ['uid', 'not in', $room_micro_data]; } } $room_visitor_list = db::name('room_visitor')->where($map)->order($order, $sort)->page($page, $limit)->select(); foreach ($room_visitor_list as $k => &$v) { $user = db::name('user')->where(['uid' => $v['uid']])->find(); $v['nickname'] = $user['uid'] . '-' . $user['nick_name']; $v['user_type_desc'] = '游客'; //游客 if (in_array($v['uid'], $room_micro_data)) { $v['user_type_desc'] = '麦位用户'; //麦位用户 } } $data = []; $data['count'] = db::name('room_visitor')->where($map)->count(); $data['list'] = $room_visitor_list; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //获取房间背景列表 public function room_background_list($bid, $image_name, $order, $sort, $page = 1, $limit = 20) { $map = []; if (!empty($bid)) { $map[] = ['bid', '=', $bid]; } if (!empty($image_name)) { $map[] = ['image_name', 'like', '%' . $image_name . '%']; } $map[] = ['is_delete', '=', 1]; $user_list = db::name('room_background')->where($map)->order($order, $sort)->page($page, $limit)->select(); foreach ($user_list as $k => &$v) { $v['image_url'] = localpath_to_netpath($v['image_url']); } $data = []; $data['count'] = db::name('room_background')->where($map)->count(); $data['list'] = $user_list; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //获取房间背景信息 public function background_info($bid) { if (empty($bid)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $room_info = db::name('room_background')->where(['bid' => $bid])->find(); $room_info['image_url'] = localpath_to_netpath($room_info['image_url']); // dump($room_info);die; return ['code' => 200, 'msg' => '获取成功', 'data' => $room_info]; } //删除房间背景 public function room_background_del($bid) { if (empty($bid)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $room_info = db::name('room_background')->where(['bid' => $bid])->update(['is_delete' => 2, 'delete_time' => time()]); return ['code' => 200, 'msg' => '删除成功', 'data' => null]; } //修改房背景信息 public function edit_room_background($bid, $image_name, $image_url, $image_size, $status) { if (empty($bid)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $arr = []; $arr['image_name'] = $image_name; $arr['image_url'] = $image_url; $arr['image_size'] = formatBytes($image_size); $arr['status'] = $status; $arr['update_time'] = time(); $upd = db::name('room_background')->where(['bid' => $bid])->update($arr); if ($upd) { return ['code' => 200, 'msg' => '修改成功', 'data' => null]; } else { return ['code' => 201, 'msg' => '修改失败', 'data' => null]; } } //添加房背景信息 public function add_room_background($image_name, $image_url, $image_size, $status) { $arr = []; $arr['image_name'] = $image_name; $arr['image_url'] = $image_url; $arr['image_size'] = formatBytes($image_size); $arr['status'] = $status; $arr['add_time'] = time(); $arr['update_time'] = time(); $upd = db::name('room_background')->insert($arr); if ($upd) { return ['code' => 200, 'msg' => '添加成功', 'data' => null]; } else { return ['code' => 201, 'msg' => '添加失败', 'data' => null]; } } //-- //获取房间表情列表 public function room_emoji_list($eid, $type, $name, $emoji_type, $order, $sort, $page = 1, $limit = 20) { $map = []; if (!empty($eid)) { $map[] = ['eid', '=', $eid]; } if (!empty($type)) { $map[] = ['type', '=', $type]; } if(!empty($emoji_type)){ $map[] = ['emoji_type', '=', $emoji_type]; } if (!empty($name)) { $map[] = ['name', 'like', '%' . $name . '%']; } $map[] = ['is_delete', '=', 1]; $user_list = db::name('room_emoji')->where($map)->order($order, $sort)->page($page, $limit)->select(); foreach ($user_list as $k => &$v) { $v['image'] = localpath_to_netpath($v['image']); } $data = []; $data['count'] = db::name('room_emoji')->where($map)->count(); $data['list'] = $user_list; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //获取房间表情 public function room_emoji_info($eid) { if (empty($eid)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $room_emoji = db::name('room_emoji')->where(['eid' => $eid])->find(); $room_emoji['http_image'] = localpath_to_netpath($room_emoji['image']); return ['code' => 200, 'msg' => '获取成功', 'data' => $room_emoji]; } //删除房间表情 public function del_room_emoji($eid) { if (empty($eid)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $room_emoji = db::name('room_emoji')->where(['eid' => $eid])->update(['is_delete' => 2, 'delete_time' => time()]); return ['code' => 200, 'msg' => '删除成功', 'data' => null]; } //修改房间表情 public function edit_room_emoji($eid, $pid, $type, $name, $emoji_type, $nid, $image, $second, $result, $show_status, $sort) { if (empty($eid)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $arr = []; $arr['type'] = $type; $arr['emoji_type'] = $emoji_type; $arr['nid'] = $nid; $arr['name'] = $name; $arr['image'] = $image; $arr['pid'] = $pid; $arr['result'] = $result; $arr['show_status'] = $show_status; $arr['sort'] = $sort; $arr['update_time'] = time(); $upd = db::name('room_emoji')->where(['eid' => $eid])->update($arr); if ($upd) { return ['code' => 200, 'msg' => '修改成功', 'data' => null]; } else { return ['code' => 201, 'msg' => '修改失败', 'data' => null]; } } //添加房间表情 public function add_room_emoji($pid, $type, $name, $emoji_type, $nid, $image, $second, $result, $show_status, $sort) { if (empty($name) || empty($image)) { return ['code' => 201, 'msg' => '名称或图片不能为空', 'data' => null]; } $arr = []; $arr['type'] = $type; $arr['emoji_type'] = $emoji_type; $arr['nid'] = $nid; $arr['name'] = $name; $arr['image'] = $image; $arr['second'] = 3; $arr['pid'] = $pid; $arr['result'] = $result; $arr['show_status'] = $show_status; $arr['sort'] = $sort; $arr['add_time'] = time(); $arr['update_time'] = time(); $upd = db::name('room_emoji')->insert($arr); if ($upd) { return ['code' => 200, 'msg' => '添加成功', 'data' => null]; } else { return ['code' => 201, 'msg' => '添加失败', 'data' => null]; } } //获取房间分类 public function get_room_cate() { $list = db::name('room_type')->field('tid,type_name')->where(['is_delete' => 1])->select(); foreach ($list as $k => $v) { $list[$k]['list'] = db::name('room_category')->field('cate_id,tid,category_name')->where(['tid' => $v['tid']])->select(); } return ['code' => 200, 'msg' => '获取成功', 'data' => $list]; } //获取房间分类列表 public function room_cate_list($cate_id, $category_name, $order, $sort, $page = 1, $limit = 20) { $map = []; if (!empty($cate_id)) { $map[] = ['cate_id', '=', $cate_id]; } if (!empty($category_name)) { $map[] = ['category_name', 'like', '%' . $category_name . '%']; } $map[] = ['is_delete', '=', 1]; $list = db::name('room_category')->where($map)->order($order, $sort)->page($page, $limit)->select(); foreach ($list as $k => &$v) { $v['tid_type_name'] = db::name('room_type')->where(['tid' => $v['tid']])->value('type_name'); } $data = []; $data['count'] = db::name('room_category')->where($map)->count(); $data['list'] = $list; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //删除房间分类 public function room_cate_del($cate_id) { $room_cate = db::name('room')->where(['cate_id' => $cate_id])->find(); if ($room_cate) { return ['code' => 201, 'msg' => '还有房间在此分类中', 'data' => null]; } $del = db::name('room_category')->where(['cate_id' => $cate_id])->update(['is_delete' => 2]); if ($del) { return ['code' => 200, 'msg' => '删除成功', 'data' => null]; } else { return ['code' => 201, 'msg' => '删除失败', 'data' => null]; } } //获取房间分类 public function get_room_cate_info($cate_id) { if (empty($cate_id)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $room_category_info = db::name('room_category')->find($cate_id); return ['code' => 200, 'msg' => '获取成功', 'data' => $room_category_info]; } //修改房间分类 public function room_cate_edit($cate_id, $tid, $category_name, $sort) { if (empty($cate_id)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $arr['tid'] = $tid; $arr['sort'] = $sort; $arr['category_name'] = $category_name; $arr['update_time'] = time(); $upd = db::name('room_category')->where(['cate_id' => $cate_id])->update($arr); if ($upd) { return ['code' => 200, 'msg' => '修改成功', 'data' => null]; } else { return ['code' => 201, 'msg' => '修改失败', 'data' => null]; } } //添加房间分类 public function add_room_cate($tid, $category_name, $sort) { $arr = []; $arr['tid'] = $tid; $arr['sort'] = $sort; $arr['category_name'] = $category_name; $arr['update_time'] = time(); $arr['add_time'] = time(); $add = db::name('room_category')->insert($arr); if ($add) { return ['code' => 200, 'msg' => '添加成功', 'data' => null]; } else { return ['code' => 201, 'msg' => '添加失败', 'data' => null]; } } //-------- //获取房间类型列表 public function get_room_type_list($tid, $type_name, $order, $sort, $page = 1, $limit = 20) { $map = []; if (!empty($tid)) { $map[] = ['tid', '=', $tid]; } if (!empty($type_name)) { $map[] = ['type_name', 'like', '%' . $type_name . '%']; } $map[] = ['is_delete', '=', 1]; $user_list = db::name('room_type')->where($map)->order($order, $sort)->page($page, $limit)->select(); $data = []; $data['count'] = db::name('room_type')->where($map)->count(); $data['list'] = $user_list; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //删除房间类型 public function room_type_del($tid) { $room_category = db::name('room_category')->where(['tid' => $tid])->find(); if ($room_category) { return ['code' => 201, 'msg' => '请先删除该房间下分类', 'data' => null]; } $del = db::name('room')->where(['tid' => $tid])->update(['is_delete' => 2]); if ($del) { return ['code' => 200, 'msg' => '删除成功', 'data' => null]; } else { return ['code' => 201, 'msg' => '删除失败', 'data' => null]; } } //获取房间类型信息 public function get_room_type_info($tid) { if (empty($tid)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $room_type_info = db::name('room_type')->find($tid); return ['code' => 200, 'msg' => '获取成功', 'data' => $room_type_info]; } //修改房间类型信息 public function edit_room_type_info($tid, $room_type) { if (empty($tid)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $upd = db::name('room_type')->where(['tid' => $tid])->update(['type_name' => $room_type, 'update_time' => time()]); if ($upd) { return ['code' => 200, 'msg' => '修改成功', 'data' => null]; } else { return ['code' => 201, 'msg' => '修改失败', 'data' => null]; } } //添加房间类型 public function add_room_type($room_type) { $arr = []; $arr['type_name'] = $room_type; $arr['update_time'] = time(); $arr['add_time'] = time(); $add = db::name('room_type')->insert($arr); if ($add) { return ['code' => 200, 'msg' => '添加成功', 'data' => null]; } else { return ['code' => 201, 'msg' => '添加失败', 'data' => null]; } } //------ //获取房间音乐列表 public function room_music_list($mid, $music_name, $singer, $order, $sort, $page = 1, $limit = 20) { $map = []; if (!empty($mid)) { $map[] = ['mid', '=', $mid]; } if (!empty($music_name)) { $map[] = ['music_name', 'like', '%' . $music_name . '%']; } if (!empty($singer)) { $map[] = ['singer', 'like', '%' . $singer . '%']; } $map[] = ['is_delete', '=', 1]; $user_list = db::name('music')->where($map)->order($order, $sort)->page($page, $limit)->select(); $data = []; $data['count'] = db::name('music')->where($map)->count(); $data['list'] = $user_list; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //获取房间音乐信息 public function music_info($mid) { if (empty($mid)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $room_info = db::name('music')->where(['mid' => $mid])->find(); $room_info['http_music_url'] = localpath_to_netpath($room_info['music_url']); // $room_info['room_cover'] = localpath_to_netpath($room_info['room_cover']); // dump($room_info);die; return ['code' => 200, 'msg' => '获取成功', 'data' => $room_info]; } //删除房间音乐 public function room_music_del($mid) { if (empty($mid)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $room_info = db::name('music')->where(['mid' => $mid])->update(['is_delete' => 2, 'delete_time' => time()]); return ['code' => 200, 'msg' => '删除成功', 'data' => null]; } //修改房间音乐 public function edit_room_music($mid, $music_name, $singer, $music_url, $music_size, $status, $music_type) { if (empty($mid)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $arr = []; $arr['music_name'] = $music_name; $arr['singer'] = $singer; $arr['music_url'] = $music_url; $arr['music_size'] = formatBytes($music_size); $arr['status'] = $status; $arr['music_type'] = $music_type; $arr['update_time'] = time(); $upd = db::name('music')->where(['mid' => $mid])->update($arr); if ($upd) { return ['code' => 200, 'msg' => '修改成功', 'data' => null]; } else { return ['code' => 201, 'msg' => '修改失败', 'data' => null]; } } //添加房间音乐 public function add_room_music($music_name, $singer, $music_url, $music_size, $status, $music_type) { $arr = []; $arr['singer'] = $singer; $arr['music_name'] = $music_name; $arr['music_url'] = $music_url; $arr['music_size'] = formatBytes($music_size); $arr['status'] = $status; $arr['music_type'] = $music_type; $arr['add_time'] = time(); $arr['update_time'] = time(); $upd = db::name('music')->insert($arr); if ($upd) { return ['code' => 200, 'msg' => '添加成功', 'data' => null]; } else { return ['code' => 201, 'msg' => '添加失败', 'data' => null]; } } //获取列表 public function room_subsidy($order, $sort, $page, $limit) { $map = []; $map[] = ['is_delete', '=', 1]; $list = db::name('room_subsidy')->where($map)->order($order, $sort)->page($page, $limit)->select(); foreach ($list as $k => &$v){ if($v['type'] == 2){ $v['money'] = $v['money'].'%'; } } $data = []; $data['count'] = db::name('room_subsidy')->where($map)->count(); $data['list'] = $list; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //删除 public function room_subsidy_del($id) { $del = db::name('room_subsidy')->where(['id' => $id])->update(['is_delete' => 2]); if ($del) { return ['code' => 200, 'msg' => '删除成功', 'data' => null]; } else { return ['code' => 201, 'msg' => '删除失败', 'data' => null]; } } //获取 public function room_subsidy_info($id) { if (empty($id)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $room_subsidy_info = db::name('room_subsidy')->find($id); return ['code' => 200, 'msg' => '获取成功', 'data' => $room_subsidy_info]; } //修改 public function edit_room_subsidy($id, $level_name, $total_gift_price, $money, $type) { if (empty($id)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $arr = []; $arr['type'] = $type; $arr['level_name'] = $level_name; $arr['total_gift_price'] = $total_gift_price; $arr['money'] = $money; $arr['update_time'] = time(); $upd = db::name('room_subsidy')->where(['id' => $id])->update($arr); if ($upd) { return ['code' => 200, 'msg' => '修改成功', 'data' => null]; } else { return ['code' => 201, 'msg' => '修改失败', 'data' => null]; } } //添加 public function add_room_subsidy($level_name, $total_gift_price, $money, $type) { $arr = []; $arr['type'] = $type; $arr['level_name'] = $level_name; $arr['total_gift_price'] = $total_gift_price; $arr['money'] = $money; $arr['add_time'] = time(); $add = db::name('room_subsidy')->insert($arr); if ($add) { return ['code' => 200, 'msg' => '添加成功', 'data' => null]; } else { return ['code' => 201, 'msg' => '添加失败', 'data' => null]; } } //获取列表 public function give_room_subsidy_list($room_number, $owner_uid, $is_fa, $order, $sort, $page, $limit, $belong_week){ $map = []; if(!empty($room_number)){ $rid = db::name('room')->where('room_number', $room_number)->value('rid'); $map[] = ['rid', '=', $rid]; } if(!empty($owner_uid)){ $map[] = ['owner_uid', '=', $owner_uid]; } if(!empty($is_fa)){ $map[] = ['is_fa', '=', $is_fa]; } // if(!empty($start)){ // $now_time = strtotime($start); // $last_week = strtotime('-1 week last sunday', $now_time); // $map[] = ['last_week_time', '=', $last_week]; // }else{ // $now_time = time(); // $last_week = strtotime('-1 week last sunday', $now_time); // $map[] = ['last_week_time', '=', $last_week]; // } if(!empty($belong_week)){ $map[] = ['belong_week', '=', trim($belong_week)]; } $map[] = ['type', '=', 1]; $list = db::name('room_week_earnings_log')->where($map)->order(['belong_week'=>'desc','earnings'=>'desc'])->page($page, $limit)->select(); foreach ($list as $k => &$v){ $room_info = db::name('room')->find($v['rid']); $v['room_number'] = $room_info['room_number']; $v['room_name'] = mb_convert_encoding(base64_decode($room_info['base64_room_name']), 'UTF-8', 'UTF-8'); $user_info = db::name('user')->find($v['owner_uid']); $v['nick_name'] = mb_convert_encoding(base64_decode($user_info['base64_nick_name']), 'UTF-8', 'UTF-8'); } $data = []; $data['count'] = db::name('room_week_earnings_log')->where($map)->count(); $totalRowData = db::name('room_week_earnings_log')->field('SUM(change_value) as change_value,SUM(earnings) as earnings')->where($map)->find(); $data['totalRow'] = $totalRowData; $data['list'] = $list; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //详情 public function room_week_earnings_log_info($id=0){ $map = []; $map[] = ['id','=',$id]; $week_earnings_info = db::name('room_week_earnings_log')->where($map)->find(); return ['code' => 200, 'msg' => '获取成功', 'data' => $week_earnings_info]; } //修复 public function room_week_earnings_log_edit($data){ $map = []; $map[] = ['id','=',$data['id']]; $week_earnings_info = db::name('room_week_earnings_log')->where($map)->find(); if($week_earnings_info['apply_status'] != 1){ return ['code' => 201, 'msg' => '已审核完成', 'data' => null]; } if($data['apply_status'] == 1){ return ['code' => 201, 'msg' => '请选择审核状态!', 'data' => null]; } if(empty($week_earnings_info)){ return ['code' => 201, 'msg' => '审批对象不存在', 'data' => null]; } db::name('room_week_earnings_log')->where($map)->update(['apply_status'=>$data['apply_status'],'remark'=>trim($data['remark']),'update_time'=>time()]); return ['code' => 200, 'msg' => '操作成功', 'data' => $week_earnings_info]; } //批量结算---------------需要 public function batch_give_room_subsidy(){ $week_start = date('Y-m-d', strtotime("last week Monday")); $week_end = date('Y-m-d', strtotime("last week Sunday")); $balance_week = $week_start."-".$week_end; $is_had_deal_wsh = db::name('room_week_earnings_log')->where(['is_delete'=>1,'belong_week'=>$balance_week,'is_fa'=>2,'apply_status'=>1])->find(); if(!empty($is_had_deal_wsh)){ return ['code' => 201, 'msg' => "存在未审核的清单", 'data' => null]; } $is_had_deal = db::name('room_week_earnings_log')->where(['is_delete'=>1,'belong_week'=>$balance_week,'is_fa'=>2,'apply_status'=>2])->find(); if(empty($is_had_deal)){ return ['code' => 201, 'msg' => "没有要结算的工资", 'data' => null]; } try { db::name('room_week_earnings_log')->where(['is_delete'=>1,'belong_week'=>$balance_week,'is_fa'=>2])->update(['is_delete'=>2,'update_time'=>time()]); //推入事务逻辑 //推入队列 $redis = connectionRedis(); $redis->rPush('balance_room_wages_date',$balance_week); // $data = model('api/RoomWages')->batch_give_room_subsidy($balance_week); // if($data['code'] != 200){ // return ['code' => 200, 'msg' =>$data['msg'], 'data' => null]; // } return ['code' => 200, 'msg' => "发放成功", 'data' => null]; } catch (\Exception $e) { // 回滚事务 Db::rollback(); return ['code' => 201, 'msg' => "发放失败", 'data' => null]; } } //补贴详情 public function get_give_room_subsidy_info($id){ if(empty($id)){ return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $user_room_week_earnings = db::name('user_room_week_earnings')->where('id', $id)->find(); if(!$user_room_week_earnings){ return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } return ['code' => 200, 'msg' => '获取成功', 'data' => $user_room_week_earnings]; } //修改补贴 public function edit_give_room_subsidy($id, $user_earnings){ if(empty($id)){ return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $user_room_week_earnings = db::name('user_room_week_earnings')->where('id', $id)->find(); if(!$user_room_week_earnings){ return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } if($user_earnings < 0){ return ['code' => 201, 'msg' => '收益不能小于0', 'data' => null]; } if($user_room_week_earnings['is_delete'] == 2){ return ['code' => 201, 'msg' => '该收益已结算,无法编辑', 'data' => null]; } $update = []; $update['user_earnings'] = $user_earnings; $update['update_time'] = time(); $reslut = db::name('user_room_week_earnings')->where('id', $id)->update($update); if($reslut){ return ['code' => 200, 'msg' => '编辑成功', 'data' => null]; }else{ return ['code' => 201, 'msg' => '编辑失败', 'data' => null]; } } //检测房间 public function check_room($rid){ $room_info = db::name('room')->where('rid', $rid)->find(); if(!$room_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } $check_room_info = model('api/AgoraCallback')->channel_room($rid); if($check_room_info['code'] == 200 && !empty($check_room_info['data']['broadcasters'])){ // dump($check_room_info['data']['broadcasters']);exit; foreach($check_room_info['data']['broadcasters'] as $k => $v){ $room_micro = $room_info['room_host_uid'].','.$room_info['room_micro']; $room_micro_info = explode(',', $room_micro); if(!in_array($v, $room_micro_info)){ model('api/AgoraCallback')->kicking_user($v, $rid, 20); $insert = []; $insert['uid'] = $v; $insert['rid'] = $rid; $insert['type'] = 311; $insert['content'] = $room_micro; $insert['add_time'] = time(); db::name('user_agora_block')->insert($insert); } } } return ['code' => 200, 'msg' => '检测完成', 'data' => null]; } //清理麦位 public function check_room_micro($rid){ $room_info = db::name('room')->where('rid', $rid)->find(); if(!$room_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } $check_room_info = model('api/AgoraCallback')->channel_room($rid); if($check_room_info['code'] == 200 && !empty($check_room_info['data']['broadcasters'])){ // dump($check_room_info['data']['broadcasters']);exit; // foreach($check_room_info['data']['broadcasters'] as $k => $v){ // $room_micro = $room_info['room_host_uid'].','.$room_info['room_micro']; // $room_micro_info = explode(',', $room_micro); // if(!in_array($v, $room_micro_info)){ // } // } $room_micro = $room_info['room_micro']; $room_micro_info = explode(',', $room_micro); foreach ($room_micro_info as $k => $v){ if($v > 0 && !in_array($v,$check_room_info['data']['broadcasters'])){ } } } return ['code' => 200, 'msg' => '清理完成', 'data' => null]; } //动态列表 public function room_apply_list( $room_owner_uid,$room_number,$apply_status, $page = 1, $limit = 20) { $map = []; if (!empty($room_owner_uid)) { $map[] = ['ra.room_owner_uid', '=', $room_owner_uid]; } if (!empty($room_number)) { $map[] = ['r.room_number', '=', $room_number]; } if (!empty($apply_status)) { $map[] = ['ra.apply_status', '=', $apply_status]; } $list = db::name('room_apply') ->alias('ra') ->join('yy_user u', 'u.uid = ra.room_owner_uid') ->join('yy_room r','r.rid = ra.rid') ->field('ra.id,ra.rid,ra.room_owner_uid,ra.cate_id,ra.apply_status,u.base64_nick_name as nick_name,r.base64_room_name as room_name,r.cate_id as now_cate_id,r.room_number,r.pretty_room_number,ra.add_time') ->where($map) ->page($page, $limit) ->order("id desc") ->select(); foreach ($list as $k => &$v) { $v['nick_name'] = mb_convert_encoding(base64_decode($v['nick_name']), 'UTF-8', 'UTF-8'); $v['nickname'] = $v['room_owner_uid'] . '-' . $v['nick_name']; $v['room_cate_name'] = db::name('room_category')->where(['cate_id' => $v['cate_id']])->value('category_name'); $v['now_room_cate_name'] = db::name('room_category')->where(['cate_id' => $v['now_cate_id']])->value('category_name'); $v['room_name'] = mb_convert_encoding(base64_decode($v['room_name']), 'UTF-8', 'UTF-8'); } $data = []; $data['count'] = db::name('room_apply') ->alias('ra') ->join('yy_user u', 'u.uid = ra.room_owner_uid') ->join('yy_room r','r.rid = ra.rid') ->where($map) ->count('ra.id'); $data['list'] = $list; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } public function room_apply_info($id=0){ $map = ['ra.id'=>$id]; $room_apply = db::name('room_apply') ->alias('ra') ->join('yy_user u', 'u.uid = ra.room_owner_uid') ->join('yy_room r','r.rid = ra.rid') ->field('ra.id,ra.rid,ra.room_owner_uid,ra.cate_id,ra.apply_status,u.base64_nick_name as nick_name,r.base64_room_name as room_name,r.cate_id as now_cate_id,r.room_number,r.pretty_room_number,ra.add_time') ->where($map) ->find(); /* foreach ($list as $k => &$v) {*/ $room_apply['nick_name'] = mb_convert_encoding(base64_decode($room_apply['nick_name']), 'UTF-8', 'UTF-8'); $room_apply['nickname'] = $room_apply['room_owner_uid'] . '-' . $room_apply['nick_name']; $room_apply['room_cate_name'] = db::name('room_category')->where(['cate_id' => $room_apply['cate_id']])->value('category_name'); $room_apply['now_room_cate_name'] = db::name('room_category')->where(['cate_id' => $room_apply['now_cate_id']])->value('category_name'); $room_apply['room_name'] = mb_convert_encoding(base64_decode($room_apply['room_name']), 'UTF-8', 'UTF-8'); // } return ['code' => 200, 'msg' => '获取成功', 'data' => $room_apply]; } //房间审核 public function room_apply_edit($data1){ if(empty($data1['rid'])){ return ['code' => 201, 'msg' => '获取不到房间!', 'data' => null]; } $rid = $data1['rid']; $room_info = db::name('room')->where(['rid'=>$rid,'is_delete'=>1])->find(); if(empty($room_info)){ return ['code' => 201, 'msg' => '房间不存在!', 'data' => null]; } $id = $data1['id']; $room_apply_info = db::name('room_apply')->where(['id'=>$id])->find(); $room_name = $room_apply_info['room_name']; $cate_id = $room_apply_info['cate_id']; //想要切换的房间类型 //审核状态变化 if($data1['apply_status'] == $room_apply_info['apply_status']){ return ['code' => 201, 'msg' => '当前审核状态已存在!', 'data' => null]; } if($data1['apply_status'] ==1){ return ['code' => 201, 'msg' => '不能将房间审核更改为待审核!', 'data' => null]; } if($room_apply_info['apply_status'] ==3){ return ['code' => 201, 'msg' => '该房间类型已关闭!', 'data' => null]; } try { Db::startTrans(); //房间状态已通过 改为 拒绝 $is_change = false; if(($room_apply_info['apply_status'] == 2) && ($data1['apply_status'] == 3)){ $cate_id = 18; $data = []; if($room_info['cate_id'] != $cate_id && $cate_id > 0){ $is_change = true; if($room_info['cate_id'] == 19){ $map = []; $map[] = ['rid', '=', $rid]; $room_privacy = db::name('room_privacy')->where($map)->select(); if(!empty($room_privacy)){ db::rollback(); return ['code' => 201, 'msg' => '当前有小黑屋,暂时无法变更房间', 'data' => null]; } } if($room_info['cate_id'] == 26){ $map = []; $map[] = ['rid', '=', $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){ db::rollback(); return ['code' => 201, 'msg' => '当前有进行中的新人拍卖,无法切换', 'data' => null]; } } if($room_info['cate_id'] == 27){ //当前是否已有进行中的K歌 $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['is_delete', '=', 1]; $room_auction_info = db::name('room_song_log')->where($map)->find(); if($room_auction_info){ db::rollback(); return ['code' => 201, 'msg' => '当前K歌进行中,无法切换', 'data' => null]; } } if($room_info['cate_id'] == 28){ $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['status', '=', 2]; $map[] = ['is_delete', '=', 1]; $room_auction_info = db::name('room_auction_log')->where($map)->find(); if($room_auction_info){ db::rollback(); return ['code' => 201, 'msg' => '当前有尚未结束的拍卖,无法切换', 'data' => null]; } } if($room_info['cate_id'] == 29){ $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['is_delete', '=', 1]; $room_dating_log = db::name('room_dating_log')->where($map)->find(); if($room_dating_log){ db::rollback(); return ['code' => 201, 'msg' => '当前玩法进行中,无法切换', 'data' => null]; } } if(in_array($room_info['cate_id'],[36,37])){ $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['is_delete', '=', 1]; $room_dating_log = db::name('room_xq1')->where($map)->find(); if($room_dating_log){ db::rollback(); return ['code' => 201, 'msg' => '当前玩法进行中,无法切换', 'data' => null]; } } $data['cate_id'] = $cate_id; //房间类型编辑 $reslut = model('admin/room')->save($data, ['rid' => $rid]); if (!$reslut) { Db::rollback(); return ['code' => 201, 'msg' => '编辑失败', 'data' => null]; } //清理该房间所有麦位魅力值 $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['charm_value', '>', 0]; $list = db::name('room_user_cc')->where($map)->select(); if(!empty($list)){ foreach ($list as $k => $v){ $reslut = db::name('room_user_micro_charm_log')->where('cid', $v['cid'])->update(['change_value' => 0, 'update_time' => time()]); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '编辑失败', 'data' => '']; } } $reslut = db::name('room_user_cc')->where($map)->update(['charm_value' => 0, 'update_time' => time()]); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '编辑失败', 'data' => '']; } } } } //审核状态修改 db::name('room_apply')->where(['id'=>$id])->update(['apply_status'=>$data1['apply_status'],'reamrks'=>$data1['remarke']]); // 1待审核 2审核通过 3审核失败 $category_name= db::name('room_category')->where(['cate_id'=>$room_apply_info['cate_id']])->value('category_name'); if($data1['apply_status'] == 2){ $result = "审核通过"; }elseif($data1['apply_status'] == 3){ $result = "已被关闭"; } $remarke = "您申请变更房间类型为{$category_name}:{$result}"; //提现驳回 $reslut=model('api/UserMessage')->send_message($room_apply_info['room_owner_uid'], 1, 0,'房间审核', $remarke); if ($reslut['code']!=200) { Db::rollback(); return ['code' => 201, 'msg' => "处理失败", 'data' => null]; } Db::commit(); if($is_change){ if($cate_id != $room_info['cate_id']){ $push_room_data = []; $push_room_data['rid'] = $rid; $push_room_data['type'] = 1; $push_data = []; $push_data['code'] = 369; $push_data['msg'] = "房间类型变更推送"; $push_data['data'] = $push_room_data; $reslut = model('api/WebSocketPush')->send_to_group($rid, $push_data); } } return ['code' => 200, 'msg' => '编辑成功', 'data' => null]; } catch (\Exception $e) { // 回滚事务 Db::rollback(); // halt($e); return ['code' => 201, 'msg' => '编辑失败', 'data' => null]; } } // public function check_empty_room(){ // $robot_rids = db::name('room')->where([['robot_num','>',0]])->coulum('rid'); // $room_uids = db::name('room_micro')->where([['rid','in',$robot_rids],['uid','<>',0]])->group('rid')->column('rid'); // array_diff(); // } public function out_forbid_log($data,$page,$page_limit){ $map = []; if(!empty($data['operator_uid'])){ $map[] = ['ru.operator_uid', '=', trim($data['operator_uid'])]; } if(!empty($data['uid'])){ $map[] = ['ru.uid', '=', trim($data['uid'])]; } if(!empty($data['room_number'])){ $map[] = ['r.room_number|r.pretty_room_number', '=', trim($data['room_number'])]; } if(!empty($data['type'])){ $map[] = ['ru.type', '=', trim($data['type'])]; } if(!empty($data['start'])){ $map[] = ['ru.add_time', '>=', strtotime(trim($data['start']))]; } if(!empty($data['end'])){ $map[] = ['ru.add_time', '<=', strtotime(trim($data['end']))]; } $list = db::name('room_forbid_user ru') ->join('yy_user u1','ru.operator_uid = u1.uid','left') ->join('yy_user u2','ru.uid = u2.uid') ->join('yy_room r','r.rid = ru.rid') ->field('ru.*,u1.base64_nick_name as operator_nick_name,u2.base64_nick_name as nick_name,if(pretty_room_number <> 0,pretty_room_number,room_number) as room_number') ->where($map) ->page($page, $page_limit) ->order(['ru.fid'=>'desc']) ->select(); foreach ($list as &$v){ if(!empty($v['operator_uid'])){ $v['operator_nick_name'] = mb_convert_encoding(base64_decode($v['operator_nick_name']), 'UTF-8', 'UTF-8'); $v['operator_nick_name'] = "{$v['operator_nick_name']}-{$v['operator_uid']}"; }else{ $v['operator_nick_name'] = ""; } $v['nick_name'] = mb_convert_encoding(base64_decode($v['nick_name']), 'UTF-8', 'UTF-8'); $v['nick_name'] = "{$v['nick_name']}-{$v['uid']}"; $v['status'] = 2; //未解禁 if($v['over_time'] <= time()){ $v['status'] = 1; //已解禁 } } $data = []; $data['count'] = db::name('room_forbid_user ru') ->join('yy_user u1','ru.operator_uid = u1.uid','left') ->join('yy_user u2','ru.uid = u2.uid') ->join('yy_room r','r.rid = ru.rid') ->where($map) ->count(); $data['list'] = $list; return ['code' => 200, 'msg' => '检测完成', 'data' => $data]; } public function jie_word($fid){ $result = db::name('room_forbid_user')->where(['fid'=>$fid])->find(); if(empty($result)){ return ['code' => 201, 'msg' => '操作对象不存在!', 'data' => null]; } if($result['over_time'] <= time()){ return ['code' => 201, 'msg' => '已解禁!', 'data' => null]; } db::name('room_forbid_user')->where(['fid'=>$fid])->update(['over_time'=>time(),'update_time'=>time()]); return ['code' => 200, 'msg' => '操作成功', 'data' => null]; } }