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.5 KiB
JavaScript

5 months ago
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);
}
},
// 更新睡眠数据
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;