zhangbo1_wd

接通首页缓存功能

@@ -255,7 +255,7 @@ export struct PageComponent { @@ -255,7 +255,7 @@ export struct PageComponent {
255 this.pageModel.channelId = this.channelId; 255 this.pageModel.channelId = this.channelId;
256 this.pageModel.currentPage = 1; 256 this.pageModel.currentPage = 1;
257 this.pageModel.pageTotalCompSize = 0; 257 this.pageModel.pageTotalCompSize = 0;
258 - // TODO PageHelper.getInitCacheData(this.pageModel, this.pageAdvModel) 258 + PageHelper.getInitCacheData(this.pageModel, this.pageAdvModel)
259 PageHelper.getInitData(this.pageModel, this.pageAdvModel) 259 PageHelper.getInitData(this.pageModel, this.pageAdvModel)
260 }, 100) 260 }, 100)
261 } 261 }
@@ -35,7 +35,6 @@ export class PageHelper { @@ -35,7 +35,6 @@ export class PageHelper {
35 async refreshUI(pageModel: PageModel, pageAdvModel: PageAdModel) { 35 async refreshUI(pageModel: PageModel, pageAdvModel: PageAdModel) {
36 pageModel.loadStrategy = 2 36 pageModel.loadStrategy = 2
37 pageModel.pageTotalCompSize = 0; 37 pageModel.pageTotalCompSize = 0;
38 - // TODO 下拉刷新,是否加载缓存  
39 this.getPageInfo(pageModel, pageAdvModel) 38 this.getPageInfo(pageModel, pageAdvModel)
40 } 39 }
41 40
@@ -52,55 +51,20 @@ export class PageHelper { @@ -52,55 +51,20 @@ export class PageHelper {
52 * 进页面请求数据 51 * 进页面请求数据
53 */ 52 */
54 async getInitCacheData(pageModel: PageModel, pageAdvModel: PageAdModel) { 53 async getInitCacheData(pageModel: PageModel, pageAdvModel: PageAdModel) {
55 - Logger.error('zzzz', 'getInitCacheData') 54 + Logger.debug(TAG, 'getInitCacheData')
56 PageViewModel.getPageInfoCache(pageModel.pageId).then(pageInfo => { 55 PageViewModel.getPageInfoCache(pageModel.pageId).then(pageInfo => {
  56 + Logger.debug(TAG, 'getInitCacheData back: ' + pageInfo)
57 if (pageInfo == null) { 57 if (pageInfo == null) {
58 return; 58 return;
59 } 59 }
60 pageModel.pageInfo = pageInfo; 60 pageModel.pageInfo = pageInfo;
  61 + pageModel.cachePageInfoMd5 = pageInfo.md5
61 //解析页面挂角广告资源 62 //解析页面挂角广告资源
62 pageAdvModel.analysisAdvSource(pageInfo); 63 pageAdvModel.analysisAdvSource(pageInfo);
63 - this.parseCacheGroup(pageModel) 64 + this.parseGroup(pageModel, true)
64 }) 65 })
65 } 66 }
66 67
67 - async parseCacheGroup(pageModel: PageModel) {  
68 - Logger.error('zzzz', 'parseCacheGroup')  
69 - let pageInfo: PageInfoDTO = pageModel.pageInfo  
70 - pageModel.groupList = []  
71 - pageInfo.pageAdList = []  
72 - pageInfo.oneRequestPageGroupCompList = new ArrayList()  
73 - pageModel.groupList.push(...pageInfo.groups)  
74 - for (const group of pageInfo.groups) {  
75 - pageModel.groupId = group.id;  
76 - pageModel.groupData = group  
77 - // await,确保groups接口顺序执行  
78 - let pageDto = await PageViewModel.getPageGroupCacheData(pageModel.bizCopy()) as PageDTO  
79 - let index = pageInfo.groups.indexOf(group)  
80 - if (index == 0) {  
81 - // 清空comp列表  
82 - pageModel.compList.clear()  
83 - }  
84 - this.analysisPageGroupCompData(pageDto, pageInfo)  
85 - }  
86 -  
87 - // 收集页面所有楼层的组件信息,同步完成广告投放计算,异步完成稿件批查,  
88 -  
89 - pageModel.pageTotalCompSize = pageInfo.oneRequestPageGroupCompList.length + pageModel.pageTotalCompSize  
90 - // 处理页面广告数据,投放到页面的位置  
91 - // TODO 缓存数据不加载广告  
92 - // this.handlePageCompAdvPostion(pageInfo.oneRequestPageGroupCompList, pageModel, pageInfo.pageAdList);  
93 -  
94 - //遍历所有组件和稿件数据 push到页面  
95 - for (let element of pageInfo.oneRequestPageGroupCompList) {  
96 - pageModel.compList.push(CompDTO.createNewsBean(element))  
97 - }  
98 - pageModel.currentPage++  
99 - pageModel.viewType = ViewType.LOADED  
100 - closeRefresh(pageModel, true)  
101 -  
102 - }  
103 -  
104 /** 68 /**
105 * 进页面请求数据 69 * 进页面请求数据
106 */ 70 */
@@ -134,33 +98,51 @@ export class PageHelper { @@ -134,33 +98,51 @@ export class PageHelper {
134 promptAction.showToast({ message: err }); 98 promptAction.showToast({ message: err });
135 }) 99 })
136 } else { 100 } else {
  101 + Logger.debug(TAG, 'getPageInfo')
137 PageViewModel.getPageInfo(pageModel.pageId).then(pageInfo => { 102 PageViewModel.getPageInfo(pageModel.pageId).then(pageInfo => {
  103 + Logger.debug(TAG, 'getPageInfo back: ' + JSON.stringify(pageInfo))
138 if (pageInfo == null) { 104 if (pageInfo == null) {
139 pageModel.viewType = ViewType.EMPTY; 105 pageModel.viewType = ViewType.EMPTY;
140 pageModel.emptyType = WDViewDefaultType.WDViewDefaultType_NoContent1; 106 pageModel.emptyType = WDViewDefaultType.WDViewDefaultType_NoContent1;
141 return; 107 return;
142 } 108 }
143 pageModel.pageInfo = pageInfo; 109 pageModel.pageInfo = pageInfo;
144 - //解析页面挂角广告资源  
145 - pageAdvModel.analysisAdvSource(pageInfo);  
146 - this.parseGroup(pageModel)  
147 - // if (pageModel.currentPage == 1) {  
148 - // // 保存缓存  
149 - // CacheData.saveCacheData(CacheData.comPageInfoCacheKey + pageModel.pageId, pageInfo, pageInfo.md5)  
150 - // } 110 + if (pageInfo.md5 == pageModel.cachePageInfoMd5) {
  111 + // 缓存一致,不解析
  112 + Logger.debug(TAG, 'getPageInfo 与缓存一致,不解析广告。。。')
  113 + } else {
  114 + Logger.debug(TAG, 'getPageInfo 要解析广告')
  115 + if (pageModel.currentPage == 1) {
  116 + // 保存缓存
  117 + CacheData.saveCacheData(CacheData.comPageInfoCacheKey + pageModel.pageId, pageInfo, pageInfo.md5)
  118 + }
  119 + //解析页面挂角广告资源
  120 + pageAdvModel.analysisAdvSource(pageInfo);
  121 + }
  122 + Logger.debug(TAG, 'getPageInfo go on')
  123 + this.parseGroup(pageModel, false)
151 }).catch(() => { 124 }).catch(() => {
  125 + if (this.isPageLoaded(pageModel)) {
  126 + return
  127 + }
152 pageModel.viewType = ViewType.EMPTY; 128 pageModel.viewType = ViewType.EMPTY;
153 pageModel.emptyType = WDViewDefaultType.WDViewDefaultType_ContentFailed; 129 pageModel.emptyType = WDViewDefaultType.WDViewDefaultType_ContentFailed;
154 }) 130 })
155 } 131 }
156 } 132 }
157 133
  134 + private isPageLoaded(pageModel: PageModel) {
  135 + if (pageModel.compList.size() > 0) {
  136 + return true
  137 + }
  138 + return false
  139 + }
158 140
159 /** 141 /**
160 * 解析信息流页面楼层数据 142 * 解析信息流页面楼层数据
161 * @param pageModel 143 * @param pageModel
162 */ 144 */
163 - async parseGroup(pageModel: PageModel) { 145 + async parseGroup(pageModel: PageModel, isCache: boolean) {
164 let pageInfo: PageInfoDTO = pageModel.pageInfo 146 let pageInfo: PageInfoDTO = pageModel.pageInfo
165 pageModel.groupList = [] 147 pageModel.groupList = []
166 pageInfo.pageAdList = [] 148 pageInfo.pageAdList = []
@@ -177,8 +159,26 @@ export class PageHelper { @@ -177,8 +159,26 @@ export class PageHelper {
177 pageModel.groupData = group 159 pageModel.groupData = group
178 160
179 //Logger.error("ZZZXXXXX", '楼层id-start--》' + pageModel.groupId); 161 //Logger.error("ZZZXXXXX", '楼层id-start--》' + pageModel.groupId);
  162 + let pageDto: PageDTO
  163 + Logger.debug(TAG, 'parseGroup isCache: ' + isCache)
  164 + if (isCache) {
  165 + pageDto = await PageViewModel.getPageGroupCacheData(pageModel.bizCopy()) as PageDTO
  166 + pageModel.cacheGroupInfoMd5 = pageDto.md5
  167 + } else {
  168 + pageDto = await PageViewModel.getPageGroupCompData(pageModel.bizCopy()) as PageDTO
  169 + if (pageDto.md5 == pageModel.cacheGroupInfoMd5) {
  170 + Logger.debug(TAG, 'parseGroup cache load, return: ' + pageDto.md5)
  171 + // 缓存数据一致,不再刷新
  172 + return
  173 + }
  174 + Logger.debug(TAG, 'parseGroup cache load, save: ')
  175 + // 保存缓存
  176 + CacheData.saveCacheData(CacheData.compGroupInfoDataCacheKey + pageModel.pageId + pageModel.groupId, pageDto,
  177 + pageDto.md5)
  178 + }
  179 + Logger.debug(TAG, 'parseGroup go on')
180 // await,确保groups接口顺序执行 180 // await,确保groups接口顺序执行
181 - let pageDto = await PageViewModel.getPageGroupCompData(pageModel.bizCopy()) as PageDTO 181 + // let pageDto = page
182 let index = pageInfo.groups.indexOf(group) 182 let index = pageInfo.groups.indexOf(group)
183 183
184 // 解析楼层组件 184 // 解析楼层组件
@@ -197,9 +197,6 @@ export class PageHelper { @@ -197,9 +197,6 @@ export class PageHelper {
197 } else { 197 } else {
198 pageInfo.lastCompSourceType = 0 198 pageInfo.lastCompSourceType = 0
199 } 199 }
200 - // // 保存缓存  
201 - // CacheData.saveCacheData(CacheData.compGroupInfoDataCacheKey + pageModel.pageId + pageModel.groupId, pageDto,  
202 - // pageDto.md5)  
203 } 200 }
204 } 201 }
205 202