UpdateInfo.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. const API = require("../../lib/API");
  2. const { BaseStdResponse } = require("../../BaseStdResponse");
  3. const db = require("../../plugin/DataBase/db");
  4. const AccessControl = require("../../lib/AccessControl");
  5. const {
  6. getUserInfo,
  7. getUserID
  8. } = require("../../plugin/WXWork/GetInfo");
  9. class UpdateInfo extends API {
  10. constructor() {
  11. super();
  12. this.setMethod("POST");
  13. this.setPath("/User/UpdateInfo");
  14. }
  15. async onRequest(req, res) {
  16. let { uuid, session, code } = req.body;
  17. if (!uuid || !session || !code) {
  18. res.json({ ...BaseStdResponse.MISSING_PARAMETER, endpoint: 7841686 });
  19. return;
  20. }
  21. // 检查 session 是否有效
  22. if (!await AccessControl.checkSession(uuid, session)) {
  23. return res.json({
  24. ...BaseStdResponse.ACCESS_DENIED,
  25. endpoint: 48153145
  26. });
  27. }
  28. try {
  29. const idRes = await getUserID(code);
  30. if (!idRes || !idRes.success) {
  31. return res.json({ ...BaseStdResponse.ERR, endpoint: 7894377, msg: `更新失败!${idRes.msg}` });
  32. }
  33. const wxid = idRes.userid;
  34. let sql = 'SELECT wxid FROM users WHERE uuid = ?';
  35. let { rows } = await db.query(sql, [uuid]);
  36. if (rows.length !== 1 || !rows[0].wxid || !rows[0].session)
  37. return res.json({ ...BaseStdResponse.ERR, endpoint: 7894188, msg: `更新失败!` });
  38. if(rows[0].wxid !== wxid)
  39. return res.json({ ...BaseStdResponse.ERR, endpoint: 7894188, msg: `更新失败!当前登录的企业微信账号与绑定的企业微信账号不一致` });
  40. const infoRes = await getUserInfo(wxid);
  41. if (!infoRes || !infoRes.success) {
  42. return res.json({ ...BaseStdResponse.ERR, endpoint: 7894198, msg: `更新失败!${infoRes.msg}` });
  43. }
  44. let { name: username, avatar } = infoRes;
  45. sql = 'UPDATE users SET username = ?, avatar = ? WHERE uuid = ?';
  46. result = await db.query(sql, [username, avatar != '' ? avatar : 'https://git.vthc.cn/avatars/1', uuid]);
  47. if (result && result.affectedRows > 0) {
  48. return res.json({
  49. ...BaseStdResponse.OK,
  50. data: {
  51. uuid,
  52. username,
  53. wxid,
  54. avatar,
  55. session
  56. }
  57. });
  58. } else {
  59. return res.json({ ...BaseStdResponse.ERR, endpoint: 7894377, msg: '更新失败!' });
  60. }
  61. } catch (error) {
  62. return res.json({ ...BaseStdResponse.ERR, endpoint: 7894377, msg: '更新失败!' });
  63. }
  64. }
  65. }
  66. module.exports.UpdateInfo = UpdateInfo;