const API = require('../../lib/API') const { BaseStdResponse } = require('../../BaseStdResponse') const AccessControl = require('../../lib/AccessControl') const { checkQuota } = require('../../lib/AIChat/QuotaService') class GetAIChatQuota extends API { constructor() { super() this.setPath('/AIChat/Quota') this.setMethod('GET') } async onRequest(req, res) { const { uuid, session } = req.query if ([uuid, session].some(v => v === '' || v === null || v === undefined)) return res.json({ ...BaseStdResponse.MISSING_PARAMETER }) if (!await AccessControl.checkSession(uuid, session)) return res.status(401).json({ ...BaseStdResponse.ACCESS_DENIED }) const [web, wechat] = await Promise.all([ checkQuota({ uuid, channel: 'web' }), checkQuota({ uuid, channel: 'wechat' }) ]) return res.json({ ...BaseStdResponse.OK, data: { web: { configured: web.configured, allowed: web.allowed, limit: web.limit, used: web.used, remaining: web.remaining, vip: web.vip }, wechat: { configured: wechat.configured, allowed: wechat.allowed, limit: wechat.limit, used: wechat.used, remaining: wechat.remaining, vip: wechat.vip }, vip: Boolean(web.vip || wechat.vip), vip_expire_time: Math.max(Number(web.vip_expire_time || 0), Number(wechat.vip_expire_time || 0)), message: web.message || wechat.message } }) } } module.exports.GetAIChatQuota = GetAIChatQuota