LiveModel.ets 6.68 KB
import { HttpUrlUtils, ResponseDTO } from 'wdNetwork';
import { HttpRequest } from 'wdNetwork/src/main/ets/http/HttpRequest';
import { Logger, ToastUtils, EmitterEventId, EmitterUtils  } from 'wdKit';
import { LiveDetailsBean, ReserveBean, ReserveItemBean, joinPeopleNum, LiveRoomDataBean, ValueType } from 'wdBean/Index';

const TAG = 'LiveModel'




export class LiveModel {
  /**
   * 直播内容详情
   * @param contentId
   * @param relId 关系id
   * @param relType 关系类型;1.频道关系;2.专题关系;
   * @returns
   */
  static getLiveDetails(contentId: string, relId: string, relType: string) {
    return new Promise<Array<LiveDetailsBean>>((success, fail) => {
      HttpRequest.get<ResponseDTO<Array<LiveDetailsBean>>>(
        HttpUrlUtils.getLiveDetailsUrl() + `?relId=${relId}&relType=${relType}&contentId=${contentId}`,
      ).then((data: ResponseDTO<Array<LiveDetailsBean>>) => {
        if (!data || !data.data) {
          fail("数据为空")
          return
        }
        if (data.code != 0) {
          fail(data.message)
          return
        }
        success(data.data)
      }, (error: Error) => {
        fail(error.message)
        Logger.debug(TAG + ":error ", error.toString())
      })
    })
  }

  /**
   * 直播预约/取消预约
   * @param relationId
   * @param mLiveId
   * @param isSubscribe
   * @returns
   */
  static liveAppointment(relationId: string, liveId: string, isSubscribe: boolean) {
    let params: Record<string, string> = {};
    params['relationId'] = relationId
    params['liveId'] = liveId
    params['isSubscribe'] = `${isSubscribe}`
    return new Promise<ResponseDTO<string>>((success, fail) => {
      HttpRequest.post<ResponseDTO<string>>(
        HttpUrlUtils.getLiveAppointmentUrl(),
        params,
      ).then((data: ResponseDTO<string>) => {
        if (data.code != 0) {
          fail(data.message)
          ToastUtils.shortToast(data.message)
          return
        }
        if (data.code == 0) {
          const reserveModel = new ReserveItemBean(Number(liveId), relationId, isSubscribe)
          EmitterUtils.sendEvent(EmitterEventId.LIVE_ROOM_SUBSCRIBE, JSON.stringify(reserveModel))
        }
        success(data)
        Logger.info('liveAppointment', JSON.stringify(data))
      }, (error: Error) => {
        fail(error.message)
        Logger.debug(TAG + ":error ", JSON.stringify(error))
      })
    })
  }

  /**
   * 获取直播数据
   * @param liveId
   * @returns
   */
  getLiveRoomData(liveId: string) {
    return new Promise<LiveRoomDataBean>((success, fail) => {
      HttpRequest.get<ResponseDTO<LiveRoomDataBean>>(
        HttpUrlUtils.getLiveRoomDataUrl() + `?liveId=${liveId}`,
      ).then((data: ResponseDTO<LiveRoomDataBean>) => {
        if (!data || !data.data) {
          fail("数据为空")
          return
        }
        if (data.code != 0) {
          fail(data.message)
          return
        }
        success(data.data)
      }, (error: Error) => {
        fail(error.message)
        Logger.debug(TAG + ":error ", error.toString())
      })
    })
  }

  /**
   * 直播详情-C端点赞接口
   * @param liveId
   * @param number
   * @param deviceId
   * @returns
   */
  getLiveRoomNumberLike(liveId: string, number: number, deviceId: string | number) {
    return new Promise<number>((success, fail) => {
      HttpRequest.get<ResponseDTO<number>>(
        HttpUrlUtils.getLiveRoomNumberLikeUrl() + `?liveId=${liveId}&number=${number}&deviceId=${deviceId}`,
      ).then((data: ResponseDTO<number>) => {
        if (!data || !data.data) {
          fail("数据为空")
          return
        }
        if (data.code != 0) {
          fail(data.message)
          return
        }
        Logger.debug(TAG, 'LiveLikeComponent data.data ' + data.data)
        success(data.data)
      }, (error: Error) => {
        fail(error.message)
        Logger.debug(TAG + ":error ", error.toString())
      })
    })
  }

  /**
   * 直播详情-查询是否点赞接口
   * @param liveId
   * @param userId
   * @param deviceId
   * @returns
   */
  getLiveLike(liveId: string, userId: ValueType, deviceId: string | number) {
    return new Promise<boolean>((success, fail) => {
      HttpRequest.get<ResponseDTO<boolean>>(
        HttpUrlUtils.getLiveLikeUrl() + `?liveId=${liveId}&userId=${userId}&deviceId=${deviceId}`,
      ).then((data: ResponseDTO<boolean>) => {
        if (!data || !data.data) {
          fail("数据为空")
          return
        }
        if (data.code != 0) {
          fail(data.message)
          return
        }
        success(data.data)
      }, (error: Error) => {
        fail(error.message)
        Logger.debug(TAG + ":error ", error.toString())
      })
    })
  }

  /**
   * 查询预约状态
   *
   [{"relationId":"500002824823","liveId":"20000120522"},{"relationId":"500002845517","liveId":"20000120782"}]
   * @returns
   * @returns
   */
  static getAppointmentStatus(reserveBean: ReserveBean[]) {
    // let params: Record<string, ArrayList<ReserveBean>> = {};
    // params = reserveBean
    return new Promise<Array<ReserveItemBean>>((success, fail) => {
      HttpRequest.post<ResponseDTO<Array<ReserveItemBean>>>(
        HttpUrlUtils.getAppointmentStatusUrl(),
        reserveBean,
      ).then((data: ResponseDTO<Array<ReserveItemBean>>) => {
        Logger.debug(TAG, 'getAppointmentStatus:' + `${JSON.stringify(data)}`)
        if (!data || !data.data) {
          fail("数据为空")
          return
        }
        if (data.code != 0) {
          fail(data.message)
          ToastUtils.shortToast(data.message)
          return
        }
        success(data.data)
        Logger.info('getAppointmentStatus', JSON.stringify(data.data))
      }, (error: Error) => {
        fail(error.message)
        Logger.debug(TAG + ":error ", JSON.stringify(error))
      })
    })
  }

  /**
   * 查询直播参与人数
   */
  static getJoinPeopleNum(liveIdList: string) {
    return new Promise<Array<joinPeopleNum>>((success, fail) => {
      HttpRequest.get<ResponseDTO<Array<joinPeopleNum>>>(
        HttpUrlUtils.getJoinPeopleNum() + `?liveIdList=${liveIdList}`,
      ).then((data: ResponseDTO<Array<joinPeopleNum>>) => {
        Logger.debug(TAG, 'getJoinPeopleNum:' + `${JSON.stringify(data)}`)
        Logger.debug(TAG, 'liveIdList:' + liveIdList)
        if (!data || !data.data) {
          fail("数据为空")
          return
        }
        if (data.code != 0) {
          fail(data.message)
          ToastUtils.shortToast(data.message)
          return
        }
        success(data.data)
        Logger.info('getJoinPeopleNum', JSON.stringify(data.data))
      }, (error: Error) => {
        fail(error.message)
        Logger.debug(TAG + ":error ", JSON.stringify(error))
      })
    })
  }

}