feat: 完成分龄页开发

This commit is contained in:
R524809
2026-05-06 17:28:51 +08:00
parent 50394154f7
commit 9bdf850f20
54 changed files with 3499 additions and 1021 deletions
+21 -15
View File
@@ -5,6 +5,7 @@
import { checkAndSaveImage } from './saveImage';
import tracker from './tracker';
import { incrementWorksheetDownloads } from './worksheetStats';
// 存储键名
const STORAGE_KEY_DOWNLOAD_COUNT = 'downloadCount';
@@ -195,8 +196,9 @@ function doDownload(
errorToast?: string;
trackerName?: string;
trackerMode?: string;
worksheetId?: string;
},
) {
): Promise<boolean> {
// 上报下载埋点
if (options.trackerName) {
if (options.trackerMode) {
@@ -206,11 +208,15 @@ function doDownload(
}
}
// 增加下载次数
incrementDownloadCount();
// 执行下载(checkAndSaveImage 内部已有成功提示,这里不需要额外处理)
checkAndSaveImage(canvas);
return checkAndSaveImage(canvas).then((saved) => {
if (saved) {
incrementDownloadCount();
if (options.worksheetId) {
incrementWorksheetDownloads(options.worksheetId);
}
}
return saved;
});
}
/**
@@ -221,6 +227,7 @@ function doDownload(
* @param options.errorToast 错误提示(可选,默认:'请先生成内容')
* @param options.trackerName 埋点名称(可选)
* @param options.trackerMode 埋点模式(可选)
* @param options.worksheetId worksheet ID(可选,保存成功后更新 downloads)
*/
export async function downloadPrint(
canvas: Canvas | null,
@@ -229,20 +236,20 @@ export async function downloadPrint(
errorToast?: string;
trackerName?: string;
trackerMode?: string;
worksheetId?: string;
} = {},
): Promise<void> {
): Promise<boolean> {
// 检查 canvas 是否存在
if (!canvas) {
wx.showToast({
title: options.errorToast || '请先生成内容',
icon: 'none',
});
return;
return false;
}
if (isDevBypassLimits()) {
doDownload(canvas, options);
return;
return doDownload(canvas, options);
}
// 获取今日下载次数
@@ -251,21 +258,19 @@ export async function downloadPrint(
// 如果已观看广告,直接下载
if (hasWatchedAd) {
doDownload(canvas, options);
return;
return doDownload(canvas, options);
}
// 如果未超过免费次数,直接下载
if (downloadCount < FREE_DOWNLOAD_LIMIT) {
doDownload(canvas, options);
return;
return doDownload(canvas, options);
}
// 超过免费次数,需要观看广告
const watched = await showVideoAd();
if (watched) {
// 观看完成,可以下载
doDownload(canvas, options);
return doDownload(canvas, options);
}
/* else {
// 未观看完成,提示用户
@@ -275,4 +280,5 @@ export async function downloadPrint(
duration: 2000,
});
} */
return false;
}