feat: 添加统计服务

This commit is contained in:
alger
2025-04-12 23:16:12 +08:00
parent b9b52f4d9f
commit a7f2045c7b
10 changed files with 364 additions and 25 deletions
+1 -1
View File
@@ -15,6 +15,6 @@ export interface Donor {
* 获取捐赠列表
*/
export const getDonationList = async (): Promise<Donor[]> => {
const { data } = await axios.get('http://110.42.251.190:8766/api/donations');
const { data } = await axios.get('http://donate.alger.fun/api/donations');
return data;
};
+75
View File
@@ -0,0 +1,75 @@
import { isElectron } from '@/utils';
import { useUserStore } from '../store/modules/user';
/**
* 获取用户ID
* @returns 用户ID或null
*/
function getUserId(): string | null {
const userStore = useUserStore();
return userStore.user?.userId?.toString() || null;
}
/**
* 记录页面访问
* @param page 页面名称或路径
*/
export async function recordVisit(page: string): Promise<void> {
if (!isElectron) return;
try {
const userId = getUserId();
await window.api.invoke('record-visit', page, userId);
console.log(`页面访问已记录: ${page}`);
} catch (error) {
console.error('记录页面访问失败:', error);
}
}
/**
* 记录歌曲播放
* @param songId 歌曲ID
* @param songName 歌曲名称
* @param artistName 艺术家名称
* @param duration 时长(秒)
* @param completedPlay 是否完整播放
*/
export async function recordPlay(
songId: string | number,
songName: string,
artistName: string,
duration: number = 0,
completedPlay: boolean = false
): Promise<void> {
if (!isElectron) return;
try {
const userId = getUserId();
await window.api.invoke('record-play', {
userId,
songId,
songName,
artistName,
duration,
completedPlay
});
console.log(`歌曲播放已记录: ${songName}`);
} catch (error) {
console.error('记录歌曲播放失败:', error);
}
}
/**
* 获取统计摘要
* @returns 统计数据摘要
*/
export async function getStatsSummary(): Promise<any> {
if (!isElectron) return null;
try {
return await window.api.invoke('get-stats-summary');
} catch (error) {
console.error('获取统计摘要失败:', error);
return null;
}
}