UserHttpImpl.kt 7.43 KB
Newer Older
1
package com.yidianling.user.http
konghaorui committed
2 3 4 5 6

import android.app.Activity
import com.google.gson.Gson
import com.google.gson.internal.LinkedTreeMap
import com.umeng.socialize.bean.SHARE_MEDIA
7 8 9 10 11 12
import com.ydl.ydlcommon.base.BaseApp
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.router.YdlCommonOut
import com.ydl.ydlnet.YDLHttpUtils
konghaorui committed
13 14
import com.yidianling.common.tools.RxAppTool
import com.yidianling.common.tools.RxDeviceTool
15
import com.yidianling.user.api.bean.UserResponseBean
16 17 18 19 20 21 22
import com.yidianling.user.UserHelper
import com.yidianling.user.bean.CheckPhonePassBean
import com.yidianling.user.http.request.*
import com.yidianling.user.http.response.CheckPassword
import com.yidianling.user.http.response.CountryResponse
import com.yidianling.user.http.response.ExistResponse
import com.yidianling.user.rxlogin.LoginObservable
konghaorui committed
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
import io.reactivex.Observable
import io.reactivex.schedulers.Schedulers
import okhttp3.MediaType
import okhttp3.RequestBody

/**
 * author : Zhangwenchao
 * e-mail : zhangwch@yidianling.com
 * time   : 2018/02/02
 */
class UserHttpImpl private constructor() : UserHttp {

    companion object {
        fun getInstance(): UserHttpImpl {
            return Holder.INSTANCE
        }

        fun clearUserApi() {
            Holder.INSTANCE.userApi = null
        }
    }

    private var userApi: UserApi? = null

    private fun getUserApi(): UserApi {
        if (userApi == null) {
49
            userApi = YDLHttpUtils.obtainApi(UserApi::class.java)
konghaorui committed
50 51 52 53 54 55 56 57 58
        }
        return userApi!!
    }

//    private val userApi: UserApi by lazy {
//        RetrofitProvider.getRetrofit()
//                .create(UserApi::class.java)
//    }

59
    override fun login(param: LoginParam): Observable<BaseResponse<UserResponseBean>> {
konghaorui committed
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
        return RxUtils.mapObservable(param)
                .flatMap { getUserApi().login(it) }
    }

    override fun countryList(): Observable<BaseResponse<CountryResponse>> {
        return getUserApi().countryList("")
                .compose(RxUtils.netCheck())
    }

    override fun phoneExist(param: ExistParam): Observable<BaseResponse<ExistResponse>> {
        return RxUtils.mapObservable(param)
                .flatMap { getUserApi().phoneExists(it) }
    }

    override fun code(param: CodeParam): Observable<BaseResponse<Any>> {
        return RxUtils.mapObservable(param)
                .flatMap { getUserApi().getCode(it) }

    }

80
    override fun bindPhone(param: BindPhoneParam): Observable<BaseResponse<UserResponseBean>> {
konghaorui committed
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
        return RxUtils.mapObservable(param)
                .flatMap { getUserApi().bindPhone(it) }
    }

    override fun forget(param: ForgetParam): Observable<BaseResponse<Any>> {
        return RxUtils.mapObservable(param)
                .flatMap { getUserApi().forget(it) }
    }

    override fun register(param: RegisterParam): Observable<BaseResponse<Any>> {
        return RxUtils.mapObservable(param)
                .flatMap { getUserApi().register(it) }
    }

    override fun channelId(param: ChannelIdParam): Observable<BaseResponse<LinkedTreeMap<String, String>>> {
        return RxUtils.mapObservable(param)
                .flatMap { getUserApi().setChannelId(it) }
    }

100
    override fun thirdPartLogin(param: ThirdLoginParam): Observable<BaseAPIResponse<UserResponseBean>> {
konghaorui committed
101

102
        var param: String = Gson().toJson(param)
konghaorui committed
103 104
        val body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), param)

105
        return getUserApi().thirdPartyLogin(body)
konghaorui committed
106 107 108 109 110 111 112 113 114

    }

    override fun setUserInfo(param: UserInfoParam): Observable<BaseResponse<Any>> {
        return RxUtils.mapObservable(param)
                .flatMap { getUserApi().setUserInfo(it) }
    }

    //验证账号密码
115
    override fun checkPhonePass(cmd: CheckPhonePassBean): Observable<BaseResponse<CheckPassword>> {
konghaorui committed
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
        return RxUtils.mapObservable(cmd)
                .flatMap { getUserApi().checkPhonePass(it) }
    }

    override fun uploadHead(param: HeadParam): Observable<BaseResponse<Any>> {
        return Observable.just(param)
                .compose(RxUtils.netCheck())
                .subscribeOn(Schedulers.io())
                .map {
                    val map = HashMap<String, RequestBody>()
                    val mediaType = MediaType.parse("text/plain")
                    map["type"] = RequestBody.create(mediaType, it.type)
                    map["value"] = RequestBody.create(mediaType, it.value)
                    map["ffrom"] = RequestBody.create(mediaType, YdlCommonOut.getChannelName())
                    map["isFromApp"] = RequestBody.create(mediaType, "1")
131
                    map["osBuild"] = RequestBody.create(mediaType, """${RxDeviceTool.getBuildBrandModel()},${RxDeviceTool.getSDKVersionName()},${RxAppTool.getAppVersionName(BaseApp.getApp())}""")
konghaorui committed
132
                    map["ts"] = RequestBody.create(mediaType, (System.currentTimeMillis() / 1000).toString())
133
                    map["version"] = RequestBody.create(mediaType, RxAppTool.getAppVersionName(BaseApp.getApp()))
konghaorui committed
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
                    val userInfo = UserHelper.getUserInfo()
                    if (userInfo != null) {
                        map["uid"] = RequestBody.create(mediaType, userInfo.uid)
                        map["accessToken"] = RequestBody.create(mediaType, userInfo.accessToken)
                    }
                    val fileBody = RequestBody.create(MediaType.parse("multipart/form-data"), it.file)
                    map.put("""head"; filename="${it.file.name}""", fileBody)
                    map
                }
                .flatMap {
                    getUserApi().uploadHeadImg(it)
                }
    }

    override fun bindQQ(param: BindQQ): Observable<BaseResponse<Any>> {
        return RxUtils.mapObservable(param)
                .flatMap { getUserApi().bindQQ(it) }
    }

    override fun bindWX(param: BindWX): Observable<BaseResponse<Any>> {
        return RxUtils.mapObservable(param)
                .flatMap { getUserApi().bindWx(it) }
    }

    override fun logout(param: Logout): Observable<BaseResponse<Any>> {
        return RxUtils.mapObservable(param)
                .flatMap { getUserApi().logout(it) }
    }

    override fun checkPwd(param: CheckPwd): Observable<BaseResponse<Any>> {
        return RxUtils.mapObservable(param)
                .flatMap { getUserApi().checkPwd(it) }
    }

    override fun changePhone(param: ChangePhone): Observable<BaseResponse<Any>> {
        return RxUtils.mapObservable(param)
                .flatMap { getUserApi().changePhone(it) }
    }

    override fun privacyAgree(uid: String): Observable<BaseResponse<Any>> {
174
        return getUserApi().privacyAgree(uid)
konghaorui committed
175 176 177 178 179 180
    }

    override fun umLogin(activity: Activity, media: SHARE_MEDIA): Observable<ThirdLoginParam> {
        return LoginObservable(activity, media)
    }

181
    override fun thirdPartJavaLogin(param: ThirdLoginParam): Observable<BaseResponse<UserResponseBean>> {
konghaorui committed
182 183
        var str = Gson().toJson(param)
        val body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), str)
184
        return getUserApi().thirdPartJavaLogin(body)
konghaorui committed
185 186 187 188 189
    }

    override fun unBindThirdLogin(param: UnBindThirdLoginParam): Observable<BaseResponse<Any>> {
        var str = Gson().toJson(param)
        val body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), str)
190
        return getUserApi().unBindThirdLogin(body)
konghaorui committed
191 192 193 194 195 196 197 198
    }


    private object Holder {
        val INSTANCE = UserHttpImpl()
    }

}