JewelryMall/miniprogram/unpackage/dist/dev/mp-weixin/utils/request.js
2026-03-02 00:20:01 +08:00

111 lines
3.6 KiB
JavaScript

"use strict";
const common_vendor = require("../common/vendor.js");
const ENV_BASE_URL = {
development: "http://localhost:3000",
production: "https://api.example.com"
// 部署时替换为真实域名
};
const BASE_URL = ENV_BASE_URL["development"];
function toCamelCase(obj) {
if (obj === null || typeof obj !== "object")
return obj;
if (Array.isArray(obj)) {
return obj.map((item) => toCamelCase(item));
}
const result = {};
for (const key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
const camelKey = key.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
result[camelKey] = toCamelCase(obj[key]);
}
}
return result;
}
function getToken() {
return common_vendor.index.getStorageSync("token") || "";
}
function request(options) {
const { url, method = "GET", data, header = {} } = options;
const token = getToken();
return new Promise((resolve, reject) => {
common_vendor.index.request({
url: `${BASE_URL}${url}`,
method,
data,
header: {
"Content-Type": "application/json",
...token ? { Authorization: `Bearer ${token}` } : {},
...header
},
success(res) {
const statusCode = res.statusCode;
if (statusCode === 401) {
common_vendor.index.removeStorageSync("token");
common_vendor.index.showToast({ title: "请重新登录", icon: "none" });
autoLogin();
reject(new Error("未授权"));
return;
}
if (statusCode >= 200 && statusCode < 300) {
const body = res.data;
if (body.code === 0) {
const camelData = toCamelCase(body.data);
resolve(camelData);
} else {
common_vendor.index.showToast({ title: body.message || "请求失败", icon: "none" });
reject(new Error(body.message));
}
} else {
common_vendor.index.showToast({ title: "网络异常,请稍后重试", icon: "none" });
reject(new Error(`HTTP ${statusCode}`));
}
},
fail(err) {
common_vendor.index.showToast({ title: "网络异常,请稍后重试", icon: "none" });
reject(err);
}
});
});
}
function autoLogin() {
return new Promise((resolve, reject) => {
common_vendor.index.login({
provider: "weixin",
success: async (loginRes) => {
if (loginRes.code) {
try {
const data = await request({
url: "/api/auth/wx-login",
method: "POST",
data: { code: loginRes.code }
});
common_vendor.index.setStorageSync("token", data.token);
resolve();
} catch (err) {
common_vendor.index.__f__("error", "at utils/request.ts:109", "登录接口调用失败:", err);
reject(err);
}
} else {
common_vendor.index.__f__("error", "at utils/request.ts:113", "微信登录获取 code 失败");
reject(new Error("获取微信 code 失败"));
}
},
fail: (err) => {
common_vendor.index.__f__("error", "at utils/request.ts:118", "uni.login 失败:", err);
reject(err);
}
});
});
}
const get = (url, data) => request({ url, method: "GET", data });
const post = (url, data) => request({ url, method: "POST", data });
const put = (url, data) => request({ url, method: "PUT", data });
const del = (url, data) => request({ url, method: "DELETE", data });
exports.BASE_URL = BASE_URL;
exports.autoLogin = autoLogin;
exports.del = del;
exports.get = get;
exports.post = post;
exports.put = put;
//# sourceMappingURL=../../.sourcemap/mp-weixin/utils/request.js.map