UpdateStateAll.js 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. const API = require("../../lib/API.js")
  2. const db = require('../../plugin/DataBase/db.js')
  3. const { BaseStdResponse } = require("../../BaseStdResponse.js")
  4. const {
  5. probeSetZone,
  6. isProbeSetZoneOk,
  7. getProbeFailMessage
  8. } = require('../../plugin/Lepao/runforgeSetZoneProbe')
  9. const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms))
  10. class UpdateStateAll extends API {
  11. constructor() {
  12. super()
  13. this.noEncrypt()
  14. this.setPath('/Corn/UpdateStateAll')
  15. this.setMethod('GET')
  16. }
  17. async onRequest(req, res) {
  18. try {
  19. res.json({
  20. ...BaseStdResponse.OK
  21. })
  22. this.logger.info('开始更新乐跑账号登录状态')
  23. let sql = `SELECT id, uid, token, school_id, name, student_num, userAgent, create_user FROM lepao_account WHERE token IS NOT NULL AND create_user IS NOT NULL`
  24. let r = await db.query(sql)
  25. if (!r)
  26. return this.logger.error('更新乐跑账号登录状态失败!')
  27. for (const item of r) {
  28. const { name, student_num, token, uid, school_id, userAgent, create_user } = item
  29. this.logger.info(`${name}(${student_num})开始更新乐跑登录状态`)
  30. await sleep(2000)
  31. try {
  32. const data = await probeSetZone({
  33. uid,
  34. token,
  35. school_id,
  36. student_num,
  37. random_id: 1,
  38. userAgent,
  39. create_user
  40. })
  41. this.logger.info(`${student_num}更新乐跑登录状态返回结果: ${JSON.stringify(data)}`)
  42. if (!isProbeSetZoneOk(data)) {
  43. const msg = getProbeFailMessage(data)
  44. if (msg && msg.includes('重新登录')) {
  45. const failSql = 'UPDATE lepao_account SET state = 0 WHERE student_num = ?'
  46. await db.query(failSql, [student_num])
  47. this.logger.info(`${name}(${student_num})状态更新为待登录`)
  48. } else {
  49. this.logger.info(`${name}(${student_num})数据获取失败`)
  50. }
  51. continue
  52. }
  53. const okSql = 'UPDATE lepao_account SET state = 1 WHERE student_num = ?'
  54. await db.query(okSql, [student_num])
  55. this.logger.info(`${name}(${student_num})状态更新为正常`)
  56. } catch (err) {
  57. this.logger.error(`${name}(${student_num})更新乐跑登录状态失败:${err.message || err}`)
  58. }
  59. }
  60. this.logger.info('更新乐跑账号登录状态完成')
  61. } catch (error) {
  62. this.logger.error(error)
  63. }
  64. }
  65. }
  66. module.exports.UpdateStateAll = UpdateStateAll