Files
hx123666/scoring/api/roomUser.js
2025-12-16 09:32:55 +08:00

179 lines
4.6 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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;
}
}
}