交友中更换麦位
This commit is contained in:
@@ -407,7 +407,7 @@ class Friend extends Model
|
|||||||
public function getRanking($room_id,$friend_id) {
|
public function getRanking($room_id,$friend_id) {
|
||||||
// 获取有心动值的用户对且不重复
|
// 获取有心动值的用户对且不重复
|
||||||
$originalPairs = db::name('vs_user_friending_heart')
|
$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();
|
->order('heart_value DESC')->select();
|
||||||
// 初始化排名数组和已使用用户数组
|
// 初始化排名数组和已使用用户数组
|
||||||
$ranking = [];
|
$ranking = [];
|
||||||
@@ -517,6 +517,10 @@ class Friend extends Model
|
|||||||
public function friendPlayPit($room_id,$friend_id){
|
public function friendPlayPit($room_id,$friend_id){
|
||||||
//查询当前交友心动值表
|
//查询当前交友心动值表
|
||||||
$heart_data = $this->getRanking($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 = [];
|
||||||
$pit_number_array = [2=>5,1=>6,3=>4,5=>2,6=>1,4=>3]; //麦位对应关系
|
$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];
|
$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;
|
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($value['user1_id'] == -1){
|
||||||
if(!in_array($value['user2_id'],$pit_unique)){
|
if(!in_array($value['user2_id'],$pit_unique)){
|
||||||
$pit[$pit_number_array_reverse[$key]] = $value['user2_id'];
|
$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['user1_id'];
|
||||||
$pit_unique[] = $value['user2_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);
|
$now_pit_u = array_flip($friendPlayPit);
|
||||||
//按照键值排序数组
|
//按照键值排序数组
|
||||||
ksort($now_pit_u);
|
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