UserHttpImpl.kt 8.05 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
import com.yidianling.user.UserHelper
import com.yidianling.user.bean.CheckPhonePassBean
徐健 committed
18
import com.yidianling.user.bean.CollectFocusItemBean
19
import com.yidianling.user.http.request.*
徐健 committed
20
import com.yidianling.user.http.response.*
21
import com.yidianling.user.rxlogin.LoginObservable
konghaorui committed
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
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) {
48
            userApi = YDLHttpUtils.obtainApi(UserApi::class.java)
konghaorui committed
49 50 51 52 53 54 55 56 57
        }
        return userApi!!
    }

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

58
    override fun login(param: LoginParam): Observable<BaseResponse<UserResponseBean>> {
konghaorui committed
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
        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) }

    }

79
    override fun bindPhone(param: BindPhoneParam): Observable<BaseResponse<UserResponseBean>> {
konghaorui committed
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
        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) }
    }

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

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

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

    }

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

    //验证账号密码
114
    override fun checkPhonePass(cmd: CheckPhonePassBean): Observable<BaseResponse<CheckPassword>> {
konghaorui committed
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
        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")
130
                    map["osBuild"] = RequestBody.create(mediaType, """${RxDeviceTool.getBuildBrandModel()},${RxDeviceTool.getSDKVersionName()},${RxAppTool.getAppVersionName(BaseApp.getApp())}""")
konghaorui committed
131
                    map["ts"] = RequestBody.create(mediaType, (System.currentTimeMillis() / 1000).toString())
132
                    map["version"] = RequestBody.create(mediaType, RxAppTool.getAppVersionName(BaseApp.getApp()))
konghaorui committed
133 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
                    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>> {
173
        return getUserApi().privacyAgree(uid)
konghaorui committed
174 175 176 177 178 179
    }

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

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

    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)
189
        return getUserApi().unBindThirdLogin(body)
konghaorui committed
190 191
    }

徐健 committed
192
    override fun getSecretData(): Observable<BaseResponse<SecretResponse>> {
徐健 committed
193 194 195
        return getUserApi().getSecretData()
    }

徐健 committed
196 197 198 199 200 201 202 203 204 205 206 207 208
    override fun userInfoCollectUpload(param: UserInfoCollectUploadParam): Observable<BaseAPIResponse<Any>> {
        var str = Gson().toJson(param)
        val body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), str)
        return getUserApi().uploadUserInfo(body)
    }

    override fun getFocusData(): Observable<BaseAPIResponse<List<CollectFocusItemBean>>> {
        return getUserApi().getFocusData()
    }

    override fun getNewUserJumpUrl(): Observable<BaseAPIResponse<String>> {
        return getUserApi().getNewUserJumpUrl()
    }
konghaorui committed
209 210 211 212 213 214

    private object Holder {
        val INSTANCE = UserHttpImpl()
    }

}