package com.adealink.weparty.playmate.datasource.remote

import com.adealink.frame.base.Rlt
import com.adealink.frame.network.data.Res
import com.adealink.weparty.module.playmate.data.PlaymateBusinessData
import com.adealink.weparty.module.playmate.data.PlaymateDetailData
import com.adealink.weparty.playmate.comment.data.PlaymateCommentReq
import com.adealink.weparty.playmate.comment.data.PlaymateCommentRes
import com.adealink.weparty.playmate.data.AddWelcomeReq
import com.adealink.weparty.playmate.data.AvailableRoomRes
import com.adealink.weparty.playmate.data.BusinessTimeData
import com.adealink.weparty.playmate.data.DeleteWelcomeReq
import com.adealink.weparty.playmate.data.EnableAutoWelcomeReq
import com.adealink.weparty.playmate.data.GetSkillSwitchReq
import com.adealink.weparty.playmate.data.IsRoomAvailableRes
import com.adealink.weparty.playmate.data.PlaymateCategoryConditionRes
import com.adealink.weparty.playmate.data.PlaymateCategoryRes
import com.adealink.weparty.playmate.data.PlaymateDetailReq
import com.adealink.weparty.playmate.data.PlaymateListReq
import com.adealink.weparty.playmate.data.PlaymateListRes
import com.adealink.weparty.playmate.data.PlaymateUserPushQuotaReq
import com.adealink.weparty.playmate.data.PlaymateUserPushQuotaRes
import com.adealink.weparty.playmate.data.ReportUserPushChatReq
import com.adealink.weparty.playmate.data.SetupBusinessTimeReq
import com.adealink.weparty.playmate.data.SkillSettingListReq
import com.adealink.weparty.playmate.data.SkillSettingListRes
import com.adealink.weparty.playmate.data.SkillSwitchData
import com.adealink.weparty.playmate.data.SwitchBusinessReq
import com.adealink.weparty.playmate.data.SwitchSkillReq
import com.adealink.weparty.playmate.data.UpdateWelcomeReq
import com.adealink.weparty.playmate.data.UserPlaymateCategoryReq
import com.adealink.weparty.playmate.data.UserPlaymateCategoryRes
import com.adealink.weparty.playmate.data.UserPushListRes
import com.adealink.weparty.playmate.data.WelcomeListRes
import com.adealink.weparty.playmate.data.WelcomeReplayReq
import retrofit2.http.Body
import retrofit2.http.POST

interface PlaymateHttpService {

    /**
     * 获取所有品类
     */
    @POST("biz/categorys")
    suspend fun getAllCategory(): Rlt<Res<PlaymateCategoryRes>>


    @POST("biz/categorys/filter/condition")
    suspend fun getAllCategoryCondition(): Rlt<Res<PlaymateCategoryConditionRes>>


    @POST("skill/list")
    suspend fun getPlaymateList(@Body req: PlaymateListReq): Rlt<Res<PlaymateListRes>>

    @POST("skill/detail")
    suspend fun getPlaymateDetail(@Body req: PlaymateDetailReq): Rlt<Res<PlaymateDetailData>>

    @POST("skill/user/goods")
    suspend fun getUserPlaymateCategory(@Body req: UserPlaymateCategoryReq): Rlt<Res<UserPlaymateCategoryRes>>

    @POST("skill/goods/comments")
    suspend fun getPlaymateComment(@Body req: PlaymateCommentReq): Rlt<Res<PlaymateCommentRes>>

    @POST("playmate/business/switch")
    suspend fun switchBusiness(@Body req: SwitchBusinessReq): Rlt<Res<Any>>

    @POST("playmate/business/info")
    suspend fun getPlaymateBusinessInfo(): Rlt<Res<PlaymateBusinessData>>

    @POST("playmate/skill/list")
    suspend fun getSkillSettingList(@Body req: SkillSettingListReq): Rlt<Res<SkillSettingListRes>>

    @POST("skill/switch/get")
    suspend fun getSkillSwitch(@Body req: GetSkillSwitchReq): Rlt<Res<SkillSwitchData>>


    @POST("skill/switch/set")
    suspend fun switchSkill(@Body req: SwitchSkillReq): Rlt<Res<Any>>

    @POST("playmate/getAcceptSet")
    suspend fun getBusinessTime(): Rlt<Res<BusinessTimeData>>

    @POST("playmate/acceptSet")
    suspend fun setupBusinessTime(@Body req: SetupBusinessTimeReq): Rlt<Res<Any>>

    @POST("playmate/push/list")
    suspend fun getUserPushList(): Rlt<Res<UserPushListRes>>

    @POST("playmate/welcome/list")
    suspend fun getWelcomeList(): Rlt<Res<WelcomeListRes>>

    @POST("playmate/welcome/create")
    suspend fun addWelcome(@Body req: AddWelcomeReq): Rlt<Res<Any>>

    @POST("playmate/welcome/delete")
    suspend fun deleteWelcome(@Body req: DeleteWelcomeReq): Rlt<Res<Any>>

    @POST("playmate/welcome/update")
    suspend fun updateWelcome(@Body req: UpdateWelcomeReq): Rlt<Res<Any>>

    @POST("playmate/autoWelcome/switch")
    suspend fun enableAutoWelcome(@Body req: EnableAutoWelcomeReq): Rlt<Res<Any>>

    @POST("playmate/welcome/reply/submit")
    suspend fun userWelcomeReplyReq(@Body req: WelcomeReplayReq): Rlt<Res<Any>>

    @POST("playmate/push/chat/submit")
    suspend fun reportUserPushChat(@Body req: ReportUserPushChatReq): Rlt<Res<Any>>

    @POST("playmate/push/chat/quota")
    suspend fun getUserPushChatQuota(@Body req: PlaymateUserPushQuotaReq): Rlt<Res<PlaymateUserPushQuotaRes>>

    @POST("live/room/alive")
    suspend fun isRoomAvailable(): Rlt<Res<IsRoomAvailableRes>>

    @POST("live/room/random")
    suspend fun getAvailableRoom(): Rlt<Res<AvailableRoomRes>>

}