field('day')->where('is_delete', 1)->order('day asc')->select(); return ['code' => 200, 'msg' => '获取成功', 'data' => $list]; } //礼物列表 public function get_gift_list(){ $config = get_uncache_system_config(); $map = []; $map[] = ['type', '=', 1]; $map[] = ['is_show', '=', 1]; $map[] = ['is_can_buy', '=', 1]; $map[] = ['is_delete', '=', 1]; if(!empty($config['cp_gift_id'])){ $map[] = ['gid', 'neq', $config['cp_gift_id']]; } $list = db::name('gift')->field('gid,gift_name,base_image,gift_price')->where($map)->order('gift_price asc')->select(); foreach($list as $k => &$v){ $v['base_image'] = localpath_to_netpath($v['base_image']); } return ['code' => 200, 'msg' => '获取成功', 'data' => $list]; } //设置用户拍卖信息 public function options_user_auction_info($uid, $rid, $relation_id, $gid, $day){ $user_info = db::name('user')->find($uid); if(!$user_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } $room_info = db::name('room')->find($rid); if(!$room_info){ return ['code' => 201, 'msg' => '房间信息不存在', 'data' => null]; } //当前麦上拍卖信息 $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['is_delete', '=', 1]; $room_auction_info = db::name('room_auction_log')->where($map)->order('id desc')->find(); if(!$room_auction_info){ return ['code' => 201, 'msg' => '当前尚未有拍卖信息', 'data' => null]; } if($room_auction_info['status'] != 1){ return ['code' => 201, 'msg' => '当前已开始竞拍,无法设置', 'data' => null]; } //是否是该用户的配置信息 if($room_auction_info['uid'] != $uid){ return ['code' => 201, 'msg' => '你无权限设置', 'data' => null]; } //关系是否存在 $relation_info = db::name('relation')->where('id', $relation_id)->where('is_delete', 1)->find(); if(!$relation_info){ return ['code' => 201, 'msg' => '该关系不存在', 'data' => null]; } //礼物是否存在 $map = []; $map[] = ['type', '=', 1]; $map[] = ['is_show', '=', 1]; $map[] = ['is_can_buy', '=', 1]; $map[] = ['is_delete', '=', 1]; $gift_info = db::name('gift')->where($map)->find(); if(!$gift_info){ return ['code' => 201, 'msg' => '该礼物不存在', 'data' => null]; } //天数是否存在 $day_info = db::name('relation_duration')->where('is_delete', 1)->find(); if(!$day_info){ return ['code' => 201, 'msg' => '该天数不存在', 'data' => null]; } Db::startTrans(); try { $update = []; $update['relation_id'] = $relation_id; $update['gid'] = $gid; $update['day'] = $day; $update['update_time'] = time(); $reslut = db::name('room_auction_log')->where('id', $room_auction_info['id'])->update($update); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '设置失败', 'data' => null]; } Db::commit(); model('api/room')->push_room_micro_data($rid); return ['code' => 200, 'msg' => '设置成功', 'data' => null]; } catch (\Exception $e) { // 回滚事务 Db::rollback(); dump($e); return ['code' => 201, 'msg' => '设置失败', 'data' => null]; } } //开始拍卖 public function open_auction($uid, $rid) { $user_info = db::name('user')->field('uid')->find($uid); if(!$user_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } $room_info = db::name('room')->find($rid); if(!$room_info){ return ['code' => 201, 'msg' => '房间信息不存在', 'data' => null]; } //是否有权限 if($uid != $room_info['room_host_uid'] && $uid != $room_info['room_owner_uid']){ return ['code' => 201, 'msg' => '您无权限进行该操作', 'data' => null]; } //是否有新人在拍卖位上 $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['micro_id', '=', 1]; $room_micro_info = db::name('room_micro')->where($map)->find(); if($room_micro_info && $room_micro_info['uid'] <= 0){ return ['code' => 201, 'msg' => '当前尚未有人在麦上,无法开启', 'data' => null]; } //当前是否已有待开始的拍卖 $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['is_delete', '=', 1]; $room_auction_info = db::name('room_auction_log')->where($map)->order('id desc')->find(); if(!$room_auction_info){ return ['code' => 201, 'msg' => '当前尚未有拍卖信息', 'data' => null]; } if($room_auction_info['status'] == 2){ return ['code' => 201, 'msg' => '当前已有进行中的拍卖', 'data' => null]; } if(empty($room_auction_info['relation_id']) || empty($room_auction_info['gid']) || empty($room_auction_info['day'])){ return ['code' => 201, 'msg' => '拍卖位信息尚未设置完成', 'data' => null]; } Db::startTrans(); try { //清除财富值 db::name('room_visitor')->where([['rid','=',$rid]])->update(['change_value'=>0,'update_time'=>time()]); $paimai_long_time = get_uncache_system_config('paimai_long_time'); //开始拍卖 $update = []; $update['status'] = 2; $update['update_time'] = time(); $update['end_time'] = $paimai_long_time + time(); $update['duration'] = $paimai_long_time; $reslut = db::name('room_auction_log')->where('id', $room_auction_info['id'])->update($update); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '开启失败', 'data' => null]; } Db::commit(); model('api/room')->push_room_micro_data($rid); return ['code' => 200, 'msg' => '开启成功', 'data' => null]; } catch (\Exception $e) { // 回滚事务 dump($e); Db::rollback(); return ['code' => 201, 'msg' => '开启失败', 'data' => null]; } } //竞拍信息 public function get_auction_info($uid, $rid){ $user_info = db::name('user')->find($uid); if(!$user_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } $room_info = db::name('room')->find($rid); if(!$room_info){ return ['code' => 201, 'msg' => '该房间信息不存在', 'data' => null]; } //当前房间是否正在进行的拍卖 $room_auction_info = db::name('room_auction_log')->where('rid', $rid)->where('status', 2)->where('is_delete', 1)->order('id desc')->find(); if(!$room_auction_info){ return ['code' => 201, 'msg' => '当前房间尚未开启拍卖', 'data' => null]; } $auction_user_info = db::name('user')->find($room_auction_info['uid']); $auction_gift_info = db::name('gift')->find($room_auction_info['gid']); $data = []; $data['uid'] = $room_auction_info['uid']; $data['nick_name'] = mb_convert_encoding(base64_decode($auction_user_info['base64_nick_name']), 'UTF-8', 'UTF-8'); $data['head_pic'] = localpath_to_netpath($auction_user_info['head_pic']); $data['gid'] = $room_auction_info['gid']; $data['gift_name'] = $auction_gift_info['gift_name']; $data['base_image'] = localpath_to_netpath($auction_gift_info['base_image']); $data['gift_price'] = $auction_gift_info['gift_price']; $data['integral'] = $user_info['integral']; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //记录用户竞拍信息 public function record_user_auction_info($uid, $user_id, $rid, $gid, $gift_price, $num, $room_owner_uid){ //当前房间进行中的拍卖信息 $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['uid', '=', $user_id]; // $map[] = ['gid', '=', $gid]; $map[] = ['status', '=', 2]; $map[] = ['is_delete', '=', 1]; $room_auction_info = db::name('room_auction_log')->where($map)->order('id desc')->find(); if($room_auction_info){ if($uid == $room_owner_uid){ return ['code' => 201, 'msg' => '主持无法参与竞拍', 'data' => null]; } if(!empty($room_auction_info['gid'])){ $gift_info1 = db::name('gift')->where(['gid'=>$room_auction_info['gid'],'is_delete'=>1])->field('gift_price')->find(); if(empty($gift_info1)){ return ['code' => 201, 'msg' => '竞拍礼物不存在!', 'data' => null]; } //任何礼物都可以竞拍 $gift_info1_price = $gift_info1['gift_price']; // if($gift_price < $gift_info1_price){ // return ['code' => 201, 'msg' => "礼物竞拍单价小于{$gift_info1_price}金币!", 'data' => null]; // } } //是否有该场次的赠送信息 $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['raid', '=', $room_auction_info['id']]; $map[] = ['auction_uid', '=', $uid]; $map[] = ['uid', '=', $room_auction_info['uid']]; // $map[] = ['gid', '=', $gid]; $user_auction_info = db::name('user_room_auction_log')->where($map)->find(); if(!$user_auction_info){ $insert = []; $insert['rid'] = $rid; $insert['raid'] = $room_auction_info['id']; $insert['auction_uid'] = $uid; $insert['uid'] = $room_auction_info['uid']; // $insert['gid'] = $gid; $insert['num'] = $num; $insert['total_price'] = $gift_price * $num; $insert['add_time'] = time(); $reslut = db::name('user_room_auction_log')->insertGetId($insert); $pid = $reslut; }else{ $total_price = $gift_price * $num; $reslut = db::name('user_room_auction_log')->where('id', $user_auction_info['id'])->inc('num', $num)->inc('total_price', $total_price)->update(['update_time' => time()]); $pid = $user_auction_info['id']; } if(!$reslut){ return ['code' => 201, 'msg' => '请重试', 'data' => null]; } //总计 // $room_auction_tj_info = db::name('user_room_auction_tj')->where(['pid'=>$pid,'auction_uid'=>$uid,'uid'=>$room_auction_info['uid']])->find(); // if(empty($room_auction_tj_info)){ // db::name('user_room_auction_tj')->insert([ // 'pid' => $pid, // 'auction_uid' =>$uid, // 'uid' => $room_auction_info['uid'], // 'gift_total_price' => $gift_price * $num, // 'add_time' => time(), // 'update_time' => time() // ]); // }else{ // $gift_total_price = $gift_price * $num; // db::name('user_room_auction_tj')->where(['id'=>$room_auction_tj_info['id']])->inc('gift_total_price',$gift_total_price)->update(['update_time' => time()]); // } //明细 db::name('user_room_auction_detail_log')->insert([ 'pid' => $pid, 'auction_uid' =>$uid, 'uid' => $room_auction_info['uid'], 'gid' => $gid, 'num' => $num, 'gift_total_price' => $gift_price * $num, 'add_time' => time() ]); //更新竞拍麦位信息 $this->update_auction_micro($rid, $room_auction_info['id'],$gift_info1_price); } return ['code' => 200, 'msg' => '获取成功', 'data' => null]; } //更新竞拍麦位信息[排行榜 2 3 4 5 6 7 拍卖位] public function update_auction_micro($rid, $raid,$gift_info1_price){ if(empty($gift_info1_price)){ $gift_info1_price = 0; } //当前房间竞拍麦信息 $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['micro_id', 'in', [2,3,4,5,6,7]]; $room_micro_arr = db::name('room_micro')->where($map)->order('micro_id asc')->column('uid'); //当前竞拍前三 $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['raid', '=', $raid]; $map[] = ['total_price','>=', $gift_info1_price]; $list = db::name('user_room_auction_log')->where($map)->find(); if(!empty($list)){ //排名 并且单价 大于 指定礼物价值 $user_auction_arr = db::name('user_room_auction_log')->where($map)->order('total_price desc')->limit(6)->column('auction_uid'); if($user_auction_arr != $room_micro_arr){ foreach ($user_auction_arr as $k => $v){ if($v != $room_micro_arr[$k]){ //变更麦位信息 $micro_id = $k + 2; db::name('room_micro')->where('rid', $rid)->where('micro_id', $micro_id)->update(['uid' => $v, 'update_time' => time()]); //是否有在其他麦位 $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['micro_id', 'in', [8,9,10,11,12]]; $map[] = ['uid', '=', $v]; $info = db::name('room_micro')->where($map)->find(); if($info){ db::name('room_micro')->where('id', $info['id'])->update(['uid' => 0, 'update_time' => time()]); } } } } } return true; } //结束拍卖 public function finish_auction($uid, $rid){ $config = get_uncache_system_config(); $user_info = db::name('user')->find($uid); if(!$user_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } $room_info = db::name('room')->find($rid); if(!$room_info){ return ['code' => 201, 'msg' => '该房间信息不存在', 'data' => null]; } //是否有权限结束 if($room_info['room_host_uid'] != $uid){ return ['code' => 201, 'msg' => '当前麦上主持才可结束', 'data' => null]; } //当前房间是否正在进行的拍卖 $room_auction_info = db::name('room_auction_log')->where('rid', $rid)->where('status', 2)->where('is_delete', 1)->order('id desc')->find(); if(!$room_auction_info){ return ['code' => 201, 'msg' => '当前房间尚未开启拍卖', 'data' => null]; } //获取最低拍卖价格 $gift_info1 = db::name('gift')->where(['gid'=>$room_auction_info['gid'],'is_delete'=>1])->field('gift_price')->find(); if(empty($gift_info1)){ return ['code' => 201, 'msg' => '竞拍礼物不存在!', 'data' => null]; } $gift_info1_price = $gift_info1['gift_price']; Db::startTrans(); try { $now_time = time(); //是否有最高出价 $room_auction_price_info = db::name('user_room_auction_log')->where([['raid','=',$room_auction_info['id']],['total_price','>=',$gift_info1_price]])->order('total_price desc')->limit(1)->find(); if(empty($room_auction_price_info)){//流拍 //当前拍卖结束 $reslut = db::name('room_auction_log')->where('id', $room_auction_info['id'])->update(['status' => 3, 'is_delete' => 2, 'update_time' => time()]); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '结束失败', 'data' => null]; } $is_push = 2; }else{ //绑定关系 $map = []; $map[] = ['uid|receive_uid', '=', $room_auction_price_info['auction_uid']]; $map[] = ['uid|receive_uid', '=', $room_auction_price_info['uid']]; $map[] = ['relation_id', '=', $room_auction_info['relation_id']]; $map[] = ['is_delete', '=', 1]; $user_relation = db::name('user_relation_binding')->where($map)->find(); if($user_relation){//延长时间 $update = []; // $update['day'] = $relation_info['day']; $update['end_time'] = $user_relation['end_time'] + ($room_auction_info['day'] * 60 * 60 * 24); $update['update_time'] = $now_time; $reslut = db::name('user_relation_binding')->where('id', $user_relation['id'])->inc('day', $room_auction_info['day'])->update($update); }else{//添加 $insert = []; $insert['uid'] = $room_auction_price_info['auction_uid']; $insert['receive_uid'] = $room_auction_price_info['uid']; $insert['relation_id'] = $room_auction_info['relation_id']; $insert['day'] = $room_auction_info['day']; $insert['add_time'] = $now_time; $insert['end_time'] = $now_time + ($room_auction_info['day'] * 60 * 60 *24); $reslut = db::name('user_relation_binding')->insert($insert); } if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '结束失败', 'data' => null]; } //记录 $insert = []; $insert['type'] = 2; $insert['uid'] = $room_auction_price_info['auction_uid']; $insert['receive_uid'] = $room_auction_price_info['uid']; $insert['relation_id'] = $room_auction_info['relation_id']; $insert['day'] = $room_auction_info['day']; $insert['add_time'] = $now_time; $reslut = db::name('user_relation_binding_log')->insert($insert); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '结束失败', 'data' => null]; } //摩天轮数据增加 $map = []; $map[] = ['uid|receive_uid', '=', $room_auction_price_info['auction_uid']]; $map[] = ['uid|receive_uid', '=', $room_auction_price_info['uid']]; $map[] = ['r_date', '=', date('Y-m-d')]; $dating_mt_wheel = db::name('dating_mt_wheel')->where($map)->find(); if(!empty($dating_mt_wheel)){ db::name('dating_mt_wheel')->where(['id'=>$dating_mt_wheel['id']])->inc('rank_value', $room_auction_price_info['total_price'])->update(['update_time'=>time()]); }else{ //建立关系以后数据存储 db::name('dating_mt_wheel')->insert([ 'uid' => $room_auction_price_info['auction_uid'], 'receive_uid' => $room_auction_price_info['uid'], 'rank_value' => $room_auction_price_info['total_price'], 'r_date' => date('Y-m-d'), 'add_time' => time(), 'update_time' => time() ]); } //当前拍卖结束 $reslut = db::name('room_auction_log')->where('id', $room_auction_info['id'])->update(['auction_uid' => $room_auction_price_info['auction_uid'], 'auction_num' => $room_auction_price_info['num'], 'status' => 3, 'is_delete' => 2, 'update_time' => time()]); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '结束失败', 'data' => null]; } //结束当前拍卖价位 $reslut = db::name('user_room_auction_log')->where('raid', $room_auction_info['id'])->update(['is_delete' => 2, 'update_time' => time()]); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '结束失败', 'data' => null]; } $is_push = 1; } //拍卖用户下麦 $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['micro_id', 'in', [1,2,3,4,5,6,7]]; $map[] = ['uid', '>', 0]; $reslut = db::name('room_micro')->where($map)->update(['uid' => 0, 'update_time' => time(), 'frame_gid' => 0, 'centre_gid' => 0, 'above_gid' => 0, 'below_gid' => 0, 'left_gid' => 0, 'right_gid' => 0]); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '结束失败', 'data' => null]; } //更新老板麦位 下麦 // model('RoomBossMicro')->update_room_boss_micro($rid); Db::commit(); model('api/room')->push_room_micro_data($rid); if($is_push == 1){ $auction_user_info = db::name('user')->find($room_auction_price_info['auction_uid']); $sign_user_info = db::name('user')->find($room_auction_price_info['uid']); $push_message = []; $push_message['auction_user_info']['uid'] = $room_auction_price_info['auction_uid']; $push_message['auction_user_info']['nick_name'] = mb_convert_encoding(base64_decode($auction_user_info['base64_nick_name']), 'UTF-8', 'UTF-8'); $push_message['auction_user_info']['head_pic'] = localpath_to_netpath($auction_user_info['head_pic']); $push_message['sign_user_info']['uid'] = $room_auction_price_info['uid']; $push_message['sign_user_info']['nick_name'] = mb_convert_encoding(base64_decode($sign_user_info['base64_nick_name']), 'UTF-8', 'UTF-8'); $push_message['sign_user_info']['head_pic'] = localpath_to_netpath($sign_user_info['head_pic']); $push_message['relation_name'] = db::name('relation')->where('id', $room_auction_info['relation_id'])->value('name'); //提示签约成功 $push_data = []; $push_data['code'] = 3005; $push_data['msg'] = "绑定关系成功"; $push_data['data'] = $push_message; model('api/WebSocketPush')->send_to_group($rid, $push_data); } return ['code' => 200, 'msg' => '结束成功', 'data' => null]; } catch (\Exception $e) { // 回滚事务 dump($e); Db::rollback(); return ['code' => 201, 'msg' => '结束失败', 'data' => null]; } } //自动倒计时拍卖 public function close_auction_pm(){ $config = get_uncache_system_config(); $now_time = time(); //当前房间是否正在进行的拍卖 $room_auction_info = db::name('room_auction_log')->where([['status','=',2],['is_delete','=',1],['end_time','<',$now_time]])->order('id asc')->find(); if(empty($room_auction_info)){ return ['code' => 201, 'msg' => '暂没有要结束的拍卖活动!', 'data' => null]; } $rid = $room_auction_info['rid']; //获取最低拍卖价格 $gift_info1 = db::name('gift')->where(['gid'=>$room_auction_info['gid'],'is_delete'=>1])->field('gift_price')->find(); if(empty($gift_info1)){ Log::write(['msg'=>'竞拍礼物不存在','data_msg'=>$gift_info1],'close_auction_pm'); return ['code' => 201, 'msg' => "竞拍礼物不存在,房间rid:{$rid}!", 'data' => null]; } $gift_info1_price = $gift_info1['gift_price']; try { Db::startTrans(); //是否有最高出价 $room_auction_price_info = db::name('user_room_auction_log')->where([['raid','=',$room_auction_info['id']],['total_price','>=',$gift_info1_price]])->order('total_price desc')->limit(1)->find(); if(empty($room_auction_price_info)){//流拍 //当前拍卖结束 $reslut = db::name('room_auction_log')->where('id', $room_auction_info['id'])->update(['status' => 3, 'is_delete' => 2, 'update_time' => time()]); if(!$reslut){ Db::rollback(); Log::write(['msg'=>'结束失败1','data_msg'=>$reslut],'close_auction_pm'); return ['code' => 201, 'msg' => '结束失败', 'data' => null]; } $is_push = 2; }else{ //绑定关系 $map = []; $map[] = ['uid|receive_uid', '=', $room_auction_price_info['auction_uid']]; $map[] = ['uid|receive_uid', '=', $room_auction_price_info['uid']]; $map[] = ['relation_id', '=', $room_auction_info['relation_id']]; $map[] = ['is_delete', '=', 1]; $user_relation = db::name('user_relation_binding')->where($map)->find(); if($user_relation){//延长时间 $update = []; // $update['day'] = $relation_info['day']; $update['end_time'] = $user_relation['end_time'] + ($room_auction_info['day'] * 60 * 60 * 24); $update['update_time'] = $now_time; $reslut = db::name('user_relation_binding')->where('id', $user_relation['id'])->inc('day', $room_auction_info['day'])->update($update); }else{//添加 $insert = []; $insert['uid'] = $room_auction_price_info['auction_uid']; $insert['receive_uid'] = $room_auction_price_info['uid']; $insert['relation_id'] = $room_auction_info['relation_id']; $insert['day'] = $room_auction_info['day']; $insert['add_time'] = $now_time; $insert['end_time'] = $now_time + ($room_auction_info['day'] * 60 * 60 *24); $reslut = db::name('user_relation_binding')->insert($insert); } if(!$reslut){ Db::rollback(); Log::write(['msg'=>'结束失败2','data_msg'=>$user_relation],'close_auction_pm'); return ['code' => 201, 'msg' => '结束失败', 'data' => null]; } //记录 $insert = []; $insert['type'] = 2; $insert['uid'] = $room_auction_price_info['auction_uid']; $insert['receive_uid'] = $room_auction_price_info['uid']; $insert['relation_id'] = $room_auction_info['relation_id']; $insert['day'] = $room_auction_info['day']; $insert['add_time'] = $now_time; $reslut = db::name('user_relation_binding_log')->insert($insert); if(!$reslut){ Db::rollback(); Log::write(['msg'=>'结束失败3','data_msg'=>$reslut],'close_auction_pm'); return ['code' => 201, 'msg' => '结束失败', 'data' => null]; } //摩天轮数据增加 $map = []; $map[] = ['uid|receive_uid', '=', $room_auction_price_info['auction_uid']]; $map[] = ['uid|receive_uid', '=', $room_auction_price_info['uid']]; $map[] = ['r_date', '=', date('Y-m-d')]; $dating_mt_wheel = db::name('dating_mt_wheel')->where($map)->find(); if(!empty($dating_mt_wheel)){ db::name('dating_mt_wheel')->where(['id'=>$dating_mt_wheel['id']])->inc('rank_value', $room_auction_price_info['total_price'])->update(['update_time'=>time()]); }else{ //建立关系以后数据存储 db::name('dating_mt_wheel')->insert([ 'uid' => $room_auction_price_info['auction_uid'], 'receive_uid' => $room_auction_price_info['uid'], 'rank_value' => $room_auction_price_info['total_price'], 'r_date' => date('Y-m-d'), 'add_time' => time(), 'update_time' => time() ]); } //当前拍卖结束 $reslut = db::name('room_auction_log')->where('id', $room_auction_info['id'])->update(['auction_uid' => $room_auction_price_info['auction_uid'], 'auction_num' => $room_auction_price_info['num'], 'status' => 3, 'is_delete' => 2, 'update_time' => time()]); if(!$reslut){ Db::rollback(); Log::write(['msg'=>'结束失败4','data_msg'=>$reslut,'room_auction_price_info'=>$room_auction_price_info],'close_auction_pm'); return ['code' => 201, 'msg' => '结束失败', 'data' => null]; } //结束当前拍卖价位 $reslut = db::name('user_room_auction_log')->where('raid', $room_auction_info['id'])->update(['is_delete' => 2, 'update_time' => time()]); if(!$reslut){ Db::rollback(); Log::write(['msg'=>'结束失败5','reslut'=>$reslut],'close_auction_pm'); return ['code' => 201, 'msg' => '结束失败', 'data' => null]; } $is_push = 1; } //拍卖用户下麦 结束拍卖下麦 $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['micro_id', 'in', [1,2,3,4,5,6,7]]; $map[] = ['uid', '>', 0]; $reslut = db::name('room_micro')->where($map)->update(['uid' => 0, 'update_time' => time(), 'frame_gid' => 0, 'centre_gid' => 0, 'above_gid' => 0, 'below_gid' => 0, 'left_gid' => 0, 'right_gid' => 0]); if(!$reslut){ Db::rollback(); Log::write(['msg'=>'结束失败6','reslut'=>$reslut],'close_auction_pm'); return ['code' => 201, 'msg' => '结束失败', 'data' => null]; } model('api/room')->push_room_micro_data($rid); if($is_push == 1){ $auction_user_info = db::name('user')->find($room_auction_price_info['auction_uid']); $sign_user_info = db::name('user')->find($room_auction_price_info['uid']); $push_message = []; $push_message['auction_user_info']['uid'] = $room_auction_price_info['auction_uid']; $push_message['auction_user_info']['nick_name'] = mb_convert_encoding(base64_decode($auction_user_info['base64_nick_name']), 'UTF-8', 'UTF-8'); $push_message['auction_user_info']['head_pic'] = localpath_to_netpath($auction_user_info['head_pic']); $push_message['sign_user_info']['uid'] = $room_auction_price_info['uid']; $push_message['sign_user_info']['nick_name'] = mb_convert_encoding(base64_decode($sign_user_info['base64_nick_name']), 'UTF-8', 'UTF-8'); $push_message['sign_user_info']['head_pic'] = localpath_to_netpath($sign_user_info['head_pic']); $push_message['relation_name'] = db::name('relation')->where('id', $room_auction_info['relation_id'])->value('name'); //提示签约成功 $push_data = []; $push_data['code'] = 3005; $push_data['msg'] = "绑定关系成功"; $push_data['data'] = $push_message; $a = model('api/WebSocketPush')->send_to_group($rid, $push_data); Log::write(['msg'=>'绑定关系成功','reslut'=>$a],'close_auction_pm'); } Db::commit(); return ['code' => 200, 'msg' => '结束成功', 'data' => null]; } catch (\Exception $e) { // 回滚事务 dump($e); Db::rollback(); Log::write(['msg'=>'异常报错','reslut'=>$e],'close_auction_pm'); return ['code' => 201, 'msg' => '结束失败', 'data' => null]; } } //增加拍卖时长 public function add_pm_line_duration($uid, $rid, $duration=1){ $config = get_uncache_system_config(); $user_info = db::name('user')->field('uid')->find($uid); if(!$user_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } $room_info = db::name('room')->find($rid); if(!$room_info){ return ['code' => 201, 'msg' => '该房间不存在', 'data' => null]; } $duration_time = 60; $room_admin_uid_arr = db::name('room_admin')->where('rid', $rid)->where('is_delete', 1)->column('uid'); if ($uid != $room_info['room_owner_uid'] && $uid != $room_info['room_host_uid']) { return ['code' => 201, 'msg' => '无权限操作', 'data' => null]; } //当前房间是否正在进行的拍卖 $room_dating_log = db::name('room_auction_log')->where('rid', $rid)->where('status', 2)->where('is_delete', 1)->order('id desc')->find(); if(empty($room_dating_log)){ return ['code' => 201, 'msg' => '当前房间没有正在进行的拍卖!', 'data' => null]; } if($room_dating_log['end_time'] < time()){ return ['code' => 201, 'msg' => '当前房间没有正在进行的拍卖1', 'data' => null]; } $max_paimai_long_time = $config['max_paimai_long_time']; if($room_dating_log['duration'] + $duration_time > ($max_paimai_long_time * 60)){ return ['code' => 201, 'msg' => "单场拍卖活动最长{$max_paimai_long_time}分钟!", 'data' => null]; } Db::startTrans(); try { $update = []; $update['duration'] = $room_dating_log['duration'] + $duration_time; $update['end_time'] = $room_dating_log['end_time'] + $duration_time; $update['update_time'] = time(); $reslut = db::name('room_auction_log')->where('id', $room_dating_log['id'])->update($update); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '操作失败', 'data' => null]; } //添加记录 $insert = []; $insert['user_id'] = $uid; $insert['pid'] = $room_dating_log['id']; $insert['rid'] = $rid; $insert['duration'] = $duration; $insert['add_time'] = time(); $reslut = db::name('room_auction_duration_log')->insert($insert); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '操作失败', 'data' => null]; } Db::commit(); model('api/room')->push_room_micro_data($rid); return ['code' => 200, 'msg' => '操作成功', 'data' => null]; } catch (\Exception $e) { // 回滚事务 dump($e); Db::rollback(); return ['code' => 201, 'msg' => '操作失败', 'data' => null]; } } //当前排行榜 public function auction_room_rank($rid,$page,$limit=20){ //当前房间是否正在进行的拍卖 $room_auction_info = db::name('room_auction_log')->where('rid', $rid)->where('status', 2)->where('is_delete', 1)->order('id desc')->find(); if(!$room_auction_info){ return ['code' => 201, 'msg' => '当前房间尚未开启拍卖', 'data' => null]; } //获取最低拍卖价格 $gift_info1 = db::name('gift')->where(['gid'=>$room_auction_info['gid'],'is_delete'=>1])->field('gift_price')->find(); if(empty($gift_info1)){ return ['code' => 201, 'msg' => '竞拍礼物不存在!', 'data' => null]; } $gift_info1_price = $gift_info1['gift_price']; //是否有最高出价 $room_auction_price_info = db::name('user_room_auction_log') ->alias('ul') ->join('user u',"u.uid = ul.auction_uid") ->where([['ul.raid','=',$room_auction_info['id']],['ul.total_price','>=',$gift_info1_price]]) ->field('ul.auction_uid,ul.total_price,u.base64_nick_name as nick_name,u.head_pic') ->order(['total_price'=>'desc']) ->page($page,$limit) ->select(); if(!empty($room_auction_price_info)){ foreach ($room_auction_price_info as &$v){ $v['nick_name'] = mb_convert_encoding(base64_decode($v['nick_name']), 'UTF-8', 'UTF-8'); $v['head_pic'] = localpath_to_netpath($v['head_pic']); $v['charm_level_image'] = ''; $v['contribution_level_image'] = ''; $reslut = model('api/User')->get_user_charm_contribution_info($v['auction_uid']); // if(!empty($reslut['data']['user_charm_contribution_info'])){ $v['charm_level_image'] = $reslut['data']['charm_level_image']; $v['contribution_level_image'] = $reslut['data']['contribution_level_image']; // } } } return ['code' => 200, 'msg' => '操作成功', 'data' => $room_auction_price_info]; } }