UpdateAccountInfo.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. const API = require("../../../../lib/API")
  2. const AccessControl = require("../../../../lib/AccessControl")
  3. const { BaseStdResponse } = require("../../../../BaseStdResponse")
  4. const { syncAccountInfo } = require("../../../../lib/Lepao/syncAccountInfo")
  5. class UpdateAccountInfo extends API {
  6. constructor() {
  7. super()
  8. this.setPath('/Admin/Lepao/Account/UpdateAccountInfo')
  9. this.setMethod('POST')
  10. }
  11. async onRequest(req, res) {
  12. const { uuid, session, student_num } = req.body
  13. if ([uuid, session, student_num].some(v => v === '' || v === null || v === undefined)) {
  14. return res.json({
  15. ...BaseStdResponse.MISSING_PARAMETER
  16. })
  17. }
  18. if (!await AccessControl.checkSession(uuid, session)) {
  19. return res.status(401).json({
  20. ...BaseStdResponse.ACCESS_DENIED
  21. })
  22. }
  23. const permission = await AccessControl.getPermission(uuid)
  24. if (!permission.includes('admin') && !permission.includes('service')) {
  25. return res.json({
  26. ...BaseStdResponse.PERMISSION_DENIED
  27. })
  28. }
  29. try {
  30. const syncResult = await syncAccountInfo({
  31. studentNum: student_num,
  32. logger: this.logger
  33. })
  34. if (!syncResult.ok) {
  35. return res.json({
  36. ...BaseStdResponse.ERR,
  37. msg: syncResult.msg || '同步失败,请稍后再试'
  38. })
  39. }
  40. return res.json({
  41. ...BaseStdResponse.OK,
  42. data: syncResult.data
  43. })
  44. } catch (error) {
  45. this.logger.error(`管理员同步乐跑账号失败: ${error.stack || error}`)
  46. return res.json({
  47. ...BaseStdResponse.ERR,
  48. msg: '同步失败,请稍后再试'
  49. })
  50. }
  51. }
  52. }
  53. module.exports.UpdateAccountInfo = UpdateAccountInfo