交友中更换麦位
This commit is contained in:
@@ -414,7 +414,7 @@ class Friend extends Model
|
||||
$usedUsers = [];
|
||||
// 优先选择高价值且无重复用户的对
|
||||
$heart_ids = [];
|
||||
foreach ($originalPairs as $rel) {
|
||||
foreach ($originalPairs as &$rel) {
|
||||
// 检查当前用户对是否包含已使用的用户ID
|
||||
if (!in_array($rel['user1_id'], $usedUsers) &&
|
||||
!in_array($rel['user2_id'], $usedUsers)) {
|
||||
@@ -441,10 +441,12 @@ class Friend extends Model
|
||||
->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;
|
||||
}
|
||||
|
||||
// 如果只有user1已使用,将user2加入排名
|
||||
if(in_array($rel1['user1_id'], $usedUsers)){
|
||||
$ranking1[] = [
|
||||
'heart_value' => 0,
|
||||
@@ -453,8 +455,10 @@ class Friend extends Model
|
||||
'user2_id' => $rel1['user2_id'],
|
||||
];
|
||||
$usedUsers[] = $rel1['user2_id'];
|
||||
$heart_ids[] = $rel1['id'];
|
||||
}
|
||||
if(in_array($rel1['user2_id'], $usedUsers)){
|
||||
// 如果只有user2已使用,将user1加入排名
|
||||
elseif(in_array($rel1['user2_id'], $usedUsers)){
|
||||
$ranking1[] = [
|
||||
'heart_value' => 0,
|
||||
'id' => $rel1['id'],
|
||||
@@ -462,8 +466,10 @@ class Friend extends Model
|
||||
'user2_id' => -1,
|
||||
];
|
||||
$usedUsers[] = $rel1['user1_id'];
|
||||
$heart_ids[] = $rel1['id'];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
// 返回最终的排名列表
|
||||
$ranking_rut = array_merge($ranking, $ranking1);
|
||||
@@ -476,7 +482,6 @@ class Friend extends Model
|
||||
->order('heart_value DESC')->select();
|
||||
if($ranking_make_up){
|
||||
foreach ($ranking_make_up as $rel1) {
|
||||
$heart_ids[] = $rel1['id'];
|
||||
if(in_array($rel1['user1_id'], $usedUsers) && in_array($rel1['user2_id'], $usedUsers)){
|
||||
continue;
|
||||
}
|
||||
@@ -529,39 +534,45 @@ class Friend extends Model
|
||||
$pit_unique = [];
|
||||
$key = 0;
|
||||
foreach($heart_data as $value) {
|
||||
//这条数据有一个用户已经排过了,就剔除这条数据
|
||||
if(count($pit) >= 6){
|
||||
break;
|
||||
}
|
||||
|
||||
// 处理两个用户都存在的情况
|
||||
if($value['user1_id'] != -1 && $value['user2_id'] != -1){
|
||||
if(!in_array($value['user1_id'],$pit_unique)){
|
||||
// 检查目标麦位是否已被占用
|
||||
if(!isset($pit[$pit_number_array_reverse[$key]])) {
|
||||
$pit[$pit_number_array_reverse[$key]] = $value['user1_id'];
|
||||
$pit[$pit_number_array[$pit_number_array_reverse[$key]]] = $value['user2_id'];
|
||||
$pit_unique = array_merge($pit_unique, [$value['user1_id'], $value['user2_id']]);
|
||||
}
|
||||
}
|
||||
|
||||
if($value['user1_id'] == -1){
|
||||
if(!in_array($value['user2_id'],$pit_unique)){
|
||||
}
|
||||
// 处理只有user2存在的情况
|
||||
elseif($value['user1_id'] == -1 && !in_array($value['user2_id'],$pit_unique)){
|
||||
// 检查该键是否已被使用
|
||||
if(!isset($pit[$pit_number_array_reverse[$key]])) {
|
||||
$pit[$pit_number_array_reverse[$key]] = $value['user2_id'];
|
||||
}
|
||||
}
|
||||
|
||||
if($value['user2_id'] == -1){
|
||||
if(!in_array($value['user1_id'],$pit_unique)){
|
||||
$pit[$pit_number_array_reverse[$key]] = $value['user1_id'];
|
||||
}
|
||||
}
|
||||
|
||||
//用户去重
|
||||
$pit_unique[] = $value['user1_id'];
|
||||
$pit_unique[] = $value['user2_id'];
|
||||
}
|
||||
}
|
||||
// 处理只有user1存在的情况
|
||||
elseif($value['user2_id'] == -1 && !in_array($value['user1_id'],$pit_unique)){
|
||||
// 检查该键是否已被使用
|
||||
if(!isset($pit[$pit_number_array_reverse[$key]])) {
|
||||
$pit[$pit_number_array_reverse[$key]] = $value['user1_id'];
|
||||
$pit_unique[] = $value['user1_id'];
|
||||
}
|
||||
}
|
||||
$key++;
|
||||
}
|
||||
}
|
||||
return array_flip($pit);
|
||||
return $pit;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//换麦
|
||||
public function changePitToPosPairs($room_id,$friendPlayPit){
|
||||
$now_pit_u = array_flip($friendPlayPit);
|
||||
@@ -682,13 +693,17 @@ class Friend extends Model
|
||||
|
||||
//换麦
|
||||
public function changePitToPosPair($room_id,$friendPlayPit){
|
||||
$new_pit_u = array_flip($friendPlayPit);
|
||||
$new_pit_u = $friendPlayPit;
|
||||
//按照键值排序数组
|
||||
ksort($new_pit_u);
|
||||
//查询现在麦位上有用户的数据 并且重组结果,键为麦位,值为用户,值必须存在,没值则不展示
|
||||
$pit_user = db::name('vs_room_pit')->where(['room_id' => $room_id,'pit_number'=>['<',7],'user_id' => ['>', 0]])
|
||||
//查询原有麦位上有用户的数据 并且重组结果,键为麦位,值为用户,值必须存在,没值则不展示
|
||||
$pit_users = 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');
|
||||
->field('pit_number,user_id')->select();
|
||||
$pit_user = [];
|
||||
foreach ($pit_users as &$value_pit_user){
|
||||
$pit_user[$value_pit_user['pit_number']] = $value_pit_user['user_id'];
|
||||
}
|
||||
//比较两个数组,无论是键的差异还是值的差异,都输出字符串”有差异“否则输出”没有差异“
|
||||
$result = array_diff_assoc($pit_user, $new_pit_u);//第一个数组中存在但其他数组中不存在的键/值对
|
||||
$result2 = array_diff_assoc($new_pit_u, $pit_user);
|
||||
|
||||
Reference in New Issue
Block a user