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-29 16:47:02 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
d5cb9ceea3dd11f39cd8cc12ae9ceb53ec50a568
d5cb9cee
1 parent
149ce3dc
feat(广告): 冠名广告、视频广告、长通栏广告 和 顶部长通栏广告 大图卡 投放逻辑
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
123 additions
and
30 deletions
sight_harmony/commons/wdConstant/src/main/ets/constants/ContentConstants.ets
sight_harmony/commons/wdRouter/src/main/ets/utils/ProcessUtils.ets
sight_harmony/features/wdBean/src/main/ets/bean/content/ContentDTO.ets
sight_harmony/features/wdComponent/src/main/ets/components/cardCommon/CardMediaInfo.ets
sight_harmony/features/wdComponent/src/main/ets/components/cardViewAdv/CardAdvBigImageComponent.ets
sight_harmony/features/wdComponent/src/main/ets/components/cardViewAdv/CardAdvGanMiComponent.ets
sight_harmony/features/wdComponent/src/main/ets/components/cardViewAdv/CardAdvLongImageComponent.ets
sight_harmony/features/wdComponent/src/main/ets/components/cardViewAdv/CardAdvSmallImageComponent.ets
sight_harmony/features/wdComponent/src/main/ets/components/cardViewAdv/CardAdvThreeImageComponent.ets
sight_harmony/features/wdComponent/src/main/ets/components/cardViewAdv/CardAdvVideoComponent.ets
sight_harmony/features/wdComponent/src/main/ets/components/cardViewAdv/CardAdvVideoExComponent.ets
sight_harmony/features/wdComponent/src/main/ets/components/compview/ZhCarouselLayout01.ets
sight_harmony/features/wdComponent/src/main/ets/components/page/PageComponent.ets
sight_harmony/features/wdComponent/src/main/ets/components/search/SearchResultContentComponent.ets
sight_harmony/features/wdComponent/src/main/ets/viewmodel/PageHelper.ets
sight_harmony/features/wdComponent/src/main/ets/viewmodel/PageModel.ets
sight_harmony/commons/wdConstant/src/main/ets/constants/ContentConstants.ets
View file @
d5cb9ce
...
...
@@ -12,6 +12,8 @@ export class ContentConstants {
* 2:直播
*/
static readonly TYPE_LIVE: string = "2";
static readonly TYPE_FOUR: string = "4";
/**
* 5:专题详情
*/
...
...
sight_harmony/commons/wdRouter/src/main/ets/utils/ProcessUtils.ets
View file @
d5cb9ce
...
...
@@ -100,6 +100,9 @@ export class ProcessUtils {
case ContentConstants.TYPE_LIVE:
ProcessUtils.gotoLive(content)
break
case ContentConstants.TYPE_FOUR:
ProcessUtils.gotoDefaultWeb(content);
break
case ContentConstants.TYPE_AUDIO:
ProcessUtils.gotoAudio(content)
break;
...
...
sight_harmony/features/wdBean/src/main/ets/bean/content/ContentDTO.ets
View file @
d5cb9ce
...
...
@@ -80,4 +80,6 @@ export interface ContentDTO {
commentInfo?: commentInfo
//底部导航栏 id(用于频道跳转)
bottomNavId:string;
// 链接类型: 0:无链接;1:内链(文章);2:外链
openType:string
}
\ No newline at end of file
...
...
sight_harmony/features/wdComponent/src/main/ets/components/cardCommon/CardMediaInfo.ets
View file @
d5cb9ce
...
...
@@ -21,7 +21,7 @@ export struct CardMediaInfo {
Row() {
Image($r('app.media.card_play'))
.mediaLogo()
if
(this.contentDTO.videoInfo!=null)
{
if
(this.contentDTO.videoInfo != null)
{
Text(DateTimeUtils.getFormattedDuration(this.contentDTO.videoInfo.videoDuration * 1000))
.mediaText()
}
...
...
@@ -30,7 +30,7 @@ export struct CardMediaInfo {
// liveInfo.liveState 直播新闻-直播状态 wait待开播running直播中end已结束cancel已取消paused暂停
// 显示直播信息
Row() {
if(this.contentDTO.liveInfo.liveState === 'wait') {
if
(this.contentDTO.liveInfo.liveState === 'wait') {
Image($r('app.media.card_wait'))
.mediaLogo()
Text('预约')
...
...
@@ -45,7 +45,7 @@ export struct CardMediaInfo {
.mediaLogo()
Text('回看')
.mediaText()
} else if(this.contentDTO.liveInfo.liveState === 'end' && this.contentDTO.liveInfo
} else if
(this.contentDTO.liveInfo.liveState === 'end' && this.contentDTO.liveInfo
.replayUri) {
// Image($r('app.media.card_live'))
// .mediaLogo()
...
...
@@ -69,6 +69,15 @@ export struct CardMediaInfo {
Text(DateTimeUtils.getFormattedDuration(this.contentDTO.voiceInfo.voiceDuration * 1000))
.mediaText()
}
} else if (this.contentDTO.objectType === '4') {//广告标签
Text($r('app.string.comp_advertisement'))
.fontSize('10fp')
.fontColor($r('app.color.white'))
.width(28)
.height(16)
.backgroundColor('#4D000000')
.borderRadius(3)
.textAlign(TextAlign.Center)
}
}
.margin(6)
...
...
sight_harmony/features/wdComponent/src/main/ets/components/cardViewAdv/CardAdvBigImageComponent.ets
View file @
d5cb9ce
...
...
@@ -20,14 +20,12 @@ export struct CardAdvBigImageComponent {
aboutToAppear(): void {
console.error('ZZZXXXXX', '----大图卡----aboutToAppear-----')
}
aboutToDisappear(): void {
console.error('ZZZXXXXX', '---大图卡-----aboutToDisappear-----')
}
build() {
...
...
sight_harmony/features/wdComponent/src/main/ets/components/cardViewAdv/CardAdvGanMiComponent.ets
View file @
d5cb9ce
...
...
@@ -25,8 +25,6 @@ export struct CardAdvGanMiComponent {
aboutToAppear(): void {
console.error('ZZZXXXXX', '--冠名广告------aboutToAppear-----')
let extraData = this.compDTO.matInfo.extraData
let labelDTO = JSON.parse(extraData) as AdvExtraData
this.advExtraData = labelDTO
...
...
@@ -37,7 +35,6 @@ export struct CardAdvGanMiComponent {
aboutToDisappear(): void {
console.error('ZZZXXXXX', '--冠名广告------aboutToDisappear-----')
}
build() {
...
...
sight_harmony/features/wdComponent/src/main/ets/components/cardViewAdv/CardAdvLongImageComponent.ets
View file @
d5cb9ce
...
...
@@ -26,14 +26,12 @@ export struct CardAdvLongImageComponent {
aboutToAppear(): void {
console.error('ZZZXXXXX', '--长通栏广告 和 顶部长通栏广告------aboutToAppear-----')
this.haveTitle = this.compDTO.matInfo.advSubType === CompStyle.Card_Adv_7;
}
aboutToDisappear(): void {
console.error('ZZZXXXXX', '--长通栏广告 和 顶部长通栏广告------aboutToDisappear-----')
}
build() {
...
...
@@ -42,7 +40,7 @@ export struct CardAdvLongImageComponent {
//新闻标题
if(this.haveTitle ){
Text(this.compDTO.matInfo.advTitle).bottomTextStyle().margin({ bottom: 8, })
Text(this.compDTO.matInfo.advTitle).
width('100%').
bottomTextStyle().margin({ bottom: 8, })
}
//长图
...
...
sight_harmony/features/wdComponent/src/main/ets/components/cardViewAdv/CardAdvSmallImageComponent.ets
View file @
d5cb9ce
...
...
@@ -23,7 +23,6 @@ export struct CardAdvSmallImageComponent {
aboutToAppear(): void {
console.error('ZZZXXXXX', '----小图卡----aboutToAppear-----')
// 计算标题文本行数
let screenWith = DisplayUtils.getDeviceWidth();
screenWith = screenWith * 0.62
...
...
@@ -33,7 +32,6 @@ export struct CardAdvSmallImageComponent {
aboutToDisappear(): void {
console.error('ZZZXXXXX', '---小图卡-----aboutToDisappear-----')
}
build() {
...
...
sight_harmony/features/wdComponent/src/main/ets/components/cardViewAdv/CardAdvThreeImageComponent.ets
View file @
d5cb9ce
...
...
@@ -22,12 +22,10 @@ export struct CardAdvThreeImageComponent {
aboutToAppear(): void {
console.error('ZZZXXXXX', '---三图卡-----aboutToAppear-----')
}
aboutToDisappear(): void {
console.error('ZZZXXXXX', '----三图卡----aboutToDisappear-----')
}
build() {
...
...
sight_harmony/features/wdComponent/src/main/ets/components/cardViewAdv/CardAdvVideoComponent.ets
View file @
d5cb9ce
...
...
@@ -22,8 +22,6 @@ export struct CardAdvVideoComponent {
@State contentDTO: ContentDTO = {} as ContentDTO
aboutToAppear(): void {
console.error('ZZZXXXXX', '--视频广告------aboutToAppear-----')
// this.contentDTO.objectType = '1'
// this.contentDTO.videoInfo = { videoDuration: 1000 } as VideoInfoDTO
...
...
@@ -31,7 +29,6 @@ export struct CardAdvVideoComponent {
aboutToDisappear(): void {
console.error('ZZZXXXXX', '---视频广告-----aboutToDisappear-----')
}
build() {
...
...
sight_harmony/features/wdComponent/src/main/ets/components/cardViewAdv/CardAdvVideoExComponent.ets
View file @
d5cb9ce
...
...
@@ -21,7 +21,6 @@ export struct CardAdvVideoExComponent {
aboutToAppear(): void {
console.error('ZZZXXXXX', '--展会广告------aboutToAppear-----')
let extraData = this.compDTO.matInfo.extraData
let labelDTO = JSON.parse(extraData) as AdvExtraData
...
...
@@ -30,7 +29,6 @@ export struct CardAdvVideoExComponent {
aboutToDisappear(): void {
console.error('ZZZXXXXX', '----展会广告----aboutToDisappear-----')
}
build() {
...
...
sight_harmony/features/wdComponent/src/main/ets/components/compview/ZhCarouselLayout01.ets
View file @
d5cb9ce
...
...
@@ -180,7 +180,7 @@ struct CarouselLayout01CardView {
})
Column() {
// 这里用于展示轮播图右上角信息,这里只对直播类型的展示
if (this.item.objectType === '2') {
if (this.item.objectType === '2'
|| this.item.objectType ==='4'
) {
CardMediaInfo({ contentDTO: this.item })
.width(CommonConstants.FULL_PARENT)
}
...
...
sight_harmony/features/wdComponent/src/main/ets/components/page/PageComponent.ets
View file @
d5cb9ce
...
...
@@ -246,6 +246,7 @@ export struct PageComponent {
this.pageModel.groupId = this.pageId;
this.pageModel.channelId = this.channelId;
this.pageModel.currentPage = 1;
this.pageModel.pageTotalCompSize = 0;
PageHelper.getInitData(this.pageModel, this.pageAdvModel)
}
}
...
...
sight_harmony/features/wdComponent/src/main/ets/components/search/SearchResultContentComponent.ets
View file @
d5cb9ce
...
...
@@ -194,6 +194,7 @@ export struct SearchResultContentComponent{
isSearch: true,
publishTimestamp:"",
bottomNavId:'',
openType:''
}
this.data.push(contentDTO)
...
...
sight_harmony/features/wdComponent/src/main/ets/viewmodel/PageHelper.ets
View file @
d5cb9ce
import { CompDTO, ContentDTO, PageDTO, PageInfoDTO } from 'wdBean';
import { CompStyle, ViewType } from 'wdConstant/Index';
import { CollectionUtils, DateTimeUtils, Logger, NetworkUtil } from 'wdKit';
import { CollectionUtils, DateTimeUtils, Logger, NetworkUtil
, StringUtils
} from 'wdKit';
import { closeRefresh } from '../utils/PullDownRefresh';
import PageModel from './PageModel';
import PageViewModel from './PageViewModel';
...
...
@@ -9,6 +9,7 @@ import { CompAdvBean } from 'wdBean/src/main/ets/bean/adv/AdvsRuleBean';
import PageAdModel from './PageAdvModel';
import { ArrayList } from '@kit.ArkTS';
import { WDViewDefaultType } from '../components/view/EmptyComponent';
import { CompAdvMatInfoBean } from 'wdBean/src/main/ets/bean/adv/CompAdvInfoBean';
const TAG = 'PageHelper';
...
...
@@ -21,6 +22,7 @@ export class PageHelper {
*/
async refreshUI(pageModel: PageModel, pageAdvModel: PageAdModel) {
pageModel.loadStrategy = 2
pageModel.pageTotalCompSize = 0;
this.getPageInfo(pageModel, pageAdvModel)
}
...
...
@@ -147,7 +149,7 @@ export class PageHelper {
* 处理页面中的广告组件信息
* @param pageDto
*/
private handlePageCompAdvPostion(pageCompList: ArrayList<CompDTO>, pageDto: PageDTO) {
private handlePageCompAdvPostion(pageCompList: ArrayList<CompDTO>, page
Model: PageModel, page
Dto: PageDTO) {
let compAdvList = pageDto.compAdList
...
...
@@ -159,6 +161,7 @@ export class PageHelper {
flag = false
}
let pageCompSize = pageCompList.length // 信息流组件业务数量
console.error("ZZZXXXXX", " start--->" + pageCompSize);
...
...
@@ -167,9 +170,11 @@ export class PageHelper {
}
if (flag) {
let bannerAdvIndex = 0; // banner组件展示数据投放
let layoutAdvIndex = 0; //稿件投放统计
// 升序排序
compAdvList.sort((a: CompAdvBean, b: CompAdvBean) => a.slotInfo.position - b.slotInfo.position)
console.error("ZZZXXXXX", " 排序后的广告--->" + JSON.stringify(compAdvList));
//
console.error("ZZZXXXXX", " 排序后的广告--->" + JSON.stringify(compAdvList));
//当前日期
let serverTimeLong: number = DateTimeUtils.getTimeStamp();
for (let advBean of compAdvList) {
...
...
@@ -192,14 +197,91 @@ export class PageHelper {
// 插入轮播组件的广告
if (4 == advSubType) {
let position = slotInfo.position - 1;
// 检测newCompList 集合中是否有轮播组件资源
let adCompId = slotInfo.compId;
if (!StringUtils.isEmpty(adCompId)) {
for (let compBean of pageCompList) {
if (StringUtils.isEmpty(compBean.id)) {
continue
}
let compId = compBean.id.toString();
//匹配组件
if (adCompId == compId) {
// 运营位数据
let dataList = compBean.operDataList;
if (dataList != null) {
// 数组转成 ArrayList
let changeArrayList = (dataList: ContentDTO[]) => {
let compOperData: ArrayList<ContentDTO> = new ArrayList()
for (let dataListBean of dataList) {
compOperData.add(dataListBean)
}
return compOperData
}
let compOperData = changeArrayList(dataList)
// 轮播组件广告数据转 业务信息
let changeContentDTO = (matInfo: CompAdvMatInfoBean) => {
let advContentBean: ContentDTO = {} as ContentDTO;
advContentBean.newsTitle = matInfo.advTitle
advContentBean.objectType = matInfo.advType == "0" ? matInfo.advType : "4"
advContentBean.coverUrl = matInfo.matImageUrl[0]
advContentBean.linkUrl = matInfo.linkUrl
advContentBean.openType = matInfo.linkType
advContentBean.corner = ''
return advContentBean
}
let advContentBean = changeContentDTO(matInfo)
let dataListSize = dataList.length;
if (position < dataListSize) {
//dataList.add(position + bannerAdvIndex, advContentBean);
compOperData.insert(advContentBean, position + bannerAdvIndex)
} else {
compOperData.add(advContentBean);
}
bannerAdvIndex = bannerAdvIndex + 1;
// ArrayList转成 数组
compBean.operDataList = compOperData.convertToArray()
}
}
}
}
} else {
let advPosition = slotInfo.position //广告位置,从1开始
// 页面的comp总数 - 这次请求的comp总数 = 剩余comp总数
advPosition = advPosition - 1
let advComp: CompDTO = {
compStyle: CompStyle.Card_Comp_Adv,
matInfo: matInfo
} as CompDTO;
pageCompList.insert(advComp, 0)
let a = pageModel.pageTotalCompSize - pageCompSize
if (advPosition <= pageModel.pageTotalCompSize && advPosition >= a) {
let b = advPosition - a;
console.error('ZZZXXXXX', matInfo.advSubType + '-------------' + matInfo.advTitle + " "+ advPosition + " "+a+" "+b)
if (b <= pageCompSize && b >= 0) {
let advComp: CompDTO = {
compStyle: CompStyle.Card_Comp_Adv,
matInfo: matInfo
} as CompDTO;
if (pageCompSize == slotInfo.position) {
pageCompList.add(advComp)
} else {
pageCompList.insert(advComp, b + layoutAdvIndex)
}
layoutAdvIndex = layoutAdvIndex + 1;
}
}
}
}
}
...
...
@@ -241,6 +323,7 @@ export class PageHelper {
})
}
/**
* 移除comp
*/
...
...
@@ -259,8 +342,13 @@ export class PageHelper {
pageCompList.add(element)
}
}
pageModel.pageTotalCompSize = pageCompList.length + pageModel.pageTotalCompSize
console.error("ZZZXXXXX", " collectPageComp--->" + pageModel.pageTotalCompSize);
// 处理页面广告数据,投放到页面的位置
//this.handlePageCompAdvPostion(pageCompList, pageDto);
// this.handlePageCompAdvPostion(pageCompList, pageModel, pageDto);
//遍历所有组件和稿件数据 push到页面
for (let element of pageCompList) {
...
...
sight_harmony/features/wdComponent/src/main/ets/viewmodel/PageModel.ets
View file @
d5cb9ce
...
...
@@ -54,6 +54,9 @@ export default class PageModel {
timestamp: String = '1';
// 记录已经展示的稿件和组件数量
pageTotalCompSize: number = 0;
/**
* 简单复制业务数据
*/
...
...
Please
register
or
login
to post a comment