UserHttpImpl.kt 8.78 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
import com.ydl.ydlcommon.base.BaseApp
import com.ydl.ydlcommon.data.http.BaseAPIResponse
徐健 committed
9
import com.ydl.ydlcommon.data.http.BaseCommand
10 11 12 13
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
14 15
import com.yidianling.common.tools.RxAppTool
import com.yidianling.common.tools.RxDeviceTool
konghaorui committed
16
import com.yidianling.user.api.bean.UserResponseBean
17 18
import com.yidianling.user.UserHelper
import com.yidianling.user.bean.CheckPhonePassBean
徐健 committed
19
import com.yidianling.user.bean.CollectFocusItemBean
20 21 22 23
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
徐健 committed
24
import com.yidianling.user.http.response.SecretResponse
konghaorui committed
25 26 27
import com.yidianling.user.mine.bean.RedPackDataForRegister
import com.yidianling.user.mine.bean.RedPacketId
import com.yidianling.user.mine.bean.RedPacketIdCmd
28
import com.yidianling.user.rxlogin.LoginObservable
konghaorui committed
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
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) {
55
            userApi = YDLHttpUtils.obtainApi(UserApi::class.java)
konghaorui committed
56 57 58 59 60 61 62 63 64
        }
        return userApi!!
    }

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

65
    override fun login(param: LoginParam): Observable<BaseResponse<UserResponseBean>> {
konghaorui committed
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
        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) }

    }

86
    override fun bindPhone(param: BindPhoneParam): Observable<BaseResponse<UserResponseBean>> {
konghaorui committed
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
        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>>> {
严久程 committed
102 103 104
        var param: String = Gson().toJson(param)
        val body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), param)
        return getUserApi().setChannelId(body)
konghaorui committed
105 106
    }

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

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

112
        return getUserApi().thirdPartyLogin(body)
konghaorui committed
113 114 115 116 117 118 119 120 121

    }

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

    //验证账号密码
122
    override fun checkPhonePass(cmd: CheckPhonePassBean): Observable<BaseResponse<CheckPassword>> {
konghaorui committed
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
        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")
138
                    map["osBuild"] = RequestBody.create(mediaType, """${RxDeviceTool.getBuildBrandModel()},${RxDeviceTool.getSDKVersionName()},${RxAppTool.getAppVersionName(BaseApp.getApp())}""")
konghaorui committed
139
                    map["ts"] = RequestBody.create(mediaType, (System.currentTimeMillis() / 1000).toString())
140
                    map["version"] = RequestBody.create(mediaType, RxAppTool.getAppVersionName(BaseApp.getApp()))
konghaorui committed
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 174 175 176 177 178 179 180
                    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>> {
181
        return getUserApi().privacyAgree(uid)
konghaorui committed
182 183 184 185 186 187
    }

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

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

    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)
197
        return getUserApi().unBindThirdLogin(body)
konghaorui committed
198 199
    }

徐健 committed
200
    override fun getSecretData(): Observable<BaseResponse<SecretResponse>> {
徐健 committed
201 202 203
        return getUserApi().getSecretData()
    }

konghaorui committed
204 205 206 207
    override fun getRedPacketId(param: RedPacketIdCmd): Observable<BaseResponse<RedPacketId>> {
        return RxUtils.mapObservable(param)
            .flatMap { getUserApi().getRedPacketId(it) }
    }
konghaorui committed
208

徐健 committed
209 210 211 212 213 214 215 216 217 218 219
    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>> {
徐健 committed
220 221
        return RxUtils.mapObservable(BaseCommand())
            .flatMap { getUserApi().getNewUserJumpUrl(it) }
徐健 committed
222
    }
konghaorui committed
223 224 225 226 227 228

    private object Holder {
        val INSTANCE = UserHttpImpl()
    }

}