交友相关 直播间送礼
This commit is contained in:
@@ -97,6 +97,8 @@ class Chat extends Model
|
|||||||
// FriendRoomDelay = 1040,
|
// FriendRoomDelay = 1040,
|
||||||
//交友结束推送是否创建小房间
|
//交友结束推送是否创建小房间
|
||||||
// FriendRoomEnd = 1041,
|
// FriendRoomEnd = 1041,
|
||||||
|
//交友房 私密小屋送礼增加结束时间
|
||||||
|
// FriendRoomGiftBlindBox = 1042,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ class Friend extends Model
|
|||||||
$text['text'] = '交友结束';
|
$text['text'] = '交友结束';
|
||||||
$text['step'] = 1;//1 等待邂逅 2 心动连线 3 牵手良缘
|
$text['step'] = 1;//1 等待邂逅 2 心动连线 3 牵手良缘
|
||||||
model('api/Chat')->sendMsg(1039,$room_id,$text);
|
model('api/Chat')->sendMsg(1039,$room_id,$text);
|
||||||
return ['code' => 1, 'msg' => '创建关系成功', 'data' => ['id' => $id,'end_time' =>get_system_config_value('friend_room_timea')]];
|
return ['code' => 1, 'msg' => '创建关系成功', 'data' => ['id' => $room_id['data'],'end_time' =>get_system_config_value('friend_room_timea')]];
|
||||||
} else {
|
} else {
|
||||||
return ['code' => 0, 'msg' => '创建关系失败!', 'data' => null];
|
return ['code' => 0, 'msg' => '创建关系失败!', 'data' => null];
|
||||||
}
|
}
|
||||||
@@ -225,14 +225,456 @@ class Friend extends Model
|
|||||||
* @param $room_id 房间id
|
* @param $room_id 房间id
|
||||||
* @param $pit_number 坑位
|
* @param $pit_number 坑位
|
||||||
*/
|
*/
|
||||||
public function room_give_gift($uid, $to_uid, $gift_id, $gift_num, $from_type, $type, $room_id, $pit_number,$heart_id)
|
public function room_give_gift($uid, $to_uid, $gift_id, $gift_num, $from_type, $type, $room_id, $pit_number, $heart_id)
|
||||||
{
|
{
|
||||||
$res = model('GiveGift')->give_gift($uid, $to_uid, $gift_id, $gift_num,$from_type,$type, $room_id,$pit_number);
|
$res = model('GiveGift')->give_gift($uid, $to_uid, $gift_id, $gift_num, $from_type, $type, $room_id, $pit_number);
|
||||||
if($res['code'] != 1){
|
if($res['code'] != 1){
|
||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
//送礼成功后续操作
|
//送礼成功后续操作
|
||||||
//
|
//查看当前时间是否在交友表的创建时间和结束时间段内 用来区分是否要拉取心动值高的用户上麦
|
||||||
|
$friend = db::name('vs_user_friending')->where(['room_id' => $room_id])->find();
|
||||||
|
if(time() >= $friend['create_time'] && time() <= $friend['end_time']){
|
||||||
|
$heart_exp = get_system_config_value('coin_charm_exp');//金币与魅力值转换比
|
||||||
|
$sumPrice = $res['data']['gift_total'] * $heart_exp;
|
||||||
|
$user_idd = $to_uid;
|
||||||
|
|
||||||
|
if($heart_id){//有这个值就是助力 不参加抢麦操作
|
||||||
|
db::name('user_friending_heart')->where(['id' => $heart_id])->setInc('heart_value', $sumPrice);
|
||||||
|
$this->pullHeartChange($room_id,$friend['id']);//聊天室心动值变化通知
|
||||||
|
//生成新排名 判断抱上麦 还是换麦
|
||||||
|
$this->pullUserPit($room_id,$friend['id']);
|
||||||
|
}else{
|
||||||
|
//判断送礼人或收礼人里面有主持和嘉宾
|
||||||
|
$host = $this->is_host($uid,$to_uid,$room_id);
|
||||||
|
|
||||||
|
//判断是否是主持
|
||||||
|
if($host['is_preside'] == 1){
|
||||||
|
if(!in_array($uid,$host['is_preside_user'])){//主持不是当前送礼人,那就是在收礼人中
|
||||||
|
//从数组中剔除主持人 && $is_preside_user!= UID
|
||||||
|
$user_idd = explode(",", $user_idd); // 将字符串转换为数组
|
||||||
|
$user_idd = array_diff($user_idd, $host['is_preside_user']); // 从数组中移除
|
||||||
|
if($user_idd){
|
||||||
|
//插入/更新心动表
|
||||||
|
$this->addUserHeart($to_uid,$friend['id'],$sumPrice,$room_id);
|
||||||
|
//送礼产生心动值并计算 判断拉取用户上麦还是换麦
|
||||||
|
//生成新排名 判断抱上麦 还是换麦
|
||||||
|
$this->pullUserPit($room_id,$friend['id']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
//插入/更新心动表
|
||||||
|
$this->addUserHeart($user_idd,$friend['id'],$sumPrice,$room_id);
|
||||||
|
//送礼产生心动值并计算 判断拉取用户上麦还是换麦
|
||||||
|
//生成新排名 判断抱上麦 还是换麦
|
||||||
|
$this->pullUserPit($room_id,$friend['id']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ['code' => 1, 'msg' => '送礼成功', 'data' => null];
|
||||||
|
}
|
||||||
|
|
||||||
|
//是否主持
|
||||||
|
public function is_host($uid,$to_uid,$room_id){
|
||||||
|
//获取当前主持人和嘉宾
|
||||||
|
$host[] = db::name('vs_room_pit')->where(['room_id' => $room_id,'pit_number' => 9])->value('user_id');
|
||||||
|
$host[] = db::name('vs_room_pit')->where(['room_id' => $room_id,'pit_number' => 10])->value('user_id');
|
||||||
|
|
||||||
|
$is_preside_user = null;
|
||||||
|
$is_preside = 0;
|
||||||
|
$user_ids = explode(",", $to_uid);
|
||||||
|
foreach ($user_ids as $value) {
|
||||||
|
//判断收礼人是否是主持
|
||||||
|
if (in_array($value, $host)) {
|
||||||
|
$is_preside = 1;
|
||||||
|
$is_preside_user[] = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//送礼人是主持或嘉宾
|
||||||
|
if (in_array($uid, $host)) {
|
||||||
|
$is_preside = 1;
|
||||||
|
$is_preside_user[] = $uid;
|
||||||
|
}
|
||||||
|
return [$is_preside,$is_preside_user];
|
||||||
|
}
|
||||||
|
|
||||||
|
function pullHeartChange($room_id,$friend_id){
|
||||||
|
//聊天室心动值变化通知
|
||||||
|
$newRanking = $this->getRanking($room_id,$friend_id);
|
||||||
|
//心动值和心动表id
|
||||||
|
if(!isset($newRanking[0]['heart_value']) || $newRanking[0]['heart_value'] <= 0){
|
||||||
|
$heart1 = -1;
|
||||||
|
$heartId1 = -1;
|
||||||
|
}else{
|
||||||
|
$heart1 = $newRanking[0]['heart_value'];
|
||||||
|
$heartId1 = $newRanking[0]['id'];
|
||||||
|
}
|
||||||
|
if(!isset($newRanking[1]['heart_value']) || $newRanking[1]['heart_value'] <= 0){
|
||||||
|
$heart2 = -1;
|
||||||
|
$heartId2 = -1;
|
||||||
|
}else{
|
||||||
|
$heart2 = $newRanking[1]['heart_value'];
|
||||||
|
$heartId2 = $newRanking[1]['id'];
|
||||||
|
}
|
||||||
|
if(!isset($newRanking[2]['heart_value']) || $newRanking[2]['heart_value'] <= 0){
|
||||||
|
$heart3 = -1;
|
||||||
|
$heartId3 = -1;
|
||||||
|
}else{
|
||||||
|
$heart3 = $newRanking[2]['heart_value'];
|
||||||
|
$heartId3 = $newRanking[2]['id'];
|
||||||
|
}
|
||||||
|
$heart[0] = [
|
||||||
|
"heartNum" => $heart1,
|
||||||
|
"heartId" => $heartId1,
|
||||||
|
];
|
||||||
|
$heart[1] = [
|
||||||
|
"heartNum" => $heart2,
|
||||||
|
"heartId" => $heartId2,
|
||||||
|
];
|
||||||
|
$heart[2] = [
|
||||||
|
"heartNum" => $heart3,
|
||||||
|
"heartId" => $heartId3,
|
||||||
|
];
|
||||||
|
|
||||||
|
// $push = new Push(0, $this->room_id); //实例化推送类
|
||||||
|
// $push->heartChatRoom($heart);
|
||||||
|
//推送给前端消息
|
||||||
|
$text['text'] = '心动值变化通知';
|
||||||
|
$text['list'] = $heart;
|
||||||
|
model('api/Chat')->sendMsg(5061,$room_id,$text);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取心跳值排行
|
||||||
|
public function getRanking($room_id,$friend_id) {
|
||||||
|
// 获取有心动值的用户对且不重复
|
||||||
|
$originalPairs = db::name('user_friending_heart')
|
||||||
|
->where(array('room_id'=>$room_id,'friend_id'=>$friend_id))
|
||||||
|
->order('heart_value DESC')->select();
|
||||||
|
// 初始化排名数组和已使用用户数组
|
||||||
|
$ranking = [];
|
||||||
|
$usedUsers = [];
|
||||||
|
// 优先选择高价值且无重复用户的对
|
||||||
|
$heart_ids = [];
|
||||||
|
foreach ($originalPairs as $rel) {
|
||||||
|
// 检查当前用户对是否包含已使用的用户ID
|
||||||
|
if (!in_array($rel['user1_id'], $usedUsers) &&
|
||||||
|
!in_array($rel['user2_id'], $usedUsers)) {
|
||||||
|
// 将符合条件的用户对添加到排名列表中
|
||||||
|
$ranking[] = [
|
||||||
|
// 'left' => $rel['user1_id'],
|
||||||
|
// 'right' => $rel['user2_id'],
|
||||||
|
'heart_value' => $rel['heart_value'],
|
||||||
|
'id' => $rel['id'],
|
||||||
|
'user1_id' => $rel['user1_id'],
|
||||||
|
'user2_id' => $rel['user2_id'],
|
||||||
|
];
|
||||||
|
// 更新已使用用户列表
|
||||||
|
$usedUsers = array_merge($usedUsers, [$rel['user1_id'], $rel['user2_id']]);
|
||||||
|
$heart_ids[] = $rel['id'];
|
||||||
|
// 如果排名列表达到3对用户,则停止循环
|
||||||
|
if (count($ranking) >= 3) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$ranking1 = [];
|
||||||
|
$ranking2 = [];
|
||||||
|
if(count($ranking)<3){
|
||||||
|
$make_up_num = 3 - count($ranking);
|
||||||
|
$ranking_make_up = db::name('user_friending_heart')
|
||||||
|
->where(['room_id'=>$room_id,'friend_id'=>$friend_id ,'id'=> ['notin',$heart_ids]])
|
||||||
|
->limit($make_up_num)
|
||||||
|
->order('heart_value DESC')->select();
|
||||||
|
foreach ($ranking_make_up as $rel1) {
|
||||||
|
$heart_ids[] = $rel1['id'];
|
||||||
|
if(in_array($rel1['user1_id'], $usedUsers) && in_array($rel1['user2_id'], $usedUsers)){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(in_array($rel1['user1_id'], $usedUsers)){
|
||||||
|
$ranking1[] = [
|
||||||
|
// 'left' => $rel1['user1_id'],
|
||||||
|
// 'right' => $rel1['user2_id'],
|
||||||
|
'heart_value' => 0,
|
||||||
|
'id' => $rel1['id'],
|
||||||
|
'user1_id' => -1,
|
||||||
|
'user2_id' => $rel1['user2_id'],
|
||||||
|
];
|
||||||
|
$usedUsers[] = $rel1['user2_id'];
|
||||||
|
}
|
||||||
|
if(in_array($rel1['user2_id'], $usedUsers)){
|
||||||
|
$ranking1[] = [
|
||||||
|
// 'left' => $rel1['user1_id'],
|
||||||
|
// 'right' => $rel1['user2_id'],
|
||||||
|
'heart_value' => 0,
|
||||||
|
'id' => $rel1['id'],
|
||||||
|
'user1_id' => $rel1['user1_id'],
|
||||||
|
'user2_id' => -1,
|
||||||
|
];
|
||||||
|
$usedUsers[] = $rel1['user1_id'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 返回最终的排名列表
|
||||||
|
$ranking_rut = array_merge($ranking, $ranking1);
|
||||||
|
if(count($ranking_rut)<6){
|
||||||
|
$make_up_num = 6 - count($ranking_rut);
|
||||||
|
$ranking_make_up = db::name('user_friending_heart')
|
||||||
|
->where(array('room_id'=>$room_id,'friend_id'=>$friend_id ,'id'=>array('notin',$heart_ids)))
|
||||||
|
->limit($make_up_num)
|
||||||
|
->order('heart_value DESC')->select();
|
||||||
|
foreach ($ranking_make_up as $rel1) {
|
||||||
|
$heart_ids[] = $rel1['id'];
|
||||||
|
if(in_array($rel1['user1_id'], $usedUsers) && in_array($rel1['user2_id'], $usedUsers)){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(in_array($rel1['user1_id'], $usedUsers)){
|
||||||
|
$ranking2[] = [
|
||||||
|
// 'left' => $rel1['user1_id'],
|
||||||
|
// 'right' => $rel1['user2_id'],
|
||||||
|
'heart_value' => 0,
|
||||||
|
'id' => $rel1['id'],
|
||||||
|
'user1_id' => -1,
|
||||||
|
'user2_id' => $rel1['user2_id'],
|
||||||
|
];
|
||||||
|
$usedUsers[] = $rel1['user2_id'];
|
||||||
|
}
|
||||||
|
if(in_array($rel1['user2_id'], $usedUsers)){
|
||||||
|
$ranking2[] = [
|
||||||
|
// 'left' => $rel1['user1_id'],
|
||||||
|
// 'right' => $rel1['user2_id'],
|
||||||
|
'heart_value' => 0,
|
||||||
|
'id' => $rel1['id'],
|
||||||
|
'user1_id' => $rel1['user1_id'],
|
||||||
|
'user2_id' => -1,
|
||||||
|
];
|
||||||
|
$usedUsers[] = $rel1['user1_id'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return array_merge($ranking_rut, $ranking2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//抱上麦 还是换麦
|
||||||
|
public function pullUserPit($room_id,$friend_id){
|
||||||
|
$friendPlayPit = $this->friendPlayPit($room_id,$friend_id); // 获取实际应该对应的麦位
|
||||||
|
$this->changePitToPosPair($room_id,$friendPlayPit);//换麦,上下麦
|
||||||
|
$this->pullHeartChange($room_id,$friend_id);//聊天室心动值变化通知
|
||||||
|
}
|
||||||
|
|
||||||
|
//交友处理麦位排名
|
||||||
|
public function friendPlayPit($room_id,$friend_id){
|
||||||
|
//查询当前交友心动值表
|
||||||
|
$heart_data = $this->getRanking($room_id,$friend_id);
|
||||||
|
$pit = [];
|
||||||
|
$pit_number_array = [2=>5,1=>6,3=>4,5=>2,6=>1,4=>3]; //麦位对应关系
|
||||||
|
$pit_number_array_reverse = [0=>2,1=>1,2=>3];
|
||||||
|
if($heart_data){
|
||||||
|
//排麦位
|
||||||
|
$pit_unique = [];
|
||||||
|
foreach($heart_data as $key => $value) {
|
||||||
|
//这条数据有一个用户已经排过了,就剔除这条数据
|
||||||
|
if(count($pit) >= 6){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if($value['user1_id'] == -1){
|
||||||
|
$user_sex = db::name('user')->where('id',$value['user2_id'])->value('sex');
|
||||||
|
if($user_sex == 2){
|
||||||
|
if(!in_array($value['user2_id'],$pit_unique)){
|
||||||
|
$pit[$pit_number_array_reverse[$key]] = $value['user2_id'];
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if(!in_array($value['user2_id'],$pit_unique)){
|
||||||
|
$pit[$pit_number_array[$pit_number_array_reverse[$key]]] = $value['user2_id'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if($value['user2_id'] == -1){
|
||||||
|
$user_sex = db::name('user')->where('id',$value['user1_id'])->value('sex');
|
||||||
|
if($user_sex == 2){
|
||||||
|
if(!in_array($value['user1_id'],$pit_unique)){
|
||||||
|
$pit[$pit_number_array_reverse[$key]] = $value['user1_id'];
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if(!in_array($value['user1_id'],$pit_unique)){
|
||||||
|
$pit[$pit_number_array[$pit_number_array_reverse[$key]]] = $value['user1_id'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if($value['user1_id']!=-1 && $value['user2_id']!=-1){
|
||||||
|
//判断用户1性别
|
||||||
|
$user1_sex = db::name('user')->where('id',$value['user1_id'])->value('sex');
|
||||||
|
if($user1_sex == 2){
|
||||||
|
if(!in_array($value['user1_id'],$pit_unique)){
|
||||||
|
$pit[$pit_number_array_reverse[$key]] = $value['user1_id'];
|
||||||
|
}
|
||||||
|
if(!in_array($value['user2_id'],$pit_unique)){
|
||||||
|
$pit[$pit_number_array[$pit_number_array_reverse[$key]]] = $value['user2_id'];
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if(!in_array($value['user1_id'],$pit_unique)){
|
||||||
|
$pit[$pit_number_array_reverse[$key]] = $value['user2_id'];
|
||||||
|
}
|
||||||
|
if(!in_array($value['user2_id'],$pit_unique)){
|
||||||
|
$pit[$pit_number_array[$pit_number_array_reverse[$key]]] = $value['user1_id'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//用户去重
|
||||||
|
$pit_unique[] = $value['user1_id'];
|
||||||
|
$pit_unique[] = $value['user2_id'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return array_flip($pit);
|
||||||
|
}
|
||||||
|
|
||||||
|
//换麦
|
||||||
|
public function changePitToPosPair($room_id,$friendPlayPit){
|
||||||
|
// $push = new Push(0, $this->room_id);
|
||||||
|
//获取实际麦位上的用
|
||||||
|
$newPitUser = array_keys($friendPlayPit);
|
||||||
|
//获取当前麦位上的用户
|
||||||
|
$oldPitUser = db::name('vs_room_pit')->where(['room_id' => $room_id,'pit_number'=>['<',7]])->column('user_id');
|
||||||
|
//获取交集
|
||||||
|
$intersection = array_intersect($newPitUser,$oldPitUser);
|
||||||
|
//取差集
|
||||||
|
$diff = array_diff($newPitUser,$oldPitUser);
|
||||||
|
$changeData = [];
|
||||||
|
if($diff){
|
||||||
|
//推下麦
|
||||||
|
foreach($diff as $key => $value){
|
||||||
|
if(in_array($value,$oldPitUser)){
|
||||||
|
//查询当前空麦位
|
||||||
|
$pit_null = model('api/RoomPit')->getRoomNullPitWithout($room_id, [7,8,9,10]);
|
||||||
|
if($pit_null){
|
||||||
|
// $this->room_pit_model->getOnPit($this->room_id, $value, $pit_null);
|
||||||
|
db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $pit_null])->update(['user_id' => $value]);
|
||||||
|
}else{
|
||||||
|
//下麦
|
||||||
|
$UserRoomPit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $value])->value('pit_number');
|
||||||
|
model('api/RoomPit')->DownPit($value, $room_id, $UserRoomPit);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(in_array($value,$newPitUser)){
|
||||||
|
//推上麦
|
||||||
|
//获取目标麦位是否有人
|
||||||
|
$getRoomPitUser= db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $friendPlayPit[$value]])->value('user_id');
|
||||||
|
if($getRoomPitUser){
|
||||||
|
//查询当前空麦位
|
||||||
|
$getRoomNullPitss = model('api/RoomPit')->getRoomNullPitWithout($room_id, [7,8,9,10,$friendPlayPit[$value]]);
|
||||||
|
if($getRoomNullPitss){
|
||||||
|
// $this->room_pit_model->getOnPit($this->room_id, $getRoomPitUser, $getRoomNullPitss);
|
||||||
|
db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $getRoomNullPitss])->update(['user_id' => $getRoomPitUser]);
|
||||||
|
}else{
|
||||||
|
model('api/RoomPit')->DownPit($getRoomPitUser, $room_id, $friendPlayPit[$value]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
model('api/RoomPit')->OnPit($value, $room_id, $friendPlayPit[$value]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if($intersection){//交换麦位
|
||||||
|
//查询麦上的用户
|
||||||
|
$newPitUserStr = implode(',',$newPitUser);
|
||||||
|
$getRoomPit = db::name('vs_room_pit')->where("room_id=".$room_id." AND user_id in (".$newPitUserStr.")")->column('pit_number');
|
||||||
|
db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => ['in', $getRoomPit]])->update(['user_id' => 0]);
|
||||||
|
$changePitUser = [];
|
||||||
|
foreach ($friendPlayPit as $key => $value){
|
||||||
|
if(empty($value)){
|
||||||
|
$value = model('api/RoomPit')->getRoomNullPitWithout($room_id, [7,8,9,10]);
|
||||||
|
}
|
||||||
|
//获取目标麦位是否有人
|
||||||
|
$isPitHaveUser= db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $value])->value('user_id');
|
||||||
|
if($isPitHaveUser && !in_array($isPitHaveUser,$newPitUser)){
|
||||||
|
$changePitUser[$key]['user_id'] = $isPitHaveUser;
|
||||||
|
$changePitUser[$key]['pit_number'] = $value;
|
||||||
|
}
|
||||||
|
db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $value])->update(['user_id' => $key]);
|
||||||
|
}
|
||||||
|
//处理原麦位上的用户
|
||||||
|
foreach ($changePitUser as $key_change => $value_change){
|
||||||
|
//判断是否在左边 1,,2,,3 麦位上
|
||||||
|
if(in_array($value_change['pit_number'],[1,2,3])){
|
||||||
|
$null_pit = model('api/RoomPit')->getRoomNullPitWithout($room_id, [4,5,6,7,8,9,10]);
|
||||||
|
if(empty($null_pit)){
|
||||||
|
$null_pit = model('api/RoomPit')->getRoomNullPitWithout($room_id, [7,8,9,10]);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
$null_pit = model('api/RoomPit')->getRoomNullPitWithout($room_id, [1,2,3,7,8,9,10]);
|
||||||
|
if(empty($null_pit)){
|
||||||
|
$null_pit = model('api/RoomPit')->getRoomNullPitWithout($room_id, [7,8,9,10]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $null_pit])->update(['user_id' => $value_change['user_id']]);
|
||||||
|
}
|
||||||
|
$getRoomNullPit = $this->room_pit_model->where(['room_id'=>$room_id,'pit_number'=>['notin',[7,9]]])->select();
|
||||||
|
$getRoomNullPit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => ['<',7]])->select();
|
||||||
|
$data_users = [];
|
||||||
|
foreach($getRoomNullPit as $key_data => $value_data){
|
||||||
|
$data_users[$key_data]['user_id'] = $value_data['user_id'];
|
||||||
|
$data_users[$key_data]['nickname'] = db::name('user')->where('id',$value_data['user_id'])->value('nickname');
|
||||||
|
$data_users[$key_data]['avatar'] = db::name('user')->where('id',$value_data['user_id'])->value('avatar');
|
||||||
|
$data_users[$key_data]['sex'] = db::name('user')->where('id',$value_data['user_id'])->value('sex');
|
||||||
|
//获取用户在此房间今天的魅力值
|
||||||
|
$charm =[];
|
||||||
|
if($value_data['user_id']){
|
||||||
|
$charm = db::name('vs_room_user_charm')->where(['user_id' => $value_data['user_id'],'room_id' => $room_id])->value('charm');
|
||||||
|
}
|
||||||
|
$data_users[$key_data]['dress_picture'] = model('Decorate')->user_decorate_detail($value_data['user_id'],1);
|
||||||
|
$data_users[$key_data]['xin_dong'] = $charm??0;
|
||||||
|
$data_users[$key_data]['pit_number'] = $value_data['pit_number'];
|
||||||
|
}
|
||||||
|
//推送给前端消息
|
||||||
|
$text['text'] = '房间换麦位';
|
||||||
|
$text['list'] = $data_users;
|
||||||
|
model('api/Chat')->sendMsg(5062,$room_id,$text);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//交友厅游戏开始后送礼后一系列操作
|
||||||
|
//插入/更新心动表
|
||||||
|
public function addUserHeart($user_id,$friend_id,$value,$room_id){
|
||||||
|
//给多个用户送礼
|
||||||
|
$user_ids = explode(",", $user_id);
|
||||||
|
$heart_value = $value;//心动值
|
||||||
|
for ($i = 0; $i < count($user_ids); $i++) {
|
||||||
|
// 处理用户ID顺序
|
||||||
|
$user1 = min(UID, $user_ids[$i]);
|
||||||
|
$user2 = max(UID, $user_ids[$i]);
|
||||||
|
// 更新心动关系表
|
||||||
|
$relation = db::name('user_friending_heart')->where([
|
||||||
|
'user1_id' => $user1,
|
||||||
|
'user2_id' => $user2,
|
||||||
|
'friend_id' => $friend_id
|
||||||
|
])->find();
|
||||||
|
|
||||||
|
if ($relation) {
|
||||||
|
db::name('user_friending_heart')->where([
|
||||||
|
'room_id' => $room_id,
|
||||||
|
'user1_id' => $user1,
|
||||||
|
'user2_id' => $user2,
|
||||||
|
'friend_id' => $friend_id
|
||||||
|
])->setInc('heart_value', $heart_value);
|
||||||
|
} else {
|
||||||
|
$relation['id'] = db::name('user_friending_heart')->insert([
|
||||||
|
'room_id' => $room_id,
|
||||||
|
'user1_id' => $user1,
|
||||||
|
'user2_id' => $user2,
|
||||||
|
'friend_id' => $friend_id,
|
||||||
|
'heart_value' => $heart_value
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//修改用户行动连线状态
|
||||||
|
$relation = db::name('user_friending_heart')->where("(user1_id=".UID." OR user2_id=".UID.") AND friend_id=$friend_id AND room_id=$room_id AND status!=3")->order('heart_value desc')->find();
|
||||||
|
if($relation){
|
||||||
|
db::name('user_friending_heart')->where("(user1_id=".UID." OR user2_id=".UID.") AND friend_id=$friend_id AND room_id=$room_id AND status!=3")->update(['status'=>2]);
|
||||||
|
db::name('user_friending_heart')->where(['id'=>$relation['id']])->update(['status'=>1]);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -431,6 +431,14 @@ class GiveGift extends Model
|
|||||||
];
|
];
|
||||||
//聊天室推送系统消息
|
//聊天室推送系统消息
|
||||||
model('Chat')->sendMsg(1028,$from_id,$text1);
|
model('Chat')->sendMsg(1028,$from_id,$text1);
|
||||||
|
|
||||||
|
//电影房推送结束时间点
|
||||||
|
$text2 = [
|
||||||
|
'room_id' => $from_id,
|
||||||
|
'end_time' => time() + 60 * 60 * 24 * 7,
|
||||||
|
'text' => '房间结束时间点'
|
||||||
|
];
|
||||||
|
model('Chat')->sendMsg(1042,$from_id,$text2);
|
||||||
}else{
|
}else{
|
||||||
if($gift_inf['is_public_screen'] == 1){
|
if($gift_inf['is_public_screen'] == 1){
|
||||||
//推送礼物横幅
|
//推送礼物横幅
|
||||||
@@ -508,7 +516,7 @@ class GiveGift extends Model
|
|||||||
Db::name('vs_room')->where(['id'=>$from_id,'apply_status'=>2])->setInc('today_hot_value',$gift_totalaa);
|
Db::name('vs_room')->where(['id'=>$from_id,'apply_status'=>2])->setInc('today_hot_value',$gift_totalaa);
|
||||||
|
|
||||||
Db::commit();
|
Db::commit();
|
||||||
return ['code' => 1, 'msg' => '送礼成功', 'data' => null];
|
return ['code' => 1, 'msg' => '送礼成功', 'data' => ['gift_total' => $gift_total]];
|
||||||
}
|
}
|
||||||
|
|
||||||
//送礼特效
|
//送礼特效
|
||||||
|
|||||||
Reference in New Issue
Block a user