LiveModel.ets 5.31 KB
import { HttpUrlUtils, ResponseDTO } from 'wdNetwork';
import { HttpRequest } from 'wdNetwork/src/main/ets/http/HttpRequest';
import { Logger, ToastUtils } from 'wdKit';
import { LiveDetailsBean, LiveRoomBean, LiveRoomDataBean } from 'wdBean/Index';

const TAG = 'LiveModel'

export class LiveModel {
  /**
   * 直播内容详情
   * @param contentId
   * @param relId 关系id
   * @param relType 关系类型;1.频道关系;2.专题关系;
   * @returns
   */
  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 pageNum
   * @param mLiveId
   * @param liveId
   * @param pageSize
   * @returns
   */
  getLiveList(pageNum: number, mLiveId: string, liveId: string, pageSize: number) {
    let params: Record<string, string> = {};
    params['pageNum'] = pageNum + ''
    params['mLiveId'] = mLiveId
    params['liveId'] = liveId
    params['pageSize'] = pageSize + ''
    return new Promise<LiveRoomBean>((success, fail) => {
      HttpRequest.post<ResponseDTO<LiveRoomBean>>(
        HttpUrlUtils.getLiveListUrl(),
        params,
      ).then((data: ResponseDTO<LiveRoomBean>) => {
        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 pageNum
   * @param mLiveId
   * @param liveId
   * @param pageSize
   * @returns
   */
  getLiveChatList(pageNum: number, mLiveId: string, liveId: string, pageSize: number) {
    let params: Record<string, string> = {};
    params['pageNum'] = pageNum + ''
    params['mLiveId'] = mLiveId
    params['liveId'] = liveId
    params['pageSize'] = pageSize + ''
    return new Promise<LiveRoomBean>((success, fail) => {
      HttpRequest.post<ResponseDTO<LiveRoomBean>>(
        HttpUrlUtils.getLiveChatListUrl(),
        params,
      ).then((data: ResponseDTO<LiveRoomBean>) => {
        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 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())
      })
    })
  }

  /**
   * 获取直播预约状态
   * @param relationId
   * @param liveId
   * @returns
   */
  getLiveAppointmentStatus(relationId: string, liveId: string) {
    return new Promise<boolean>((success, fail) => {
      HttpRequest.get<ResponseDTO<boolean>>(
        HttpUrlUtils.getLiveAppointmentStatusUrl() + `?relationId=${relationId}&liveId=${liveId}`,
      ).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())
      })
    })
  }

  /**
   * 直播预约/取消预约
   * @param relationId
   * @param mLiveId
   * @param isSubscribe
   * @returns
   */
  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
        }
        success(data)
      }, (error: Error) => {
        fail(error.message)
        Logger.debug(TAG + ":error ", error.toString())
      })
    })
  }
}