package cn.gcs.base.gcsapp.retrofit;

import com.google.gson.JsonArray;

import java.util.ArrayList;

import cn.gcs.base.gcsapp.activity.login.model.ComMember;
import cn.gcs.base.gcsapp.activity.login.model.LoginData;
import cn.gcs.base.gcsapp.activity.main.fg_center.ac_donate.m.Donation;
import cn.gcs.base.gcsapp.activity.main.fg_center.ac_importScore.m.ImportHistory;
import cn.gcs.base.gcsapp.activity.main.fg_center.ac_investors.m.Investors;
import cn.gcs.base.gcsapp.activity.main.fg_center.ac_moneyHistory.m.TradeHistory;
import cn.gcs.base.gcsapp.activity.main.fg_center.ac_myInfo.m.MyInfo;
import cn.gcs.base.gcsapp.activity.main.fg_center.ac_shareHolders.m.ShareHolder;
import cn.gcs.base.gcsapp.activity.main.fg_center.ac_systemMessage.m.SystemMsg;
import cn.gcs.base.gcsapp.activity.main.fg_center.coupon.m.Coupon;
import cn.gcs.base.gcsapp.activity.main.fg_center.m.BillCardInfo;
import cn.gcs.base.gcsapp.activity.main.fg_center.order.m.Order;
import cn.gcs.base.gcsapp.activity.main.fg_center.setting.m.CircleSortInfo;
import cn.gcs.base.gcsapp.activity.main.fg_friendCircle.bdlist.m.BDData;
import cn.gcs.base.gcsapp.activity.main.fg_friendCircle.circle.m.Circle;
import cn.gcs.base.gcsapp.activity.main.fg_friendCircle.circle.m.CircleComments;
import cn.gcs.base.gcsapp.activity.main.fg_friendCircle.circle.m.CircleInfo;
import cn.gcs.base.gcsapp.activity.main.fg_friendCircle.circle.m.CircleType;
import cn.gcs.base.gcsapp.activity.main.fg_friendCircle.entre_activity.m.ActivityComments;
import cn.gcs.base.gcsapp.activity.main.fg_friendCircle.entre_activity.m.EntreActicityInfo;
import cn.gcs.base.gcsapp.activity.main.fg_friendCircle.entre_project.m.ProjectComments;
import cn.gcs.base.gcsapp.activity.main.fg_friendCircle.entre_project.m.ProjectInfo;
import cn.gcs.base.gcsapp.activity.main.fg_friendCircle.financing.m.FinancingInfo;
import cn.gcs.base.gcsapp.activity.main.fg_friendCircle.investors.m.Investor;
import cn.gcs.base.gcsapp.activity.main.fg_friendCircle.m.CsgVR;
import cn.gcs.base.gcsapp.activity.main.fg_friendCircle.m.News;
import cn.gcs.base.gcsapp.activity.main.fg_message.addFriend.m.PhoneOrFriends;
import cn.gcs.base.gcsapp.activity.main.fg_message.redpack.m.ReciveRedPacket;
import cn.gcs.base.gcsapp.activity.main.fg_message.redpack.m.RedPacketInfo;
import cn.gcs.base.gcsapp.activity.main.fg_shop.ac_address.m.Address;
import cn.gcs.base.gcsapp.activity.main.fg_shop.ac_buy.m.PostageFee;
import cn.gcs.base.gcsapp.activity.main.fg_shop.ac_goodsDetail.m.GoodsDetail;
import cn.gcs.base.gcsapp.activity.main.fg_shop.ac_goodsDetail.m.CartGoods;
import cn.gcs.base.gcsapp.activity.main.fg_shop.ac_pay.pay_wx.m.PayWXData;
import cn.gcs.base.gcsapp.activity.main.fg_shop.m.Goods;
import cn.gcs.base.gcsapp.activity.main.fg_shop.m.GoodsTypeOne;
import cn.gcs.base.gcsapp.activity.main.fg_shop.m.GoodsTypeAll;
import cn.gcs.base.gcsapp.activity.main.fg_shop.m.GoodsTypeTwo;
import cn.gcs.base.gcsapp.activity.main.fg_shop.m.HomePageGoods;
import cn.gcs.base.gcsapp.activity.main.fg_worship.m.Mammons;
import cn.gcs.base.gcsapp.activity.main.fg_worship.m.Solution;
import cn.gcs.base.gcsapp.activity.main.fg_worship.m.UserTribute;
import cn.gcs.base.gcsapp.activity.main.fg_worship.tribute.m.TributesInfo;
import cn.gcs.base.gcsapp.base.model.BaseModel;
import retrofit2.http.DELETE;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;
import retrofit2.http.Query;
import rx.Observable;

public interface ApiStores {
    //    String API_SERVER_URL = "http://www.vip177.cn:8080/webcast/";
//    String URL_LOGIN = API_SERVER_URL + "api/member/login";
    String URL_BASE = "http://116.62.228.37:8000/";

    //注册
    @POST("members")
    Observable<BaseModel<LoginData>> doRegister(@Query("mobile") String mbPhone, @Query("password") String mbPwd, @Query("smsCode") String code, @Query("registrationId") String registrationId, @Query("province") String province, @Query("city") String city);

    //绑定手机
    @POST("members/third")
    Observable<BaseModel<LoginData>> bindPhone(@Query("mobile") String mbPhone, @Query("account") String account, @Query("smsCode") String code, @Query("registrationId") String registrationId, @Query("province") String province, @Query("city") String city, @Query("type") int type);

    //修改密码
    @PUT("passwords")
    Observable<BaseModel> doReSetPwd(@Query("mobile") String mbPhone, @Query("password") String mbPwd, @Query("smsCode") String code);

    //登录
    @POST("tokens")
    Observable<BaseModel<LoginData>> doLogin(@Query("mobile") String mbPhone, @Query("password") String mbPwd, @Query("registrationId") String registrationId);

    //验证码登录
    @POST("tokens/smsLogin")
    Observable<BaseModel<LoginData>> doLoginBySMS(@Query("mobile") String mbPhone, @Query("registrationId") String registrationId, @Query("province") String province, @Query("city") String city, @Query("smsCode") String smsCode);

    //第三方登录
    @POST("tokens/third")
    Observable<BaseModel<LoginData>> doThirdLogin(@Query("account") String account, @Query("type") int type, @Query("registrationId") String registrationId);

    //获取验证码
    @POST("smsCodes")
    Observable<BaseModel> GetCheckCode(@Query("mobile") String mbPhone);

    // 财神谷数据列表 type 1财神谷动态 2财神谷介绍 3财神谷直播 4创业头条
    @GET("articles")
    Observable<BaseModel<ArrayList<News>>> GetNews(@Header("authorization") String token); // 财神谷数据列表 type 1财神谷动态 2财神谷介绍 3财神谷直播 4创业头条

    //获取联系人列表
    @GET("friends/list")
    Observable<BaseModel<ArrayList<ComMember>>> getFriends(@Header("authorization") String token);

    //获取联系人列表
    @GET("friends/member")
    Observable<BaseModel<ArrayList<PhoneOrFriends>>> getFriends2(@Header("authorization") String token, @Query("mobiles") String phones);

    //获取联系人列表
    @GET("friends/list/search")
    Observable<BaseModel<ArrayList<ComMember>>> SearchFriends(@Header("authorization") String token, @Query("name") String name, @Query("mobile") String mobile, @Query("type") String type);

    //获取联系人列表
    @GET("members/circleContent/page/{page}/pageSize/{pageSize}")
    Observable<BaseModel<ArrayList<CircleComments>>> getMemberDyn(@Header("authorization") String token, @Path("page") int page, @Path("pageSize") int pageSize, @Query("mobile") String mobile);

    //同意好友添加
    @POST("friends")
    Observable<BaseModel<ArrayList<ComMember>>> AddFriends(@Header("authorization") String token, @Query("easemobAccount") String easemobAccount);

    //删除好友
    @DELETE("friends")
    Observable<BaseModel> DeleteFriends(@Header("authorization") String token, @Query("memberId") int memberId);

    //财友圈--投资人  type 请求类型 1全部 2关注
    @GET("investors/list/page/{page}/pageSize/{pageSize}")
    Observable<BaseModel<ArrayList<Investor>>> GetInvestor(@Header("authorization") String token, @Path("page") int page, @Path("pageSize") int pageSize, @Query("type") int type);

    //财友圈--投资人详情
    @GET("investors/detail")
    Observable<BaseModel<Investor>> GetInvestorInfo(@Header("authorization") String token, @Query("investorId") long investorId);

    //财友圈--投资人详情
    @POST("investors/sendBP")
    Observable<BaseModel> SendBP(@Header("authorization") String token, @Query("investorId") long investorId, @Query("projectId") int projectId);

    //财友圈--投资人详情
    @POST("investors")
    Observable<BaseModel> doInvestor(@Header("authorization") String token, @Query("investorId") long investorId);

    // 财神谷数据列表 type 1财神谷动态 2财神谷介绍 3财神谷直播 4创业头条 5财友圈轮播 6财神谷动态轮播 7vr地址
    @GET("/circles/dynamic/{page}")
    Observable<BaseModel<JsonArray>> GetCsgData(@Header("authorization") String token, @Path("page") int page, @Query("type") int type);

    // 7财神谷vr地址
    @GET("/circles/dynamic/{page}")
    Observable<BaseModel<ArrayList<CsgVR>>> getCsgVR(@Header("authorization") String token, @Path("page") int page, @Query("type") int type);

    // 圈子类别
    @GET("circles/circleTypes")
    Observable<BaseModel<ArrayList<CircleType>>> CircleTypes(@Header("authorization") String token);

    //创建圈子
    @POST("circles")
    Observable<BaseModel> CreateCircle(@Header("authorization") String token, @Query("imageKey") String imageKey, @Query("circleName") String circleName, @Query("announcement") String announcement, @Query("type") int type);

    //编辑圈子 ,@Query("type")int type
    @POST("circles/modify")
    Observable<BaseModel> ModifyCircle(@Header("authorization") String token, @Query("circleId") int circleId, @Query("imageKey") String imageKey, @Query("circleName") String circleName, @Query("announcement") String announcement);

    //解散圈子
    @DELETE("circles")
    Observable<BaseModel> DissolveCircle(@Header("authorization") String token, @Query("circleId") int circleId);

    //退出圈子
    @DELETE("circles/ordinaryMember")
    Observable<BaseModel> LeaveCircle(@Header("authorization") String token, @Query("circleId") int circleId);

    //获取单个圈子信息
    @GET("circles/{id}")
    Observable<BaseModel<CircleInfo>> GetCircleById(@Header("authorization") String token, @Path("id") int id);

    //获取圈子详情
    @GET("circles/page/{page}/pageSize/{pageSize}")
    Observable<BaseModel<Circle>> GetCircleInfo(@Header("authorization") String token, @Path("page") int page, @Path("pageSize") int pageSize, @Query("id") int id);

    //申请加入圈子
    @POST("circles/applys")
    Observable<BaseModel> JoinCircle(@Header("authorization") String token, @Query("circleId") int circleId, @Query("applyTxt") String applyTxt);

    //邀请成员加入圈子
    @POST("circles/member")
    Observable<BaseModel> Addmember2Circle(@Header("authorization") String token, @Query("circleId") int circleId, @Query("memberIds") String memberIds);

    //邀请成员加入圈子
    @DELETE("circles/member")
    Observable<BaseModel> MinusMemberFromCircle(@Header("authorization") String token, @Query("circleId") int circleId, @Query("memberIds") String memberIds);

    //审核加入圈子 state:2通过 3不通过
    @POST("/circles/applys/review")
    Observable<BaseModel> handleMessage(@Header("authorization") String token, @Query("applyId") int applyId, @Query("circleId") int circleId, @Query("state") int state);

    //财友圈 type 消费榜 mammon_coin  借光榜 light  善缘榜 donations_money
    @GET("/ranks/{type}/page/{page}/pageSize/{pageSize}")
    Observable<BaseModel<BDData>> GetRanks(@Header("authorization") String token, @Path("type") String type, @Path("page") int page, @Path("pageSize") int pageSize);

    //获取圈子列表
    @GET("circles/list")
    Observable<BaseModel<ArrayList<CircleInfo>>> GetCircles(@Header("authorization") String token);

    //获取圈子列表
    @GET("circles/list/type/{type}")
    Observable<BaseModel<ArrayList<CircleInfo>>> GetCirclesByType(@Header("authorization") String token, @Path("type") int type);

    //获取圈子列表
    @GET("circles/circleName/{circleName}")
    Observable<BaseModel<ArrayList<CircleInfo>>> GetCirclesByName(@Header("authorization") String token, @Path("circleName") String circleName);

    //申请加入圈子
    @POST("circles/applys")
    Observable<BaseModel> ApplysCircle(@Header("authorization") String token, @Query("applyTxt") String applyTxt, @Query("circleId") String id);

    //发布圈子动态
    @POST("circles/circleContents")
    Observable<BaseModel> CircleContentsCircle(@Header("authorization") String token, @Query("circleIds") String circleIds, @Query("imageKeys") String imageKeys, @Query("content") String content);

    //评论圈子动态 replyUserId:被回复人的ID contentId:动态id
    @POST("circles/circleContents/comments")
    Observable<BaseModel<CircleComments>> CircleComments(@Header("authorization") String token, @Query("contentId") int contentId, @Query("comment") String comment, @Query("replyUserId") int replyUserId, @Query("circleId") int circleId);

    //点赞圈子动态  opt_type:1点赞 2取消点赞 contentId:动态id
    @POST("circles/circleContents/praises")
    Observable<BaseModel<CircleComments>> CircleContentsPraises(@Header("authorization") String token, @Query("contentId") int contentId, @Query("opt_type") int opt_type, @Query("circleId") int circleId);

    //财神谷动态添加阅读数
    @POST("/circles/dynamic/hits")
    Observable<BaseModel> addReadCount(@Header("authorization") String token, @Query("article_id") int article_id);

    //评论圈子动态 replyUserId:被回复人的ID contentId:动态id
    @POST("circles/circleContents/comments")
    Observable<BaseModel<CircleComments>> CircleComments1(@Header("authorization") String token, @Query("contentId") int contentId, @Query("comment") String comment, @Query("replyUserId") int replyUserId);

    //点赞圈子动态  opt_type:1点赞 2取消点赞 contentId:动态id
    @POST("circles/circleContents/praises")
    Observable<BaseModel<CircleComments>> CircleContentsPraises1(@Header("authorization") String token, @Query("contentId") int contentId, @Query("opt_type") int opt_type);

    @POST("/members/light")
    Observable<BaseModel<CircleComments>> CircleContentsLights(@Header("authorization") String token, @Query("light_member_id") int light_member_id);

    //查询融资事件列表 , @Query("year") int year, @Query("round") int round
    @GET("financing/list/{page}/pageSize/{pageSize}")
    Observable<BaseModel<ArrayList<FinancingInfo>>> FinancingList(@Header("authorization") String token, @Path("page") int page, @Path("pageSize") int pageSize, @Query("sortType") int sortType, @Query("sortWay") int sortWay);

    //融资事件详情
    @GET("financing/info")
    Observable<BaseModel<FinancingInfo>> FinancingInfo(@Header("authorization") String token, @Query("fiancingId") int fiancingId);

    //财友圈--创业项目列表 sortType:排序类型 1默认 2轮次 3类别  sortWay:排序方式 1升序 2降序
    @POST("projects")
    Observable<BaseModel<ProjectInfo>> projectsCreate(@Header("authorization") String token, @Query("iconUrl") String iconUrl,
                                                      @Query("projectName") String projectName,
                                                      @Query("introduction") String introduction,
                                                      @Query("city") String city,
                                                      @Query("details") String details,
                                                      @Query("appeal") String appeal,
                                                      @Query("contactPhone") String contactPhone, @Query("pics") String pics,
                                                      @Query("contactName") String contactName,
                                                      @Query("contactAddress") String contactAddress,
                                                      @Query("contactEmail") String contactEmail,
                                                      @Query("round") int round, @Query("type_id") String type_id);

    //财友圈--创业项目列表 sortType:排序类型 1默认 2轮次 3类别  sortWay:排序方式 1升序 2降序
    @GET("projects/page/{page}/pageSize/{pageSize}")
    Observable<BaseModel<ArrayList<ProjectInfo>>> projectsList(@Header("authorization") String token, @Path("page") int page, @Path("pageSize") int pageSize, @Query("sortType") int sortType, @Query("sortWay") int sortWay);

    //财友圈--创业项目列表 sortType:排序类型 1默认 2轮次 3类别  sortWay:排序方式 1升序 2降序
    @POST("projects/collection ")
    Observable<BaseModel> collectionProject(@Header("authorization") String token, @Query("projectId") int projectId, @Query("optType") String optType);

    @GET("projects/comments")
    Observable<BaseModel<ArrayList<ProjectComments>>> projectComments(@Header("authorization") String token, @Query("projectId") int projectId);

    @POST("projects/comments")
    Observable<BaseModel<ProjectComments>> AddprojectComments(@Header("authorization") String token, @Query("projectId") int projectId, @Query("content") String content);

    //    发布创业活动 activityName:活动名称  activityUrl:活动链接  posterKey:海报key  beginDate:活动开始日期  beginTime:活动开始时间  endDate:活动结束日期  endTime:活动结束时间  address:活动地址  num:人员限制  organizer:主办方  introduction:活动简介  applyBeginDate:报名开始日期  applyBeginTime:报名开始时间  applyEndTime:报名结束时间  applyEndTime:报名结束时间
    @POST("businessactivities")
    Observable<BaseModel<EntreActicityInfo>> publishActivitys(@Header("authorization") String token, @Query("activityName") String activityName, @Query("activityUrl") String activityUrl, @Query("posterKey") String posterKey, @Query("beginDate") String beginDate, @Query("beginTime") String beginTime, @Query("endDate") String endDate, @Query("endTime") String endTime, @Query("address") String address, @Query("num") String num, @Query("organizer") String organizer, @Query("introduction") String introduction, @Query("applyBeginDate") String applyBeginDate, @Query("applyEndDate") String applyEndDate, @Query("applyBeginTime") String applyBeginTime, @Query("applyEndTime") String applyEndTime);
//    //    发布创业活动 activityName:活动名称  activityUrl:活动链接  posterKey:海报key  beginDate:活动开始日期  beginTime:活动开始时间  endDate:活动结束日期  endTime:活动结束时间  address:活动地址  num:人员限制  organizer:主办方  introduction:活动简介  applyBeginDate:报名开始日期  applyBeginTime:报名开始时间  applyEndTime:报名结束时间  applyEndTime:报名结束时间
//    @POST("businessactivities")
//    Observable<BaseModel<EntreActicityInfo>> publishActivitys(@Header("authorization") String token, @Query("activityName") String activityName, @Query("activityUrl") String activityUrl, @Query("posterKey") String posterKey, @Query("beginDate") String beginDate, @Query("beginTime") String beginTime, @Query("endDate") String endDate, @Query("endTime") String endTime, @Query("address") String address, @Query("num") String num, @Query("organizer") String organizer, @Query("introduction") String introduction, @Query("applyBeginDate") String applyBeginDate, @Query("applyEndDate") String applyEndDate, @Query("applyBeginTime") String applyBeginTime, @Query("applyEndTime") String applyEndTime);

    //    获取活动列表
    @GET("businessactivities/page/{page}/pageSize/{pageSize}")
    Observable<BaseModel<ArrayList<EntreActicityInfo>>> getActivityList(@Header("authorization") String token, @Path("page") int page, @Path("pageSize") int pageSize);

    //    获取活动
    @GET("businessactivities/info")
    Observable<BaseModel<EntreActicityInfo>> getActivityById(@Header("authorization") String token, @Query("activityId") int activityId);

    //    <EntreActicityInfo>
    //    报名活动
    @POST("businessactivities/member")
    Observable<BaseModel> JoinActivity(@Header("authorization") String token, @Query("activityId") int activityId);

    //    获取活动评论列表
    @GET("businessactivities/comments/list")
    Observable<BaseModel<ArrayList<ActivityComments>>> GetActivityComments(@Header("authorization") String token, @Query("activityId") int activityId);

    //    发表活动评论
    @POST("businessactivities/comments")
    Observable<BaseModel> SendActivityComments(@Header("authorization") String token, @Query("activityId") int activityId, @Query("content") String content);

    @GET("uploadTokens")
    Observable<BaseModel<UploadToken>> UploadTokens(@Header("authorization") String token);

    //在线商城首页一级类目
    @GET("goodsTypes/categoryOne")
    Observable<BaseModel<ArrayList<GoodsTypeOne>>> getCategoryOne(@Header("authorization") String token);

    //获取热卖推荐的商品列表
    @GET("goods/recommend/page/{page}/pageSize/{pageSize}")
    Observable<BaseModel<ArrayList<Goods>>> getHot(@Header("authorization") String token, @Path("page") int page, @Path("pageSize") int pageSize);

    //根据ID获取商品详情
    @GET("/goods/info")
    Observable<BaseModel<GoodsDetail>> getGoodsDetail(@Header("authorization") String token, @Query("goodsId") int goodsId);

    //根据类别ID获取商品列表
    @GET("/goods/list/page/{page}/pageSize/{pageSize}")
    Observable<BaseModel<ArrayList<Goods>>> getGoods(@Header("authorization") String token, @Path("page") int page, @Path("pageSize") int pageSize, @Query("categoryOneId") int categoryOneId, @Query("categoryTwoId") int categoryTwoId, @Query("sortType") int sortType, @Query("sortWay") int sortWay);

    //根据一级类目ID获取二级级类目
    @GET("/goodsTypes/categoryTwo")
    Observable<BaseModel<ArrayList<GoodsTypeTwo>>> getCategoryTwo(@Header("authorization") String token, @Query("goodsTypesId") int category1Id);

    //股东专属
    @GET("/mine/shareholders")
    Observable<BaseModel<ShareHolder>> getShareHolders(@Header("authorization") String token);

    //优惠劵
    @GET("mine/coupons")
    Observable<BaseModel<ArrayList<Coupon>>> getMyCoupons(@Header("authorization") String token);

    //我的活动 type 1:发起 2:参与
    @GET("mine/activities")
    Observable<BaseModel<ArrayList<EntreActicityInfo>>> getMyActivity(@Header("authorization") String token);

    //我的项目 type 1:发起的 2:收藏的
    @GET("/mine/projects")
    Observable<BaseModel<ArrayList<ProjectInfo>>> getProject(@Header("authorization") String token, @Query("type") int type);

    //爱心捐赠 type 1:全部 2:参与
    @GET("/mine/loveDonations")
    Observable<BaseModel<ArrayList<Donation>>> getDonations(@Header("authorization") String token, @Query("type") int type);

    //爱心捐赠详情GET  int love_id
    String getDonationDetail = URL_BASE + "mine/loveDonations/detail";

    //发起爱心捐赠POST @Query("love_id") int love_id, @Query("money") int money
    String donate = URL_BASE + "mine/loveDonations";

    //获取所有类别
    @GET("/goodsTypes/categoryAll")
    Observable<BaseModel<GoodsTypeAll>> getLeftMenu(@Header("authorization") String token);

    //创建订单POST
    String createOrder = URL_BASE + "orders";

    //删除订单
    @POST("/orders/cancel")
    Observable<BaseModel> deleteOrder(@Header("authorization") String token, @Query("orderId") int orderId);

    //我的订单 orderStatus 1未付款 2已付款(待发货) 3已发货 4已收货 5退货
    @GET("orders/list/page/{page}/pageSize/{pageSize}")
    Observable<BaseModel<ArrayList<Order>>> getOrders(@Header("authorization") String token, @Path("page") int page, @Path("pageSize") int pageSize, @Query("orderStatus") int type);

    //订单支付 pay_type: 1财神币 2微信 3支付宝 4银联 5积分
    @POST("/orders/pay")
    Observable<BaseModel<Order>> payOrder(@Header("authorization") String token, @Query("orderId") int orderId, @Query("pay_type") int pay_type);

    //订单退款 //订单详情ID为空退整个订单的商品,反之退单个订单详情的商品
    @POST("/orders/refund")
    Observable<BaseModel> refundOrder(@Header("authorization") String token, @Query("orderId") int orderId, @Query("orderDetailId") int orderDetailId);

    //订单确认收货 //订单详情ID为空整个订单的商品都改为收货,反之单个订单详情的商品可以单独收货
    @POST("/orders/receipt")
    Observable<BaseModel> receiptOrder(@Header("authorization") String token, @Query("orderId") int orderId, @Query("orderDetailId") int orderDetailId);

    @POST("/orders/refund")
    Observable<BaseModel> refundOrder(@Header("authorization") String token, @Query("orderId") int orderId);

    //添加到购物车
    @POST("/shoppingCart")
    Observable<BaseModel<ArrayList<CartGoods>>> postShoppingCart(@Header("authorization") String token, @Query("goodsId") int goodsId, @Query("goodsDetailId") int goodsDetailId, @Query("num") int num, @Query("kind") String kind);

    //删除购物车记录
    @DELETE("/shoppingCart")
    Observable<BaseModel> deleteFromShoppingCart(@Header("authorization") String token, @Query("cartId") int cartId);

    //获取购物车列表
    @GET("/shoppingCart/list")
    Observable<BaseModel<ArrayList<CartGoods>>> getShoppingCarts(@Header("authorization") String token);

    //修改购物车数量
    @POST("/shoppingCart/modify")
    Observable<BaseModel> changeCartsNum(@Header("authorization") String token, @Query("cartId") int cartId, @Query("num") int num);

    //商品首页轮播
    @GET("/goods/homePage")
    Observable<BaseModel<ArrayList<HomePageGoods>>> getHomePageGoods(@Header("authorization") String token);

    //收货地址列表
    @GET("/addresses/list")
    Observable<BaseModel<ArrayList<Address>>> getAddresses(@Header("authorization") String token);

    //删除收货地址
    @DELETE("/addresses")
    Observable<BaseModel> deleteAddress(@Header("authorization") String token, @Query("addressId") int addressId);

    //邮费
    @POST("/postage")
    Observable<BaseModel<PostageFee>> getPostageFee(@Header("authorization") String token, @Query("goodsIds") String goodsIds, @Query("weights") String weights);

    //邮费POST
    String getPostageFee = URL_BASE + "postage";

    //编辑收货地址POST
    String editAddress = URL_BASE + "addresses/modify";

    //新增收货地址POST
    String addAddress = URL_BASE + "addresses";

    //获取默认地址GET
    String getDefaultAddress = URL_BASE + "addresses/default";

    //微信支付GET
    String pay_wx = URL_BASE + "wxpay/params";

    //支付宝支付GET  type:1商品订单2贡品订单3充值订单
    String pay_alipay = URL_BASE + "alipay/params";

    //银联支付GET
    String pay_union = URL_BASE + "unionpay/params";

    //查询积分接口
    String checkScore = "http://weixin.nbsjfr.com:8085/open/score/find";

    //扣除积分接口
    String takeOutScore = "http://weixin.nbsjfr.com:8085/open/score/export";

    //导入积分
    @POST("/account/score")
    Observable<BaseModel> importScore(@Header("authorization") String token, @Query("score") int score);

    //导入积分历史明细
    @GET("/account/score/page/{page}/pageSize/{pageSize}")
    Observable<BaseModel<ArrayList<ImportHistory>>> getImportHistory(@Header("authorization") String token, @Path("page") int page, @Path("pageSize") int pageSize);

    //充值 支付宝
    @GET("/alipay/recharge/params")
    Observable<BaseModel<PayWXData>> rechargeAlipay(@Header("authorization") String token, @Query("amount") int amount);

    //充值 微信
    @GET("/wxpay/recharge/params")
    Observable<BaseModel<PayWXData>> rechargeWX(@Header("authorization") String token, @Query("amount") int amount);

    //充值 银联
    @GET("/unionpay/recharge/params")
    Observable<BaseModel<PayWXData>> rechargeUnion(@Header("authorization") String token, @Query("amount") int amount);

    //扫描商家二维码扣款接口
    @POST("/account/debit")
    Observable<BaseModel<PayWXData>> payShop(@Header("authorization") String token, @Query("businessId") int businessId, @Query("amount") String amount, @Query("type") int type);

    //设置默认地址
    @POST("/addresses/default")
    Observable<BaseModel> setDefaultAddress(@Header("authorization") String token, @Query("addressId") int addressId);

    //获取系统消息 type:1好友消息 2圈子消息 3系统消息
    @GET("mine/systemMessage/page/{page}/pageSize/{pageSize}")
    Observable<BaseModel<ArrayList<SystemMsg>>> getSystemMsg(@Header("authorization") String token, @Path("page") int page, @Path("pageSize") int pageSize, @Query("type") String type);

    //获取系统消息 type:1好友消息 2圈子消息 3系统消息
    @POST("mine/systemMessage")
    Observable<BaseModel> SetSystemMsgStatus(@Header("authorization") String token, @Query("msg_id") int msg_id);

    //圈子排序Status
    @GET("circles/list/sort")
    Observable<BaseModel<ArrayList<CircleSortInfo>>> getSortCircle(@Header("authorization") String token);

    //圈子排序移动
    @POST("circles/sort")
    Observable<BaseModel> setSortCircle(@Header("authorization") String token, @Query("circleId") int circleId, @Query("sort") int sort);

    //获取个人资料
    @GET("/members/info")
    Observable<BaseModel<MyInfo>> getMyInfo(@Header("authorization") String token, @Query("member_id") int member_id, @Query("versionNumber") String versionNumber, @Query("type") int type);

    //修改个人资料
    @POST("/members/info")
    Observable<BaseModel<MyInfo>> saveMyInfo(@Header("authorization") String token, @Query("name") String name, @Query("imageUrl") String imageUrl, @Query("company") String company, @Query("position") String position, @Query("birthday") String birthday, @Query("horoscope") String horoscope, @Query("gender") int gender, @Query("permanentPlace") String permanentPlace, @Query("deliveryAddress") String deliveryAddress);

    //交易记录  type: 1余额 2积分
    @GET("/mine/transactionRecords/page/{page}/pageSize/{pageSize}")
    Observable<BaseModel<ArrayList<TradeHistory>>> getTradeHistory(@Header("authorization") String token, @Path("page") int page, @Path("pageSize") int pageSize, @Query("type") int type, @Query("date") String date);

    //上传股东证明资料
    @POST("/mine/shareholders")
    Observable<BaseModel> uploadShareHolderFiles(@Header("authorization") String token, @Query("imageKeys") ArrayList<String> imageKeys);

    //上传投资人认证资料
    @POST("/mine/investors")
    Observable<BaseModel> uploadInvestorFiles(@Header("authorization") String token, @Query("certificate") String certificate, @Query("name") String name, @Query("position") String position, @Query("introduction") String introduction, @Query("investorsProjects") String investorsProjects);

    //投资人信息
    @GET("/mine/investors")
    Observable<BaseModel<Investors>> getInvestorInfo(@Header("authorization") String token);

    //贡品支付接口  1财神币 2微信 3支付宝 4银联
    @POST("/tributes/pay")
    Observable<BaseModel<PayWXData>> payTributes(@Header("authorization") String token, @Query("id") int id, @Query("type") int type, @Query("position") int position);//贡品支付接口  1财神币 2微信 3支付宝 4银联

    @POST("/tributes/pay")
    Observable<BaseModel<PayWXData>> payTributes2(@Header("authorization") String token, @Query("id") int id, @Query("type") int type);

    //贡品支付接口  1财神币 2微信 3支付宝 4银联
    @POST("worships/respect")
    Observable<BaseModel> GetTributes(@Header("authorization") String token);

    //抽签
//    @GET("worships/draw")
//    Observable<BaseModel> getDraw(@Header("authorization") String token, @Query("id") int love_id);

    @GET("tributes")
//1:香 2:灯  7:果/糕 8:花 9:油
    Observable<BaseModel<ArrayList<TributesInfo>>> getTributes(@Query("type") int type);

    @GET("tributes/memberTribute")
//1:香 2:灯  7:果/糕 8:花 9:油
    Observable<BaseModel<ArrayList<UserTribute>>> getTributesOfUser(@Header("authorization") String token);

    @GET("mammons")
    Observable<BaseModel<ArrayList<Mammons>>> getMammons(@Query("type") String type);

    //抽签
    @GET("worships/draw ")
    Observable<BaseModel<Solution>> getDraw(@Header("authorization") String token, @Query("id") int type);

    //搜索商品列表
    @GET("goods/listSearch/page/{page}/pageSize/{pageSize}")
    Observable<BaseModel<ArrayList<Goods>>> getSearchGoods(@Header("authorization") String token, @Path("page") int page, @Path("pageSize") int pageSize, @Query("content") String content);

    //发个人红包
    @POST("account/redPackets/send")
    Observable<BaseModel<RedPacketInfo>> sendSingleRedPacket(@Header("authorization") String token, @Query("amount") double amount, @Query("type") int type, @Query("blessingWord") String blessingWord, @Query("count") int count, @Query("memberMobile") String memberMobile);

    //收红包
    @POST("account/redPackets/receive")
    Observable<BaseModel<ReciveRedPacket>> getRedPacket(@Header("authorization") String token, @Query("redPacketId") int redPacketId);

    //发群红包
    @POST("account/redPackets/send")
    Observable<BaseModel<RedPacketInfo>> sendRedPacket(@Header("authorization") String token, @Query("amount") double amount, @Query("type") int type, @Query("category") int category, @Query("blessingWord") String blessingWord, @Query("count") int count); //发群红包

    @GET("liaobei/card")
    Observable<BaseModel<BillCardInfo>> getLiaoBeiCard(@Header("authorization") String token, @Query("price") String price);

    @DELETE("liaobei/card")
    Observable<BaseModel> DeleteLiaoBeiCard(@Header("authorization") String token, @Query("cardCode") String cardCode);
}