交友中更换麦位
This commit is contained in:
@@ -407,7 +407,7 @@ class Friend extends Model
|
||||
public function getRanking($room_id,$friend_id) {
|
||||
// 获取有心动值的用户对且不重复
|
||||
$originalPairs = db::name('vs_user_friending_heart')
|
||||
->where(array('room_id'=>$room_id,'friend_id'=>$friend_id))
|
||||
->where(['room_id'=>$room_id,'friend_id'=>$friend_id])
|
||||
->order('heart_value DESC')->select();
|
||||
// 初始化排名数组和已使用用户数组
|
||||
$ranking = [];
|
||||
@@ -517,6 +517,10 @@ class Friend extends Model
|
||||
public function friendPlayPit($room_id,$friend_id){
|
||||
//查询当前交友心动值表
|
||||
$heart_data = $this->getRanking($room_id,$friend_id);
|
||||
//数组根据里面的heart_value 由大到小进行排序
|
||||
usort($heart_data, function($a, $b) {
|
||||
return $b['heart_value'] - $a['heart_value'];
|
||||
});
|
||||
$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,3=>4,4=>5,5=>6];
|
||||
@@ -530,6 +534,13 @@ class Friend extends Model
|
||||
break;
|
||||
}
|
||||
|
||||
if($value['user1_id'] != -1 && $value['user2_id'] != -1){
|
||||
if(!in_array($value['user1_id'],$pit_unique)){
|
||||
$pit[$pit_number_array_reverse[$key]] = $value['user1_id'];
|
||||
$pit[$pit_number_array[$pit_number_array_reverse[$key]]] = $value['user2_id'];
|
||||
}
|
||||
}
|
||||
|
||||
if($value['user1_id'] == -1){
|
||||
if(!in_array($value['user2_id'],$pit_unique)){
|
||||
$pit[$pit_number_array_reverse[$key]] = $value['user2_id'];
|
||||
@@ -542,15 +553,6 @@ class Friend extends Model
|
||||
}
|
||||
}
|
||||
|
||||
if($value['user1_id'] != -1 && $value['user2_id'] != -1){
|
||||
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'];
|
||||
}
|
||||
}
|
||||
|
||||
//用户去重
|
||||
$pit_unique[] = $value['user1_id'];
|
||||
$pit_unique[] = $value['user2_id'];
|
||||
@@ -561,7 +563,7 @@ class Friend extends Model
|
||||
}
|
||||
|
||||
//换麦
|
||||
public function changePitToPosPair($room_id,$friendPlayPit){
|
||||
public function changePitToPosPairs($room_id,$friendPlayPit){
|
||||
$now_pit_u = array_flip($friendPlayPit);
|
||||
//按照键值排序数组
|
||||
ksort($now_pit_u);
|
||||
@@ -678,6 +680,53 @@ class Friend extends Model
|
||||
}
|
||||
}
|
||||
|
||||
//换麦
|
||||
public function changePitToPosPair($room_id,$friendPlayPit){
|
||||
$new_pit_u = array_flip($friendPlayPit);
|
||||
//按照键值排序数组
|
||||
ksort($new_pit_u);
|
||||
//查询现在麦位上有用户的数据 并且重组结果,键为麦位,值为用户,值必须存在,没值则不展示
|
||||
$pit_user = db::name('vs_room_pit')->where(['room_id' => $room_id,'pit_number'=>['<',7],'user_id' => ['>', 0]])
|
||||
->order('pit_number ASC')
|
||||
->column('pit_number,user_id');
|
||||
//比较两个数组,无论是键的差异还是值的差异,都输出字符串”有差异“否则输出”没有差异“
|
||||
$result = array_diff_assoc($pit_user, $new_pit_u);//第一个数组中存在但其他数组中不存在的键/值对
|
||||
$result2 = array_diff_assoc($new_pit_u, $pit_user);
|
||||
if(!empty($result) || !empty($result2)){//换麦
|
||||
if($result){//原有麦位上的用户,且不在新麦位上的用户
|
||||
foreach ($result as $key_result => $value_result){
|
||||
db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $key_result])->update(['user_id' => 0]);
|
||||
}
|
||||
}
|
||||
//新麦位上的用户
|
||||
foreach ($new_pit_u as $key_result2 => $value_result2){
|
||||
db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $key_result2])->update(['user_id' => $value_result2]);
|
||||
}
|
||||
|
||||
$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'] = model('Decorate')->user_decorate_detail($value_data['user_id'],1);
|
||||
$data_users[$key_data]['charm'] = $charm??0;
|
||||
$data_users[$key_data]['pit_number'] = $value_data['pit_number'];
|
||||
}
|
||||
//推送给前端消息
|
||||
$text['text'] = '房间换麦位';
|
||||
$text['list'] = $data_users;
|
||||
model('api/Chat')->sendMsg(1053,$room_id,$text);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
//交友厅游戏开始后送礼后一系列操作
|
||||
//插入/更新心动表
|
||||
|
||||
Reference in New Issue
Block a user