package com.sjkj.appthreefloor_tsgz.net;

import com.sjkj.appthreefloor_tsgz.bean.AppEventBean;
import com.sjkj.appthreefloor_tsgz.bean.AppEventThreeBean;
import com.sjkj.appthreefloor_tsgz.bean.BannerDataBean;
import com.sjkj.appthreefloor_tsgz.bean.CommonDateBean;
import com.sjkj.appthreefloor_tsgz.bean.DailyBean;
import com.sjkj.appthreefloor_tsgz.bean.EventCenterListBean;
import com.sjkj.appthreefloor_tsgz.bean.EventDetailsBean;
import com.sjkj.appthreefloor_tsgz.bean.FileBean;
import com.sjkj.appthreefloor_tsgz.bean.LogInRsaBean;
import com.sjkj.appthreefloor_tsgz.bean.NoticeListBean;
import com.sjkj.appthreefloor_tsgz.bean.ResourceVisualizationBean;
import com.sjkj.appthreefloor_tsgz.bean.ResourcesListBean;
import com.sjkj.appthreefloor_tsgz.bean.ResureDetailsBean;
import com.sjkj.appthreefloor_tsgz.bean.VersionBean;
import com.sjkj.base_lib.camera.dh.bean.CameraBean;
import com.sjkj.base_lib.entity.Params;
import com.sjkj.base_lib.entity.ResponseBean;

import java.util.List;
import java.util.Map;

import okhttp3.MultipartBody;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.QueryMap;
import rx.Observable;

public interface RetrofitService {
    @POST("app/login")
    Observable<ResponseBean<Object>> login(@Body Params params);

    //事件详情中资源列表
    @GET("data/list")
    Observable<ResponseBean<List<ResourcesListBean>>> eventDetailsResourcesList(@QueryMap Params params);

    //事件详情中资源列表--带name
    @GET("data/resourceList")
    Observable<ResponseBean<List<CommonDateBean>>> resourceList(@QueryMap Params params);

    //事件详情-改变事件状态
    @POST("event/eventFlow")
    Observable<ResponseBean<Object>> EventEdit(@Body Params params);

    //事件详情
    @GET("event/getEventByEventId")
    Observable<ResponseBean<EventDetailsBean>> eventDetails(@QueryMap Params params);

    //资源详情
    @GET("data/resourceDetail")
    Observable<ResponseBean<ResureDetailsBean>> resureDetails(@QueryMap Params params);

    //首页-通知公告
    @GET("app/noticeList")
    Observable<ResponseBean<List<NoticeListBean>>> homeNoticeList(@QueryMap Params params);

    @POST("AppLoginController/getPrivateKey")
    Observable<ResponseBean<LogInRsaBean>> getLoginKey();

    //首页轮播图
    @POST("AppMainPageController/getMainPageInfo")
    Observable<ResponseBean<BannerDataBean>> banners(@QueryMap Params params);

    //事件中心-事件列表
    @GET("event/eventList")
    Observable<ResponseBean<EventCenterListBean>> eventCenterList(@QueryMap Params params);

    //监控中心摄像头列表
    @GET("AppCameraController/listCamera")
    Observable<ResponseBean<List<CameraBean>>> cameraAllList(@QueryMap Params params);

    //获取数据中心资源落点列表（新）
    @POST("AppBigDataCountController/getResourcePoint")
    Observable<ResponseBean<List<ResourceVisualizationBean>>> GetNEWDATA(@Body Map<String, Object> params);

    //获取部门
    @GET("AppLoginController/deptselector")
    Observable<ResponseBean<DailyBean>> GetDepartment(@QueryMap Map<String, Object> params);

    //上报/新增事件
    @POST("AppEventController/addEventFen")
    Observable<ResponseBean<Object>> eventNew(@Body Params params);

    //事件子类列表
    @GET("AppEventController/listSJfl")
    Observable<ResponseBean<List<AppEventBean>>> QueryAppEvent(@QueryMap Map<String, Object> params);

    //上报事件-事件分类
    @GET("AppEventController/listHgjXl")
    Observable<ResponseBean<List<AppEventThreeBean>>> QueryAppEventThree(@QueryMap Map<String, Object> params);

    //上传文件
    @Multipart
    @POST("AppFileController/appUpload")
    Observable<ResponseBean<FileBean>> upload(@Part MultipartBody.Part file);

    //校验版本信息
    @POST("AppVersionController/getVersionInfo")
    Observable<ResponseBean<VersionBean>> checkVersion(@QueryMap Params params);
}
