package com.yidianling.home.http import com.ydl.ydlcommon.data.http.BaseAPIResponse import com.ydl.ydlcommon.data.http.BaseResponse import com.ydl.ydlcommon.data.http.RxUtils import com.ydl.ydlcommon.modular.ModularServiceManager import com.ydl.ydlnet.YDLHttpUtils import com.yidianling.home.model.bean.* import com.yidianling.user.api.service.IUserService import io.reactivex.Observable class HomeBaseHttp { companion object { fun getInstance(): HomeBaseHttp { return Holder.INSTANCE } } object Holder { val INSTANCE = HomeBaseHttp() } private var homeApi: HomeBasePagerApi? = null fun getHomePagerApi(): HomeBasePagerApi { if (homeApi == null) { homeApi = YDLHttpUtils.obtainApi(HomeBasePagerApi::class.java) } return homeApi!! } //首页头部 分类&Banner 请求 fun newHomeHeaderRequest(): Observable<BaseAPIResponse<HomeHeaderBean>> { return getHomePagerApi().getHomeHeaderData() } //首页倾述请求 fun getConfideData(goodType: String): Observable<BaseAPIResponse<HomeConfideBean>> { val loginBean = ModularServiceManager.provide(IUserService::class.java).getUserInfo() var userId = loginBean?.uid ?: ""; return getHomePagerApi().getConfideData(goodType, uid = userId); } //首页课程请求 fun getCourseData(listType: String = "10"): Observable<BaseAPIResponse<HomeCourseBean>> { val loginBean = ModularServiceManager.provide(IUserService::class.java).getUserInfo() var userId = loginBean?.uid ?: ""; return getHomePagerApi().getCourseData(listType, uid = userId); } //首页测试请求 fun getTestData(): Observable<BaseAPIResponse<MutableList<HomeTestItemBean>>> { val loginBean = ModularServiceManager.provide(IUserService::class.java).getUserInfo() var userId = loginBean?.uid ?: ""; return getHomePagerApi().getTestData(uid = userId) } //首页问答请求 fun getAskData(): Observable<BaseAPIResponse<HomeAskBean>> { val loginBean = ModularServiceManager.provide(IUserService::class.java).getUserInfo() var userId = loginBean?.uid ?: ""; var token = loginBean?.accessToken ?: ""; return getHomePagerApi().getAskData(accessToken = token, uid = userId); } //首页电台请求 fun getFMData(): Observable<BaseAPIResponse<HomeFMBean>> { return getHomePagerApi().getFMData(); } //首页文章请求 fun getArticleData(perPageRows: String = "4"): Observable<BaseAPIResponse<HomeArticleBean>> { return getHomePagerApi().getArticleData() } //首页咨询请求 fun getConsultData(goodType: String): Observable<BaseAPIResponse<HomeConsultBean>> { val loginBean = ModularServiceManager.provide(IUserService::class.java).getUserInfo() var userId = loginBean?.uid ?: "" return getHomePagerApi().getConsultData(category = goodType, uid = userId) } //首页问答 - 点赞 fun askZan(id: String): Observable<BaseResponse<AskResultBean>> { val cmd = AskRequestParamBean.ZanAction("2", id) return RxUtils.mapObservable(cmd).flatMap { getHomePagerApi().askZan(it) } } //首页问答 - 关注 fun askFocus(id: String): Observable<BaseResponse<AskResultBean>> { val cmd = AskRequestParamBean.FocusCmd(id, "1") return RxUtils.mapObservable(cmd).flatMap { getHomePagerApi().askFocus(it) } } }