fanmingyou3_wd

添加早晚报页面

Showing 23 changed files with 631 additions and 144 deletions
import { MorningEveningPaperComponent } from 'wdComponent';
import { Logger } from 'wdKit';
const TAG = 'MorningEveningPaperPage';
@Entry
@Component
struct MorningEveningPaperPage {
build() {
Column() {
MorningEveningPaperComponent()
}
}
pageTransition() {
// 定义页面进入时的效果,从底侧滑入
PageTransitionEnter({ type: RouteType.None, duration: 300 })
.slide(SlideEffect.Bottom)
// 定义页面退出时的效果,向底侧滑出
PageTransitionExit({ type: RouteType.None, duration: 300 })
.slide(SlideEffect.Bottom)
}
aboutToAppear() {
Logger.info(TAG, 'aboutToAppear');
}
aboutToDisappear() {
Logger.info(TAG, 'aboutToDisappear');
}
onPageShow() {
Logger.info(TAG, 'onPageShow');
}
onPageHide() {
Logger.info(TAG, 'onPageHide');
}
onBackPress() {
Logger.info(TAG, 'onBackPress');
}
}
\ No newline at end of file
... ...
... ... @@ -3,6 +3,7 @@
"pages/MainPage",
"pages/web/DefaultWebPage",
"pages/ENewspaper",
"pages/ImageAndTextDetailPage"
"pages/ImageAndTextDetailPage",
"pages/MorningEveningPaperPage"
]
}
\ No newline at end of file
... ...
... ... @@ -12,14 +12,17 @@ export { ItemBean } from './src/main/ets/bean/ItemBean';
// Content
export { ContentDTO } from './src/main/ets/bean/content/ContentDTO';
export { Action } from './src/main/ets/bean/content/Action'
export { Params } from './src/main/ets/bean/content/Params'
export { Pic } from './src/main/ets/bean/content/Pic'
export { InteractDataDTO } from './src/main/ets/bean/content/InteractDataDTO';
export { InteractParam } from './src/main/ets/bean/content/InteractParam';
export { ContentBean } from './src/main/ets/bean/content/ContentBean';
export { InteractParam, ContentBean } from './src/main/ets/bean/content/InteractParam';
export { LabelBean } from './src/main/ets/bean/component/extra/LabelBean';
export { LabelDTO } from './src/main/ets/bean/component/extra/LabelDTO';
... ... @@ -61,4 +64,8 @@ export { H5ReceiveDataJsonBean } from './src/main/ets/bean/h5/H5ReceiveDataJsonB
export { H5ReceiveDataExtraBean } from './src/main/ets/bean/h5/H5ReceiveDataExtraBean';
export { ResponseBean } from './src/main/ets/bean/h5/ResponseBean';
\ No newline at end of file
export { ResponseBean } from './src/main/ets/bean/h5/ResponseBean';
export { MorningEveningPaperDTO } from './src/main/ets/bean/component/MorningEveningPaperDTO';
export { FrontLinkObject } from './src/main/ets/bean/component/FrontLinkObject';
... ...
export interface FrontLinkObject {
coverSize: string;
coverUrl: string;
linkUrl: string;
newsId: string;
newsLevel: string;
// newsPageId?: any;
newsRelId: number;
// newsRelType?: any;
newsType: number;
publishTime: string;
source: string;
summary: string;
title: string;
}
... ...
... ... @@ -4,10 +4,10 @@ import { CompDTO } from './CompDTO';
* 组件列表的body
*/
export interface GroupDTO {
pageId: string; // 页面id
id: number; // 楼层id
name: string; // 名称
branchMark: boolean;
compList: CompDTO[]; // Components集合的布局信息
// compAdList?: any[];
blockDesc: string;
groupStrategy: number;
id: number;
// itemNum?: any;
showType: number;
sortValue: number;
}
\ No newline at end of file
... ...
import { GroupDTO } from './GroupDTO';
import { TopicInfoDTO } from './TopicInfoDTO';
export interface MorningEveningPaperDTO {
backIconUrl: string;
backgroundColor: string;
backgroundImgUrl: string;
baselineColor: string;
baselineCopywriting: string;
baselineShow: number;
// channelInfo?: any;
// cornersAdv?: any;
// cornersAdv2: any[];
description: string;
groups: GroupDTO[];
hasAdInfo: number;
hasPopUp: number;
id: number;
mainLogoImgUrl: string;
name: string;
// pageTopParams?: any;
pageTopType: number;
pageType: number;
// popUps: any[];
pushupLogoImgUrl: string;
shareCoverUrl: string;
shareIconUrl: string;
shareName: string;
shareSummary: string;
shareUrl: string;
statusBarColor: string;
templateType: number;
titleColor: string;
topicInfo: TopicInfoDTO;
}
... ...
import { FrontLinkObject } from './FrontLinkObject';
export interface TopicInfoDTO {
axisColor: string;
// channelId?: any;
commentFlag: number;
commentPreviewFlag: number;
commentShowFlag: number;
frontFlag: number;
frontLinkObject: FrontLinkObject;
posterFlag: number;
posterUrl: string;
// relId?: any;
// relObjectId?: any;
// relType?: any;
shareCoverUrl: string;
shareOpen: number;
sharePosterCoverUrl: string;
// sharePosterOpen?: any;
shareSummary: string;
shareTitle: string;
shareUrl: string;
slideColor: string;
summary: string;
title: string;
// titleShow?: any;
topicDate: string;
topicId: string;
topicPattern: number;
// topicTemplate?: any;
topicType: number;
transluceImgUrl: string;
visitorComment: number;
// voteInfo?: any;
}
\ No newline at end of file
... ...
import { FullColumnImgUrlDTO } from '../detail/FullColumnImgUrlDTO';
import { LiveInfoDTO } from '../detail/LiveInfoDTO';
import { VideoInfoDTO } from '../detail/VideoInfoDTO';
import { InteractDataDTO } from './src/main/ets/bean/content/InteractDataDTO';
import { InteractDataDTO } from './InteractDataDTO';
export interface ContentDTO {
cityCode: string;
coverSize: string;
... ...
... ... @@ -34,6 +34,8 @@ export { ENewspaperItemComponent } from "./src/main/ets/components/ENewspaperIte
export { ENewspaperListDialog } from "./src/main/ets/dialog/ENewspaperListDialog"
export { MorningEveningPaperComponent } from "./src/main/ets/components/MorningEveningPaperComponent"
export { ImageAndTextPageComponent } from "./src/main/ets/components/ImageAndTextPageComponent"
export { ImageAndTextWebComponent } from "./src/main/ets/components/ImageAndTextWebComponent"
... ...
import router from '@ohos.router'
import { FrontLinkObject, MorningEveningPaperDTO } from 'wdBean'
import { Logger } from 'wdKit';
import PageViewModel from '../viewmodel/PageViewModel';
import { PageComponent } from './page/PageComponent';
const TAG = 'MorningEveningPaperComponent';
@Entry
@Component
export struct MorningEveningPaperComponent {
@State currentTopNavSelectedIndex: number = 0;
paperPageId: string = '21549'
@State groupId: string = ''
@State message: string = 'Hello World'
@State morningEveningPaperDTO: MorningEveningPaperDTO = {
name: "新闻夜读",
topicInfo: {
frontLinkObject: {
coverSize: "599*798",
coverUrl: "https://cdnjdphoto.aikan.pdnews.cn/zhbj-20240116/image/content/9a91a96077174087852cf93c5e26acce.jpeg",
newsId: "30002086032",
newsRelId: 500000256225,
summary: "欧尔班多次明确反对欧盟此举。2023年底,匈牙利否决了欧盟对乌克兰的500亿欧元援助计划,认为欧盟不应向乌克兰提供更多资金,而应尽快结束俄乌冲突。因此,欧盟领导人在去年12月欧盟峰会上未能就该计划达成一致。欧尔班多次明确反对欧盟此举。2023年底,匈牙利否决了欧盟对乌克兰的500亿欧元援助计划,认为欧盟不应向乌克兰提供更多资金,而应尽快结束俄乌冲突。因此,欧盟领导人在去年12月欧盟峰会上未能就该计",
title: "匈牙利总理欧尔班妥协,阻碍欧盟向乌克兰援助的最后一个障碍被解"
},
title: "新闻夜读",
topicDate: "2024-01-16",
topicId: "10000002068",
}
} as MorningEveningPaperDTO
// @State morningEveningPaperDTO: MorningEveningPaperDTO = {} as MorningEveningPaperDTO
async aboutToAppear() {
console.info(TAG, `aboutToAppear`);
let paperDTO = await PageViewModel.getMorningEveningPaperData(this.paperPageId)
if (paperDTO) {
this.morningEveningPaperDTO = paperDTO;
if (paperDTO.groups && paperDTO.groups.length > 0) {
this.groupId = paperDTO.groups[0].id + ''
}
Logger.info(TAG, `aboutToAppear, paperDTO is not empty`);
}
}
build() {
Column() {
RelativeContainer() {
Image($r('app.media.icon_read_paper'))
.height($r('app.float.top_arrow_size'))
.width($r('app.float.top_arrow_size'))
.alignRules({
left: { anchor: "__container__", align: HorizontalAlign.Start },
center: { anchor: "__container__", align: VerticalAlign.Center }
})
.id('img_logo1')
Row() {
Text(this.morningEveningPaperDTO?.topicInfo?.title ?? "")
.fontSize(20)
.fontColor($r('app.color.white'))
.maxLines(1)
Text(this.morningEveningPaperDTO?.topicInfo?.topicDate ?? '')// Text('2024年\n1月16日')
.width(50)
.fontSize(12)
.fontColor($r('app.color.white'))
.maxLines(2)
Image($r('app.media.bg_event_status_end'))
.height($r('app.float.top_arrow_size'))
.width(100)
}
.alignItems(VerticalAlign.Bottom)
.alignRules({
left: { anchor: "img_logo1", align: HorizontalAlign.End },
center: { anchor: "__container__", align: VerticalAlign.Center } })
.id('row_paper_date')
Image($r('app.media.icon_close'))
.height($r('app.float.top_arrow_size'))
.width($r('app.float.top_arrow_size'))
.alignRules({
right: { anchor: "__container__", align: HorizontalAlign.End },
center: { anchor: "__container__", align: VerticalAlign.Center } })
.id('img_close')
.onClick((event: ClickEvent) => {
console.info(TAG, "img_close")
router.back()
})
Image($r('app.media.icon_share'))
.height($r('app.float.top_arrow_size'))
.width($r('app.float.top_arrow_size'))
.alignRules({
right: { anchor: "img_close", align: HorizontalAlign.Start },
center: { anchor: "__container__", align: VerticalAlign.Center } })
.id('img_share')
}
.margin({ left: $r('app.float.margin_16'), right: $r('app.float.margin_16') })
.height($r('app.float.top_bar_height'))
.backgroundColor(Color.Black)
List() {
ListItem() {
this.buildTopicInfoView(this.morningEveningPaperDTO?.topicInfo?.frontLinkObject)
}
ListItem() {
Row() {
Row() {
Image($r('app.media.icon_listen'))
.width(24)
.height(24)
.margin({ left: 10 })
Text('晚上好, 请收听今日新闻播报')
.fontSize(14)
.margin({ left: 10 })
.fontColor(Color.Black)
.maxLines(1)
.textOverflow({ overflow: TextOverflow.Ellipsis })
}
.width('72%')
.height(56)
.backgroundImage($r('app.media.listen_left_bg'))
Row() {
Image($r('app.media.ic_red_triangle'))
.width(30)
.height(30)
.margin({ left: 15 })
.objectFit(ImageFit.Contain)
}
.justifyContent(FlexAlign.Center)
// .width(94)
.width('28%')
// .aspectRatio(7 / 4)
.height(56)
.backgroundImage($r('app.media.listen_right_bg'))
}
.width('100%')
.height(56)
.justifyContent(FlexAlign.SpaceBetween)
// .backgroundColor(Color.Red)
}
ListItem() {
PageComponent({
currentTopNavSelectedIndex: $currentTopNavSelectedIndex,
navIndex: 0,
pageId: '31320', //this.groupId,
channelId: ''
})
}
}
// .backgroundColor('#FFF1F3F5')
// .backgroundColor(Color.Blue)
.margin({ left: 14, right: 14 })
// .alignListItem(ListItemAlign.Center)
}.width('100%')
// Row() {
// Column() {
// Text(this.message)
// .fontSize(50)
// .fontWeight(FontWeight.Bold)
// }
// .width('100%')
// }
// .height('100%')
}
/**
* 布局描述
*
* @param FrontLinkObject item 组件项
* @param index
*/
@Builder
buildTopicInfoView(item: FrontLinkObject) {
RelativeContainer() {
Image(item?.coverUrl)
.width("100%")
.height("100%")
.alignRules({
top: { anchor: '__container__', align: VerticalAlign.Top },
left: { anchor: '__container__', align: HorizontalAlign.Start }
})
.id('img_cover')
Row() {
Text("查看详情")
.fontSize(20)
.fontColor($r('app.color.white'))
.maxLines(1)
Image($r('app.media.more'))
.height($r('app.float.top_arrow_size'))
.width(20)
}
.margin({ top: 10 })
// .backgroundColor(Color.Red)
.alignRules({
left: { anchor: "__container__", align: HorizontalAlign.Start },
bottom: { anchor: "__container__", align: VerticalAlign.Bottom }
})
.id('row_detail')
Text(item?.summary ?? "")
.margin({ top: 10 })
.fontSize(13)
.fontColor($r('app.color.white'))
.maxLines(3)
.textOverflow({ overflow: TextOverflow.Ellipsis })
.alignRules({
left: { anchor: "__container__", align: HorizontalAlign.Start },
bottom: { anchor: "row_detail", align: VerticalAlign.Top }
})
.id('txt_summary')
Text(item?.title ?? "")
.fontSize(23)
.fontColor($r('app.color.white'))
.maxLines(2)
.alignRules({
left: { anchor: "__container__", align: HorizontalAlign.Start },
bottom: { anchor: "txt_summary", align: VerticalAlign.Top }
})
.id('txt_title')
}
.width("100%")
.aspectRatio(3 / 4)
// .aspectRatio(1)
// .backgroundColor(Color.Orange)
// .hoverEffect(HoverEffect.Scale)
.onClick((event: ClickEvent) => {
console.info(TAG, `buildTopicInfoView onClick event`);
// let taskAction: Action = {
// type: 'JUMP_H5_BY_WEB_VIEW',
// params: {
// url: ConfigConstants.DETAIL_URL
// } as Params,
// };
// WDRouterRule.jumpWithAction(taskAction)
// let taskAction: Action = {
// type: 'JUMP_DETAIL_PAGE',
// params: {
// detailPageType: 7, // 沉浸式竖屏详情页
// contentID: '863556812'
// } as Params,
// };
// WDRouterRule.jumpWithAction(taskAction)
})
}
}
\ No newline at end of file
... ...
... ... @@ -30,6 +30,14 @@ export struct TopNavigationComponent {
} as Params,
};
WDRouterRule.jumpWithAction(taskAction)
// let taskAction: Action = {
// type: 'JUMP_INNER_NEW_PAGE',
// params: {
// pageID: 'MorningEveningPaper'
// } as Params,
// };
// WDRouterRule.jumpWithAction(taskAction)
})
Tabs() {
ForEach(this.topNavList, (navItem: TopNavDTO, index: number) => {
... ...
import HashMap from '@ohos.util.HashMap';
import { HttpUrlUtils, ResponseDTO, WDHttp } from 'wdNetwork';
import { DateTimeUtils } from 'wdKit';
import { ContentDetailDTO, NavigationBodyDTO, PageDTO,InteractDataDTO } from 'wdBean';
import { ContentDetailDTO, NavigationBodyDTO, PageDTO,InteractDataDTO, MorningEveningPaperDTO } from 'wdBean';
export class PageRepository {
static getBottomNavGroupUrl() {
... ... @@ -9,6 +9,19 @@ export class PageRepository {
return HttpUrlUtils.getHost() + HttpUrlUtils.BOTTOM_NAV_PATH;
}
static getPageInfoUrl(pageId: string) {
let url = HttpUrlUtils.getHost() + HttpUrlUtils.PAGE_INFO_PATH;
// TODO 暂定只请求第一页,后续对接分页加载,参数再调整 first_load?
url = url + "?channelStrategy=2&loadStrategy=first_load"
+ "&districtCode=" + HttpUrlUtils.getDistrictCode()
+ "&provinceCode=" + HttpUrlUtils.getProvinceCode()
+ "&cityCode=" + HttpUrlUtils.getCityCode()
+ "&refreshTime=" + DateTimeUtils.getTimeStamp()
+ "&pageId=" + pageId
// Logger.debug("TAG", 'getCompInfoUrl url: '+url);
return url;
}
static getCompInfoUrl(pageId: string, groupId: string, channelId: string, currentPage: number, pageSize: number) {
let url = HttpUrlUtils.getHost() + HttpUrlUtils.COMP_PATH;
// TODO 暂定只请求第一页,后续对接分页加载,参数再调整 first_load?
... ... @@ -36,7 +49,7 @@ export class PageRepository {
}
static getInteractDataUrl() {
let url = HttpUrlUtils.getHost() + this.INTERACT_DATA_PATH;
let url = HttpUrlUtils.getHost() + HttpUrlUtils.INTERACT_DATA_PATH;
return url;
}
... ... @@ -46,6 +59,21 @@ export class PageRepository {
return WDHttp.get<ResponseDTO<NavigationBodyDTO>>(url, headers)
};
/**
* 获取早晚报数据
* @param pageId
* @param groupId
* @param channelId
* @param currentPage
* @param pageSize
* @returns
*/
static fetchMorningEveningPaperData(pageId: string) {
let url = PageRepository.getPageInfoUrl(pageId)
let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders();
return WDHttp.get<ResponseDTO<MorningEveningPaperDTO>>(url, headers)
};
static fetchPageData(pageId: string, groupId: string, channelId: string, currentPage: number, pageSize: number) {
let url = PageRepository.getCompInfoUrl(pageId, groupId, channelId, currentPage, pageSize)
let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders();
... ... @@ -59,7 +87,7 @@ export class PageRepository {
};
static fetchInteractData(param: object) {
let url = HttpUrlUtils.getInteractDataUrl()
let url = PageRepository.getInteractDataUrl()
let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders();
return WDHttp.post<ResponseDTO<InteractDataDTO[]>>(url, param, headers)
};
... ...
import { NavigationBodyDTO, PageDTO,InteractDataDTO,ContentBean, InteractParam,CompDTO } from 'wdBean';
import { NavigationBodyDTO, PageDTO,InteractDataDTO,ContentBean, InteractParam,CompDTO,
MorningEveningPaperDTO } from 'wdBean';
import { CollectionUtils, Logger, ResourcesUtils, StringUtils } from 'wdKit';
import { ResponseDTO, } from 'wdNetwork';
import { PageRepository } from '../repository/PageRepository';
... ... @@ -14,7 +15,7 @@ const mock_switch = false;
* 互动数据获取开关开关,默认开。
* TODO 后续需要优化掉,变为二次请求异步刷新
*/
const interact_sync_switch = true;
const interact_sync_switch = false;
/**
* 处理返回后的数据
*/
... ... @@ -91,11 +92,48 @@ export class PageViewModel extends BaseViewModel {
}
/**
* Get Group data.
*
* @return {GroupDTO} compRes.data
* @deprecated
* 获取【早晚报】数据
*/
async getMorningEveningPaperData(pageId: string): Promise<MorningEveningPaperDTO> {
Logger.debug(TAG, 'getPageData pageId: ' + pageId);
// if (mock_switch) {
// return this.getPageData3(currentPage, context);
// }
return new Promise<MorningEveningPaperDTO>((success, error) => {
PageRepository.fetchMorningEveningPaperData(pageId)
.then((resDTO: ResponseDTO<MorningEveningPaperDTO>) => {
if (!resDTO || !resDTO.data) {
Logger.error(TAG, 'getNavData then resDTO is empty');
error('resDTO is empty');
return
}
if (resDTO.code != 0) {
Logger.error(TAG, `getNavData then code:${resDTO.code}, message:${resDTO.message}`);
error('resDTO Response Code is failure');
return
}
Logger.info(TAG, "getNavData then,resDTO.timestamp:" + resDTO.timestamp);
if (!interact_sync_switch) {
success(resDTO.data);
return;
}
// TODO 打开同步请求互动数据,待优化为异步加载
// if (CollectionUtils.isEmpty(resDTO.data.compList)) {
// success(resDTO.data);
// } else {
// this.getInteractData(resDTO.data.compList).then(() => {
// success(resDTO.data);
// })
// }
})
.catch((err: Error) => {
Logger.error(TAG, `getPageData catch, error.name : ${err.name}, error.message:${err.message}`);
error(err);
})
})
}
private async getPageData2(context: Context): Promise<PageDTO> {
let compRes: ResponseDTO<PageDTO> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<PageDTO>>(context, 'comp_list2.json');
if (!compRes || !compRes.data) {
... ... @@ -132,13 +170,13 @@ export class PageViewModel extends BaseViewModel {
return;
}
// TODO 打开同步请求互动数据,待优化为异步加载
if (CollectionUtils.isEmpty(resDTO.data.compList)) {
success(resDTO.data);
} else {
this.getInteractData(resDTO.data.compList).then(() => {
success(resDTO.data);
})
}
// if (CollectionUtils.isEmpty(resDTO.data.compList)) {
// success(resDTO.data);
// } else {
// this.getInteractData(resDTO.data.compList).then(() => {
// success(resDTO.data);
// })
// }
})
.catch((err: Error) => {
Logger.error(TAG, `getPageData catch, error.name : ${err.name}, error.message:${err.message}`);
... ... @@ -147,121 +185,120 @@ export class PageViewModel extends BaseViewModel {
})
}
async getInteractData(compList: CompDTO[]) {
let param: InteractParam = this.getInteractParams(compList);
const SIZE = 20;
// 批查接口,参数size限制20,这里截断分批查询,0,20;20,40...
let count = Math.ceil(param.contentList.length / SIZE);
let promises = new Array;
if (count == 1) {
let promise: Promise<InteractDataDTO[]> = this.createInteractDataPromise(param);
promises.push(promise);
} else {
for (let i = 1;i <= count; i++) {
// 将查询参数截断(参数限制20个),分批请求接口
let subList = new Array<ContentBean>();
let start = 0;
let end = 0;
if (i == count) {
start = (i - 1) * SIZE;
end = param.contentList.length;
subList = CollectionUtils.getSubElements(param.contentList, start, end)
} else {
start = (i - 1) * SIZE;
end = start + SIZE;
subList = CollectionUtils.getSubElements(param.contentList, start, end)
}
let subParam: InteractParam = {} as InteractParam;
subParam.contentList = subList;
let promise: Promise<InteractDataDTO[]> = this.createInteractDataPromise(subParam);
promises.push(promise);
}
}
return new Promise<CompDTO[]>((success, error) => {
Promise.all(promises).then((result) => {
if (!CollectionUtils.isArray(result)) {
success(compList);
return;
}
let allInteractDataList = new Array();
result.forEach((value: InteractDataDTO[]) => {
if (value != null && value.length > 0) {
allInteractDataList.push(...value);
}
})
// 批查全部完成,统一设置到comp里
this.resetInteract(allInteractDataList, compList);
success(compList);
})
})
}
private createInteractDataPromise(param: InteractParam) {
return new Promise<InteractDataDTO[]>((success, error) => {
PageRepository.fetchInteractData(param).then((resDTO: ResponseDTO<InteractDataDTO[]>) => {
if (this.isRespondsInvalid(resDTO, 'getInteractData')) {
Logger.info(TAG, "getInteractData then,resDTO.timeStamp:" + resDTO.timestamp);
success(null);
return;
}
success(resDTO.data);
}).catch((err: Error) => {
Logger.error(TAG, `getInteractData catch, error.name : ${err.name}, error.message:${err.message}`);
// 无论是否成功(暂不做重试),都回调结果,通知刷新数据
success(null);
})
});
}
private resetInteract(interact: InteractDataDTO[], compList: CompDTO[]) {
if (interact == null || interact.length == 0) {
return
}
interact.forEach((interactData) => {
let id = interactData.contentId;
outer: for (let i = 0;i < compList.length; i++) {
let comp = compList[i];
if (comp == null || comp.operDataList == null || comp.operDataList.length == 0) {
continue;
}
for (let j = 0;j < comp.operDataList.length; j++) {
let content = comp.operDataList[j];
if (content == null) {
continue;
}
if (id == content.objectId) {
content.interactData = interactData;
break outer;
}
}
}
})
}
private getInteractParams(compList: CompDTO[]): InteractParam {
if (compList == null || compList.length == 0) {
return null;
}
let param: InteractParam = {} as InteractParam;
param.contentList = new Array<ContentBean>();
compList.forEach((value) => {
let contentList = value.operDataList;
if (contentList != null && contentList.length > 0) {
contentList.forEach((v) => {
if (StringUtils.isNotEmpty(v.objectId)) {
let bean = {} as ContentBean;
bean.contentId = v.objectId;
bean.contentType = v.objectType;
param.contentList.push(bean);
}
})
}
})
return param;
}
// async getInteractData(compList: CompDTO[]) {
// let param: InteractParam = this.getInteractParams(compList);
// const SIZE = 20;
// // 批查接口,参数size限制20,这里截断分批查询,0,20;20,40...
// let count = Math.ceil(param.contentList.length / SIZE);
// if (count == 1) {
// let promise: Promise<InteractDataDTO[]> = this.createInteractDataPromise(param);
// promises.push(promise);
// } else {
// for (let i = 1;i <= count; i++) {
// // 将查询参数截断(参数限制20个),分批请求接口
// let subList = new Array<ContentBean>();
// let start = 0;
// let end = 0;
// if (i == count) {
// start = (i - 1) * SIZE;
// end = param.contentList.length;
// subList = CollectionUtils.getSubElements(param.contentList, start, end)
// } else {
// start = (i - 1) * SIZE;
// end = start + SIZE;
// subList = CollectionUtils.getSubElements(param.contentList, start, end)
// }
// let subParam: InteractParam = {} as InteractParam;
// subParam.contentList = subList;
// let promise: Promise<InteractDataDTO[]> = this.createInteractDataPromise(subParam);
// promises.push(promise);
// }
// }
//
// return new Promise<CompDTO[]>((success, error) => {
// Promise.all(promises).then((result) => {
// if (!CollectionUtils.isArray(result)) {
// success(compList);
// return;
// }
//
// let allInteractDataList = new Array();
// result.forEach((value: InteractDataDTO[]) => {
// if (value != null && value.length > 0) {
// allInteractDataList.push(...value);
// }
// })
// // 批查全部完成,统一设置到comp里
// this.resetInteract(allInteractDataList, compList);
// success(compList);
// })
// })
// }
//
// private createInteractDataPromise(param: InteractParam) {
// return new Promise<InteractDataDTO[]>((success, error) => {
// PageRepository.fetchInteractData(param).then((resDTO: ResponseDTO<InteractDataDTO[]>) => {
// if (this.isRespondsInvalid(resDTO, 'getInteractData')) {
// Logger.info(TAG, "getInteractData then,resDTO.timeStamp:" + resDTO.timestamp);
// success(null);
// return;
// }
// success(resDTO.data);
// }).catch((err: Error) => {
// Logger.error(TAG, `getInteractData catch, error.name : ${err.name}, error.message:${err.message}`);
// // 无论是否成功(暂不做重试),都回调结果,通知刷新数据
// success(null);
// })
// });
// }
//
// private resetInteract(interact: InteractDataDTO[], compList: CompDTO[]) {
// if (interact == null || interact.length == 0) {
// return
// }
// interact.forEach((interactData) => {
// let id = interactData.contentId;
// outer: for (let i = 0;i < compList.length; i++) {
// let comp = compList[i];
// if (comp == null || comp.operDataList == null || comp.operDataList.length == 0) {
// continue;
// }
// for (let j = 0;j < comp.operDataList.length; j++) {
// let content = comp.operDataList[j];
// if (content == null) {
// continue;
// }
// if (id == content.objectId) {
// content.interactData = interactData;
// break outer;
// }
// }
// }
// })
// }
//
// private getInteractParams(compList: CompDTO[]): InteractParam {
// if (compList == null || compList.length == 0) {
// return null;
// }
//
// let param: InteractParam = {} as InteractParam;
// param.contentList = new Array<ContentBean>();
// compList.forEach((value) => {
// let contentList = value.operDataList;
// if (contentList != null && contentList.length > 0) {
// contentList.forEach((v) => {
// if (StringUtils.isNotEmpty(v.objectId)) {
// let bean = {} as ContentBean;
// bean.contentId = v.objectId;
// bean.contentType = v.objectType;
// param.contentList.push(bean);
// }
// })
// }
// })
// return param;
// }
}
... ...
{
"src": [
"components/MorningEveningPaperComponent"
]
}
... ...
... ... @@ -63,7 +63,7 @@ export class HttpRequest {
return service.post(url, data, config)
}
static post<T = any>(url: string, data1?: any, headers?: HashMap<string, string>): Promise<T> {
static post<T = object>(url: string, data1?: object, headers?: HashMap<string, string>): Promise<T> {
let requestHeaders: AxiosHeaders = new AxiosHeaders()
headers?.forEach((v, k) => {
requestHeaders.set(k, v);
... ...
... ... @@ -26,6 +26,11 @@ export class HttpUrlUtils {
* 启动接口(底导接口)
*/
static readonly BOTTOM_NAV_PATH: string = "/api/rmrb-bff-display-zh/display/zh/c/bottomNavGroup";
/**
* 展现pageInfo接口
*/
static readonly PAGE_INFO_PATH: string = "/api/rmrb-bff-display-zh/display/zh/c/pageInfo";
/**
* 展现comp接口
*/
... ... @@ -58,7 +63,7 @@ export class HttpUrlUtils {
//headers.set('X-Ca-Stage', 'PRE')
headers.set('versionCode', HttpUrlUtils.getVersionCode())
headers.set('system', HttpUrlUtils.getTerminalId())
headers.set('version_name', this.getVersionName())
headers.set('version_name', HttpUrlUtils.getVersionName())
headers.set('EagleEye-TraceID', 'D539562E48554A60977AF4BECB6D6C7A')
headers.set('imei', HttpUrlUtils.getImei())
headers.set('Accept-Language', 'zh')
... ...
... ... @@ -65,6 +65,8 @@ export function registerRouter() {
Action2Page.register("JUMP_INNER_NEW_PAGE", (action) => {
if (action.params?.pageID == "E_NEWSPAPER") {
return WDRouterPage.eNewspaper
} else if (action.params?.pageID == "MorningEveningPaper"){
return WDRouterPage.morningEveningPaperPage
} else if (action.params?.pageID == "IMAGE_TEXT_DETAIL"){
return WDRouterPage.imageTextDetailPage
}
... ...
... ... @@ -22,6 +22,8 @@ export class WDRouterPage {
static defaultWebPage = new WDRouterPage("entry", "ets/pages/web/DefaultWebPage");
// 电子报页面
static eNewspaper = new WDRouterPage("entry", "ets/pages/ENewspaper")
// 早晚报页面
static morningEveningPaperPage = new WDRouterPage("entry", "ets/pages/MorningEveningPaperPage")
// 图文详情页
static imageTextDetailPage = new WDRouterPage("entry", "ets/pages/ImageAndTextDetailPage");
// 短视频详情页
... ...