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
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