TrackParamConvert.ets 7.76 KB
import { CompInfoBean, ContentDetailDTO, ContentDTO, PageInfoBean, PageInfoDTO } from 'wdBean/Index';
import { StringUtils } from 'wdKit/Index';
import { ParamType } from './PublicParams';
import { TrackConstants } from './TrackConstants';
import { TrackingUtils } from './TrackingUtils';

export class TrackParamConvert {

  /// 页面pageInfo 转换 埋点参数
  static page(pageInfo?: PageInfoDTO) : ParamType {
    return TrackParamConvert.pageCompProgram(pageInfo, undefined, undefined)
  }

  // 页面comp 转换 埋点参数
  static pageAndComp(pageInfo?: PageInfoDTO, comp?: CompInfoBean) : ParamType {
    return TrackParamConvert.pageCompProgram(pageInfo, comp, undefined)
  }

  // 运营位数据 转换 埋点参数
  static program(program?: ContentDTO) : ParamType {
    return TrackParamConvert.pageCompProgram(undefined, undefined, program)
  }

  static pageCompProgram(pageInfo?: PageInfoDTO, comp?: CompInfoBean, program?: ContentDTO) : ParamType {
    let params = TrackingUtils.generateParams()

    //TODO: 转换参数
    if (pageInfo) {
      params["pageName"] = pageInfo.name
      params["pageId"] = pageInfo.id + ''
      TrackParamConvert.appendRecommendPageInfo(pageInfo, params)
    }

    if (program) {

      params["contentType"] = program.objectType
      params["contentId"] = program.objectId
      params["contentName"] = program.newsTitle
      params["channelSourceId"] = program.channelId
      params["rmhPlatform"] = program.rmhPlatform

      if (program.liveInfo) {
        params["liveType"] = program.liveInfo.liveState
        params["liveStreamType"] = ((program.liveInfo.vrType + '') == "1") ? "2" : "1"
        params["vliveId"] = program.objectId
        params["vliveName"] = program.newsTitle
      }

      if (!StringUtils.isEmpty(program.linkUrl)) {
        params["linkUrl"] = program.linkUrl
      }

      if (program.rmhInfo && program.rmhInfo.rmhId) {
        params["saAuthorId"] = program.rmhInfo.rmhId || ""
        params["saAuthorName"] = program.rmhInfo.rmhName || ""
      }

      TrackParamConvert.appendRecommendProgram(program, params)
    }
    return params
  }

  static contentDetail(detail: ContentDetailDTO) : ParamType {

    let param: ParamType = {
      "contentType": detail.newsType.toFixed(0),
      "contentId": detail.newsId,
      "contentName": detail.newsTitle,
      "channelSourceId": detail.reLInfo?.channelId || "",
      "rmhPlatform": detail.rmhPlatform,
    }

    if (detail.rmhInfo && detail.rmhInfo.rmhId.length > 0) {
      param["saAuthorId"] = detail.rmhInfo.rmhId
      param["saAuthorName"] = detail.rmhInfo.rmhName || ""
    }

    // 图文和音频
    if (detail.newsType == 8 || detail.newsType == 13) {
      param["readFlag"] = detail.readFlag ? detail.readFlag : 0
    }

    // TODO: 频道处理
    // if (detail.channelsList) {
    //  param["contentShowChannelId"] = X
    // }

    // TODO: 专题处理
    // detail.topicInfo.
    // param["summaryType"] = X
    // param["summaryId"] = X

    // TODO: 直播
    if (detail.newsType == 2 && detail.liveInfo) {
      // param["vliveId"] = X
      // param["vliveName"] = X
      // param["liveMode"] = X
      // param["liveStreamType"] = X
      // param["liveType"] = X
    }

    TrackParamConvert.appendRecommend(detail, param)
    return param
  }

  private static appendRecommend(detail: ContentDetailDTO, to: ParamType) {
    //TODO:  ContentDetailDTO 增加推荐字段

    to["sceneId"] = !StringUtils.isEmpty(detail.sceneId) ? detail.sceneId : "9999"
    to["subSceneId"] = !StringUtils.isEmpty(detail.subSceneId) ? detail.subSceneId : ""
    //to["cnsTraceId"] = !StringUtils.isEmpty(detail.cnsTraceId) ? detail.cnsTraceId : "selfHold"
    to["cnsTraceId"] = "selfHold"
    to["itemId"] = !StringUtils.isEmpty(detail.itemId) ? detail.itemId : ""
    // to["expIds"] = !StringUtils.isEmpty(detail.expIds) ? detail.expIds : ""
    to["expIds"] = ""

    /// 这里填写默认值,后续在分享处 再重写
    to["shareChannel"] = ""
    /// 这里填写默认值,后续在action=browse时,再重写
    to["duration"] = 0
  }

  private static appendRecommendProgram(program: ContentDTO, to: ParamType) {

    to["sceneId"] = !StringUtils.isEmpty(program.itemId) ? program.itemId : "9999"
    to["subSceneId"] = !StringUtils.isEmpty(program.itemId) ? program.itemId : ""
    to["cnsTraceId"] = !StringUtils.isEmpty(program.itemId) ? program.itemId : "selfHold"
    to["itemId"] = !StringUtils.isEmpty(program.itemId) ? program.itemId : ""
    to["expIds"] = !StringUtils.isEmpty(program.itemId) ? program.itemId : ""

    /// 这里填写默认值,后续在分享处 再重写
    to["shareChannel"] = ""
    /// 这里填写默认值,后续在action=browse时,再重写
    to["duration"] = 0
  }

  private static appendRecommendCompInfo(program: CompInfoBean, to: ParamType) {

    // TODO:
    // to["sceneId"] = !StringUtils.isEmpty(program.itemId) ? program.itemId : "9999"
    // to["subSceneId"] = !StringUtils.isEmpty(program.itemId) ? program.itemId : ""
    // to["cnsTraceId"] = !StringUtils.isEmpty(program.itemId) ? program.itemId : "selfHold"
    // to["itemId"] = !StringUtils.isEmpty(program.itemId) ? program.itemId : ""
    // to["expIds"] = !StringUtils.isEmpty(program.itemId) ? program.itemId : ""

    /// 这里填写默认值,后续在分享处 再重写
    to["shareChannel"] = ""
    /// 这里填写默认值,后续在action=browse时,再重写
    to["duration"] = 0
  }

  private static appendRecommendPageInfo(program: PageInfoDTO, to: ParamType) {

    // TODO:
    // to["sceneId"] = !StringUtils.isEmpty(program.itemId) ? program.itemId : "9999"
    // to["subSceneId"] = !StringUtils.isEmpty(program.itemId) ? program.itemId : ""
    // to["cnsTraceId"] = !StringUtils.isEmpty(program.itemId) ? program.itemId : "selfHold"
    // to["itemId"] = !StringUtils.isEmpty(program.itemId) ? program.itemId : ""
    // to["expIds"] = !StringUtils.isEmpty(program.itemId) ? program.itemId : ""

    /// 这里填写默认值,后续在分享处 再重写
    to["shareChannel"] = ""
    /// 这里填写默认值,后续在action=browse时,再重写
    to["duration"] = 0
  }

  private static appendRecommendPageInfoBean(program: PageInfoBean, to: ParamType) {
    to["sceneId"] = "9999"
    to["subSceneId"] = ""
    to["cnsTraceId"] = "selfHold"
    to["itemId"] = ""
    to["expIds"] = ""

    /// 这里填写默认值,后续在分享处 再重写
    to["shareChannel"] = ""
    /// 这里填写默认值,后续在action=browse时,再重写
    to["duration"] = 0
  }

  // 'sceneId': contentDTO.sceneId,
  // 'subSceneId': contentDTO.subSceneId,
  // 'cnsTraceId': contentDTO.cnsTraceId,
  // 'cardItemId': compDTO.cardItemId,
  // 'itemId': compDTO.itemId || contentDTO.itemId,
  // 'expIds': compDTO.expIds || contentDTO.expIds


  ///早晚报 专题
  static pageInfoBean_ParamType(pageInfo: PageInfoBean) : ParamType {

    let topTypeString: string = '';
    switch (pageInfo.topicInfo.topicType){
      case 21:
        topTypeString = TrackConstants.SummaryType.Article
      break;
      case 22:
        topTypeString = TrackConstants.SummaryType.Audio
        break;
      case 23:
        topTypeString = TrackConstants.SummaryType.Live
        break;
      case 24:
        topTypeString = TrackConstants.SummaryType.Talk
        break;
      case 25:
        topTypeString = TrackConstants.SummaryType.MorningAndEveningNews
        break;
      case 26:
        topTypeString = TrackConstants.SummaryType.TimeAxis
        break;
    }

    let param: ParamType = {
      "summaryId": pageInfo.topicInfo.topicId,
      "summaryType": topTypeString,
      "specialLink": pageInfo.topicInfo.shareUrl,
      "channelSourceId":  pageInfo.name,
      "pageId": 'summaryDetailPage',
    }

    TrackParamConvert.appendRecommendPageInfoBean(pageInfo, param)

    return param
  }
}