zhangbo1_wd

提交接口数据缓存模型。

@@ -12,3 +12,5 @@ export { HttpUtils } from "./src/main/ets/utils/HttpUtils" @@ -12,3 +12,5 @@ export { HttpUtils } from "./src/main/ets/utils/HttpUtils"
12 12
13 export { HostEnum, HostManager } from "./src/main/ets/http/HttpHostManager" 13 export { HostEnum, HostManager } from "./src/main/ets/http/HttpHostManager"
14 14
  15 +export { CacheData } from "./src/main/ets/utils/CacheData"
  16 +
  1 +/**
  2 + * 接口数据存储封装类
  3 + */
  4 +import { DateTimeUtils, StringUtils } from 'wdKit/Index';
  5 +import { CacheDataSaveUtil } from './CacheDataSaveUtil';
  6 +
  7 +export class CacheData {
  8 + // 接口返回数据
  9 + networkData?: object;
  10 + // 数据更新时间戳
  11 + updateTimeInMillis: number = 0;
  12 + // 接口返回md5,用于判断接口数据是否更新
  13 + md5: string = '';
  14 +
  15 + constructor(md5: string, timeMillis: number, networkData: object) {
  16 + this.md5 = md5
  17 + this.updateTimeInMillis = timeMillis
  18 + this.networkData = networkData
  19 + }
  20 +
  21 + /**
  22 + * 根据新旧md5值进行判断,是否需要刷新数据
  23 + * @param responseMd5 新值,接口返回
  24 + * @returns
  25 + */
  26 + needRefreshByMd5(responseMd5: string): boolean {
  27 + if (StringUtils.isEmpty(this.md5) || StringUtils.isEmpty(responseMd5)) {
  28 + return false
  29 + }
  30 + return this.md5 != responseMd5
  31 + }
  32 +
  33 + static saveCacheData(cacheKey: string, data: object, responseMd5: string) {
  34 + if (!data) {
  35 + return
  36 + }
  37 + let time = DateTimeUtils.getTimeStamp()
  38 + let cacheData = new CacheData(responseMd5, time, data)
  39 + CacheDataSaveUtil.save(cacheKey, JSON.stringify(cacheData))
  40 + }
  41 +
  42 + /**
  43 + * 获取缓存数据
  44 + */
  45 + static getLocalCacheData(key: string): Promise<CacheData | null> {
  46 + return new Promise<CacheData | null>((success) => {
  47 + if (StringUtils.isEmpty(key)) {
  48 + success(null)
  49 + return
  50 + }
  51 + let ll = CacheDataSaveUtil.get(key)
  52 + if (ll instanceof Promise) {
  53 + ll.then((data) => {
  54 + let str = data as string
  55 + let cache = JSON.parse(str) as CacheData
  56 + success(cache)
  57 + })
  58 + } else {
  59 + success(null)
  60 + }
  61 + })
  62 + }
  63 +}
  1 +import { KVStoreHelper, StringUtils } from 'wdKit/Index';
  2 +
  3 +/**
  4 + * 接口数据存储工具类
  5 + */
  6 +export class CacheDataSaveUtil {
  7 + static save(key: string, value: string) {
  8 + if (StringUtils.isEmpty(key)) {
  9 + return
  10 + }
  11 + KVStoreHelper.default.put(key, value)
  12 + }
  13 +
  14 + static get(key: string) {
  15 + if (StringUtils.isEmpty(key)) {
  16 + return ''
  17 + }
  18 + return KVStoreHelper.default.get(key, '')
  19 + }
  20 +}