| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- const API = require('../../../lib/API')
- const { BaseStdResponse } = require('../../../BaseStdResponse')
- const { TaskScheduler } = require('../../../lib/QK/TaskScheduler')
- const scheduler = new TaskScheduler()
- function fail(res, err, fallback = '后台抢课管理操作失败') {
- return res.json({
- ...BaseStdResponse.ERR,
- msg: err?.message || fallback
- })
- }
- class ListClient extends API {
- constructor() {
- super()
- this.setPath('/Admin/QK/Client/List')
- this.setMethod('GET')
- }
- async onRequest(req, res) {
- try {
- const list = await scheduler.listClients()
- return res.json({ ...BaseStdResponse.OK, data: list })
- } catch (err) {
- this.logger.error(`获取抢课客户端列表失败:${err.stack || err}`)
- return fail(res, err, '获取抢课客户端列表失败')
- }
- }
- }
- class DeleteClient extends API {
- constructor() {
- super()
- this.setPath('/Admin/QK/Client/Delete')
- this.setMethod('DELETE')
- }
- async onRequest(req, res) {
- try {
- const { client_id } = req.body
- if (!client_id) {
- return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
- }
- await scheduler.deleteClient(client_id)
- this.logger.info(`[QK][API][DeleteClient] 已禁用客户端 clientId=${client_id}`)
- return res.json({ ...BaseStdResponse.OK })
- } catch (err) {
- this.logger.error(`禁用抢课客户端失败:${err.stack || err}`)
- return fail(res, err, '禁用抢课客户端失败')
- }
- }
- }
- class ListTask extends API {
- constructor() {
- super()
- this.setPath('/Admin/QK/Task/List')
- this.setMethod('GET')
- }
- async onRequest(req, res) {
- try {
- const result = await scheduler.listAdminTasks(req.query)
- return res.json({ ...BaseStdResponse.OK, data: result })
- } catch (err) {
- this.logger.error(`获取抢课任务列表失败:${err.stack || err}`)
- return fail(res, err, '获取抢课任务列表失败')
- }
- }
- }
- class GetTask extends API {
- constructor() {
- super()
- this.setPath('/Admin/QK/Task/Detail')
- this.setMethod('GET')
- }
- async onRequest(req, res) {
- try {
- const { id } = req.query
- if (!id) {
- return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
- }
- const task = await scheduler.getAdminTask(id)
- if (!task) {
- return res.json({ ...BaseStdResponse.ERR, msg: '任务不存在' })
- }
- return res.json({ ...BaseStdResponse.OK, data: task })
- } catch (err) {
- this.logger.error(`获取抢课任务详情失败:${err.stack || err}`)
- return fail(res, err, '获取抢课任务详情失败')
- }
- }
- }
- class UpdateTask extends API {
- constructor() {
- super()
- this.setPath('/Admin/QK/Task/Update')
- this.setMethod('POST')
- }
- async onRequest(req, res) {
- try {
- const { id } = req.body
- if (!id) {
- return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
- }
- await scheduler.adminUpdateTask(id, req.body)
- this.logger.info(`[QK][API][AdminUpdateTask] 管理员更新任务 taskId=${id}`)
- return res.json({ ...BaseStdResponse.OK })
- } catch (err) {
- this.logger.error(`管理员更新抢课任务失败:${err.stack || err}`)
- return fail(res, err, '更新抢课任务失败')
- }
- }
- }
- class CancelTask extends API {
- constructor() {
- super()
- this.setPath('/Admin/QK/Task/Cancel')
- this.setMethod('DELETE')
- }
- async onRequest(req, res) {
- try {
- const { id } = req.body
- if (!id) {
- return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
- }
- await scheduler.adminCancelTask(id)
- this.logger.info(`[QK][API][AdminCancelTask] 管理员取消任务 taskId=${id}`)
- return res.json({ ...BaseStdResponse.OK })
- } catch (err) {
- this.logger.error(`管理员取消抢课任务失败:${err.stack || err}`)
- return fail(res, err, '取消抢课任务失败')
- }
- }
- }
- class RetryTask extends API {
- constructor() {
- super()
- this.setPath('/Admin/QK/Task/Retry')
- this.setMethod('POST')
- }
- async onRequest(req, res) {
- try {
- const { id } = req.body
- if (!id) {
- return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
- }
- await scheduler.adminRetryTask(id)
- this.logger.info(`[QK][API][AdminRetryTask] 管理员重试任务 taskId=${id}`)
- return res.json({ ...BaseStdResponse.OK })
- } catch (err) {
- this.logger.error(`管理员重试抢课任务失败:${err.stack || err}`)
- return fail(res, err, '重试抢课任务失败')
- }
- }
- }
- class ListReport extends API {
- constructor() {
- super()
- this.setPath('/Admin/QK/Report/List')
- this.setMethod('GET')
- }
- async onRequest(req, res) {
- try {
- const result = await scheduler.listAdminReports(req.query)
- return res.json({ ...BaseStdResponse.OK, data: result })
- } catch (err) {
- this.logger.error(`获取抢课回报记录失败:${err.stack || err}`)
- return fail(res, err, '获取抢课回报记录失败')
- }
- }
- }
- module.exports = {
- ListClient,
- DeleteClient,
- ListTask,
- GetTask,
- UpdateTask,
- CancelTask,
- RetryTask,
- ListReport
- }
|