const API = require('../../../../lib/API.js') const { BaseStdResponse } = require('../../../../BaseStdResponse.js') const AccessControl = require('../../../../lib/AccessControl.js') const QgProxyManager = require('../../../../lib/Lepao/QgProxyManager') /** * 青果通道提取 [查询资源地区](https://www.qg.net/doc/1850.html)(GET /resources) */ class AdminLepaoProxyResources extends API { constructor() { super() this.setPath('/Admin/Lepao/Proxy/Resources') this.setMethod('GET') } async onRequest(req, res) { const { uuid, session } = req.query if ([uuid, session].some(v => v === '' || v == null)) return res.json({ ...BaseStdResponse.MISSING_PARAMETER }) if (!await AccessControl.checkSession(uuid, session)) return res.status(401).json({ ...BaseStdResponse.ACCESS_DENIED }) const permission = await AccessControl.getPermission(uuid) if (!permission.includes('admin') && !permission.includes('service')) return res.json({ ...BaseStdResponse.PERMISSION_DENIED }) if (!QgProxyManager.hasExtractCredentials()) { return res.json({ ...BaseStdResponse.ERR, msg: '未在后端 config 配置 qgChannelProxy.extractKey,无法查询资源' }) } try { const list = await QgProxyManager.fetchResourceAreas() return res.json({ ...BaseStdResponse.OK, data: list || [] }) } catch (e) { this.logger?.error?.(`AdminLepaoProxyResources: ${e.stack || e}`) return res.json({ ...BaseStdResponse.ERR, msg: e.message || '查询青果资源失败' }) } } } module.exports.AdminLepaoProxyResources = AdminLepaoProxyResources