BindWXWork.js 2.5 KB

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