UpdateAccount.js 3.5 KB

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