mirror of
https://github.com/ZZZure/ZZZ-Plugin.git
synced 2025-12-16 13:17:32 +00:00
feat: 月报统计(总);查询的月报数据自动保存
This commit is contained in:
parent
9f8d5dc1f6
commit
dcf04636c2
12 changed files with 739 additions and 62 deletions
|
|
@ -51,12 +51,11 @@ export const getAvatarInfoList = async (api, origin = false) => {
|
|||
/**
|
||||
* 刷新面板
|
||||
* @param {MysZZZApi} api
|
||||
* @param {string} uid
|
||||
* @returns {Promise<ZZZAvatarInfo[] | null>}
|
||||
*/
|
||||
export const refreshPanel = async (api, uid) => {
|
||||
export const refreshPanel = async api => {
|
||||
// 获取已保存数据
|
||||
const originData = getPanelData(uid);
|
||||
const originData = getPanelData(api.uid);
|
||||
// 获取新数据
|
||||
const newData = await getAvatarInfoList(api, true);
|
||||
if (!newData) return null;
|
||||
|
|
@ -73,7 +72,7 @@ export const refreshPanel = async (api, uid) => {
|
|||
}
|
||||
}
|
||||
// 保存数据
|
||||
savePanelData(uid, finalData);
|
||||
savePanelData(api.uid, finalData);
|
||||
// 格式化数据
|
||||
finalData.forEach(item => {
|
||||
item.isNew = !!newData.find(i => i.id === item.id);
|
||||
|
|
|
|||
16
lib/db.js
16
lib/db.js
|
|
@ -31,3 +31,19 @@ export function getPanelData(uid) {
|
|||
export function savePanelData(uid, data) {
|
||||
setDB('panel', uid, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} uid
|
||||
* @returns {Array<object>}
|
||||
*/
|
||||
export function getMonthlyData(uid) {
|
||||
return getDB('monthly', uid) || [];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} uid
|
||||
* @param {Array<object>} data
|
||||
*/
|
||||
export function saveMonthlyData(uid, data) {
|
||||
setDB('monthly', uid, data);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import { dataPath } from '../path.js';
|
|||
export const dbPath = {
|
||||
gacha: 'gacha',
|
||||
panel: 'panel',
|
||||
monthly: 'monthly',
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
63
lib/monthly.js
Normal file
63
lib/monthly.js
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
import { getMonthlyData, saveMonthlyData } from './db.js';
|
||||
import MysZZZApi from './mysapi.js';
|
||||
import _ from 'lodash';
|
||||
|
||||
/**
|
||||
* 保存月度数据
|
||||
* @param {string} uid
|
||||
* @param {object} newData
|
||||
*/
|
||||
export const saveMonthlyNewData = (uid, ...newDatas) => {
|
||||
// 获取先前月度数据
|
||||
const savedData = getMonthlyData(uid);
|
||||
// 合并新旧数据
|
||||
const mergedData = _.unionBy(newDatas, savedData, 'data_month').sort(
|
||||
(a, b) => a.data_month - b.data_month
|
||||
);
|
||||
// 保存数据
|
||||
saveMonthlyData(uid, mergedData);
|
||||
return mergedData.reverse();
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取月度数据
|
||||
* @param {MysZZZApi} api
|
||||
* @param {string} month
|
||||
* @returns {Promise<object | null>}
|
||||
*/
|
||||
export const getMonthly = async (api, month) => {
|
||||
// 获取月度数据
|
||||
const data = await api.getFinalData('zzzMonthly', {
|
||||
query: { month },
|
||||
});
|
||||
saveMonthlyNewData(api.uid, data);
|
||||
return data;
|
||||
};
|
||||
|
||||
/**
|
||||
* 月度数据(统计)
|
||||
* @param {MysZZZApi} api
|
||||
* @returns {Promise<object | null>}
|
||||
*/
|
||||
export const getMonthlyCollect = async api => {
|
||||
// 获取当前月度数据
|
||||
const currentData = await getMonthly(api, '');
|
||||
|
||||
if (!currentData) return null;
|
||||
|
||||
const newDatas = [currentData];
|
||||
// 获取所有可查询月份
|
||||
const availableData = currentData.optional_month.filter(
|
||||
month => month !== currentData.data_month
|
||||
);
|
||||
|
||||
for (const month of availableData) {
|
||||
const data = await getMonthly(api, month);
|
||||
if (data) newDatas.push(data);
|
||||
}
|
||||
|
||||
// 合并新旧数据
|
||||
const mergedData = saveMonthlyNewData(api.uid, ...newDatas);
|
||||
|
||||
return mergedData;
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue