| 12345678910111213141516171819202122232425262728293031323334 |
- 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
|