package com.gh.gamecenter.energy.retrofit

import com.gh.gamecenter.energy.entity.*
import com.google.gson.JsonObject
import io.reactivex.Single
import okhttp3.RequestBody
import okhttp3.ResponseBody
import retrofit2.http.*

interface ApiService {

    /**
     * 获取商品分类列表
     */
    @GET("shop/commodities/categories")
    fun getCommodityCategories(): Single<List<CommodityCategoryEntity>>

    /**
     * 获取商品列表
     */
    @GET("shop/commodities")
    fun getCommodities(
        @Query("filter") filter: String,
        @Query("page") page: Int,
        @Query("page_size") pageSize: Int
    ): Single<List<CommodityEntity>>

    /**
     * 获取新手任务列表
     */
    @GET("novice_tasks")
    fun getNoviceTasks(): Single<List<TaskEntity>>

    /**
     * 获取常驻任务列表
     */
    @GET("fixed_tasks")
    fun getFixedTasks(): Single<List<TaskEntity>>

    /**
     * 获取日常任务列表
     */
    @GET("daily_tasks")
    fun getDailyTasks(): Single<List<TaskEntity>>

    /**
     * 获取用户剩余光能
     */
    @GET("users/{user_id}/energies")
    fun getUserEnergies(@Path("user_id") userId: String?): Single<JsonObject>

    /**
     * 获取光能屋滚动通知
     */
    @GET("shop/orders/roll_notices")
    fun getRollNotices(): Single<List<RollNoticeEntity>>

    /**
     * 获取签到状态
     */
    @GET("users/{user_id}:signin")
    fun getSignStatus(@Path("user_id") userId: String): Single<SignStatusEntity>

    /**
     * 签到并获取状态
     */
    @POST("users/{user_id}:signin")
    fun signIn(@Path("user_id") userId: String): Single<SignStatusEntity>

    /**
     * 上报光能任务
     */
    @POST("users/{user_id}/tasks:check")
    fun postEnergyTask(@Path("user_id") userId: String, @Body body: RequestBody): Single<List<EnergyTaskCompleteEntity>>

    /**
     * 检测邀请码
     */
    @POST("users/{user_id}:invited")
    fun checkInviteCode(@Path("user_id") userId: String, @Body body: RequestBody): Single<ResponseBody>
}