BindWXWork.js 2.4 KB

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