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
liyubing
2024-04-25 11:09:51 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
afba7dbb50eea41f7a16a317d6b8020d7f52b0d1
afba7dbb
1 parent
f59569b2
feat(广告):添加广告中心的挂角广告投放规则
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
106 additions
and
24 deletions
sight_harmony/commons/wdConstant/src/main/ets/constants/SpConstants.ets
sight_harmony/features/wdBean/src/main/ets/bean/adv/AdvsRuleBean.ets
sight_harmony/features/wdComponent/src/main/ets/components/page/PageComponent.ets
sight_harmony/features/wdComponent/src/main/ets/viewmodel/PageAdvModel.ets
sight_harmony/features/wdComponent/src/main/ets/viewmodel/PageModel.ets
sight_harmony/commons/wdConstant/src/main/ets/constants/SpConstants.ets
View file @
afba7db
...
...
@@ -38,4 +38,7 @@ export class SpConstants{
//启动页数据存储key
static APP_LAUNCH_PAGE_DATA_MODEL = 'app_launch_page_data_model'
//频道信息流页面左右挂角
static APP_PAGE_CORNER_ADV = 'app_page_corner_adv_'
}
\ No newline at end of file
...
...
sight_harmony/features/wdBean/src/main/ets/bean/adv/AdvsRuleBean.ets
View file @
afba7db
...
...
@@ -68,14 +68,9 @@ export interface CompAdvBean {
displayPriority: number;
/**
* 展示的次数
*/
showCount: number;
/**
* 页面id
*/
pageId: String
;
pageId: String;
/**
* 开屏广告-显示时长
...
...
@@ -97,6 +92,4 @@ export interface CompAdvBean {
displayRound: number;
}
...
...
sight_harmony/features/wdComponent/src/main/ets/components/page/PageComponent.ets
View file @
afba7db
...
...
@@ -65,7 +65,6 @@ export struct PageComponent {
this.pageModel.pullDownRefreshText, this.pageModel.pullDownRefreshHeight)
})
}
LazyForEach(this.pageModel.compList, (compDTO: CompDTO, compIndex: number) => {
ListItem() {
Column() {
...
...
@@ -124,9 +123,10 @@ export struct PageComponent {
if (this.pageAdvModel.isShowAds) {
if (this.pageAdvModel.pageCornerAdv.matInfo != null) {
//
页面右边挂角
//
广告中心的挂角广告
this.drawPageCornerAdvView(1, 1 == this.pageAdvModel.isRightAdv)
} else if (this.pageAdvModel.pageCornerContentInfo.advert != null) {
// 展现中心的挂角广告业务
this.drawPageCornerAdvView(2, 1 == this.pageAdvModel.isRightAdv)
}
}
...
...
sight_harmony/features/wdComponent/src/main/ets/viewmodel/PageAdvModel.ets
View file @
afba7db
import { PageInfoDTO } from 'wdBean/Index';
import { AdvRuleBean, CompAdvBean } from 'wdBean/src/main/ets/bean/adv/AdvsRuleBean';
import { DateTimeUtils, SPHelper } from 'wdKit/Index';
import { ArrayList } from '@kit.ArkTS';
import { SpConstants } from 'wdConstant/Index';
/**
* @Description: 处理页面的广告业务
...
...
@@ -18,16 +21,11 @@ export default class PageAdModel {
// 1:右边;2:左边 -> 默认右边
pageCornerContentInfo: AdvRuleBean = {} as AdvRuleBean
// 展现中心业务信息
/**
* 解析广告资源
* @param pageInfo
*/
a
nalysisAdvSource(pageInfo: PageInfoDTO): void
{
a
sync analysisAdvSource(pageInfo: PageInfoDTO)
{
if (pageInfo.hasAdInfo === 1 && pageInfo.cornersAdv != null) {
// 优先展示展现中心广告
...
...
@@ -55,12 +53,26 @@ export default class PageAdModel {
} else if (pageInfo.cornersAdv2 != null && pageInfo.cornersAdv2.length > 0) {
// 广告中心-挂角广告信息
let cornersAdv2 = pageInfo.cornersAdv2
// 获取
let showCompAdvBean = cornersAdv2[0]
if (cornersAdv2.length == 0) {
return
}
// 加工处理广告中心的广告数据
let pageCoreAdvArray = this.treatPageInfoAdsData(cornersAdv2);
let advLength = pageCoreAdvArray.length;
let pageId = pageInfo.id.toString();
let a = 0;
if (advLength > 1) {
a = await this.calPageAdvIndex(pageId,advLength)
}
// 获取投放
let showCompAdvBean = pageCoreAdvArray.convertToArray()[a]
if (showCompAdvBean.matInfo == null) {
return
}
this.saveReleaseAdvIndex(pageId, a)
//
let slotInfo = showCompAdvBean.slotInfo;
let postion = slotInfo.position
...
...
@@ -76,4 +88,84 @@ export default class PageAdModel {
}
}
/**
* 计算投放广告的序列号
* @param pageId
* @param advLength
* @returns
*/
private async calPageAdvIndex(pageId: string , advLength: number): Promise<number>{
let index = await this.obtainReleaseAdvIndex(pageId);
let a = await index + 1;
if (a >= advLength) {
a = 0;
}
return a;
}
/**
* 获取已投放挂角广告的编号
* @param pageId
* @returns
*/
private async obtainReleaseAdvIndex(pageId: string): Promise<number> {
let index: number = await SPHelper.default.get(SpConstants.APP_PAGE_CORNER_ADV + pageId, -1) as number;
return index;
}
/**
* 存储已经投放广告的编号
* @param pageId
* @param index
*/
private async saveReleaseAdvIndex(pageId: string, index: number) {
await SPHelper.default.save(SpConstants.APP_PAGE_CORNER_ADV + pageId, index)
}
/**
* 删除数据
* @param pageId
*/
private async clearHistoryAdvIndex(pageId: string){
SPHelper.default.deleteSync(SpConstants.APP_PAGE_CORNER_ADV + pageId)
}
private checkPageCornerAdv(pageId: string): Promise<boolean> {
let haveData = SPHelper.default.has(SpConstants.APP_PAGE_CORNER_ADV + pageId)
return haveData
}
/**
* 对广告中心的广告 数据按不同维度加工 筛选出符合的数据
* @param cornersAdv2 页面的广告数据
* @param pageId 所在页面pageid
*/
private treatPageInfoAdsData(cornersAdv2: CompAdvBean[]): ArrayList<CompAdvBean> {
// 按时间维度过滤出广告数据
let compAdsArray: ArrayList<CompAdvBean> = new ArrayList();
let serverTimeLong: number = DateTimeUtils.getTimeStamp();
for (let advBean of cornersAdv2) {
let startLong = advBean.startTime;
let endLong = advBean.endTime;
if (serverTimeLong >= startLong && serverTimeLong <= endLong) {
//符合开始时间和结束时间要求
compAdsArray.add(advBean)
}
}
//按展现优先级维度 数值越小,等级越高
if (compAdsArray.length > 1) {
//B、按展现优先级维度 数值越小,等级越高
compAdsArray.sort((a: CompAdvBean, b: CompAdvBean) => a.displayPriority - b.displayPriority)
}
return compAdsArray;
}
}
\ No newline at end of file
...
...
sight_harmony/features/wdComponent/src/main/ets/viewmodel/PageModel.ets
View file @
afba7db
...
...
@@ -51,12 +51,6 @@ 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 // 展现中心业务信息
/**
* 简单复制业务数据
...
...
Please
register
or
login
to post a comment