package com.bigfish.salecenter.api;

import static com.dayu.common.Constants.API_8600;

import com.bigfish.salecenter.model.CollectProductData;
import com.bigfish.salecenter.model.OrdersBean;
import com.bigfish.salecenter.model.ProductDetailBean;
import com.bigfish.salecenter.model.ProductListBean;
import com.bigfish.salecenter.model.RewardRecordBean;
import com.bigfish.salecenter.model.SalTabNumBean;
import com.bigfish.salecenter.model.SaleOrderDetailsBean;
import com.bigfish.salecenter.model.SaleProduct;
import com.dayu.base.api.protocol.BasePageBean;
import com.dayu.base.api.protocol.BaseResponse;
import com.dayu.base.api.protocol.CommentBean;
import com.dayu.base.api.protocol.CommentPostData;
import com.dayu.base.api.protocol.CommentReplyData;
import com.dayu.common.Constants;

import io.reactivex.Observable;
import okhttp3.ResponseBody;
import retrofit2.Call;
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);

    @GET(API_8600 + "/bdOrder/engineer")
    Observable<BaseResponse<BasePageBean<SaleProduct>>> getBdOrder(@Query("engineerId") int engineerId,
                                                                   @Query("key") String key,
                                                                   @Query("status") int status,
                                                                   @Query("page") int page,
                                                                   @Query("pageSize") int pageSize);

    /**
     * 奖励记录
     *
     * @param engineerId
     * @return
     */
    @GET(API_8600 + "/bdOrder/rewardRecordTop/engineerId/{engineerId}")
    Observable<BaseResponse<RewardRecordBean>> getrewardRecord(@Path("engineerId") int engineerId);

    /**
     * 收藏列表
     *
     * @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("status") int status,
                                                                           @Query("page") int page,
                                                                           @Query("pageSize") int pageSize);

    /**
     * 商品详情
     */
    @GET(Constants.API_7900 + "/goods/id/{id}/accountId/{accountId}")
    Observable<BaseResponse<ProductDetailBean>> getProductDetail(@Path("id") int goodId, @Path("accountId") int accountId);

    /**
     * 商品是否能分享
     */
    @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(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(API_8600 + "/orderGoods/{id}")
    Observable<BaseResponse<SaleOrderDetailsBean>> getOrderDetail(@Path("id") int id);

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

    /**
     * 获取留言
     *
     * @return
     */
    @GET(Constants.API_7400 + "/leaveMessage/goods/engineer/goodsId/{goodsId}")
    Observable<BaseResponse<BasePageBean<CommentBean>>> getComment(@Path("goodsId") int goodsId,
                                                                   @Query("page") int page,
                                                                   @Query("pageSize") int pageSize);

    /**
     * 留言
     */
    @POST(Constants.API_7400 + "/leaveMessage/goods/engineer")
    Observable<BaseResponse<Boolean>> addComment(@Body CommentPostData data);

    /**
     * 回复
     */
    @POST(Constants.API_7400 + "/leaveMessage/goods/engineer")
    Observable<BaseResponse<Boolean>> addCommentReply(@Body CommentReplyData data);

    @GET("/api-third/WXUser/getWxQrCode")
    Call<ResponseBody> createWxUrl(@Query("path") String path, @Query("width") int width);
}