| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- const API = require("../../lib/API");
- const db = require('../../plugin/DataBase/db')
- const Redis = require('../../plugin/DataBase/Redis')
- const mq = require('../../plugin/mq')
- const {
- assertRunforgeTaskIngress,
- publishRunforgeTask
- } = require('../../plugin/mq/runforgeTaskMq')
- const { BaseStdResponse } = require("../../BaseStdResponse")
- // 出现异常情况时补充乐跑
- class StartLepao extends API {
- constructor() {
- super();
- this.noEncrypt()
- this.setPath('/Corn/StartLepao');
- this.setMethod('GET');
- }
- async onRequest(req, res) {
- try {
- let { time } = req.query
- if ([time].some(value => value === '' || value === null || value === undefined))
- return res.json({
- ...BaseStdResponse.MISSING_PARAMETER
- })
- res.json({
- ...BaseStdResponse.OK
- })
- this.logger.info('开始执行补充乐跑任务')
- const day = new Date().getDay()
- let sql = `
- SELECT name, create_user, student_num, token, uid, school_id, state
- FROM lepao_account
- WHERE auto_run = 1 AND state = 1
- AND JSON_CONTAINS(auto_day, CAST(? AS JSON))
- AND (auto_time = ? OR (auto_time = -1 AND today_auto_time = ?))
- `
- let r = await db.query(sql, [day, time, time])
- if (!r)
- return this.logger.error('获取补充乐跑账号失败!')
- for (const item of r) {
- const { name, create_user, student_num, token, uid, school_id, state } = item
- this.logger.info(`${name}(${student_num})开始补充乐跑`)
- const isSuccess = await Redis.get(`lepaoSuccess:${student_num}`)
- if (isSuccess) {
- this.logger.info(`${name}(${student_num})当天已乐跑成功,不执行补充乐跑`)
- continue
- }
- try {
- const channel = await mq.getChannel('lepao_corn')
- await assertRunforgeTaskIngress(channel, this.logger)
- const taskId = `lepao:repair:${Date.now()}:${student_num}`
- const payload = {
- id: taskId,
- type: 'lepao.startRun',
- data: {
- taskId,
- account: student_num
- },
- retry: 0
- }
- publishRunforgeTask(channel, payload)
- this.logger.info(`${name}(${student_num})已投递补充乐跑任务`)
- } catch (err) {
- this.logger.error(`${name}(${student_num})补充乐跑失败:${err.message || err}`)
- }
- }
- this.logger.info('补充乐跑任务执行完毕')
- } catch (error) {
- this.logger.error(error)
- }
- }
- }
- module.exports.StartLepao = StartLepao
|