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