const API = require("../../lib/API.js") const db = require("../../plugin/DataBase/db.js") const axios = require('axios') const EmailTemplate = require('../../plugin/Email/emailTemplate') const config = require('../../config.json') const { BaseStdResponse } = require("../../BaseStdResponse.js") // 客户端上传数据接口 class UpdateAccount extends API { constructor() { super(); this.setPath('/Lepao/UpdateAccount') this.setMethod('POST') } async onRequest(req, res) { let { reqData, resData } = req.body if ([reqData, resData].some(value => value === '' || value === null || value === undefined)) return res.json({ ...BaseStdResponse.MISSING_PARAMETER, endpoint: 1513126 }) try { const endpoint = config.runpy + '/decrypted_data' const ReqData = await axios.post(endpoint, { reqData }) let userData = ReqData.data if (userData?.code !== 200 || !userData.data) return res.json({ ...BaseStdResponse.ERR, msg: '无法解析用户数据,请重试' }) const { uid, student_num, school_id, token } = userData.data if ([uid, student_num, school_id, token].some(value => value === '' || value === null || value === undefined)) return res.json({ ...BaseStdResponse.ERR, msg: '未提取出用户登录信息,请重试' }) const ResData = await axios.post(endpoint, { resData }) let userData2 = ResData.data if (userData2?.code !== 200 || !userData2.data) return res.json({ ...BaseStdResponse.ERR, msg: '无法解析用户数据,请重试' }) const { name } = userData2 if ([name].some(value => value === '' || value === null || value === undefined)) return res.json({ ...BaseStdResponse.ERR, msg: '未提取出用户登录信息,请重试' }) let findSql = 'SELECT email, create_user FROM lepao_account WHERE student_num = ?' let findRows = await db.query(findSql, [student_num]) if (!findRows) return res.json({ ...BaseStdResponse.ERR, msg: '无法解析用户数据,请重试' }) if (findRows.length === 0) return res.json({ ...BaseStdResponse.ERR, msg: '该乐跑账号尚未在RunForge系统中添加,请先前往 https://lepao.ctbu.top/ 添加你的账户' }) let updateSql = 'UPDATE lepao_account SET uid = ?, token = ?, school_id = ?, name = ?, state = 1 WHERE student_num = ?' let updateRows = await db.query(updateSql, [uid, token, school_id, name, student_num]) if (updateRows && updateRows.affectedRows > 0) { res.json({ ...BaseStdResponse.OK, data: { name, account: student_num } }) let emailData = { name, account: student_num } await EmailTemplate.updateSuccess(findRows[0].email, emailData) } } catch (error) { return res.json({ ...BaseStdResponse.ERR, msg: '更新用户信息失败,请重试' }) } } } module.exports.UpdateAccount = UpdateAccount;