package com.yidian.shenghuoquan.newscontent.http

import com.yidian.common.http.HttpResult
import com.yidian.common.http.URLs
import io.reactivex.rxjava3.core.Observable
import okhttp3.MultipartBody
import retrofit2.Call
import retrofit2.http.*

interface CommonService {
  @Multipart
  @POST(URLs.uploadFile)
  fun uploadFile(@QueryMap commonParams: Map<String, String>, @Part part: MultipartBody.Part): Observable<HttpResult<Any?>>

  @Headers("Content-Type: application/json")
  @POST(URLs.pushTokenAndroid)
  fun pushTokenAndroid(@QueryMap commonParams: Map<String, String>, @Body requestParams: Map<String, String?>): Observable<HttpResult<Any?>>

  @Headers("Content-Type: application/json")
  @POST(URLs.authPersonalGetToken)
  fun authPersonalGetToken(
    @QueryMap commonParams: Map<String, String>,
    @Body requestParams: Map<String, String?>
  ): Observable<HttpResult<Any?>>

  @Headers("Content-Type: application/json")
  @POST(URLs.getKSYunToken)
  fun getKSYunToken(@QueryMap commonParams: Map<String, String>, @Body requestParams: Map<String, String?>): Call<HttpResult<Any?>>

  @Headers("Content-Type: application/json")
  @POST(URLs.getIDCardOCR)
  fun getIDCardOCR(@QueryMap commonParams: Map<String, String>, @Body requestParams: Map<String, String?>): Observable<HttpResult<Any?>>

  @Headers("Content-Type: application/json")
  @POST(URLs.identifyIdOcrVerify)
  fun identifyIdOcrVerify(
    @QueryMap commonParams: Map<String, String>,
    @Body requestParams: Map<String, String?>
  ): Observable<HttpResult<Any?>>

  @GET(URLs.getKSYunObjectId)
  fun getKSYunObjectId(
    @QueryMap commonParams: Map<String, String>,
    @QueryMap requestParams: Map<String, String?>
  ): Observable<HttpResult<Any?>>

  @Headers("Content-Type: application/json")
  @POST(URLs.businessLicenseOCR)
  fun businessLicenseOCR(
    @QueryMap commonParams: Map<String, String>,
    @Body requestParams: Map<String, String?>
  ): Observable<HttpResult<Any?>>

  @GET(URLs.sendMsgCode)
  fun sendMsgCode(@QueryMap commonParams: Map<String, String>, @QueryMap requestParams: Map<String, String?>): Observable<HttpResult<Any?>>

  @GET(URLs.mobileLogin)
  fun mobileLogin(@QueryMap commonParams: Map<String, String>, @QueryMap requestParams: Map<String, String?>): Observable<HttpResult<Any?>>

  @GET(URLs.userLogout)
  fun userLogout(@QueryMap commonParams: Map<String, String>, @QueryMap requestParams: Map<String, String?>): Observable<HttpResult<Any?>>

  @GET(URLs.accountList)
  fun getAccountList(
    @QueryMap commonParams: Map<String, String>,
    @QueryMap requestParams: Map<String, String?>
  ): Observable<HttpResult<Any?>>

  @Headers("Content-Type: application/json")
  @POST(URLs.createLifeAccount)
  fun createLifeAccount(
    @QueryMap commonParams: Map<String, String>,
    @Body requestParams: Map<String, String?>
  ): Observable<HttpResult<Any?>>

  @Headers("Content-Type: application/json")
  @POST(URLs.authPersonalCheck)
  fun authPersonalCheck(
    @QueryMap commonParams: Map<String, String>,
    @Body requestParams: Map<String, String?>
  ): Observable<HttpResult<Any?>>

  @GET(URLs.authLiveIdentity)
  fun authLiveIdentity(
    @QueryMap commonParams: Map<String, String>,
    @QueryMap requestParams: Map<String, String?>
  ): Observable<HttpResult<Any?>>

  @GET(URLs.authComplete)
  fun authComplete(@QueryMap commonParams: Map<String, String>, @QueryMap requestParams: Map<String, String?>): Observable<HttpResult<Any?>>

  @GET(URLs.authAuthentication)
  fun authAuthentication(
    @QueryMap commonParams: Map<String, String>,
    @QueryMap requestParams: Map<String, String?>
  ): Observable<HttpResult<Any?>>

  @GET(URLs.authMerchantCheck)
  fun authMerchantCheck(
    @QueryMap commonParams: Map<String, String>,
    @QueryMap requestParams: Map<String, String?>
  ): Observable<HttpResult<Any?>>

  @Headers("Content-Type: application/json")
  @POST(URLs.authBusinessLicenseCommit)
  fun authBusinessLicenseCommit(
    @QueryMap commonParams: Map<String, String>,
    @Body requestParams: Map<String, String?>
  ): Observable<HttpResult<Any?>>

  @Headers("Content-Type: application/json")
  @POST(URLs.authEnterpriseLegalIdentityCommit)
  fun authEnterpriseLegalIdentityCommit(
    @QueryMap commonParams: Map<String, String>,
    @Body requestParams: Map<String, String?>
  ): Observable<HttpResult<Any?>>

  @Headers("Content-Type: application/json")
  @POST(URLs.authIndividualBusinessIdentityCommit)
  fun authIndividualBusinessIdentityCommit(
    @QueryMap commonParams: Map<String, String>,
    @Body requestParams: Map<String, String?>
  ): Observable<HttpResult<Any?>>

  @GET(URLs.authEnterpriseLiveIdentity)
  fun authEnterpriseLiveIdentity(
    @QueryMap commonParams: Map<String, String>,
    @QueryMap requestParams: Map<String, String?>
  ): Observable<HttpResult<Any?>>

  @GET(URLs.authIndividualBusinessComplete)
  fun authIndividualBusinessComplete(
    @QueryMap commonParams: Map<String, String>,
    @QueryMap requestParams: Map<String, String?>
  ): Observable<HttpResult<Any?>>

  @GET(URLs.getConfigList)
  fun getConfigList(
    @QueryMap commonParams: Map<String, String>,
    @QueryMap requestParams: Map<String, String?>
  ): Observable<HttpResult<Any?>>

  @Headers("Content-Type: application/json")
  @POST(URLs.getLifeAccountInfoById)
  fun getLifeAccountInfoById(
    @QueryMap commonParams: Map<String, String>,
    @Body requestParams: Map<String, String?>
  ): Observable<HttpResult<Any?>>
}
