UpdateAccount.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. const API = require("../../lib/API.js")
  2. const db = require("../../plugin/DataBase/db.js")
  3. const axios = require('axios')
  4. const EmailTemplate = require('../../plugin/Email/emailTemplate')
  5. const config = require('../../config.json')
  6. const lepao = require("../../lib/Lepao/Lepao.js").lepao
  7. const { BaseStdResponse } = require("../../BaseStdResponse.js")
  8. // 客户端上传数据接口
  9. class UpdateAccount extends API {
  10. constructor() {
  11. super();
  12. this.setPath('/Lepao/UpdateAccount')
  13. this.setMethod('POST')
  14. }
  15. async onRequest(req, res) {
  16. let { reqData, resData } = req.body
  17. if ([reqData, resData].some(value => value === '' || value === null || value === undefined))
  18. return res.json({
  19. ...BaseStdResponse.MISSING_PARAMETER,
  20. endpoint: 1513126
  21. })
  22. try {
  23. const endpoint = config.runpy + '/decrypted_data'
  24. const ReqData = await axios.post(endpoint, { data: reqData })
  25. let userData = ReqData.data
  26. if (userData?.code !== 200 || !userData.data)
  27. return res.json({
  28. ...BaseStdResponse.ERR,
  29. msg: '无法解析用户数据,请重试'
  30. })
  31. const { token } = userData.data
  32. if ([token].some(value => value === '' || value === null || value === undefined))
  33. return res.json({
  34. ...BaseStdResponse.ERR,
  35. msg: '未提取出用户登录信息,请重试'
  36. })
  37. const ResData = await axios.post(endpoint, { data: resData })
  38. let userData2 = ResData.data
  39. if (userData2?.code !== 200 || !userData2.data)
  40. return res.json({
  41. ...BaseStdResponse.ERR,
  42. msg: '无法解析用户数据,请重试'
  43. })
  44. const { uid, user_avatar, student_num, school_id, grade_id, class_id, sex, name, academy_name } = userData2.data
  45. if ([uid, user_avatar, student_num, school_id, grade_id, class_id, sex, name, academy_name].some(value => value === '' || value === null || value === undefined))
  46. return res.json({
  47. ...BaseStdResponse.ERR,
  48. msg: '未提取出用户登录信息,请重试'
  49. })
  50. let findSql = 'SELECT email, create_user, auto_run FROM lepao_account WHERE student_num = ?'
  51. let findRows = await db.query(findSql, [student_num])
  52. if (!findRows)
  53. return res.json({
  54. ...BaseStdResponse.ERR,
  55. msg: '无法解析用户数据,请重试'
  56. })
  57. if (findRows.length === 0)
  58. return res.json({
  59. ...BaseStdResponse.ERR,
  60. msg: '该乐跑账号尚未在RunForge系统中添加,请先前往 https://lepao.ctbu.top/ 添加你的账户'
  61. })
  62. const time = new Date().getTime()
  63. let updateSql = 'UPDATE lepao_account SET uid = ?, token = ?, school_id = ?, name = ?, grade_id = ?, class_id = ?, sex = ?, academy_name = ?, update_time = ?, state = 1 WHERE student_num = ?'
  64. let updateRows = await db.query(updateSql, [uid, token, school_id, name, grade_id, class_id, sex, academy_name, time, student_num])
  65. if (updateRows && updateRows.affectedRows > 0) {
  66. res.json({
  67. ...BaseStdResponse.OK,
  68. data: {
  69. name,
  70. academy_name,
  71. grade_id,
  72. auto_run: findRows[0].auto_run,
  73. account: student_num
  74. }
  75. })
  76. let emailData = {
  77. name,
  78. account: student_num,
  79. academy_name,
  80. grade_id,
  81. auto_run: findRows[0].auto_run
  82. }
  83. await EmailTemplate.updateSuccess(findRows[0].email, emailData)
  84. if (findRows[0].auto_run === 1) {
  85. lepao.beginLepao(findRows[0].create_user, student_num, token, uid, school_id, 1)
  86. }
  87. }
  88. } catch (error) {
  89. this.logger.error(`更新用户信息时出错。${error.stack}`)
  90. return res.json({
  91. ...BaseStdResponse.ERR,
  92. msg: '更新用户信息失败,请重试'
  93. })
  94. }
  95. }
  96. }
  97. module.exports.UpdateAccount = UpdateAccount;