179 lines
4.6 KiB
JavaScript
179 lines
4.6 KiB
JavaScript
|
|
// api/roomUser.js - 房间用户相关API
|
|||
|
|
import { GET, POST, PUT, DELETE } from '@/utils/request'
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 房间用户相关API
|
|||
|
|
*/
|
|||
|
|
export default {
|
|||
|
|
/**
|
|||
|
|
* 获取房间内所有用户及其详细对局记录(已修复)
|
|||
|
|
* @param {number} roomId 房间ID
|
|||
|
|
*/
|
|||
|
|
async getUserScoresWithDetails(roomId) {
|
|||
|
|
try {
|
|||
|
|
console.log('获取房间用户详情,房间ID:', roomId);
|
|||
|
|
|
|||
|
|
// 使用正确的API路径
|
|||
|
|
const response = await GET(`/system/score/room/user/user-details/${roomId}`);
|
|||
|
|
|
|||
|
|
console.log('房间用户详情API响应:', response);
|
|||
|
|
|
|||
|
|
// 处理不同的响应格式
|
|||
|
|
if (response.code === 200 || response.code === 0) {
|
|||
|
|
return response.data;
|
|||
|
|
} else if (response.success) {
|
|||
|
|
return response.data;
|
|||
|
|
} else {
|
|||
|
|
// 如果接口返回错误,尝试使用列表接口
|
|||
|
|
console.warn('主接口失败,尝试使用列表接口');
|
|||
|
|
return await this.getRoomUserList({ roomId });
|
|||
|
|
}
|
|||
|
|
} catch (error) {
|
|||
|
|
console.error('获取房间用户详情失败:', error);
|
|||
|
|
|
|||
|
|
// 降级方案1:使用列表接口
|
|||
|
|
try {
|
|||
|
|
console.log('尝试使用列表接口作为降级方案');
|
|||
|
|
const listResult = await this.getRoomUserList({ roomId });
|
|||
|
|
if (listResult) {
|
|||
|
|
return listResult;
|
|||
|
|
}
|
|||
|
|
} catch (listError) {
|
|||
|
|
console.error('列表接口也失败:', listError);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 降级方案2:返回空数据并提示
|
|||
|
|
throw error;
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 根据RoomUserId查询
|
|||
|
|
* @param {number} roomUserId 房间用户ID
|
|||
|
|
*/
|
|||
|
|
async getRoomUserById(roomUserId) {
|
|||
|
|
try {
|
|||
|
|
const response = await GET(`/system/score/room/user/RoomUserId/${roomUserId}`);
|
|||
|
|
return response.data || response;
|
|||
|
|
} catch (error) {
|
|||
|
|
console.error('获取房间用户信息失败:', error);
|
|||
|
|
throw error;
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 根据UserId查询
|
|||
|
|
* @param {number} userId 用户ID
|
|||
|
|
*/
|
|||
|
|
async getRoomUserByUserId(userId) {
|
|||
|
|
try {
|
|||
|
|
const response = await GET(`/system/score/room/user/userid/${userId}`);
|
|||
|
|
return response.data || response;
|
|||
|
|
} catch (error) {
|
|||
|
|
console.error('根据用户ID获取房间用户失败:', error);
|
|||
|
|
throw error;
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 查询房间用户列表
|
|||
|
|
* @param {Object} params 查询参数
|
|||
|
|
*/
|
|||
|
|
async getRoomUserList(params) {
|
|||
|
|
try {
|
|||
|
|
console.log('获取房间用户列表,参数:', params);
|
|||
|
|
const response = await GET('/system/score/room/user/list', params);
|
|||
|
|
console.log('房间用户列表响应:', response);
|
|||
|
|
return response.data || response;
|
|||
|
|
} catch (error) {
|
|||
|
|
console.error('获取房间用户列表失败:', error);
|
|||
|
|
throw error;
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 新增房间用户
|
|||
|
|
* @param {Object} roomUserData 房间用户数据
|
|||
|
|
*/
|
|||
|
|
async addRoomUser(roomUserData) {
|
|||
|
|
try {
|
|||
|
|
console.log('新增房间用户:', roomUserData);
|
|||
|
|
const response = await POST('/system/score/room/user', roomUserData);
|
|||
|
|
console.log('新增房间用户响应:', response);
|
|||
|
|
return response.data || response;
|
|||
|
|
} catch (error) {
|
|||
|
|
console.error('新增房间用户失败:', error);
|
|||
|
|
throw error;
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
async updateRoomUsersSafe(roomUsers) {
|
|||
|
|
try {
|
|||
|
|
console.log('安全更新房间用户得分:', roomUsers);
|
|||
|
|
|
|||
|
|
// 过滤和转换数据
|
|||
|
|
const safeUsers = roomUsers.map(user => {
|
|||
|
|
let userId = user.userId;
|
|||
|
|
|
|||
|
|
// 确保userId在int范围内
|
|||
|
|
if (userId > 2147483647 || userId < -2147483648) {
|
|||
|
|
console.warn('用户ID超出范围,进行转换:', userId);
|
|||
|
|
// 使用哈希值
|
|||
|
|
const strId = userId.toString();
|
|||
|
|
let hash = 0;
|
|||
|
|
for (let i = 0; i < strId.length; i++) {
|
|||
|
|
hash = ((hash << 5) - hash) + strId.charCodeAt(i);
|
|||
|
|
hash = hash & hash;
|
|||
|
|
}
|
|||
|
|
userId = Math.abs(hash) % 1000000;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return {
|
|||
|
|
...user,
|
|||
|
|
userId: userId
|
|||
|
|
};
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
const response = await PUT('/system/score/room/user', safeUsers);
|
|||
|
|
console.log('安全更新响应:', response);
|
|||
|
|
return response.data || response;
|
|||
|
|
} catch (error) {
|
|||
|
|
console.error('安全更新房间用户得分:', error);
|
|||
|
|
throw error;
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
/**
|
|||
|
|
* 批量更新用户得分
|
|||
|
|
* @param {Array} roomUsers 房间用户数据数组
|
|||
|
|
*/
|
|||
|
|
async updateRoomUsers(roomUsers) {
|
|||
|
|
|
|||
|
|
try {
|
|||
|
|
|
|||
|
|
|
|||
|
|
console.log('更新房间用户得分:', roomUsers);
|
|||
|
|
const response = await PUT('/system/score/room/user', roomUsers);
|
|||
|
|
console.log('更新房间用户得分响应:', response);
|
|||
|
|
return response.data || response;
|
|||
|
|
} catch (error) {
|
|||
|
|
console.error('更新房间用户得分:', error);
|
|||
|
|
throw error;
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 批量删除房间用户
|
|||
|
|
* @param {Array} roomUserIds 房间用户ID数组
|
|||
|
|
*/
|
|||
|
|
async deleteRoomUsers(roomUserIds) {
|
|||
|
|
try {
|
|||
|
|
const response = await DELETE(`/system/score/room/user/${roomUserIds}`);
|
|||
|
|
return response.data || response;
|
|||
|
|
} catch (error) {
|
|||
|
|
console.error('删除房间用户失败:', error);
|
|||
|
|
throw error;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|