Toggle navigation
Toggle navigation
This project
Loading...
Sign in
developOne
/
harmonyPool
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
zhangbo1_wd
2024-05-16 20:28:06 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
89df6057eea64a438387cfaa350308b587961c3a
89df6057
1 parent
d8135572
添加pageinfo、comp缓存数据,待完善流程。
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
121 additions
and
3 deletions
sight_harmony/commons/wdKit/src/main/ets/utils/KVStoreHelper.ets
sight_harmony/features/wdBean/src/main/ets/bean/component/PageDTO.ets
sight_harmony/features/wdBean/src/main/ets/bean/navigation/PageInfoDTO.ets
sight_harmony/features/wdComponent/src/main/ets/components/page/PageComponent.ets
sight_harmony/features/wdComponent/src/main/ets/viewmodel/PageHelper.ets
sight_harmony/features/wdComponent/src/main/ets/viewmodel/PageViewModel.ets
sight_harmony/commons/wdKit/src/main/ets/utils/KVStoreHelper.ets
View file @
89df605
...
...
@@ -7,6 +7,7 @@ const TAG = 'KVStoreHelper'
/**
* 键值型数据库管理类,类似sp,存储变大,单条数据,value<4M
* TODO 是否需要开线程
*/
export class KVStoreHelper {
private static _context: Context;
...
...
sight_harmony/features/wdBean/src/main/ets/bean/component/PageDTO.ets
View file @
89df605
...
...
@@ -13,4 +13,6 @@ export interface PageDTO {
compList: CompDTO[]; // Components集合的布局信息
compAdList:CompAdvBean[] // 页面广告
md5: string
}
\ No newline at end of file
...
...
sight_harmony/features/wdBean/src/main/ets/bean/navigation/PageInfoDTO.ets
View file @
89df605
...
...
@@ -41,6 +41,7 @@ export interface PageInfoDTO {
*/
pageAdList:CompAdvBean[]
md5:string
}
export interface ChannelInfoDTO {
...
...
sight_harmony/features/wdComponent/src/main/ets/components/page/PageComponent.ets
View file @
89df605
...
...
@@ -255,6 +255,7 @@ export struct PageComponent {
this.pageModel.channelId = this.channelId;
this.pageModel.currentPage = 1;
this.pageModel.pageTotalCompSize = 0;
// TODO PageHelper.getInitCacheData(this.pageModel, this.pageAdvModel)
PageHelper.getInitData(this.pageModel, this.pageAdvModel)
}, 100)
}
...
...
sight_harmony/features/wdComponent/src/main/ets/viewmodel/PageHelper.ets
View file @
89df605
...
...
@@ -13,6 +13,7 @@ import { CompAdvMatInfoBean } from 'wdBean/src/main/ets/bean/adv/CompAdvInfoBean
import { BaseDTO } from 'wdBean/src/main/ets/bean/component/BaseDTO';
import { viewBlogInsightIntentShare, ActionMode } from '../utils/InsightIntentShare'
import { common } from '@kit.AbilityKit';
import { CacheData } from 'wdNetwork/Index';
const TAG = 'PageHelper';
...
...
@@ -26,6 +27,7 @@ export class PageHelper {
async refreshUI(pageModel: PageModel, pageAdvModel: PageAdModel) {
pageModel.loadStrategy = 2
pageModel.pageTotalCompSize = 0;
// TODO 下拉刷新,是否加载缓存
this.getPageInfo(pageModel, pageAdvModel)
}
...
...
@@ -41,11 +43,71 @@ export class PageHelper {
/**
* 进页面请求数据
*/
async getInitCacheData(pageModel: PageModel, pageAdvModel: PageAdModel) {
Logger.error('zzzz','getInitCacheData')
PageViewModel.getPageInfoCache(pageModel.pageId).then(pageInfo => {
if (pageInfo == null) {
return;
}
pageModel.pageInfo = pageInfo;
//解析页面挂角广告资源
pageAdvModel.analysisAdvSource(pageInfo);
this.parseCacheGroup(pageModel)
})
}
async parseCacheGroup(pageModel: PageModel) {
Logger.error('zzzz','parseCacheGroup')
let pageInfo: PageInfoDTO = pageModel.pageInfo
pageModel.groupList = []
pageInfo.pageAdList = []
pageInfo.oneRequestPageGroupCompList = new ArrayList()
pageModel.groupList.push(...pageInfo.groups)
Logger.error("ZZZXXXXX", 'parseCacheGroup----1-----');
for (const group of pageInfo.groups) {
pageModel.groupId = group.id;
pageModel.groupData = group
Logger.error("ZZZXXXXX", '楼层id-start--》' + pageModel.groupId);
// await,确保groups接口顺序执行
let pageDto = await PageViewModel.getPageGroupCacheData(pageModel.bizCopy()) as PageDTO
let index = pageInfo.groups.indexOf(group)
if (index == 0) {
// 清空comp列表
pageModel.compList.clear()
}
this.analysisPageGroupCompData(pageModel,pageDto, pageInfo, index == pageInfo.groups.length - 1)
Logger.error("ZZZXXXXX", '楼层id-end--》' + pageModel.groupId + ' 楼层 comp数量=' + pageDto.compList.length);
}
// 收集页面所有楼层的组件信息,同步完成广告投放计算,异步完成稿件批查,
pageModel.pageTotalCompSize = pageInfo.oneRequestPageGroupCompList.length + pageModel.pageTotalCompSize
// 处理页面广告数据,投放到页面的位置
// TODO 缓存数据不加载广告
// this.handlePageCompAdvPostion(pageInfo.oneRequestPageGroupCompList, pageModel, pageInfo.pageAdList);
//遍历所有组件和稿件数据 push到页面
for (let element of pageInfo.oneRequestPageGroupCompList) {
pageModel.compList.push(CompDTO.createNewsBean(element))
}
Logger.error('zzzz', 'parseCacheGroup count: ' + pageModel.compList.totalCount())
pageModel.currentPage++
pageModel.viewType = ViewType.LOADED
closeRefresh(pageModel, true)
Logger.error("ZZZXXXXX", 'parseGroup----3----->' + pageInfo.oneRequestPageGroupCompList.length);
}
/**
* 进页面请求数据
*/
async getInitData(pageModel: PageModel, pageAdvModel: PageAdModel) {
pageModel.loadStrategy = 1
let netStatus = NetworkUtil.isNetConnected()
if (netStatus) {
this.getPageInfo(pageModel, pageAdvModel)
} else if (pageModel.compList.size() > 0) {
// 加载缓存数据了,不用无网络提示
} else {
pageModel.viewType = ViewType.EMPTY;
pageModel.emptyType = WDViewDefaultType.WDViewDefaultType_NoNetwork;
...
...
@@ -79,6 +141,10 @@ export class PageHelper {
//解析页面挂角广告资源
pageAdvModel.analysisAdvSource(pageInfo);
this.parseGroup(pageModel)
// if (pageModel.currentPage == 1) {
// // 保存缓存
// CacheData.saveCacheData(CacheData.comPageInfoCacheKey + pageModel.pageId, pageInfo, pageInfo.md5)
// }
}).catch(() => {
pageModel.viewType = ViewType.EMPTY;
pageModel.emptyType = WDViewDefaultType.WDViewDefaultType_ContentFailed;
...
...
@@ -115,6 +181,9 @@ export class PageHelper {
if (index == 0) {
// 清空comp列表
pageModel.compList.clear()
// // 保存缓存
// CacheData.saveCacheData(CacheData.compGroupInfoDataCacheKey + pageModel.pageId + pageModel.groupId, pageDto,
// pageDto.md5)
}
this.analysisPageGroupCompData(pageModel,pageDto, pageInfo, index == pageInfo.groups.length - 1)
Logger.error("ZZZXXXXX", '楼层id-end--》' + pageModel.groupId + ' 楼层 comp数量=' + pageDto.compList.length);
...
...
sight_harmony/features/wdComponent/src/main/ets/viewmodel/PageViewModel.ets
View file @
89df605
...
...
@@ -16,7 +16,7 @@ import {
import { CompStyle } from 'wdConstant/Index';
import { CollectionUtils, Logger, ResourcesUtils, StringUtils } from 'wdKit';
import { ResponseDTO, } from 'wdNetwork';
import {
CacheData,
ResponseDTO, } from 'wdNetwork';
import { PageUIReqBean } from '../components/page/bean/PageUIReqBean';
import { PageRepository } from '../repository/PageRepository';
import { BaseViewModel } from './BaseViewModel';
...
...
@@ -89,6 +89,7 @@ export class PageViewModel extends BaseViewModel {
return
}
Logger.info(TAG, "getNavData then,resDTO.timestamp:" + resDTO.timestamp);
resDTO.data.md5 = resDTO.meta?.md5 || ''
success(resDTO.data);
})
.catch((err: Error) => {
...
...
@@ -226,11 +227,13 @@ export class PageViewModel extends BaseViewModel {
async getPageInfo(pageId: string): Promise<PageInfoDTO> {
return new Promise<PageInfoDTO>((success, error) => {
PageRepository.fetchPageData(pageId).then((resDTO: ResponseDTO<PageInfoDTO>) => {
if (this.isRespondsInvalid(resDTO, 'getPageInfo')) {
error("getPageInfo data invalid");
if (!resDTO || !resDTO.data) {
Logger.error(TAG, 'getPageInfo then navResDTO is empty');
error('navResDTO is empty');
return
}
Logger.info(TAG, "getPageInfo then,resDTO.timeStamp:" + resDTO.timestamp);
resDTO.data.md5 = resDTO.meta?.md5 || ''
success(resDTO.data as PageInfoDTO);
});
});
...
...
@@ -334,6 +337,47 @@ export class PageViewModel extends BaseViewModel {
})
})
}
async getPageInfoCache(pageId: string): Promise<PageInfoDTO | null> {
return new Promise<PageInfoDTO | null>((success) => {
CacheData.getLocalCacheData(CacheData.comPageInfoCacheKey + pageId).then((data) => {
// Logger.debug(TAG, 'getPageInfoCache 333 ' + JSON.stringify(data));
if (data) {
let navBean = JSON.parse(CacheData.getNetworkData(data)) as PageInfoDTO
success(navBean)
} else {
success(null)
}
}).catch((err: object) => {
Logger.error(TAG, 'getPageInfoCache catch err: ' + JSON.stringify(err));
success(null)
})
});
}
/**
* 获取页面楼层的组件信息
* @param pageModel
* @returns
*/
async getPageGroupCacheData(pageModel: PageUIReqBean): Promise<PageDTO | null> {
Logger.debug(TAG, 'getPageData pageId: ' + pageModel.pageId);
return new Promise<PageDTO | null>((success) => {
CacheData.getLocalCacheData(CacheData.compGroupInfoDataCacheKey + pageModel.pageId + pageModel.groupId).then((data) => {
// Logger.debug(TAG, 'getPageGroupCacheData 333 ' + JSON.stringify(data));
if (data) {
let navBean = JSON.parse(CacheData.getNetworkData(data)) as PageDTO
success(navBean)
} else {
success(null)
}
}).catch((err: object) => {
Logger.error(TAG, 'getPageGroupCacheData catch err: ' + JSON.stringify(err));
success(null)
})
});
}
}
...
...
Please
register
or
login
to post a comment