const API = require('../../../lib/API') const { BaseStdResponse } = require('../../../BaseStdResponse') const AccessControl = require('../../../lib/AccessControl') const WeixinBindingService = require('../../../lib/AIChat/WeixinBindingService') class GetWeixinBinding extends API { constructor() { super() this.setPath('/AIChat/Weixin/Binding') 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 binding = await WeixinBindingService.refreshQrStatus(uuid) || await WeixinBindingService.getBindingByUser(uuid) return res.json({ ...BaseStdResponse.OK, data: binding }) } } class CreateWeixinBinding extends API { constructor() { super() this.setPath('/AIChat/Weixin/Binding') this.setMethod('POST') } async onRequest(req, res) { const { uuid, session } = req.body 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 result = await WeixinBindingService.createBinding(uuid) if (!result.ok) return res.json({ ...BaseStdResponse.ERR, msg: result.msg }) return res.json({ ...BaseStdResponse.OK, data: result.data }) } } class DeleteWeixinBinding extends API { constructor() { super() this.setPath('/AIChat/Weixin/Binding') this.setMethod('DELETE') } async onRequest(req, res) { const { uuid, session } = req.body 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 }) await WeixinBindingService.disableBinding(uuid) return res.json({ ...BaseStdResponse.OK }) } } module.exports = { GetWeixinBinding, CreateWeixinBinding, DeleteWeixinBinding }