|
|
// utils/DataPointCacheUtil.js
|
|
|
class DataPointCacheUtil {
|
|
|
|
|
|
// 定义常量 key
|
|
|
static CACHE_KEY = 'ET620_HEALTH_DATA_POINT';
|
|
|
/**
|
|
|
* 比较两个时间字符串
|
|
|
* @param {string} time1 - 当前时间
|
|
|
* @param {string} time2 - 缓存的时间
|
|
|
* @returns {number} true 大于, false 小于
|
|
|
*/
|
|
|
static compareDateTime(time1, time2) {
|
|
|
|
|
|
let currentTime = this.convertToTimestamp(time1);
|
|
|
let cacheTime = this.convertToTimestamp(time2);
|
|
|
// console.log("currentTime:",currentTime)
|
|
|
// console.log("cacheTime:",cacheTime)
|
|
|
console.log("对比结果:",currentTime > cacheTime)
|
|
|
return currentTime > cacheTime;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 将 yyyy-MM-dd-HH-mm 格式转换为时间戳
|
|
|
* @param {string} datetime - 时间字符串
|
|
|
* @returns {number} 时间戳(毫秒)
|
|
|
*/
|
|
|
static convertToTimestamp(datetime) {
|
|
|
const [year, month, day, hour, minute] = datetime.split('-').map(Number);
|
|
|
return new Date(year, month - 1, day, hour, minute).getTime();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 永久存储时间数据
|
|
|
* @param {string} key - 存储键名
|
|
|
* @param {string} datetime - 时间字符串,格式 yyyy-MM-dd-HH-mm
|
|
|
*/
|
|
|
static setDateTime(key, datetime) {
|
|
|
try {
|
|
|
// 验证时间格式
|
|
|
if (!/^\d{4}-\d{2}-\d{2}-\d{2}-\d{2}$/.test(datetime)) {
|
|
|
throw new Error('时间格式应为 yyyy-MM-dd-HH-mm');
|
|
|
}
|
|
|
|
|
|
// 获取已缓存的时间
|
|
|
const cacheDateTime = this.getDateTime(key);
|
|
|
// 如果缓存中没有时间,或者新时间大于缓存时间,则存储
|
|
|
if (cacheDateTime != null) {
|
|
|
if(this.compareDateTime(datetime, cacheDateTime)){
|
|
|
console.log("后续设置缓存成功:",datetime);
|
|
|
wx.setStorageSync(key, datetime);
|
|
|
return true;
|
|
|
}
|
|
|
} else {
|
|
|
console.log("首次设置缓存成功:",datetime);
|
|
|
// 使用同步API存储,确保立即生效
|
|
|
wx.setStorageSync(key, datetime);
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
} catch (err) {
|
|
|
console.error('存储失败:', err);
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取永久存储的时间数据
|
|
|
* @param {string} key - 存储键名
|
|
|
* @returns {string|null} 时间字符串或null
|
|
|
*/
|
|
|
static getDateTime(key) {
|
|
|
try {
|
|
|
const datetime = wx.getStorageSync(key);
|
|
|
console.log("获取缓存成功:",datetime);
|
|
|
// 二次验证数据格式
|
|
|
if (datetime && /^\d{4}-\d{2}-\d{2}-\d{2}-\d{2}$/.test(datetime)) {
|
|
|
return datetime;
|
|
|
}
|
|
|
return null;
|
|
|
} catch (err) {
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 移除永久存储的数据
|
|
|
* @param {string} key - 存储键名
|
|
|
*/
|
|
|
static remove(key) {
|
|
|
try {
|
|
|
wx.removeStorageSync(key);
|
|
|
return true;
|
|
|
} catch (err) {
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
export default DataPointCacheUtil; |