Files
JGE-RS-SL-API/characters/get_characters.js
2025-12-25 18:20:37 +08:00

82 lines
3.2 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.
// @ts-ignore 获取角色列表接口
/**
* 获取角色列表接口
* 通过PSK验证后从数据库characters表获取角色数据
* 支持通过uid参数过滤特定账号的角色数据
*/
export async function execute(http_message) {
// 验证请求头中的PSK
let psk_valid = HttpReQUtils.check_psk(http_message);
if (!psk_valid) {
// 直接返回错误响应
return { code: 401, success: false, message: "未授权", data: null };
}
try {
// 获取请求参数支持从根对象或body字段获取uid参数
let uid = http_message["uid"] || (http_message["body"] ? http_message["body"]["uid"] : null);
// 构建SQL查询语句
let sql = "SELECT * FROM characters";
if (uid) {
sql += ` WHERE uid = ${uid}`;
}
// 获取角色数据
// @ts-ignore
let characters = await _database_.execute_sql_by_name("accounts", sql);
// 格式化数据
let charactersList = [];
if (characters && characters !== "[]") {
try {
// 解析查询结果JSON数组
let charsList = JSON.parse(characters);
for (let char of charsList) {
// 解析角色数据
let charData = char;
// 解析json_data字段如果有
let extraData = {};
if (charData.json_data && charData.json_data !== "") {
try {
extraData = JSON.parse(charData.json_data);
} catch (e) {
console.error("解析角色json_data失败:", e);
}
}
// 添加到角色列表
charactersList.push({
id: charData.id,
uid: charData.uid,
name: charData.name,
level: charData.level,
job: charData.job,
sex: charData.sex,
created_at: extraData.created_at || "未知",
last_login: extraData.last_login || "未知",
status: extraData.status !== undefined ? (extraData.status ? 1 : 0) : 1, // 1为正常0为禁用
extra_data: extraData
});
}
} catch (e) {
console.error("解析角色列表失败:", e);
return { code: 500, success: false, message: "解析角色数据失败", data: null };
}
}
// 返回成功响应
return { code: 200, success: true, message: "ok", data: {
characters_list: charactersList,
total: charactersList.length
} };
} catch (error) {
console.error("获取角色列表失败:", error);
// 返回错误响应
return { code: 500, success: false, message: "获取角色列表失败: " + (error.message || "未知错误"), data: null };
}
}