Browse Source

✨ feat: 增加乐跑账号状态更新接口

Pchen. 5 months ago
parent
commit
121bdac010
1 changed files with 72 additions and 0 deletions
  1. 72 0
      apis/Corn/UpdateState.js

+ 72 - 0
apis/Corn/UpdateState.js

@@ -0,0 +1,72 @@
+const API = require("../../lib/API.js")
+const db = require('../../plugin/DataBase/db.js')
+const axios = require('axios')
+const config = require('../../config.json')
+const { BaseStdResponse } = require("../../BaseStdResponse.js")
+
+const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms))
+
+class UpdateState extends API {
+    constructor() {
+        super()
+
+        this.noEncrypt()
+        this.setPath('/Corn/UpdateState')
+        this.setMethod('GET')
+
+        this.runpy = config.runpy
+    }
+
+    async onRequest(req, res) {
+        try {
+            res.json({
+                ...BaseStdResponse.OK
+            })
+
+            this.logger.info('开始更新乐跑账号登录状态')
+
+            const zoneUrl = this.runpy + '/set_zone'
+
+            let sql = `SELECT id, uid, token, school_id, name, student_num FROM lepao_account WHERE state = 0 AND auto_run = 1 AND token IS NOT NULL`
+
+            let r = await db.query(sql)
+            if (!r)
+                return this.logger.error('更新乐跑账号登录状态失败!')
+
+            for (const item of r) {
+                const { name, student_num, token, uid, school_id } = item
+                this.logger.info(`${name}(${student_num})开始更新乐跑登录状态`)
+
+                await sleep(2000)
+
+                try {
+                    const ossData = { uid, token, school_id, student_id: student_num, random_id: 1, run_end_time: 1 }
+                    const zoneRes = await axios.post(zoneUrl, ossData)
+                    const { data } = zoneRes
+
+                    this.logger.info(`${student_num}更新乐跑登录状态返回结果: ${JSON.stringify(data)}`)
+
+                    if (!data || data.status != 1 || !data.data) {
+                        this.logger.info(`${name}(${student_num})数据获取失败,不更新`)
+                        continue
+                    }
+
+                    const sql = 'UPDATE lepao_account SET state = 1 WHERE student_num  = ?'
+                    await db.query(sql, [student_num])
+
+                    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.UpdateState = UpdateState