Files
rating/utils/common.js

128 lines
3.1 KiB
JavaScript
Raw Normal View History

2026-05-07 11:05:30 +08:00
import { getDeviceInfo } from "@/utils/system";
import {
saveRecord,
viewRecord,
createShareToken,
createTracking,
} from "@/api/system";
2026-05-20 23:28:57 +08:00
export const FILE_BASE_URL = "https://file.lihailezzc.com/";
2026-05-07 11:05:30 +08:00
export const generateObjectId = (
m = Math,
d = Date,
h = 16,
s = (s) => m.floor(s).toString(h),
) => s(d.now() / 1000) + " ".repeat(h).replace(/./g, () => s(m.random() * h));
export const uploadImage = (filePath) => {
return new Promise((resolve, reject) => {
uni.uploadFile({
url: "https://api.ai-meng.com/api/common/upload",
filePath: filePath,
name: "file",
header: {
"x-app-id": "69665538a49b8ae3be50fe5d",
},
success: (res) => {
if (res.statusCode < 400) {
try {
const keyJson = JSON.parse(res.data);
if (keyJson?.data?.result === "auditFailed") {
reject("图片不符合发布规范,请稍作修改后再试");
} else {
2026-05-20 23:28:57 +08:00
resolve(keyJson?.data.key);
2026-05-07 11:05:30 +08:00
}
} catch (e) {
reject(e);
}
} else {
reject(new Error("Upload failed"));
}
},
fail: (err) => {
reject(err);
},
});
});
};
export const saveRecordRequest = async (path, targetId, scene, imageUrl) => {
if (!imageUrl) {
imageUrl = await uploadImage(path);
}
const deviceInfo = getDeviceInfo();
saveRecord({
scene,
targetId,
imageUrl,
deviceInfo,
});
};
export const saveViewRequest = async (shareToken, scene, targetId = "") => {
const deviceInfo = getDeviceInfo();
viewRecord({
shareToken,
scene,
targetId,
deviceInfo,
});
};
export const saveRemoteImageToLocal = (imageUrl) => {
return new Promise((resolve, reject) => {
uni.downloadFile({
url: imageUrl,
success: (res) => {
if (res.statusCode === 200) {
uni.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success: () => {
resolve(true);
},
fail: (err) => {
reject(err);
},
});
} else {
reject(
new Error("Download failed with status code: " + res.statusCode),
);
}
},
fail: (err) => {
reject(err);
},
});
});
};
export const getShareToken = async (scene, targetId = "") => {
const deviceInfo = getDeviceInfo();
const shareTokenRes = await createShareToken({
scene,
targetId,
...deviceInfo,
});
return shareTokenRes?.shareToken || "";
};
export const trackRecord = (event) => {
const pages = getCurrentPages();
// 核心修复在小程序刚启动或页面尚未压栈时pages 可能为空数组
const currentPage = pages && pages.length > 0 ? pages[pages.length - 1] : null;
const route = currentPage ? currentPage.route : "app_launch";
const deviceInfo = getDeviceInfo();
createTracking({
...event,
page: route,
deviceInfo,
});
};
export const getThumbUrl = (url) => {
if (!url) return "";
return `${url}?imageView2/1/w/200/h/200/q/80`;
};