export default async (params) => {
	let url = params.url;
	let method = params.method || "get";
	let data = params.data || {};
	let type = params.type || 1;
	let toast = params.toast || true;
	let token = uni.cache.get("token") || "";
	const shopId = uni.cache.get("shopId") * 1;
	const userInfo = uni.cache.get("userInfo") || {};

	let header = {
		version: uni.conf.version,
		type: uni.getSystemInfoSync().platform,
		// #ifdef APP-PLUS
		platformType: "APP",
		// #endif
		// #ifdef H5
		platformType: "H5",
		// #endif
		// #ifdef MP-WEIXIN
		platformType: "WX",
		// #endif
		// #ifdef MP-ALIPAY
		platformType: "ALI",
		// #endif
		token,
		id: userInfo.id || "",
		shopId: shopId || "",
		userId: userInfo.id || "",
	};
	if (toast) {
		uni.showLoading({
			title: "加载中",
			mask: true,
		});
	}
	// #ifdef H5
	uni.cache.set('token', '1b5e8baf0cc1492a858a208f113d0971')
	uni.cache.set('userInfo',{"acQrcodeValidTime":"2026-01-13 13:35:59","alipayOpenId":"","birthDay":"2025-12-25","createTime":"2024-03-13 10:56:40","distributionAmount":0,"headImg":"https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132","id":"36689","idCard":"","isAc":0,"lastLoginTime":"2025-12-26 10:01:12","nickName":"微信用户","password":"","payPwd":"e10adc3949ba59abbe56e057f20f883e","phone":"18049104914","realName":"","sex":1,"status":1,"updateTime":"2025-12-26 09:59:31","usePayPwd":0,"wechatAcOpenId":"","wechatAcQrcode":"http://weixin.qq.com/q/029s5JtP1xfmJ1g_HDxFco","wechatOpenId":"or1l86yipGvwyfPhrKIAcQuSfAV8"})
	// #endif
	return new Promise((resolve, reject) => {
		const timeoutDuration = params.timeout || 10000; // 可以通过 params 传入超时时间，默认 10 秒
		uni.request({
			url: uni.conf.baseUrl + url,
			method: method,
			header: header,
			data: data,
			timeout: timeoutDuration,
			success(response) {
				const res = response.data;
				// 根据返回的状态码做出对应的操作
				//获取成功
				if (res.code == 200) {
					uni.hideLoading();
					// uni.hideToast();
					resolve(res.data ? res.data : true);
				} else {
					switch (res.code) {
						case "501":
							uni.cache.remove("shopId");
							// uni.showToast({
							// 	title: '',
							// 	icon: "none",
							// 	success: () => {

							// 	}
							// })
							setTimeout(() => {
								uni.reLaunch({
									url: "/pages/index/index",
								});
							}, 1000);
							break;
						case 404:
							uni.showToast({
								title: "请求地址不存在...",
								duration: 2000,
							});
							break;
						default:
							// 是否提示
							if (toast) {
								uni.showToast({
									title: (() => {
										// 1. 获取原始提示文本（兜底空字符串避免报错）
										const originMsg = res.message || res.msg ||
											res
											.error || "";
										// 2. 定义要匹配的前缀
										const exceptionPrefix = "Exception:";
										// 3. 判断是否包含目标前缀
										if (originMsg.includes(exceptionPrefix)) {
											// 截取前缀后的内容 → 去除首尾空格 → 限制最大20个字符
											return originMsg
												.slice(
													originMsg.indexOf(
														exceptionPrefix) +
													exceptionPrefix.length
												)
												.trim()
												.slice(0, 20);
										} else {
											// 不包含则按原逻辑截取前20个字符
											return originMsg.slice(0, 20);
										}
									})(),
									icon: "none",
									success: () => {
										// 修复：去掉多余的 res 参数（避免覆盖外层 res）
										setTimeout(() => {
											reject(false);
										}, 1000);
									},
								});
							}
							break;
					}
				}
			},
			fail(err) {
				if (err.errMsg.indexOf("request:fail") !== -1) {
					if (err.errMsg.indexOf("timeout") !== -1) {
						if (toast) {
							uni.showToast({
								title: `请求超时，请稍后重试`,
								icon: "error",
								duration: 2000,
							});
						}
					}
				}
				reject(err);
			},
			complete() {
				// 不管成功还是失败都会执行
				setTimeout((res) => {
					uni.hideLoading();
					// uni.hideToast();
				}, 10000);
			},
		});
	}).catch((e) => {});
};