Quota.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334
  1. const API = require('../../lib/API')
  2. const { BaseStdResponse } = require('../../BaseStdResponse')
  3. const AccessControl = require('../../lib/AccessControl')
  4. const { checkQuota } = require('../../lib/AIChat/QuotaService')
  5. class GetAIChatQuota extends API {
  6. constructor() {
  7. super()
  8. this.setPath('/AIChat/Quota')
  9. this.setMethod('GET')
  10. }
  11. async onRequest(req, res) {
  12. const { uuid, session } = req.query
  13. if ([uuid, session].some(v => v === '' || v === null || v === undefined)) return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
  14. if (!await AccessControl.checkSession(uuid, session)) return res.status(401).json({ ...BaseStdResponse.ACCESS_DENIED })
  15. const [web, wechat] = await Promise.all([
  16. checkQuota({ uuid, channel: 'web' }),
  17. checkQuota({ uuid, channel: 'wechat' })
  18. ])
  19. return res.json({
  20. ...BaseStdResponse.OK,
  21. data: {
  22. web: { configured: web.configured, allowed: web.allowed, limit: web.limit, used: web.used, remaining: web.remaining, vip: web.vip },
  23. wechat: { configured: wechat.configured, allowed: wechat.allowed, limit: wechat.limit, used: wechat.used, remaining: wechat.remaining, vip: wechat.vip },
  24. vip: Boolean(web.vip || wechat.vip),
  25. vip_expire_time: Math.max(Number(web.vip_expire_time || 0), Number(wechat.vip_expire_time || 0)),
  26. message: web.message || wechat.message
  27. }
  28. })
  29. }
  30. }
  31. module.exports.GetAIChatQuota = GetAIChatQuota