feat: 增加下载分享检查功能

This commit is contained in:
R524809
2025-11-20 17:54:16 +08:00
parent 654ea69915
commit ddab64bb20
11 changed files with 350 additions and 52 deletions
+28 -23
View File
@@ -1,3 +1,5 @@
import { recordDownloadSuccess } from './shareGuide';
const doSaveImage = (canvas: Canvas) => {
wx.canvasToTempFilePath({
canvas: canvas,
@@ -6,11 +8,15 @@ const doSaveImage = (canvas: Canvas) => {
success: (res) => {
wx.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success: () => wx.showToast({
title: '保存成功,请在相册中查看',
icon: 'success',
duration: 2000,
}),
success: () => {
// 记录下载成功
recordDownloadSuccess();
wx.showToast({
title: '保存成功,请在相册中查看',
icon: 'success',
duration: 2000,
});
},
// fail: () => wx.showToast({
// title: '保存涂色卡失败,请重试!',
// icon: 'none',
@@ -18,38 +24,37 @@ const doSaveImage = (canvas: Canvas) => {
// })
});
},
fail: (err: any) => {
fail: () => {
wx.showToast({
title: '生成涂色卡失败,请重试!',
icon: 'none',
duration: 2000,
})
}
});
},
});
}
};
const requestPhotoPermission = (canvas: Canvas) => {
wx.authorize({
scope: 'scope.writePhotosAlbum',
success: () => doSaveImage(canvas),
fail: () => wx.showToast({
title: '请在“设置-添加到相册”中开启相册权限以保存涂色卡',
icon: 'none',
duration: 3000,
})
})
}
fail: () =>
wx.showToast({
title: '请在“设置-添加到相册”中开启相册权限以保存涂色卡',
icon: 'none',
duration: 3000,
}),
});
};
export const checkAndSaveImage = (canvas: Canvas) => {
wx.getSetting({
success: res => {
success: (res) => {
if (!res.authSetting['scope.writePhotosAlbum']) {
requestPhotoPermission(canvas)
requestPhotoPermission(canvas);
} else {
doSaveImage(canvas)
doSaveImage(canvas);
}
}
})
},
});
};
+71
View File
@@ -0,0 +1,71 @@
/**
* 分享引导工具
* 用于控制每日免费下载次数和分享引导
*/
const STORAGE_KEY_DOWNLOAD_DATE = 'downloadDate';
const STORAGE_KEY_DOWNLOAD_COUNT = 'downloadCount';
const STORAGE_KEY_SHARED_DATE = 'sharedDate';
/**
* 获取今天的日期字符串(YYYY-MM-DD格式)
*/
function getTodayDateString(): string {
const today = new Date();
const year = today.getFullYear();
const month = String(today.getMonth() + 1).padStart(2, '0');
const day = String(today.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
}
/**
* 检查今天是否已经下载过
* @returns true表示今天已下载过,false表示今天未下载
*/
export function hasDownloadedToday(): boolean {
const today = getTodayDateString();
const downloadDate = wx.getStorageSync(STORAGE_KEY_DOWNLOAD_DATE);
return downloadDate === today;
}
/**
* 记录今天的下载成功
*/
export function recordDownloadSuccess(): void {
const today = getTodayDateString();
wx.setStorageSync(STORAGE_KEY_DOWNLOAD_DATE, today);
const count = wx.getStorageSync(STORAGE_KEY_DOWNLOAD_COUNT) || 0;
wx.setStorageSync(STORAGE_KEY_DOWNLOAD_COUNT, count + 1);
}
/**
* 检查今天是否已经分享过
* @returns true表示今天已分享过,false表示今天未分享
*/
export function hasSharedToday(): boolean {
const today = getTodayDateString();
const sharedDate = wx.getStorageSync(STORAGE_KEY_SHARED_DATE);
return sharedDate === today;
}
/**
* 记录今天的分享成功
*/
export function recordShareSuccess(): void {
const today = getTodayDateString();
wx.setStorageSync(STORAGE_KEY_SHARED_DATE, today);
}
/**
* 检查是否需要显示分享引导
* @returns true表示需要显示分享引导,false表示不需要
*/
export function shouldShowShareGuide(): boolean {
// 如果今天已经分享过,不需要显示引导
if (hasSharedToday()) {
return false;
}
// 如果今天已经下载过,需要显示引导
return hasDownloadedToday();
}