alias('a')->join('yy_gift b', 'a.gid = b.gid')->field('a.gid,a.duration,b.gift_name,b.base_image,b.gift_price')->where($map)->order('b.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 send_gift($uid, $receive_uid, $rid, $prid, $gid, $num) { $map = []; $map[] = ['a.gid', '=', $gid]; $map[] = ['a.is_delete', '=', 1]; $map[] = ['a.is_show', '=', 1]; $gift_info = db::name('gift')->alias('a')->join('yy_room_privacy_gift b', 'a.gid = b.gid')->field('a.*, b.duration')->where($map)->find(); if (empty($gift_info)) { return ['code' => 201, 'msg' => '打赏礼物信息不存在', 'data' => null]; } $gift_info['play_image'] = localpath_to_netpath($gift_info['play_image']); $gift_info['base_image'] = localpath_to_netpath($gift_info['base_image']); if (ceil($num) != $num) { return ['code' => 201, 'msg' => '打赏礼物数量必须为整数', 'data' => null]; } if ($num < 1) { return ['code' => 201, 'msg' => '打赏礼物数量必须大于零', 'data' => null]; } //私密小屋信息 $privacy_room = db::name('room_privacy')->find($prid); if($privacy_room['is_use'] == 2){ return ['code' => 201, 'msg' => '该私密房间已到期', 'data' => null]; } $user_id_data = explode(',', $privacy_room['uid_data']); $user_id = $user_id_data[0]; $received_uid = $user_id_data[1]; if($uid == $user_id){ $receive_uid = $received_uid; }else if($uid == $received_uid){ $receive_uid = $user_id; }else{ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } if(empty($rid)){ $rid = $privacy_room['rid']; if(empty($rid)){ return ['code' => 201, 'msg' => '该私密房间已到期', 'data' => null]; } } $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['is_delete', '=', 1]; $room_info = db::name('room')->where($map)->find(); if (empty($room_info)) { return ['code' => 201, 'msg' => '所处房间不存在', 'data' => null]; } $room_owner_info = db::name('user')->where('uid', $room_info['room_owner_uid'])->find(); if ($uid == $receive_uid) { return ['code' => 201, 'msg' => '不能给自己打赏', 'data' => null]; } $map = []; $map[] = ['uid', '=', $receive_uid]; $user_list = db::name('user')->field('uid,is_tester,money,integral,nick_name,base64_nick_name,head_pic,europe_key,airship')->where($map)->find(); if (empty($user_list)) { return ['code' => 201, 'msg' => '打赏礼物对象不能为空', 'data' => null]; } $total_send_num = $num; //赠送礼物总数量 $total_send_amount = $gift_info['gift_price'] * $num; //赠送礼物总价值 $total_time = $gift_info['duration'] * $num; $config = get_system_config(); $now_time = time(); $user_info = db::name('user')->where('uid', $uid)->find(); if($user_info['is_teenager'] == 1){ return ['code' => 201, 'msg' => '青少年模式已开启', 'data' => null]; } //扣款时进行用户资金是否充足判断 if ($user_info['integral'] < $total_send_amount) { return ['code' => 201, 'msg' => '账户资金不足', 'data' => null]; } Db::startTrans(); try { if($user_info['is_tester'] == 2){ return ['code' => 201, 'msg' => '虚拟号无法参与', 'data' => null]; } //计算赠送礼物总资金 $reslut = model('admin/User')->change_user_money_by_uid($uid, -$total_send_amount, 2, 4, "打赏礼物", $uid, 0, $rid); if ($reslut['code'] == 201) { Db::rollback(); return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null]; } //赠送礼物增加财富值 贡献值 $reslut = model('User')->change_user_contribution_value($uid, $total_send_amount); if ($reslut['code'] == 201) { Db::rollback(); return ['code' => 201, 'msg' => '请重试1', 'data' => null]; } //赠送者增加房间魅力值 $reslut = model('User')->change_user_room_contribution_value($uid, $rid, $total_send_amount); if ($reslut['code'] == 201) { Db::rollback(); return ['code' => 201, 'msg' => '请重试4', 'data' => null]; } //日贡献 model('Statistics')->day_contribution($uid, $rid, $total_send_amount); //房间礼物墙 $reslut = model('GiftWall')->room_gift_wall($rid, $gid, $total_send_num, $total_send_amount); if($reslut['code'] == 201){ Db::rollback(); return ['code' => 201, 'msg' => '请重试5', 'data' => null]; } //增加房间热度值 db::name('room')->where('rid', $rid)->inc('hot_value', $total_send_amount)->inc('today_hot_value', $total_send_amount)->update(); // $room_guild_info = model('Guild')->user_guild_info($room_info['room_owner_uid']); // $guild_id = 0; //该用户是否有公会及公会收益 // $user_guild_info = model('Guild')->user_guild_info($receive_uid); $gift_total_price = $gift_info['gift_price'] * $num; // $room_owner_profit = $gift_total_price * $room_owner_info['room_owner_commission']; $room_owner_profit = 0; $receiver_profit = $gift_total_price * 0.56; $platform_profit = $gift_total_price - $room_owner_profit - $receiver_profit; $data = []; $data['uid'] = $uid; $data['rid'] = $rid; // $data['guild_id'] = $user_guild_info['guild_id']; // $data['room_guild_id'] = $room_guild_info['guild_id']; $data['room_uid'] = $room_info['room_owner_uid']; $data['receive_uid'] = $receive_uid; $data['gid'] = $gid; $data['gift_name'] = $gift_info['gift_name']; $data['gift_price'] = $gift_info['gift_price']; $data['gift_type'] = $gift_info['type']; $data['gift_num'] = $num; $data['gift_total_price'] = $gift_total_price; $data['platform_profit'] = $platform_profit; $data['receiver_profit'] = $receiver_profit; $data['room_owner_profit'] = $room_owner_profit; $data['gift_from_type'] = 1; $data['is_tester'] = $user_info['is_tester']; $data['add_time'] = $now_time; $data['update_time'] = $now_time; $sid = db::name('user_send_gift')->insertGetId($data); if (empty($sid)) { Db::rollback(); return ['code' => 201, 'msg' => "请重试3", 'data' => null]; } //发送数据开始 $message_data_temp = [ 'from_uid' => $uid, 'to_uid' => $receive_uid, 'gift_name' => $gift_info['gift_name'], 'gift_price' => $gift_info['gift_price'], 'gift_num' => $num, 'rid' => $rid, ]; $message_data[] = $message_data_temp; //增加厅主收益记录 if ($room_owner_profit > 0) { $change_value = $room_owner_profit / $config['exchange_rate']; $reslut = model('admin/User')->change_user_money_by_uid($room_info['room_owner_uid'], $change_value, 1, 7, "打赏厅主流水收益", $uid, $sid, $rid); if ($reslut['code'] == 201) { Db::rollback(); return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null]; } } //礼物接收者收益 if ($receiver_profit > 0) { $change_value = $receiver_profit / $config['exchange_rate']; $reslut = model('admin/User')->change_user_money_by_user_info($user_list, $change_value, 1, 6, "礼物收入", $uid, $sid, $rid); if ($reslut['code'] == 201) { Db::rollback(); return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null]; } } //收礼物增加魅力值 $reslut = model('User')->change_user_charm_value($receive_uid, $gift_total_price); if ($reslut['code'] == 201) { Db::rollback(); return ['code' => 201, 'msg' => '请重试4', 'data' => null]; } //接受者增加房间魅力值 $reslut = model('User')->change_user_room_charm_value($receive_uid, $rid, $gift_total_price, $uid); if ($reslut['code'] == 201) { Db::rollback(); return ['code' => 201, 'msg' => '请重试4', 'data' => null]; } //收礼物墙 $reslut = model('GiftWall')->user_receive_gift_wall($receive_uid, $gid, $num, $uid); if($reslut['code'] == 201){ Db::rollback(); return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null]; } //增加房间时长 $reslut = db::name('room_privacy')->where('prid', $prid)->inc('end_time', $total_time)->update(['update_time' => $now_time]); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '请重试4', 'data' => null]; } //续时记录 $insert = []; $insert['prid'] = $prid; $insert['uid'] = $uid; $insert['receive_uid'] = $receive_uid; $insert['gid'] = $gid; $insert['duration'] = $total_time; $insert['add_time'] = time(); $reslut = db::name('user_room_privacy_time_log')->insert($insert); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '请重试4', 'data' => null]; } //发送开始 if($message_data) { model('api/AsyncPushMessage')->store_message($message_data, 2); } Db::commit(); $room_privacy_time = db::name('room_privacy')->where('prid', $prid)->value('end_time'); $surplus_time = $room_privacy_time - time(); if($surplus_time < 0){ $surplus_time = 0; } $push_room_time = []; $push_room_time['surplus_time'] = $surplus_time; $push_room_time['send_user_info']['uid'] = $uid; $push_room_time['send_user_info']['head_pic'] = localpath_to_netpath($user_info['head_pic']); $push_room_time['send_user_info']['nick_name'] = mb_convert_encoding(base64_decode($user_info['base64_nick_name']), 'UTF-8', 'UTF-8'); $push_room_time['recived_user_info']['uid'] = $receive_uid; $push_room_time['recived_user_info']['head_pic'] = localpath_to_netpath($user_list['head_pic']); $push_room_time['recived_user_info']['nick_name'] = mb_convert_encoding(base64_decode($user_list['base64_nick_name']), 'UTF-8', 'UTF-8'); $push_room_time['gift_price'] = $gift_info['gift_price']; $push_room_time['gift_name'] = $gift_info['gift_name']; $push_room_time['play_image'] = $gift_info['play_image']; $push_room_time['gift_type'] = $gift_info['gift_type']; $push_room_time['base_image'] = $gift_info['base_image']; $push_room_time['num'] = $num; if(!empty($uid)){ $pust_data = []; $pust_data['code'] = 352; $pust_data['msg'] = '更新私密小屋时间'; $pust_data['data'] = $push_room_time; model('api/WebSocketPush')->send_to_one($uid, $pust_data); // dump($reslut); } if(!empty($receive_uid)){ $pust_data = []; $pust_data['code'] = 352; $pust_data['msg'] = '更新私密小屋时间'; $pust_data['data'] = $push_room_time; model('api/WebSocketPush')->send_to_one($receive_uid, $pust_data); // dump($reslut); } // model('Room')->push_room_micro_data($rid); //推送最新房间麦位信息 // $user_decorate_info = model('api/room')->get_room_user_vip($uid, 0); // $room_push_data = []; // $server_push_data = []; // $gift_list = []; // $gift_list[] = $gift_info; // foreach ($user_list as $k => $v) { // foreach ($gift_list as $m => $n) { // $ls_data = []; // $ls_data['send_user_info']['uid'] = $uid; // $ls_data['send_user_info']['head_pic'] = localpath_to_netpath($user_info['head_pic']); // $ls_data['send_user_info']['nick_name'] = mb_convert_encoding(base64_decode($user_info['base64_nick_name']), 'UTF-8', 'UTF-8'); // $ls_data['recived_user_info']['uid'] = $v['uid']; // $ls_data['recived_user_info']['head_pic'] = localpath_to_netpath($v['head_pic']); // $ls_data['recived_user_info']['nick_name'] = mb_convert_encoding(base64_decode($v['base64_nick_name']), 'UTF-8', 'UTF-8'); // $ls_data['lwtp_base_image'] = $user_decorate_info['data']['lwtp_base_image']; // $ls_data['gift_price'] = $n['gift_price']; // $ls_data['gift_name'] = $n['gift_name']; // $ls_data['play_image'] = $n['play_image']; // $ls_data['base_image'] = $n['base_image']; // $ls_data['gift_type'] = $n['gift_type']; // $ls_data['num'] = $num; // $ls_data['is_public_screen'] = $n['is_public_screen']; // $ls_data['is_public_server'] = $n['is_public_server']; // if ($ls_data['is_public_server'] == 1) { // $server_push_data[] = $ls_data; // } // $room_push_data[] = $ls_data; // } // } // if (!empty($server_push_data)) { // $pust_data = []; // $pust_data['code'] = 306; // $pust_data['msg'] = '打赏礼物'; // // $pust_data['data'] = $server_push_data; // $pust_data['data']['room_info']['rid'] = $room_info['rid']; // $pust_data['data']['room_info']['room_name'] = mb_convert_encoding(base64_decode($room_info['base64_room_name']), 'UTF-8', 'UTF-8'); // $pust_data['data']['gift_list'] = $server_push_data; // model('api/WebSocketPush')->send_to_all($pust_data); // } // if (!empty($room_push_data)) { // $pust_data = []; // $pust_data['code'] = 302; // $pust_data['msg'] = '打赏礼物'; // $pust_data['data'] = $room_push_data; // model('api/WebSocketPush')->send_to_group($room_info['rid'], $pust_data); // } return ['code' => 200, 'msg' => "打赏成功", 'data' => null]; } catch (\Exception $e) { dump($e); //回滚事务 Db::rollback(); return ['code' => 201, 'msg' => "请重试5", 'data' => null]; } } }