You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

117 lines
3.6 KiB
JavaScript

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

const HealthDataCache = {
CACHE_KEY: 'healthDataCache',
// 获取缓存数据,若没有缓存则返回初始数据
getCache() {
let cache = wx.getStorageSync(this.CACHE_KEY);
if (!cache) {
// 初始化缓存数据
cache = {
sleepLastTime: 0,
heartRateLastTime: 0,
temperatureLastTime: 0,
bloodOxygenLastTime: 0,
bloodPressureLastTime: 0,
stepLastTime:0
};
wx.setStorageSync(this.CACHE_KEY, cache); // 如果没有缓存,设置默认值
}
return cache;
},
// 更新缓存数据
updateCache(field, value) {
const cache = this.getCache(); // 获取缓存数据
if (cache[field] !== undefined) {
cache[field] = value; // 更新对应字段
wx.setStorageSync(this.CACHE_KEY, cache); // 保存更新后的缓存数据
console.log(`缓存更新成功,${field} 设置为 ${value}`);
} else {
console.log(`字段 ${field} 不存在,无法更新`);
}
},
// 更新血压数据
updateBloodPressureData(newDate) {
let lastTime = this.getLastTimeField('bloodPressureLastTime');
if(newDate > lastTime){
this.updateCache('bloodPressureLastTime', newDate);
}
},
// 更新心率数据
updateHeartRateData(newDate) {
// 判断最新传入的时间戳是否 大于 上次更新数据的时间,只有大于才更新缓存时间
let lastTime = this.getLastTimeField('heartRateLastTime');
if(newDate > lastTime){
console.log("本次更新时间大于上次更新时间");
console.log("上次更新时间>>>:",lastTime);
console.log("本次更新时间>>>:",newDate);
this.updateCache('heartRateLastTime', newDate);
}
},
// 更新体温数据
updateTemperatureData(newDate) {
let lastTime = this.getLastTimeField('temperatureLastTime');
if(newDate > lastTime){
this.updateCache('temperatureLastTime', newDate);
}
},
// 更新血氧数据
updateBloodOxygenData(newDate) {
let lastTime = this.getLastTimeField('bloodOxygenLastTime');
if(newDate > lastTime){
this.updateCache('bloodOxygenLastTime', newDate);
}
},
// 更新睡眠数据 ,睡眠计算可能不一样因为存的是date
updateSleepData(newDate) {
let lastTime = this.getLastTimeField('sleepLastTime');
if(newDate > lastTime){
this.updateCache('sleepLastTime', newDate);
}
},
// 更新步数数据
updateStepData(newDate) {
let lastTime = this.getLastTimeField('stepLastTime');
if(newDate > lastTime){
this.updateCache('stepLastTime', newDate);
}
},
// 更新所有时间字段的时间
updateAllFieldsTime(newDate) {
this.updateCache('sleepLastTime', newDate);
this.updateCache('heartRateLastTime', newDate);
this.updateCache('temperatureLastTime', newDate);
this.updateCache('bloodOxygenLastTime', newDate);
this.updateCache('bloodPressureLastTime', newDate);
this.updateCache('stepLastTime', newDate);
console.log(`所有字段时间更新为: ${newDate}`);
},
// 获取缓存中指定字段的值
getField(field) {
const cache = this.getCache();
return cache[field];
},
// 根据字段获取时间戳若返回空则默认取过去7天作为起始时间
getLastTimeField(field){
let lastTime = this.getField(field);
if(lastTime === null || lastTime === ''|| lastTime === undefined){
// 获取九宫格的数据时间作为 开始同步时间,这里暂时获取当前时间戳
return new Date().getTime() / 1000;
}
return lastTime;
},
};
// 导出模块
module.exports = HealthDataCache;