111 lines
3.2 KiB
JavaScript
111 lines
3.2 KiB
JavaScript
|
|
"use strict";
|
||
|
|
const common_vendor = require("../common/vendor.js");
|
||
|
|
const BASE_URL = "https://api.makesong.cn/yu";
|
||
|
|
function request(url, options = {}) {
|
||
|
|
const token = common_vendor.index.getStorageSync("token");
|
||
|
|
let requestUrl = BASE_URL + url;
|
||
|
|
if ((options.method || "GET") === "GET" && options.data) {
|
||
|
|
const params = [];
|
||
|
|
Object.keys(options.data).forEach((key) => {
|
||
|
|
const value = options.data[key];
|
||
|
|
if (value !== void 0 && value !== null) {
|
||
|
|
params.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
const queryString = params.join("&");
|
||
|
|
if (queryString) {
|
||
|
|
requestUrl += "?" + queryString;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return new Promise((resolve, reject) => {
|
||
|
|
common_vendor.index.request({
|
||
|
|
url: requestUrl,
|
||
|
|
method: options.method || "GET",
|
||
|
|
data: (options.method || "GET") === "GET" ? void 0 : options.data,
|
||
|
|
header: {
|
||
|
|
"Content-Type": "application/json",
|
||
|
|
...token && { Authorization: `Bearer ${token}` },
|
||
|
|
...options.header
|
||
|
|
},
|
||
|
|
success: (res) => {
|
||
|
|
const data = res.data;
|
||
|
|
if (data.code === 200) {
|
||
|
|
resolve(data.data);
|
||
|
|
} else if (data.code == 401) {
|
||
|
|
common_vendor.index.removeStorageSync("token");
|
||
|
|
common_vendor.index.reLaunch({
|
||
|
|
url: "/pages/login/login"
|
||
|
|
});
|
||
|
|
} else {
|
||
|
|
common_vendor.index.showToast({
|
||
|
|
title: data.message || "请求失败",
|
||
|
|
icon: "none"
|
||
|
|
});
|
||
|
|
reject(new Error(data.message));
|
||
|
|
}
|
||
|
|
},
|
||
|
|
fail: (err) => {
|
||
|
|
common_vendor.index.showToast({
|
||
|
|
title: "网络请求失败",
|
||
|
|
icon: "none"
|
||
|
|
});
|
||
|
|
reject(err);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
});
|
||
|
|
}
|
||
|
|
const api = {
|
||
|
|
// 认证相关
|
||
|
|
auth: {
|
||
|
|
register: (phone, nickname) => request("/api/auth/register", {
|
||
|
|
method: "POST",
|
||
|
|
data: { phone, nickname }
|
||
|
|
}),
|
||
|
|
sendCode: (phone) => request("/api/auth/send-code", {
|
||
|
|
method: "POST",
|
||
|
|
data: { phone }
|
||
|
|
}),
|
||
|
|
verificationLogin: (phone, code) => request("/api/auth/verification-login", {
|
||
|
|
method: "POST",
|
||
|
|
data: { phone, code }
|
||
|
|
}),
|
||
|
|
oneClickLogin: (phone) => request("/api/auth/one-click-login", {
|
||
|
|
method: "POST",
|
||
|
|
data: { phone }
|
||
|
|
})
|
||
|
|
},
|
||
|
|
// 用户相关
|
||
|
|
user: {
|
||
|
|
getProfile: () => request("/api/users/profile"),
|
||
|
|
updateProfile: (data) => request("/api/users/profile", {
|
||
|
|
method: "PUT",
|
||
|
|
data
|
||
|
|
})
|
||
|
|
},
|
||
|
|
// 时间槽相关
|
||
|
|
timeslots: {
|
||
|
|
getList: (params) => request("/api/timeslots", {
|
||
|
|
data: params
|
||
|
|
}),
|
||
|
|
getById: (id) => request(`/api/timeslots/${id}`)
|
||
|
|
},
|
||
|
|
// 预约相关
|
||
|
|
appointments: {
|
||
|
|
getList: (params) => request("/api/appointments", {
|
||
|
|
data: params
|
||
|
|
}),
|
||
|
|
getById: (id) => request(`/api/appointments/${id}`),
|
||
|
|
create: (time_slot_id, people_count = 1, notes) => request("/api/appointments", {
|
||
|
|
method: "POST",
|
||
|
|
data: { time_slot_id, people_count, notes }
|
||
|
|
}),
|
||
|
|
cancel: (id) => request(`/api/appointments/${id}`, {
|
||
|
|
method: "DELETE"
|
||
|
|
})
|
||
|
|
},
|
||
|
|
// 健康检查
|
||
|
|
health: () => request("/health")
|
||
|
|
};
|
||
|
|
exports.api = api;
|
||
|
|
//# sourceMappingURL=../../.sourcemap/mp-weixin/utils/api.js.map
|