liyubing

feat(广告):创建页面广角广告模型

... ... @@ -15,12 +15,14 @@ import { CompDTO } from 'wdBean';
import PageHelper from '../../viewmodel/PageHelper';
import { channelSkeleton } from '../skeleton/channelSkeleton'
import { ProcessUtils } from 'wdRouter/Index';
import PageAdModel from '../../viewmodel/PageAdvModel';
const TAG = 'PageComponent';
@Component
export struct PageComponent {
@State private pageModel: PageModel = new PageModel();
@State private pageAdvModel: PageAdModel = new PageAdModel();
navIndex: number = 0;
pageId: string = "";
channelId: string = "";
... ... @@ -44,7 +46,7 @@ export struct PageComponent {
.onTouch((event: TouchEvent | undefined) => {
if (event) {
if (this.pageModel.viewType === ViewType.LOADED) {
listTouchEvent(this.pageModel, event);
listTouchEvent(this.pageModel, this.pageAdvModel, event);
}
}
})
... ... @@ -120,12 +122,12 @@ export struct PageComponent {
@Builder
pageHornAd() {
if (this.pageModel.isShowAds) {
if (this.pageModel.pageCornerAdv.matInfo != null) {
if (this.pageAdvModel.isShowAds) {
if (this.pageAdvModel.pageCornerAdv.matInfo != null) {
// 页面右边挂角
this.drawPageCornerAdvView(1, 1 == this.pageModel.isRightAdv)
} else if (this.pageModel.pageCornerContentInfo.advert != null) {
this.drawPageCornerAdvView(2, 1 == this.pageModel.isRightAdv)
this.drawPageCornerAdvView(1, 1 == this.pageAdvModel.isRightAdv)
} else if (this.pageAdvModel.pageCornerContentInfo.advert != null) {
this.drawPageCornerAdvView(2, 1 == this.pageAdvModel.isRightAdv)
}
}
... ... @@ -140,8 +142,8 @@ export struct PageComponent {
@Builder
drawPageCornerAdvView(type: number, isRightCorne: boolean) {
// 页面左挂角
Image(type === 1 ? this.pageModel.pageCornerAdv.matInfo.matImageUrl[0]
: this.pageModel.pageCornerContentInfo.advert.displayUrl)
Image(type === 1 ? this.pageAdvModel.pageCornerAdv.matInfo.matImageUrl[0]
: this.pageAdvModel.pageCornerContentInfo.advert.displayUrl)
.width($r('app.float.vp_80'))
.height($r('app.float.vp_80'))
.id("left_iv")
... ... @@ -159,10 +161,10 @@ export struct PageComponent {
.onClick(() => {
if (type === 1) {
// 广告业务跳转
ProcessUtils.openAdvDetail(this.pageModel.pageCornerAdv.matInfo);
ProcessUtils.openAdvDetail(this.pageAdvModel.pageCornerAdv.matInfo);
} else {
// 展现中心的业务跳转
ProcessUtils.advJumpMainPage(this.pageModel.pageCornerContentInfo.advert)
ProcessUtils.advJumpMainPage(this.pageAdvModel.pageCornerContentInfo.advert)
}
})
// 关闭按钮
... ... @@ -180,7 +182,7 @@ export struct PageComponent {
})
.onClick(() => {
// 关闭挂角广告
this.pageModel.isShowAds = false;
this.pageAdvModel.isShowAds = false;
})
... ... @@ -228,7 +230,7 @@ export struct PageComponent {
this.pageModel.groupId = this.pageId;
this.pageModel.channelId = this.channelId;
this.pageModel.currentPage = 1;
PageHelper.getInitData(this.pageModel)
PageHelper.getInitData(this.pageModel, this.pageAdvModel)
// let pageInfo = await PageViewModel.getPageInfo(this.pageModel.pageId);
// if (pageInfo == null) {
// this.pageModel.viewType = ViewType.EMPTY;
... ...
... ... @@ -6,8 +6,9 @@ import PageModel from '../viewmodel/PageModel';
import PageViewModel from '../viewmodel/PageViewModel';
import { DateTimeUtils } from 'wdKit';
import PageHelper from '../viewmodel/PageHelper';
import PageAdModel from '../viewmodel/PageAdvModel';
export function listTouchEvent(pageModel: PageModel, event: TouchEvent) {
export function listTouchEvent(pageModel: PageModel,pageAdvModel:PageAdModel, event: TouchEvent) {
switch (event.type) {
case TouchType.Down:
pageModel.downY = event.touches[0].y;
... ... @@ -35,7 +36,7 @@ export function listTouchEvent(pageModel: PageModel, event: TouchEvent) {
}
if ((pageModel.isPullRefreshOperation === true)) {
// Lift your finger and pull down to refresh.
touchUpPullRefresh(pageModel);
touchUpPullRefresh(pageModel,pageAdvModel);
} else {
// Fingers up, handle loading more.
touchUpLoadMore(pageModel);
... ... @@ -65,14 +66,15 @@ export function touchMovePullRefresh(pageModel: PageModel, event: TouchEvent) {
}
}
export function touchUpPullRefresh(pageModel: PageModel) {
export function touchUpPullRefresh(pageModel: PageModel,pageAdvModel:PageAdModel) {
if (pageModel.isCanRefresh === true) {
pageModel.offsetY = vp2px(pageModel.pullDownRefreshHeight);
pullRefreshState(pageModel, RefreshState.Refreshing);
pageModel.currentPage = 1;
setTimeout(() => {
let self: PageModel = pageModel;
PageHelper.refreshUI(self)
let advSelf: PageAdModel = pageAdvModel;
PageHelper.refreshUI(self,advSelf)
// PageViewModel.getPageData(self.bizCopy(2))
// .then((data: PageDTO) => {
// self.timestamp = DateTimeUtils.getTimeStamp().toString()
... ...
import { PageInfoDTO } from 'wdBean/Index';
import { AdvRuleBean, CompAdvBean } from 'wdBean/src/main/ets/bean/adv/AdvsRuleBean';
/**
* @Description: 处理页面的广告业务
* @Author: lyb
* @Email: liyubing@wondertek.com.cn
* @CreateDate:
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
export default class PageAdModel {
//左右挂角广告对象
pageCornerAdv: CompAdvBean = {} as CompAdvBean
// 挂角广告
isShowAds: boolean = false;
isRightAdv: number = 1;
// 1:右边;2:左边 -> 默认右边
pageCornerContentInfo: AdvRuleBean = {} as AdvRuleBean
// 展现中心业务信息
/**
* 解析广告资源
* @param pageInfo
*/
analysisAdvSource(pageInfo: PageInfoDTO): void {
if (pageInfo.hasAdInfo === 1 && pageInfo.cornersAdv != null) {
// 优先展示展现中心广告
let cornersAdv = pageInfo.cornersAdv
if (cornersAdv == null) {
return
}
if (cornersAdv.advert == null) {
return
}
if ("left_down" == cornersAdv.pos) {
// 左边挂角广告
this.isRightAdv = 2
} else {
// 右边挂角广告
this.isRightAdv = 1
}
this.pageCornerContentInfo = cornersAdv;
this.isShowAds = true
} else if (pageInfo.cornersAdv2 != null && pageInfo.cornersAdv2.length > 0) {
// 广告中心-挂角广告信息
let cornersAdv2 = pageInfo.cornersAdv2
// 获取
let showCompAdvBean = cornersAdv2[0]
if (showCompAdvBean.matInfo == null) {
return
}
//
let slotInfo = showCompAdvBean.slotInfo;
let postion = slotInfo.position
if (postion == 0) {
//左边挂角
this.isRightAdv = 2
} else {
// 右边挂角
this.isRightAdv = 1
}
this.pageCornerAdv = showCompAdvBean
this.isShowAds = true
}
}
}
\ No newline at end of file
... ...
... ... @@ -6,6 +6,7 @@ import PageModel from './PageModel';
import PageViewModel from './PageViewModel';
import { promptAction } from '@kit.ArkUI';
import { AdvRuleBean } from 'wdBean/src/main/ets/bean/adv/AdvsRuleBean';
import PageAdModel from './PageAdvModel';
const TAG = 'PageHelper';
... ... @@ -13,12 +14,14 @@ const TAG = 'PageHelper';
* 处理返回后的数据
*/
export class PageHelper {
/**
* 刷新数据
*/
async refreshUI(pageModel: PageModel) {
async refreshUI(pageModel: PageModel,pageAdvModel:PageAdModel) {
pageModel.loadStrategy = 2
this.getPageInfo(pageModel)
this.getPageInfo(pageModel,pageAdvModel)
}
/**
... ... @@ -33,12 +36,12 @@ export class PageHelper {
/**
* 进页面请求数据
*/
async getInitData(pageModel: PageModel) {
async getInitData(pageModel: PageModel,pageAdvModel:PageAdModel) {
pageModel.loadStrategy = 1
this.getPageInfo(pageModel)
this.getPageInfo(pageModel,pageAdvModel)
}
async getPageInfo(pageModel: PageModel) {
async getPageInfo(pageModel: PageModel,pageAdvModel:PageAdModel) {
pageModel.currentPage = 1;
let pageInfo = await PageViewModel.getPageInfo(pageModel.pageId);
if (pageInfo == null) {
... ... @@ -47,67 +50,12 @@ export class PageHelper {
}
pageModel.pageInfo = pageInfo;
//解析广告资源
this.analysisAdvSource(pageModel);
pageAdvModel.analysisAdvSource(pageInfo)
this.parseGroup(pageModel)
}
/**
* 解析广告资源
* @param pageInfo
*/
analysisAdvSource(pageModel: PageModel) {
let pageInfo = pageModel.pageInfo
if (pageInfo.hasAdInfo === 1 && pageInfo.cornersAdv != null) {
// 优先展示展现中心广告
let cornersAdv = pageInfo.cornersAdv
if (cornersAdv == null) {
return
}
if (cornersAdv.advert == null) {
return
}
if ("left_down" == cornersAdv.pos) {
// 左边挂角广告
pageModel.isRightAdv = 2
} else {
// 右边挂角广告
pageModel.isRightAdv = 1
}
pageModel.pageCornerContentInfo = cornersAdv;
pageModel.isShowAds = true
} else if (pageInfo.cornersAdv2 != null && pageInfo.cornersAdv2.length > 0) {
// 广告中心-挂角广告信息
let cornersAdv2 = pageInfo.cornersAdv2
// 获取
let showCompAdvBean = cornersAdv2[0]
if (showCompAdvBean.matInfo == null) {
return
}
//
let slotInfo = showCompAdvBean.slotInfo;
let postion = slotInfo.position
if (postion == 0) {
//左边挂角
pageModel.isRightAdv = 2
} else {
// 右边挂角
pageModel.isRightAdv = 1
}
pageModel.pageCornerAdv = showCompAdvBean
pageModel.isShowAds = true
}
}
async parseGroup(pageModel: PageModel) {
... ...
... ... @@ -51,11 +51,11 @@ export default class PageModel {
// keyGenerator相关字符串,用于刷新list布局
timestamp: String = '1';
//左右挂角广告对象
pageCornerAdv:CompAdvBean = {} as CompAdvBean // 挂角广告
isShowAds : boolean = false;
isRightAdv : number = 1;// 1:右边;2:左边 -> 默认右边
pageCornerContentInfo:AdvRuleBean = {} as AdvRuleBean // 展现中心业务信息
// //左右挂角广告对象
// pageCornerAdv:CompAdvBean = {} as CompAdvBean // 挂角广告
// isShowAds : boolean = false;
// isRightAdv : number = 1;// 1:右边;2:左边 -> 默认右边
// pageCornerContentInfo:AdvRuleBean = {} as AdvRuleBean // 展现中心业务信息
/**
... ...