HomeBaseHttp.kt 3.43 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
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) }
    }
}