package com.bigfish.salecenter.api;

import com.bigfish.salecenter.event.SaleTabNumEvent;
import com.bigfish.salecenter.model.CollectProductData;
import com.bigfish.salecenter.model.CommentBean;
import com.bigfish.salecenter.model.CommentPostData;
import com.bigfish.salecenter.model.OrdersBean;
import com.bigfish.salecenter.model.ProductDetailBean;
import com.bigfish.salecenter.model.ProductListBean;
import com.bigfish.salecenter.model.SalTabNumBean;
import com.dayu.base.api.protocol.BasePageBean;
import com.dayu.base.api.protocol.BaseResponse;
import com.dayu.common.Constants;

import io.reactivex.Observable;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;

/**
 * Created by mReturn
 * on 2020/2/21
 **/
public interface SaleService {
    String kaApi= "/api-ka-base";

    /**
     * 商品列表
     * @param engineerId
     * @param page
     * @param pageSize
     * @return
     */
    @GET(kaApi+"/goods/mobileGoods")
    Observable<BaseResponse<BasePageBean<ProductListBean>>> getProducts(@Query("engineerId") int engineerId,
                                                                        @Query("key") String key,
                                                                        @Query("status") int status,
                                                                        @Query("page") int page,
                                                                        @Query("pageSize") int pageSize);

    /**
     * 收藏列表
     * @param engineerId
     * @param page
     * @param pageSize
     * @return
     */
    @GET(kaApi+"/goods/mobileCollectionGoods")
    Observable<BaseResponse<BasePageBean<ProductListBean>>> getCollections(@Query("engineerId") int engineerId,
                                                                           @Query("key") String key,
                                                                        @Query("page") int page,
                                                                        @Query("pageSize") int pageSize);

    /**
     * 商品详情
     */
    @GET(kaApi+"/goods/{goodsId}")
    Observable<BaseResponse<ProductDetailBean>> getProductDetail(@Path("goodsId") int goodId);

    /**
     * 商品是否能分享
     */
    @GET(kaApi+"/goodsCollections/goodsId/{goodsId}/engineerId/{engineerId}")
    Observable<BaseResponse<Boolean>> canShare(@Path("goodsId") int goodsId,@Path("engineerId") int engineerId);

    /**
     * 取消收藏商品
     */
    @GET(kaApi+"/goodsCollections/cancel/goodsId/{goodsId}/engineerId/{engineerId}")
    Observable<BaseResponse<Boolean>> unCollectProdcut(@Path("goodsId") int goodsId,@Path("engineerId") int engineerId);

    /**
     * 收藏商品
     */
    @POST(kaApi+"/goodsCollections")
    Observable<BaseResponse<Boolean>> collectProdcut(@Body CollectProductData data);

    /**
     * 销售列表
     * @return
     */
    @GET(Constants.API_8600+"/orderGoods/mobile")
    Observable<BaseResponse<BasePageBean<OrdersBean>>> getSaleOrders(@Query("engineerId") int engineerId,
                                                                     @Query("state") int state,
                                                                     @Query("key") String key,
                                                                     @Query("page") int page,
                                                                     @Query("pageSize") int pageSize);

    /**
     * 订单详情
     * @param id
     * @return
     */
    @GET(Constants.API_8600+"/orderGoods/{id}")
    Observable<BaseResponse<OrdersBean>> getOrderDetail(@Path("id") int id);

    /**
     * 销售tab数量
     * @param engineerId
     * @return
     */
    @GET(Constants.API_7900+"/goods/engineerCount/{engineerId}")
    Observable<BaseResponse<SalTabNumBean>> getTabNums(@Path("engineerId") int engineerId);

    /**
     * 获取留言
     * @return
     */
    @GET("/api-message/" +"leaveMessage")
    Observable<BaseResponse<BasePageBean<CommentBean>>> getComment(@Query("targetId") int targetId,
                                                                   @Query("status") int status,
                                                                   @Query("targetType") int targetType,
                                                                   @Query("accountType ") int accountType,
                                                                   @Query("page") int page,
                                                                   @Query("pageSize") int pageSize);

    /**
     * 留言/回复
     */
    @POST("/api-message/" +"leaveMessage")
    Observable<BaseResponse<Boolean>> addComment(@Body CommentPostData data);
}