feat:优化上线后的改造
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import { getStorageFun, TOKEN_NAME } from "@/utils/auth.js";
|
||||
import { Authorization, KEFU_BASE_URL } from "@/utils/config.js";
|
||||
|
||||
function resolveQiaobaoBaseUrl() {
|
||||
let baseUrl = KEFU_BASE_URL;
|
||||
|
||||
// H5 本地联调时,管理后台测试域名可能尚未部署最新桥宝接口。
|
||||
// 只让 localhost/127.0.0.1 的开发页面访问本机 8080,App、小程序及线上 H5 不受影响。
|
||||
// #ifdef H5
|
||||
if (typeof window !== "undefined" && ["localhost", "127.0.0.1"].includes(window.location.hostname)) {
|
||||
baseUrl = `http://${window.location.hostname}:8080`;
|
||||
}
|
||||
// #endif
|
||||
|
||||
return String(baseUrl).replace(/\/+$/, "");
|
||||
}
|
||||
|
||||
/** Stateless Qiaobao chat. It is intentionally separate from formal customer service. */
|
||||
export function chatWithQiaobao(payload) {
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.request({
|
||||
url: `${resolveQiaobaoBaseUrl()}/qiaobao/chat`,
|
||||
method: "POST",
|
||||
data: payload,
|
||||
timeout: 30000,
|
||||
header: {
|
||||
Authorization,
|
||||
"HSM-AUTH": getStorageFun(TOKEN_NAME) || "",
|
||||
"content-type": "application/json",
|
||||
},
|
||||
success: ({ data, statusCode }) => {
|
||||
let value = data;
|
||||
if (typeof value === "string") {
|
||||
try { value = JSON.parse(value); } catch (error) { /* keep original */ }
|
||||
}
|
||||
if (statusCode >= 200 && statusCode < 300 && value?.bizcode === 100) {
|
||||
resolve(value.data || {});
|
||||
return;
|
||||
}
|
||||
reject(new Error(value?.msg || "桥宝暂时无法回答"));
|
||||
},
|
||||
fail: (error) => reject(error || new Error("网络连接失败")),
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user