package com.jld.vod.interfaces.remote

import com.jld.vod.model.bean.*
import io.reactivex.Observable
import okhttp3.MultipartBody
import retrofit2.http.*

/**
 * Create by zhaofuxin on 2020/7/15
 */
interface Apis {

    /**
     * 获取硬盘资源信息
     */
    @GET("/sys/findDisk")
    fun findDisk(): Observable<BaseBean<List<DiskBean>>>

    /**
     * 获取MAC地址
     */
    @GET("/sys/findIPAndMAC")
    fun findIPAndMAC(): Observable<BaseBean<String>>

    /**
     * 获取Cpu信息
     */
    @GET("/sys/findCpu")
    fun findCpu(): Observable<BaseBean<String>>

    /**
     * 根据模块编号获取所有一级类别
     */
    @GET("/category/findCategoryFatherAllByMid")
    suspend fun findCategoryFatherAllByMid(@Query("mid")mid:Long,@Query("lid") lid:Long): BaseBean<List<CategoryFatherAllBean>>

    /**
     * 根据类别编号获取所有二级类别
     */
    @GET("/category/findCategorySonAllByCid")
    suspend fun findCategorySonAllByCid(@Query("cid")cid:Long,@Query("lid") lid:Long): BaseBean<List<CategorySonAllBean>>

    /**
     * 获取所有语言信息
     */
    @GET("/language/findLanguageAll")
    fun findLanguageAll(): Observable<BaseBean<List<LanguageBean>>>

    /**
     * 获取全部模块信息
     */
    @GET("/modular/findModularAll")
    fun findModularAll(@Query("userId") userId:Long): Observable<BaseBean<List<ModelAllBean>>>

    /**
     * 根据模块编号获取模块页面列表
     */
    @GET("/modular/findModularPageAllByMid/{mid}")
    fun findModularPageAllByMid(): Observable<BaseBean<String>>

    /**
     * 根据模块页面编号获取对应的页面静态资源
     */
    @GET("/modular/findModularPageAllByMpId/{mpId}")
    fun findModularPageAllByMpId(): Observable<BaseBean<String>>

    /**
     * 根据模块编号查询电影信息
     */
    @GET("/movie/findMovieByMid")
    suspend fun findMovieByMid(@Query("mid") mid:Long,@Query("lid") lid:Long): BaseBean<List<MovieByMidBean>>

    /**
     * 根据类别编号获取电影信息
     */
    @GET("/movie/findMovieByCid")
    suspend fun findMovieByCid(@Query("cid") cid:Long,@Query("mid") mid:Long,@Query("lid") lid:Long): BaseBean<List<MovieByMidBean>>

    /**
     * 根据电影编号查询电影信息
     */
    @GET("/movie/findMovieById/{resId}/{lid}")
    fun findMovieById(): Observable<BaseBean<String>>

    /**
     * 文件电影上传（POST请求）
     */
    @Multipart
    @POST("/movie/upload")
    fun movieUpload(@Part file: MultipartBody.Part,@Query("mid") mid:Long,@Query("resId") resId:Long): Observable<BaseBean<String>>

    /**
     * 根据模块编号查询音乐信息
     */
    @GET("/music/findMusicByMid")
    suspend fun findMusicByMid(@Query("mid") mid:Long,@Query("lid") lid:Long): BaseBean<List<MusicByMidBean>>

    /**
     * 根据类别编号获取音乐信息
     */
    @GET("/music/findMusicByCid")
    suspend fun findMusicByCid(@Query("cid") cid:Long,@Query("mid") mid:Long,@Query("lid") lid:Long):  BaseBean<List<MusicByMidBean>>

    /**
     * 根据类别编号获取音乐信息
     */
    @GET("/music/findMusicById/{resId}/{lid}")
    fun findMusicById(): Observable<BaseBean<String>>

    /**
     * 文件音乐上传（POST请求）
     */
    @POST("/music/upload")
    fun musicUpload(): Observable<BaseBean<String>>

    /**
     * 根据模块编号查询网络链接信息
     */
    @GET("/netWork/findNetWorkAll")
    suspend fun findNetWorkAll(@Query("mid") mid:Long,@Query("lid") lid:Long): BaseBean<List<BrowserBean>>

    /**
     * 获取所有点餐信息
     */
    @GET("/orderFood/findOrderFoodAll/{mid}/{lid}")
    fun findOrderFoodAll(): Observable<BaseBean<String>>

    /**
     * 获取所有游戏信息
     */
    @GET("/game/findGameAll")
    suspend fun findGameAll(@Query("mid") mid:Long,@Query("lid") lid:Long,@Query("terminal") terminal :String): BaseBean<List<GameBean>>

    /**
     * 获取车辆信息
     */
    @GET("/car/carInfo")
    fun carInfo(): Observable<BaseBean<List<CarInfoBean>>>

    /**
     * 获取车辆运行信息
     */
    @GET("/car/carRunInfo")
    fun carRunInfo(): Observable<BaseBean<CarRunInfoBean>>

    /**
     * 更新车牌号（需云服务器启动才可更新）
     */
    @GET("/car/updateCarNum")
    fun updateCarNum(): Observable<BaseBean<String>>

    /**
     * 更同步WiFi信息（需云服务器启动才可更新）
     */
    @GET("/car/updateWFI")
    fun updateWFI(): Observable<BaseBean<String>>

    /**
     * 获取用户信息
     */
    @GET("/user")
    fun getUser(): Observable<UserBean>

    /**
     * 更新上传状态
     */
    @GET("/synchronization/updateUploadState/{mid}/{resId}")
    fun updateUploadState(): Observable<BaseBean<String>>

//    /**
//     * 获取未上传列表
//     */
//    @GET("/synchronization/findResByNotUploaded")
//    fun syncFindResByNotUploaded(@Query("mid") mid:Long): Observable<BaseBean<List<MovieResByNotUploaded>>>

    /**
     * 获取图片
     */
    @GET("/synchronization/previewImg/{imgUrl}")
    fun syncPreviewImg(): Observable<BaseBean<String>>

    /**
     * 更新游戏安装状态
     */
    @GET("/synchronization/updateGameInstallState/{resId}")
    fun syncUpdateGameInstallState(): Observable<BaseBean<String>>

    /**
     * 检测APP是否有更新（与云服务器交互）
     */
    @GET("/synchronization/detectAppUpdates")
    fun detectAppUpdates(@Query("userId") userId:Long, @Query("versionNum") versionNum : Long): Observable<AppUpdateInfo>

    /**
     * 下载云apk到本地服务器（与云服务器交互）
     */
    @GET("/synchronization/previewAPK")
    fun previewAPK(@Query("apkFile") apkFile :String): Observable<BaseBean<String>>

    /**
     * 获取本地apk文件流
     */
    @GET("/synchronization/previewAPKByteByLocal")
    @Streaming
    fun previewAPKByteByLocal(@Query("pakFile") pakFile:Long): Observable<BaseBean<String>>


    /**
     * 检测车辆是否绑定云平台
     */
    @GET("/synchronization/eqCar")
    fun eqCar(): Observable<BaseBean<String>>

    /**
     * 获取用户未绑定车辆
     */
    @GET("/synchronization/findCarByUnbound")
    fun findCarByUnbound(@Query("userId") userId:Long): Observable<BaseBean<List<FindCarByUnboundBean>>>

    /**
     * 车辆绑定云平台
     */
    @GET("/synchronization/binding")
    fun binding(@Query("ciId") ciId :String): Observable<BaseBean<String>>

    /**
     * 获取关于信息资源
     */
    @GET("/about/findAboutAll")
    suspend fun findAboutAll(@Query("mid") mid:Long,@Query("lid") lid:Long): BaseBean<List<FindAboutAllBean>>

    /**
     * 文件音乐上传（POST请求）
     */
    @Multipart
    @POST("/music/upload")
    fun musicUpload(@Part file: MultipartBody.Part,@Query("mid") mid:Long,@Query("resId") resId:Long): Observable<BaseBean<String>>

    /**
     * 获取音乐未上传列表
     */
    @GET("/synchronization/findResByNotUploaded/music")
    fun findResByNotUploadedmusic(): Observable<BaseBean<List<MusicResByNotUploaded>>>

    /**
     * 获取电影未上传列表
     */
    @GET("/synchronization/findResByNotUploaded/movie")
    fun findResByNotUploadedmovie(): Observable<BaseBean<List<MovieResByNotUploaded>>>

    /**
     * 获取该车辆所有站点信息
     */
    @GET("/carSite/findCarSiteAll")
    fun findCarSiteAll(@Query("ciId") ciId:Long,@Query("lid") lid:Long): Observable<BaseBean<List<CarSiteAllBean>>>

    /**
     * 获取游戏未上传列表
     */
    @GET("/synchronization/findResByNotUploaded/game")
    fun findResByNotUploadedgame(): Observable<BaseBean<List<GameResByNotUploaded>>>

    /**
     * 文件游戏上传（POST请求）
     */
    @Multipart
    @POST("/game/upload")
    fun gameUpload(@Part file: MultipartBody.Part,@Query("mid") mid:Long,@Query("resId") resId:Long): Observable<BaseBean<String>>

    /**
     * 更新游戏安装状态
     */
    @GET("/game/updateGameInstallState")
    fun updateGameInstallState(@Query("resId") resId:String,@Query("install") install:String,@Query("terminal") terminal :String): Observable<BaseBean<String>>

    /**
     * 获取未安装游戏列表
     */
    @GET("/game/findGameByNoInstall")
    fun findGameByNoInstall(@Query("terminal") terminal :String): Observable<BaseBean<List<FindGameByNoInstallBean>>>

    /**
     * 获取所有静态资源
     */
    @GET("/modular/findAllModularImg")
    fun findAllModularImg(@Query("userId") userId :String): Observable<BaseBean<findAllModularImgBean>>

    /**
     * 获取图标静态资源(new)
     */
    @GET("/modular/findAllModularRotateImg")
    fun findAllModularRotateImg(@Query("userId") userId :String,@Query("index") index :Int): Observable<BaseBean<List<AllModularRotateImgBean>>>

    /**
     * 获取系统主页静态资源
     */
    @GET("/modular/findHomePageImg")
    fun findHomePageImg(): Observable<BaseBean<HomePageImgBean>>

    /**
     * 返回需要卸载的游戏
     */
    @GET("/game/getNuInstallGame")
    fun getNuInstallGame(@Query("terminal") terminal :String): Observable<BaseBean<List<NuInstallGameBean>>>

    /**
     * 删除安装目录
     */
    @GET("/modular/delInstallPath")
    fun delInstallPath(@Query("tiId") tiId :String): Observable<BaseBean<List<NuInstallGameBean>>>


    /**
     * 获取固定位置广告
     */
    @GET("/advert/findPositionAdvert")
    fun findPositionAdvert(): Observable<BaseBean<List<PositionAdvertBean>>>

    /**
     * 获取GEO广告
     */
    @GET("/advert/findGEOAdvert")
    fun findGEOAdvert(): Observable<BaseBean<List<String>>>


    /**
     * 获取电影广告
     */
    @GET("/advert/findMovieAdvert")
    fun findMovieAdvert(): Observable<BaseBean<List<String>>>


    /**
     * 绑定用户
     */
    @GET("/user/updateUser")
    fun updateUser(@Query("userId") userId :String): Observable<BaseBean<String>>

}
