api.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. "use strict";
  2. const common_vendor = require("../common/vendor.js");
  3. const BASE_URL = "http://localhost:8080";
  4. const getToken = () => {
  5. return common_vendor.index.getStorageSync("user_token") || null;
  6. };
  7. const request = (options) => {
  8. return new Promise((resolve, reject) => {
  9. const token = getToken();
  10. const header = options.header || {};
  11. if (token) {
  12. header["Authorization"] = `Bearer ${token}`;
  13. }
  14. common_vendor.index.request({
  15. url: `${BASE_URL}${options.url}`,
  16. method: options.method || "GET",
  17. data: options.data || {},
  18. header,
  19. success: (res) => {
  20. if (res.statusCode === 200) {
  21. resolve(res.data);
  22. } else if (res.statusCode === 401) {
  23. common_vendor.index.showToast({
  24. title: "登录已过期,请重新登录",
  25. icon: "none",
  26. duration: 2e3
  27. });
  28. common_vendor.index.removeStorageSync("user_token");
  29. common_vendor.index.removeStorageSync("user_info");
  30. setTimeout(() => {
  31. common_vendor.index.showModal({
  32. title: "登录提示",
  33. content: "登录已过期,是否重新登录?",
  34. confirmText: "立即登录",
  35. cancelText: "暂不登录",
  36. success: (modalRes) => {
  37. if (modalRes.confirm) {
  38. "./auth.js".then((auth) => {
  39. auth.wxAuthLogin();
  40. });
  41. }
  42. }
  43. });
  44. }, 2e3);
  45. reject(new Error("未授权"));
  46. } else {
  47. reject(new Error(res.data.message || "服务暂不可用"));
  48. }
  49. },
  50. fail: (err) => {
  51. reject(new Error("网络异常"));
  52. }
  53. });
  54. });
  55. };
  56. const wxLogin = (params) => {
  57. return request({
  58. url: "/v1/auth/wxLogin",
  59. method: "POST",
  60. header: {
  61. "content-type": "application/json"
  62. },
  63. data: params
  64. });
  65. };
  66. const updateUserProfile = (data) => {
  67. return request({
  68. url: "/v1/user/profile",
  69. method: "PUT",
  70. header: {
  71. "content-type": "application/json"
  72. },
  73. data
  74. });
  75. };
  76. const getSuggestions = (keyword) => {
  77. return request({
  78. url: "/v1/stock/suggestion",
  79. method: "GET",
  80. data: { keyword }
  81. });
  82. };
  83. const searchStocks = (keyword) => {
  84. return request({
  85. url: "/v1/stock/search",
  86. method: "POST",
  87. header: {
  88. "content-type": "application/json"
  89. },
  90. data: { keyword }
  91. });
  92. };
  93. const getUserPortfolio = () => {
  94. return request({
  95. url: "/v1/user/portfolio",
  96. method: "GET"
  97. });
  98. };
  99. const getLeaderboard = () => {
  100. return request({
  101. url: "/v1/rank/leaderboard",
  102. method: "GET"
  103. });
  104. };
  105. exports.getLeaderboard = getLeaderboard;
  106. exports.getSuggestions = getSuggestions;
  107. exports.getUserPortfolio = getUserPortfolio;
  108. exports.searchStocks = searchStocks;
  109. exports.updateUserProfile = updateUserProfile;
  110. exports.wxLogin = wxLogin;