UpdateInfo.js 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. // 通过企业微信更新用户信息 已废弃
  10. class UpdateInfo extends API {
  11. constructor() {
  12. super();
  13. this.setMethod("POST");
  14. this.setPath("/User/UpdateInfo");
  15. }
  16. async onRequest(req, res) {
  17. let { uuid, session, code } = req.body;
  18. if (!uuid || !session || !code) {
  19. res.json({ ...BaseStdResponse.MISSING_PARAMETER, endpoint: 7841686 });
  20. return;
  21. }
  22. // 检查 session 是否有效
  23. if (!await AccessControl.checkSession(uuid, session)) {
  24. return res.json({
  25. ...BaseStdResponse.ACCESS_DENIED,
  26. endpoint: 48153145
  27. });
  28. }
  29. try {
  30. const idRes = await getUserID(code);
  31. if (!idRes || !idRes.success) {
  32. return res.json({ ...BaseStdResponse.ERR, endpoint: 7894377, msg: `更新失败!${idRes.msg}` });
  33. }
  34. const wxid = idRes.userid;
  35. let sql = 'SELECT wxid FROM users WHERE uuid = ?';
  36. let { rows } = await db.query(sql, [uuid]);
  37. if (rows.length !== 1 || !rows[0].wxid || !rows[0].session)
  38. return res.json({ ...BaseStdResponse.ERR, endpoint: 7894188, msg: `更新失败!` });
  39. if(rows[0].wxid !== wxid)
  40. return res.json({ ...BaseStdResponse.ERR, endpoint: 7894188, msg: `更新失败!当前登录的企业微信账号与绑定的企业微信账号不一致` });
  41. const infoRes = await getUserInfo(wxid);
  42. if (!infoRes || !infoRes.success) {
  43. return res.json({ ...BaseStdResponse.ERR, endpoint: 7894198, msg: `更新失败!${infoRes.msg}` });
  44. }
  45. let { name: username, avatar } = infoRes;
  46. // TODO 企微扫码登录不会返回用户头像 这里疏忽了 后面再改
  47. avatar = avatar && avatar != '' ? avatar : 'https://git.vthc.cn/avatars/1';
  48. sql = 'UPDATE users SET username = ?, avatar = ? WHERE uuid = ?';
  49. result = await db.query(sql, [username, avatar, uuid]);
  50. if (result && result.affectedRows > 0) {
  51. return res.json({
  52. ...BaseStdResponse.OK,
  53. data: {
  54. uuid,
  55. username,
  56. wxid,
  57. avatar,
  58. session
  59. }
  60. });
  61. } else {
  62. return res.json({ ...BaseStdResponse.ERR, endpoint: 7894377, msg: '更新失败!' });
  63. }
  64. } catch (error) {
  65. this.logger.error(`更新个人信息时出错!${error.stack}`);
  66. return res.json({ ...BaseStdResponse.ERR, endpoint: 7894377, msg: '更新失败!' });
  67. }
  68. }
  69. }
  70. module.exports.UpdateInfo = UpdateInfo;