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