mirror of
https://github.com/ZZZure/ZZZ-Plugin.git
synced 2025-12-15 20:57:43 +00:00
66 lines
1.6 KiB
JavaScript
66 lines
1.6 KiB
JavaScript
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} deviceFp
|
|
* @param {string} month
|
|
* @returns {Promise<object | null>}
|
|
*/
|
|
export const getMonthly = async (api, deviceFp, month) => {
|
|
// 获取月度数据
|
|
const data = await api.getFinalData('zzzMonthly', {
|
|
deviceFp,
|
|
query: { month },
|
|
});
|
|
saveMonthlyNewData(api.uid, data);
|
|
return data;
|
|
};
|
|
|
|
/**
|
|
* 月度数据(统计)
|
|
* @param {MysZZZApi} api
|
|
* @param {string} deviceFp
|
|
* @returns {Promise<object | null>}
|
|
*/
|
|
export const getMonthlyCollect = async (api, deviceFp) => {
|
|
// 获取当前月度数据
|
|
const currentData = await getMonthly(api, deviceFp, '');
|
|
|
|
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, deviceFp, month);
|
|
if (data) newDatas.push(data);
|
|
}
|
|
|
|
// 合并新旧数据
|
|
const mergedData = saveMonthlyNewData(api.uid, ...newDatas);
|
|
|
|
return mergedData;
|
|
};
|