api.js 2.6 KB

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