//
//  API.swift
//  XWProject
//
//  Created by alvin_y on 2020/5/28.
//  Copyright © 2020 yangwang. All rights reserved.
//

import Foundation
import RxCocoa
import RxSwift
import Moya
import Kingfisher



enum API {
    
    /// 获取短信验证码
    /// - Parameters:
    ///   - phone: 手机号码
    ///   - type: 场景类型（1=身份验证，2=登录确认，3=用户注册，4=修改密码）
    ///   - kaptcha: 图形验证码
    case queryCaptcha(phone: String,type: Int, token: String, kaptcha:String?)
    
    /// 手机验证码登录
    /// - Parameters:
    ///   - phone: 手机号码
    ///   - code: 手机号码
    ///   - registAreaCode: 手机号码
    ///   - registIp: 手机号码
    case captchaLogin(phone: String,code: String,registAreaCode: String?,registIp: String?,phoneOperator:String)
    
    /// 账号密码登录
    /// - Parameters:
    ///   - phone: 手机号码
    ///   - password: 登录密码
    case userLogin(phone: String,password: String)
    
    /// 忘记密码操作
    /// - Parameters:
    ///   - phone: 手机号码
    ///   - code: 手机号码
    ///   - password: 登录密码
    case forgetPassword(phone: String,code: String,password: String)
    
    /// 微信授权登录
    /// - Parameters:
    ///   - avatar: 头像
    ///   - nickName: 昵称
    ///   - sex: 性别
    ///   - openid: 微信openid
    ///   - unionid: 微信unionid
    ///   - type: 登录端口（1：APP，2：小程序）
    case wxLogin(avatar: String,nickName: String,sex: Int,openid: String,unionid: String,type: Int,registAreaCode: String?)
    
    case facebookLogin(email:String? = nil,id:String,name:String,registAreaCode:String,uid:String? = nil)
    
    case twitterLogin(email:String? = nil,name:String,id:String)
    
    /// 设置电话号码
    /// - Parameters:
    ///   - phone: 手机号码
    ///   - code: 手机号码
    case bindingPhone(phone: String,code: String,phoneOperator:String)
    
    /// 获取开通城市列表
    case queryOpenCity
    
    /// 获取广告列表
    /// - Parameters:
    ///   - type: 数据类型（1：弹窗广告，2：底部广告）
    ///   - code: 当前定位城市code(510100)
    case queryByType(type: Int,code: String)
    
    /// 获取用户信息
    case queryUserInfo
    
    /// 根据当前定位获取业务类型
    /// - Parameters:
    ///   - province: 省名称
    ///   - city: 市名称
    ///   - district: 区县名称
    case queryBusinessType(lat:Double,lnt:Double)
    
    /// 根据当前定位获取业务类型
    /// - Parameters:
    ///   - id: 开通城市id
    case queryBusinessTypeById(id: Int)
    
    /// 判断当前是否是开通城市
    /// - Parameters:
    ///   - code: 当前定位城市code
    case openCity(code: String)
    
    /// 获取5公里范围内空闲司机数量
    /// - Parameters:
    ///   - lat: 乘客当前定位纬度
    ///   - lon: 乘客当前定位经度
    ///   - type: 业务类型（1=专车，2=出租车，3=城际，4=小件物流-同城，5=小件物流-跨城，6=包车）
    case queryIdleDriver(lat: Double,lon: Double,type: Int)
    
    /// 获取首页电话
    /// - Parameters:
    ///   - code: 当前定位行政区域编号
    case queryPhones
    
    /// 获取滚动消息
    /// - Parameters:
    ///   - type: 数据类型（1：滚动消息）
    case queryNotices(type: Int)
    
    /// 选择地点和终点后获取预计行驶时长
    /// - Parameters:
    ///   - slat: 起点纬度
    ///   - slon: 起点经度
    ///   - elat: 终点纬度
    ///   - elon: 终点经度
    case queryExpectedTime(slat: Double,slon: Double,elat: Double,elon: Double)
    
    /// 出租车下单操作（APP下单和扫码下单）
    /// - Parameters:
    ///   - driverId: 起点纬度
    ///   - endAddress: 起点经度
    ///   - endLat: 终点纬度
    ///   - endLon: 终点经度
    ///   - orderSource: 订单来源(1：APP下单，2：扫码下单，3：小程序下单，4：司机下单，5：调度下单)
    ///   - orderType: 订单类型（1=普通，2=预约）
    ///   - passengers: 乘车人姓名，substitute=0，不传
    ///   - passengersPhone: 乘车人电话，substitute=0，不传
    ///   - placementLat: 下单地点纬度
    ///   - placementLon: 下单地点经度
    ///   - startAddress: 起点详细地址
    ///   - startLat: 起点纬度
    ///   - startLon: 起点经度
    ///   - substitute: 是否是代下单（0：否，1：是）
    ///   - tipMoney: 消费金额，没有消费传0
    ///   - travelTime: 出行时间(2020-06-06 08:47)
    case taxiOrder(driverId: Int?,endAddress: String,endLat: Double,endLon: Double,orderSource: Int,orderType: Int,passengers: String?,passengersPhone: String?,placementLat: Double,placementLon: Double,startAddress: String,startLat: Double,startLon: Double,substitute: Int,tipMoney: Double,travelTime: String)
    
    /// 取消订单操作
    /// - Parameters:
    ///   - cancleId: 取消单id（取消操作返回）
    ///   - id: 订单id
    ///   - payType: 支付方式（0=其他方式，1=微信，2=支付宝）
    case cancleOrderTaxi(cancleId: Int,id: Int,orderType: Int,payType: Int?,bankId:Int?)
    
    /// 添加投诉操作
    /// - Parameters:
    ///   - driverId: 司机id
    ///   - reason: 投诉原因
    ///   - description: 投诉描述
    case complaintService(driverId: Int,reason: String,description: String)
    
    /// 订单完成后添加评价操作
    /// - Parameters:
    ///   - orderId: 订单id
    ///   - orderType: 订单类型（1=专车，2=出租车，3=跨城出行，4=跨城小件物流，5=同城小件物流，6=包车）
    ///   - fraction: 评分
    ///   - content: 评价内容
    case orderEvaluate(orderId: Int,orderType: Int,fraction: Int,content: String?)
    
    /// 订单完成支付订单操作
    /// - Parameters:
    ///   - orderId: 订单id
    ///   - payType: 支付方式(1=微信，2=支付宝，3=余额)
    ///   - couponId: 优惠券id
    case payTaxiOrder(orderId: Int,payType: Int,orderType: Int,couponId: Int?,bankId:Int?,redDeduction:Int = 0)
    /// 订单补差价
    /// - Parameters:
    ///   - orderId: 订单id
    ///   - payType: 支付方式(1=微信，2=支付宝，3=余额)
    ///   - type: 支付端（1=用户APP端，2=司机APP端，3=用户小程序端）
    case payOrderLogisticsSpread(orderId: Int,payType: Int,bankCardId:Int?)
    /// 继续等待推单操作
    /// - Parameters:
    ///   - id: 订单id
    case pushOrderTaxi(id: Int,orderType: Int)
    
    /// 支付页面获取可用优惠券数量和余额
    /// - Parameters:
    ///   - orderId: 订单id
    ///   - orderType: 订单类型（1=专车，2=出租车，3=城际，4=小件物流-同城，5=小件物流-跨城，6=包车）
    case queryBalance(orderId: Int,orderType: Int)
    
    /// 获取取消订单需要支付的费用金额
    /// - Parameters:
    ///   - id: 订单id
    case queryCancleAmount(id: Int,orderType: Int,lat:Double,lon:Double)
    
    /// 评论成功后获取红包金额
    /// - Parameters:
    ///   - orderId: 订单id
    case queryRedMoney(orderId: Int,orderType: Int)
    
    /// 根据订单id获取司机数据
    /// - Parameters:
    ///   - id: 订单id
    case queryOrderDriver(id: Int)
    
    /// 获取个人中心订单列表
    /// - Parameters:
    ///   - type: 订单类型（1=专车，2=出租车，3=跨城出行）
    ///   - pageNum: 页码（首页1）
    ///   - size: 页条数
    case queryMyOrderList(type: Int,pageNum: Int,size: Int)
    
    /// 获取服务中的详情数据
    /// - Parameters:
    ///   - orderId: 订单id
    ///   - orderType: 订单类型（1=专车，2=出租车，3=城际，4=小件物流-同城，5=小件物流-跨城，6=包车）
    case queryOrderInfo(orderId: Int,orderType: Int)
    
    /// 获取个人优惠券列表
    /// - Parameters:
    ///   - state: 优惠券状态（1=未使用，2=已使用，3=已过期）
    ///   - pageNum: 页码（首页1）
    ///   - size: 页条数
    case queryMyCoupons(state: Int,pageNum: Int,size: Int)
    
    /// 获取服务中的及时数据
    /// - Parameters:
    ///   - orderId: 订单id
    ///   - orderType: 订单类型（1=专车，2=出租车，3=城际，4=小件物流-同城，5=小件物流-跨城，6=包车）
    case queryOrderServer(orderId: Int,orderType: Int)
    
    /// 获取司机详情
    /// - Parameters:
    ///   - id: 司机id
    case queryDriverInfo(id: Int)
    
    /// 获取司机的历史评价
    /// - Parameters:
    ///   - id: 司机id
    ///   - pageNum: 页码（首页1）
    ///   - size: 页条数
    case queryOrderEvaluate(id: Int,pageNum: Int,size: Int)
    
    /// 获取没有司机接单的提醒数据
    /// - Parameters:
    ///   - orderId: 订单id
    ///   - orderType: 订单类型（1=专车，2=出租车，3=城际，4=小件物流-同城，5=小件物流-跨城，6=包车）
    case queryEndPush(orderId: Int,orderType: Int)
    
    /// 添加取消记录
    /// - Parameters:
    ///   - id: 订单id
    ///   - reason: 取消原因
    ///   - remark: 备注
    case addCancle(id: Int,orderType: Int,reason: String?,remark: String?,lat:Double,lon:Double)
    
    /// 获取支付页面的优惠券列表
    /// - Parameters:
    ///   - orderId: 订单id
    ///   - orderType: 订单类型（1=专车，2=出租车，3=城际，4=小件物流-同城，5=小件物流-跨城，6=包车）
    ///   - pageNum: 页码，首页1
    ///   - size: 页条数
    case queryCoupon(orderId: Int,orderType: Int,pageNum: Int,size: Int)
    
    /// 获取正在进行中的订单
    case queryServingOrder
    
    /// 获取订单轨迹坐标
    case queryTrack(orderId: Int,orderType: Int)
    
    /// 修改个人信息
    /// - Parameters:
    ///   - avatar: 头像q
    ///   - birthday: 生日（2020-06-15）
    ///   - nickname: 昵称
    ///   - sex: 性别（1=男，2=女）
    case updateInfo(avatar: String?,birthday: String?,nickname: String?,sex: Int?,lastname:String?,firstname:String?)
    
    /// 手机号码获取用户
    /// - Parameters:
    ///   - phone: 电话号码
    case queryUser(phone: String)
    
    /// 赠送优惠券
    /// - Parameters:
    ///   - id: 优惠券id
    ///   - userId: 赠送用户id
    case handselCoupon(id: Int,userId: Int)
    
    /// 删除优惠券
    /// - Parameters:
    ///   - id: 优惠券id
    case delMyCoupon(id: Int)
    
    /// 设置紧急联系人
    /// - Parameters:
    ///   - name: 姓名
    ///   - phone: 电话号码
    case setUrgentUser(name: String,phone: String)
    
    /// 获取消费记录 【2.0】
    /// - Parameters:
    ///   - pageNum: 页码，首页1
    ///   - size: 页条数
    case queryMyTravelRecord(pageNum: Int,size: Int)
    
    /// 获取红包列表
    /// - Parameters:
    ///   - pageNum: 页码，首页1
    ///   - size: 页条数
    case queryMyRedEnvelope(pageNum: Int,size: Int)
    
    /// 获取红包使用记录
    /// - Parameters:
    ///   - pageNum: 页码，首页1
    ///   - size: 页条数
    case queryRedEnvelope(pageNum: Int,size: Int)
    
    /// 账户余额提现
    /// - Parameters:
    ///   - code: 银行卡号
    ///   - name: 银行卡只有人姓名
    ///   - money: 提现金额
    case withdrawal(money: Double,mark:String?)
    
    /// 提交反馈意见
    /// - Parameters:
    ///   - content: 反馈内容
    case feedback(content: String)
    
    
    // 获取个人中心的客服电话
    /// - Parameters:
    ///   - code: 当前定位行政区域编号
    case queryCustomerPhone(lat:Double,lon:Double)
    
    /// 添加客服留言
    /// - Parameters:
    ///   - content: 留言内容
    case leaveMessage(content: String)
    
    /// 获取历史提交的留言列表
    /// - Parameters:
    ///   - pageNum: 页码，首页1
    ///   - size: 页条数
    case queryProblems(pageNum: Int,size: Int)
    
    /// 验证短信验证码
    /// - Parameters:
    ///   - phone: 电话号码
    ///   - code: 短信验证码
    case checkCaptcha(phone: String,code: String)
    
    /// 发送邮箱验证码
    case sedEmail(email:String)
    
    /// 设置邮箱地址
    /// - Parameters:
    /// - type: 1=注册账号绑定，2=个人中心绑定
    case bindingEmail(email:String,code:String,type:Int)
    
    /// 修改登录密码
    /// - Parameters:
    ///   - password: 新密码
    case updatePassword(password: String)
    
    ///  获取各种协议及H5页面
    /// - Parameters:
    ///   - type:数据类型（1：隐私协议，2：用户协议，3：用户指南，4：法律条款，5：关于我们，6=注册协议，7=取消订单说明，8=充值领券规则设置，9=司机注册协议，10=改派说明，11=跨城出行乘车须知，12：常见问题，13：计价规则，14：包车协议，15：小件物流协议，16：新司机培训设置）
    case agreement(type: Int)
    
    /// 获取系统消息和公告
    /// - Parameters:
    ///   - type: 数据类型（1=公告，2=系统消息）
    ///   - pageNum: 页码，首页1
    ///   - size: 页条数
    case systemNotice(type: Int,pageNum: Int,size: Int)
    
    /// 阅读系统消息和公告操作
    /// - Parameters:
    ///   - id: 消息id
    case readSystemNotice(id: Int)
    
    /// 删除单个消息或公告
    /// - Parameters:
    ///   - id: 消息id
    case delSystemNotice(id: Int)
    
    /// 清除所有消息或公告
    case clearSystemNotice
    
    /// 获取未读的消息数量
    case queryNoReadNoticeNum
    
    /// 实名认证操作
    case verified(name: String,idcode: String)
    
    /// 获取实名认证的数据
    case queryRealName
    
    /// 获取历史提现数据
    /// - Parameters:
    ///   - pageNum: 页码，首页1
    ///   - size: 页条数
    case queryWithdrawal(pageNum: Int,size: Int,state:Int?)
    
    /// 修改手机号码
    /// - Parameters:
    ///   - phone: 手机号
    ///   - code: 验证码
    case updatePhone(phone: String,code: String,operation:String)
    
    /// 余额充值
    /// - Parameters:
    ///   - money: 金额
    ///   - payType: 支付方式（（1=手机充值，2=银行卡充值）
    case depositBalance(money: Double,payType: Int,bankId:Int?)
    
    /// 分享成功后添加红包操作
    /// - Parameters:
    ///   - orderId: 订单id
    ///   - orderType: 订单类型
    case shareRedEnvelope(orderId: Int,orderType: Int)
    
    /// 手动确认订单完成
    /// - Parameters:
    ///   - orderId: 订单id
    ///   - orderType: 订单类型
    case completeOrder(orderId: Int,orderType: Int)
    
    /// 选择起点终点后获取车型和预估价格
    /// - Parameters:
    ///   - startLonLat: 起点经纬度
    ///   - endLonLat: 终点经纬度
    ///   - type: 业务类型（1=专车，2=出租车，3=城际，4=小件物流-同城，5=小件物流-跨城，6=包车）
    case queryServerCarModel(startLonLat: String,endLonLat: String,type: Int)
    
    
    /// 专车下单/扫码下单
    /// - Parameters:
    ///   - driverId: driverId
    ///   - endAddress: 终点地址
    ///   - endLat: 终点纬度
    ///   - endLon: 终点经度
    ///   - orderSource: orderSource
    ///   - orderType: 是否预约（1=否，2=是）
    ///   - passengers: 乘客姓名（代下单必传）
    ///   - passengersPhone: 乘客电话（代下单必传）
    ///   - placementLat: placementLat
    ///   - placementLon: placementLon
    ///   - serverCarModelId: 服务车型id
    ///   - startAddress: 起点地址
    ///   - startLat: 起点纬度
    ///   - startLon: 起点经度
    ///   - substitute: 是否代下单（0=否，1=是）
    ///   - travelTime: 出行时间（2020-08-20 10:10）
    ///   - type: 订单类型（1=普通订单，2=摆渡订单）
    
    case saveOrderPrivateCar(driverId: Int?,endAddress: String,endLat: Double,endLon: Double,orderSource: Int?,orderType: Int,passengers: String?,passengersPhone: String?,placementLat: Double?,placementLon: Double?,serverCarModelId: Int,startAddress: String,startLat: Double,startLon: Double,substitute: Int,travelTime: String,type: Int)
    
    
    
    // MARK: -跨城
    
    /// 获取起点和终点的站点
    /// - 起点站点id
    case siteQuerySite(startSiteId:String)
    /// 根据选择的起点和终点获取线路
    case travelQueryLines(startId:String,endId:String)
    /// 根据线路id获取线路排班数据
    /// - driverId ：司机id
    /// -lineId：线路id
    case travelQueryDriver(day:String,driverId:String?,lineId:String)
    /// 电子围栏位置
    case travelSiteQueryLocation(siteId:String)
    /// 根据司机的排班id获取剩余座位数据
    case travelLineSiteQueryLocation(id:String)
    /// 判断是一个点 是否在区域内
    case travelAreaMonitoring(code:String,lonLat:String,siteId:String)
    
    /// 获取跨城的支付金额
    /// - Parameters:
    ///   - endLonLat: 终点坐标
    ///   - lineId: 线路id
    ///   - peopleNumber: 乘车人数
    ///   - seatNumber: 座位编号（1,3,4）
    ///   - serverCarModelId: 服务车型id
    ///   - startLonLat: 起点坐标
    ///   - totalSeat: 车辆总座位数
    ///   - travelMode: 出行方式（1=拼车，2=包车）
    case travelOrderMoeny(endLonLat:String,lineId:String,peopleNumber:String,seatNumber:String,serverCarModelId:String,startLonLat:String,totalSeat:String,travelMode:Int)
    
    
    /// 跨城下单
    /// - Parameters:
    ///   - carId: 车辆id
    ///   - distance: 行驶里程数
    ///   - driverId: 司机id
    ///   - endAddress: 终点详细地址
    ///   - endLat: 终点纬度
    ///   - endLon: 终点经度
    ///   - lineId: 线路id
    ///   - lineShiftDriverId: 司机预约排班id
    ///   - orderSource: 订单来源(1：APP下单，2：扫码下单，3：小程序下单，4：司机下单，5：调度下单)
    ///   - peopleNumber: 出行人数
    ///   - placementAddress: 下单详细地址
    ///   - placementLat: 下单地点纬度
    ///   - placementLon: 下单地点经度
    ///   - remark: 备注
    ///   - seatNumber: 座位编号（1,3,4）
    ///   - serverCarModelId: 服务车型id
    ///   - startAddress: 起点
    ///   - startLat: 起点纬度
    ///   - startLon: 起点经度
    ///   - totalSeat: 车辆总座位数
    ///   - travelMode: 出行方式（1=拼车，2=包车）
    ///   - travelTime: 出行时间(2020-09-04 12:00:00)
    case travelOrderCrossCity(carId:String,distance:String,driverId:String,endAddress:String,endLat:String,endLon:String,lineId:String,lineShiftDriverId:String,orderSource:Int,peopleNumber:String,placementAddress:String,placementLat:String,placementLon:String,remark:String,seatNumber:String,serverCarModelId:String,startAddress:String,startLat:String,startLon:String,totalSeat:String,travelMode:Int,travelTime:String)
    
    /// 摆渡车下单
    /// - Parameters:
    ///   - endAddress: <#endAddress description#>
    ///   - endLat: <#endLat description#>
    ///   - endLon: <#endLon description#>
    ///   - orderSource: 订单来源（1：APP下单，2：扫码下单，3：小程序下单，4：司机下单，5：调度下单）
    ///   - placementLat: <#placementLat description#>
    ///   - placementLon: <#placementLon description#>
    ///   - serverCarModelIds: 服务车型id（多个以逗号分隔，出租车传0）
    ///   - startAddress: <#startAddress description#>
    ///   - startLat: <#startLat description#>
    ///   - startLon: <#startLon description#>
    ///   - travelTime: 出行时间（2020-08-20 10:10）
    ///   - place:摆渡方位（1=跨城起点，2=跨城终点）
    ///   - crossCityOrderId:跨城订单id
    case orderCrossCitySaveOrderFerry(endAddress:String,endLat:String,endLon:String,orderSource:Int,placementLat:String,placementLon:String,serverCarModelIds:String,startAddress:String,startLat:String,startLon:String,travelTime:String,crossCityOrderId:String,place:Int)
    /// 小件物流单数
    case queryLogisticsNumber
    
    /// 根据起点和终点坐标判断是不是同一个市内
    /// - Parameters:
    ///   - endAddress: 终点详细地址
    ///   - startLonLat: 起点经纬度（103.23265,30.2312）
    case judgingTheCity(endAddress:String,startLonLat:String)
    
    /// 获取小件物流的单价数据
    /// - Parameters:
    ///   - endAddress: 终点详细地址
    ///   - startLonLat: 起点经纬度（103.23265,30.2312）
    ///   - type: 业务类型（4=同城小件物流，5=跨城小件物流）
    case queryLogisticsUnitPrice(endAddress:String,startLonLat:String,type:Int)
    
    
    /// 小件物流下单
    /// - Parameters:
    ///   - cargoNumber: 货物数量
    ///   - cargoType: 货物类型（1=普通货物，2=贵重货物）
    ///   - endAddress: 收货详细地址
    ///   - orderSource: 下单方式（1：APP下单，2：扫码下单，3：小程序下单，4：司机下单，5：调度下单）
    ///   - placementLat: 下单点纬度
    ///   - placementLon: 下单点经度
    ///   - recipient: 收货人姓名
    ///   - recipientPhone: 收货人电话
    ///   - remark: 备注
    ///   - startAddress: 预约取货点详细地址
    ///   - startLat: 预约取货点纬度
    ///   - startLon: 预约取货点经度
    ///   - tipMoney: 加急费用
    ///   - travelTime: 预约收货时间
    ///   - type: 业务类型（4=同城小件物流，5=跨城小件物流
    ///   - urgent: 是否加急（1=否，2=是）
    case smallLogistics(cargoNumber:Int,cargoType:Int,endAddress:String,orderSource:Int,placementLat:String,placementLon:String,recipient:String,recipientPhone:String,remark:String,startAddress:String,startLat:String,startLon:String,tipMoney:String,travelTime:String,type:Int,urgent:Int,endLonLat:String)
    
    case smallLogisticsV2(driverId:Int? = nil,endAddress:String,endLat:String,endLon:String,placementLat:String,placementLon:String,recipient:String,recipientPhone:String,remark:String? = nil,serverCarModelId:Int,startAddress:String,startLat:String,startLon:String)
    /// 获取物流支付金额
    case logisticsQueryPayMoney(endAddress:String,endLonLat:String,number:String,startLonLat:String,type:Int)
    /// 获取包车车型
    case  getCharterCarType
    
    /// 包车下单
    /// - Parameters:
    ///   - carTime: 用车时间
    ///   - contactPerson: 联系人
    ///   - contactPhone: 联系电话
    ///   - modelUse: 用途
    ///   - peopleNumber: 人数
    ///   - placeLonLat: 下单地点经纬度（103.1233,30.135412）
    ///   - serverCarModelId: 车型id
    ///   - travelTime: 出行时间（2020-09-21 16:00:00）
    case charterCommitOrder(carTime:String,contactPerson:String,contactPhone:String,modelUse:String,peopleNumber:String,placeLonLat:String,serverCarModelId:String,travelTime:String)
    case integralGoodsData(pageNum:Int,size:Int)
    case queryGoodsInfoUsing(id:Int)
    ///兑换商品
    case changeGoods(consigneeAddress:String,consigneeName:String,consigneePhone:String,goodsId:Int,remark:String)
    /// 兑换历史
    
    case queryConvertHistory(page:Int)
    ///发票页获取订单列表 orderType订单类型（1=专车，2=出租车，3=跨城出行，4=同城小件物流，5=跨城小件物流）,订单开票状态（1=未开票，2=其他）
    case queryInvoiceOrder(orderType:Int,pageNum:Int,size:Int,type:Int)
    
    case queryInvoiceOrder_1
    
    /// 开发票
    /// - Parameters:
    ///   - address: <#address description#>
    ///   - bank: <#bank description#>
    ///   - code: <#code description#>
    ///   - content: <#content description#>
    ///   - email: <#email description#>
    ///   - name: <#name description#>
    ///   - order: 开票订单数据（[{"type":1,"id":12345}]）分别为订单类型（1=专车，2=出租车，3=跨城出行，4=同城小件物流），5=跨城小件物流和订单id
    ///   - remark: <#remark description#>
    ///   - type: 开票类型（1=个人发票，2=单位发票）
    case invoicingData(address:String?,bank:String?,code:String?,content:String,email:String,name:String,order:String,remark:String?,type:Int,money:String)
    
    case queryMyInvoice(pageNum:Int,size:Int)
    case getInviteList(pageNum:Int,size:Int,type:Int)
    /// 修改终点
    case updateEndAddress(endAddress:String,endLat:String,endLon:String,orderId:Int)
    
    /// 是否需要设置紧急联系人
    case isEnterEmergencyContact
    
    case logoffUser
    
    case getVerifyCodeUtils
    
    case queryBankCardList
    
    case addBankCard(bank:String,code:String,firstName:String,lastName:String)
    
    case deleBankCard(id:Int)
    
    case queryRechargeRecord(pageNum:Int,size:Int = 20)
    
    case queryArea
    case queryArea_1(pid:Int = 0)
    
    
    case updateTaxiEndAddress(endAddress:String,endLat:String,endLon:String,orderId:Int,orderType:OrderType)
    
    case redenvelopeDeductionAmount(orderId:Int,orderType:OrderType)
    
    //				case queryRedEnvelopRecord(pageNum:Int,size:Int = 20)
    
    case confirmDifferencePrice(difference:Double,orderId:Int,status:Int)
    
    case queryTimeInfo(orderId:Int)
    
    case googleToken(type:Int = 2,tripId:String)
    
    case getNewTripId
    
    case uploadImage(data:Data)
    
    /// 服务中手动刷新下方行程数据
    case queryOrderDrivingData(orderId: Int, orderType: Int)
    
    /// 新增-获取首页入口设置
    case queryHomeEntrance
}


extension API: TargetType{
    
    /// 域名
    var baseURL: URL {
        // 测试网
        return URL(string: "https://\(Host)/user-server")!
        //        return URL(string: "http://192.168.0.80/user")!
        
        // 正式外网
        //        return URL(string: "http://47.107.98.201/user")!
    }
    
    /// 请求路径
    var path: String {
        switch self {
        case .isEnterEmergencyContact:
            return "/base/isEnterEmergencyContact"
        case .updateEndAddress:
            return "/api/orderPrivateCar/updateEndAddress"
        case .invoicingData:
            return "/api/invoice/invoicing"
        case .queryCaptcha:
            return "/base/queryCaptcha"
        case .captchaLogin:
            return "/base/user/captchaLogin"
        case .userLogin:
            return "/base/user/userLogin"
        case .forgetPassword:
            return "/base/user/forgetPassword"
        case .wxLogin:
            return "/base/user/wxLogin"
        case .facebookLogin:
            return "/base/user/facebookLogin"
        case .twitterLogin:
            return "/base/user/twitterLogin"
        case .bindingPhone:
            return "/api/user/bindingPhone"
        case .queryOpenCity:
            return "/base/openCity/queryOpenCity"
        case .queryByType:
            return "/base/advertisement/queryByType"
        case .queryUserInfo:
            return "/api/user/queryUserInfo"
        case .queryBusinessType:
            return "/base/openCity/queryBusiness"
        case .queryBusinessTypeById:
            return "/base/openCity/queryBusinessById"
        case .openCity:
            return "/base/openCity/openCity"
        case .queryIdleDriver:
            return "/base/driver/queryIdleDriver"
        case .queryPhones:
            return "/base/phone/queryPhones"
        case .queryNotices:
            return "/base/notice/queryNotices"
        case .queryExpectedTime:
            return "/base/taxi/queryExpectedTime"
        case .taxiOrder:
            return "/api/taxi/taxiOrder"
        case .cancleOrderTaxi:
            return "/api/taxi/cancleOrderTaxi"
        case .complaintService:
            return "/api/taxi/complaintService"
        case .orderEvaluate:
            return "/api/taxi/orderEvaluate"
        case .payTaxiOrder:
            return "/api/taxi/payTaxiOrder"
        case .pushOrderTaxi:
            return "/api/taxi/pushOrderTaxi"
        case .queryBalance:
            return "/api/taxi/queryBalance"
        case .queryCancleAmount:
            return "/api/taxi/queryCancleAmount"
        case .queryRedMoney:
            return "/api/taxi/queryRedMoney"
        case .queryOrderDriver:
            return "/api/taxiDrive/queryOrderDriver"
        case .queryMyOrderList:
            return "/api/order/queryMyOrderList"
        case .queryOrderInfo:
            return "/api/order/queryOrderInfo"
        case .queryMyCoupons:
            return "/api/coupon/queryMyCoupons"
        case .queryOrderServer:
            return "/api/netty/queryOrderServer"
        case .queryDriverInfo:
            return "/api/driver/queryDriverInfo"
        case .queryOrderEvaluate:
            return "/api/driver/queryOrderEvaluate"
        case .queryEndPush:
            return "/api/netty/queryEndPush"
        case .addCancle:
            return "/api/taxi/addCancle"
        case .queryCoupon:
            return "/api/taxi/queryCoupon"
        case .queryServingOrder:
            return "/api/order/queryServingOrder"
        case .queryTrack:
            return "/api/order/queryTrack"
        case .updateInfo:
            return "/api/user/updateInfo"
        case .queryUser:
            return "/api/user/queryUser"
        case .handselCoupon:
            return "/api/coupon/handselCoupon"
        case .delMyCoupon:
            return "/api/coupon/delMyCoupon"
        case .setUrgentUser:
            return "/api/user/setUrgentUser"
        case .queryMyTravelRecord:
            return "/api/order/queryMyTravelRecord"
        case .queryMyRedEnvelope:
            return "/api/redEnvelope/queryMyRedEnvelope"
        case .queryRedEnvelope:
            return "/api/redEnvelope/queryRedEnvelope"
        case .withdrawal:
            return "/api/withdrawal/withdrawal"
        case .feedback:
            return "/api/feedback/feedback"
        case .queryCustomerPhone:
            return "/base/phone/queryCustomerPhone"
        case .leaveMessage:
            return "/api/problem/leaveMessage"
        case .queryProblems:
            return "/api/problem/queryProblems"
        case .checkCaptcha:
            return "/api/user/checkCaptcha"
        case .updatePassword:
            return "/api/user/updatePassword"
        case .agreement:
            return "/base/agreement/queryByType"
        case .systemNotice:
            return "/api/systemNotice/queryNotices"
        case .readSystemNotice:
            return "/api/systemNotice/readSystemNotice"
        case .delSystemNotice:
            return "/api/systemNotice/delSystemNotice"
        case .clearSystemNotice:
            return "/api/systemNotice/clearSystemNotice"
        case .queryNoReadNoticeNum:
            return "/api/systemNotice/queryNoReadNoticeNum"
        case .verified:
            return "/api/user/verified"
        case .queryRealName:
            return "/api/user/queryRealName"
        case .queryWithdrawal:
            return "/api/withdrawal/queryWithdrawal"
        case .updatePhone:
            return "/api/user/updatePhone"
        case .depositBalance:
            return "/api/user/depositBalance"
        case .shareRedEnvelope:
            return "/api/taxi/shareRedEnvelope"
        case .completeOrder:
            return "/api/taxi/completeOrder"
        case .queryServerCarModel:
            return "/base/serverCarModel/queryServerCarModel"
        case .saveOrderPrivateCar:
            return "/api/orderPrivateCar/saveOrderPrivateCar"
            /// 跨城
        case.siteQuerySite:
            return "/base/site/querySite"
            
        case.travelQueryLines:
            return "/base/line/queryLines"
            
        case.travelQueryDriver:
            return "/base/lineSite/queryDriver"
            
        case.travelSiteQueryLocation:
            return "/base/site/queryLocation"
        case .travelLineSiteQueryLocation:
            return "/base/lineSite/querySeat"
        case .travelAreaMonitoring:
            return "/base/site/areaMonitoring"
        case .travelOrderMoeny:
            return "/base/orderCrossCity/queryOrderMoney"
        case .travelOrderCrossCity:
            return "/api/orderCrossCity/orderCrossCity"
        case .orderCrossCitySaveOrderFerry:
            return "/api/orderCrossCity/saveOrderFerry"
        case .queryLogisticsNumber:
            return "/api/orderLogistics/queryLogisticsNumber"
        case  .judgingTheCity:
            return "/base/orderLogistics/judgingTheCity"
        case .queryLogisticsUnitPrice:
            return "/api/orderLogistics/queryLogisticsUnitPrice"
        case .smallLogistics:
            return "/api/orderLogistics/smallLogistics"
        case .smallLogisticsV2:
            return "/api/orderLogistics/placeOrderPackage"
        case .payOrderLogisticsSpread:
            return "/api/orderLogistics/payOrderLogisticsSpread"
        case .logisticsQueryPayMoney:
            return "/base/orderLogistics/queryPayMoney"
        case .getCharterCarType:
            return "/base/serverCarModel/queryServerCarModels"
        case .charterCommitOrder:
            return "/api/orderCharteredCar/orderCharteredCar"
        case .integralGoodsData:
            return "/api/integralGoods/queryGoods"
        case .queryGoodsInfoUsing:
            return "/api/integralGoods/queryGoodsInfo"
        case .changeGoods:
            return "/api/integralGoods/addIntegralOrder"
        case .queryConvertHistory:
            return "/api/integralGoods/queryConvertHistory"
        case .queryInvoiceOrder:
            return "/api/order/queryInvoiceOrder"
        case .queryInvoiceOrder_1:
            return "/api/user/getEmailList"
        case .queryMyInvoice:
            return "/api/invoice/queryMyInvoice"
        case .getInviteList:
            return "/api/user/getInviteList"
        case .sedEmail:
            return "/base/sedEmail"
        case .bindingEmail:
            return "/api/user/bindingEmail"
        case .logoffUser:
            return "/api/user/cancellation"
        case .getVerifyCodeUtils:
            return "/base/getVerifyCodeUtils"
        case .queryBankCardList:
            return "/api/user/queryBankCardList"
        case .addBankCard:
            return "/api/user/addBankCard"
        case .deleBankCard:
            return "/api/user/delBankCard"
        case .queryRechargeRecord:
            return "/api/user/queryRechargeRecord"
        case .queryArea:
            return "/api/integralGoods/queryArea"
        case .queryArea_1:
            return "/base/openCity/getCity"
        case .updateTaxiEndAddress:
            return "/api/taxi/updateEndAddress"
        case .redenvelopeDeductionAmount:
            return "/api/taxi/redEnvelopeDeductionAmount"
        case .confirmDifferencePrice:
            return "/api/orderLogistics/confirmDifferencePrice"
        case .queryTimeInfo:
            return "/api/orderLogistics/queryTimeInfo"
        case .googleToken:
            return "/api/user/getFleetEngineAuth"
        case .getNewTripId:
            return "/api/order/getNewTripId"
        case .uploadImage:
            return "/base/user/image"
        case .queryOrderDrivingData:
            return "/api/taxi/getOrderDrivingData"
        case .queryHomeEntrance:
            return "/base/driver/queryHomeEntrance"
        }
    }
    
    var method: Moya.Method {
        return .post
    }
    
    var sampleData: Data {
        return "{}".data(using: .utf8)!
    }
    
    var headers: [String : String]? {
        return ["Content-Type":"application/json;charset=UTF-8","Authorization":"Bearer" + " " + app.loginInfo.token]
    }
    
    var task: Task {
        
        switch self {
        case .queryCaptcha(phone: let phone,type: let type,token: let token,kaptcha:let kaptcha):
            let params = APIParamsAppender()
                .append(key: "phone", value: phone)
                .append(key: "type", value: type)
                .append(key: "token", value: token)
                .append(key: "kaptcha", value: kaptcha)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .captchaLogin(phone: let phone, code: let code, registAreaCode: let registAreaCode, registIp: let registIp,let phoneOperator):
            let params = APIParamsAppender()
                .append(key: "phone", value: phone)
                .append(key: "code", value: code)
                .append(key: "registAreaCode", value: registAreaCode)
                .append(key: "registIp", value: registIp)
                .append(key: "phoneOperator", value: phoneOperator)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .userLogin(phone: let phone, password: let password):
            let params = APIParamsAppender()
                .append(key: "phone", value: phone)
                .append(key: "password", value: password)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .forgetPassword(phone: let phone, code: let code, password: let password):
            let params = APIParamsAppender()
                .append(key: "phone", value: phone)
                .append(key: "code", value: code)
                .append(key: "password", value: password)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .wxLogin(avatar: let avatar,nickName: let nickName,sex: let sex,openid: let openid, unionid: let unionid, type: let type, registAreaCode: let registAreaCode):
            let params = APIParamsAppender()
                .append(key: "avatar", value: avatar)
                .append(key: "nickName", value: nickName)
                .append(key: "sex", value: sex)
                .append(key: "openid", value: openid)
                .append(key: "unionid", value: unionid)
                .append(key: "type", value: 1)
                .append(key: "registAreaCode", value: registAreaCode)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .twitterLogin(let email, let name, let id):
            let params = APIParamsAppender()
                .append(key: "email", value: email)
                .append(key: "name", value: name)
                .append(key: "id", value: id)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .facebookLogin(let email, let id, let name, let registAreaCode, let uid):
            let params = APIParamsAppender()
                .append(key: "email", value: email)
                .append(key: "id", value: id)
                .append(key: "name", value: name)
                .append(key: "registAreaCode", value: registAreaCode)
                .append(key: "uniuidonid", value: uid)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .bindingPhone(phone: let phone, code: let code,let phoneOperator):
            let params = APIParamsAppender()
                .append(key: "phone", value: phone)
                .append(key: "code", value: code)
                .append(key: "phoneOperator", value: phoneOperator)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryOpenCity:
            let params = APIParamsAppender()
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryByType(type: let type,code: let code):
            let params = APIParamsAppender()
                .append(key: "type", value: type)
                .append(key: "code", value: code)
                .append(key: "lat", value: YYLocationManager.shared.location?.coordinate.latitude ?? 0)
                .append(key: "lnt", value: YYLocationManager.shared.location?.coordinate.longitude ?? 0)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryUserInfo:
            let params = APIParamsAppender()
            //                .append(key: "language", value: 1)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryBusinessType(let lat, let lnt):
            let params = APIParamsAppender()
                .append(key: "lat", value: lat)
                .append(key: "lnt", value: lnt)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryBusinessTypeById(id: let id):
            let params = APIParamsAppender()
                .append(key: "id", value: id)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .openCity(code: let code):
            let params = APIParamsAppender()
            //                .append(key: "code", value: code)
                .append(key: "lat", value: YYLocationManager.shared.location?.coordinate.latitude ?? 0)
                .append(key: "lnt", value: YYLocationManager.shared.location?.coordinate.longitude ?? 0)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryIdleDriver(lat: let lat, lon: let lon, type: let type):
            let params = APIParamsAppender()
                .append(key: "lat", value: lat)
                .append(key: "lon", value: lon)
                .append(key: "type", value: type)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryPhones:
            let params = APIParamsAppender()
                .append(key: "lat", value: YYLocationManager.shared.location?.coordinate.latitude ?? 0)
                .append(key: "lnt", value: YYLocationManager.shared.location?.coordinate.longitude ?? 0)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryNotices(type: let type):
            let params = APIParamsAppender()
                .append(key: "type", value: type)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryExpectedTime(slat: let slat, slon: let slon, elat: let elat, elon: let elon):
            let params = APIParamsAppender()
                .append(key: "slat", value: slat)
                .append(key: "slon", value: slon)
                .append(key: "elat", value: elat)
                .append(key: "elon", value: elon)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .taxiOrder(driverId: let driverId, endAddress: let endAddress, endLat: let endLat, endLon: let endLon, orderSource: let orderSource, orderType: let orderType, passengers: let passengers, passengersPhone: let passengersPhone, placementLat: let placementLat, placementLon: let placementLon, startAddress: let startAddress, startLat: let startLat, startLon: let startLon, substitute: let substitute, tipMoney: let tipMoney,travelTime: let travelTime):
            let params = APIParamsAppender()
                .append(key: "driverId", value: driverId)
                .append(key: "endAddress", value: endAddress)
                .append(key: "endLat", value: endLat)
                .append(key: "endLon", value: endLon)
                .append(key: "orderSource", value: orderSource)
                .append(key: "orderType", value: orderType)
                .append(key: "passengers", value: passengers)
                .append(key: "passengersPhone", value: passengersPhone)
                .append(key: "placementLat", value: placementLat)
                .append(key: "placementLon", value: placementLon)
                .append(key: "startAddress", value: startAddress)
                .append(key: "startLat", value: startLat)
                .append(key: "startLon", value: startLon)
                .append(key: "substitute", value: substitute)
                .append(key: "tipMoney", value: tipMoney)
                .append(key: "travelTime", value: travelTime)
                .append(key: "type", value: 1)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .cancleOrderTaxi(cancleId: let cancleId, id: let id, orderType: let orderType, payType: let payType,let bankId):
            let params = APIParamsAppender()
                .append(key: "cancleId", value: cancleId)
                .append(key: "id", value: id)
                .append(key: "orderType", value: orderType)
                .append(key: "payType", value: payType)
                .append(key: "type", value: 1)
                .append(key: "bankCardId", value: bankId)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .complaintService(driverId: let driverId, reason: let reason, description: let description):
            let params = APIParamsAppender()
                .append(key: "driverId", value: driverId)
                .append(key: "reason", value: reason)
                .append(key: "description", value: description)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .orderEvaluate(orderId: let orderId, orderType: let orderType, fraction: let fraction, content: let content):
            let params = APIParamsAppender()
                .append(key: "orderId", value: orderId)
                .append(key: "orderType", value: orderType)
                .append(key: "fraction", value: fraction)
                .append(key: "content", value: content)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .payTaxiOrder(orderId: let orderId, payType: let payType, orderType: let orderType, couponId: let couponId,let bankId,let redDeduction):
            let params = APIParamsAppender()
                .append(key: "orderId", value: orderId)
                .append(key: "orderType", value: orderType)
                .append(key: "payType", value: payType)
                .append(key: "couponId", value: couponId)
                .append(key: "bankCardId", value: bankId)
                .append(key: "type", value: 1)
                .append(key: "redDeduction", value: redDeduction)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .pushOrderTaxi(id: let id,orderType: let orderType):
            let params = APIParamsAppender()
                .append(key: "id", value: id)
                .append(key: "orderType", value: orderType)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryBalance(orderId: let orderId,orderType: let orderType):
            let params = APIParamsAppender()
                .append(key: "orderId", value: orderId)
                .append(key: "orderType", value: orderType)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryCancleAmount(id: let id,orderType: let orderType,lat: let lat,lon: let lon):
            let params = APIParamsAppender()
                .append(key: "id", value: id)
                .append(key: "orderType", value: orderType)
                .append(key: "lat", value: lat)
                .append(key: "lon", value: lon)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryRedMoney(orderId: let orderId,orderType: let orderType):
            let params = APIParamsAppender()
                .append(key: "orderId", value: orderId)
                .append(key: "orderType", value: orderType)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryOrderDriver(id: let id):
            let params = APIParamsAppender()
                .append(key: "id", value: id)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryMyOrderList(type: let type, pageNum: let pageNum, size: let size):
            let params = APIParamsAppender()
                .append(key: "type", value: type)
                .append(key: "pageNum", value: pageNum)
                .append(key: "size", value: size)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryOrderInfo(orderId: let orderId, orderType: let orderType):
            let params = APIParamsAppender()
                .append(key: "orderId", value: orderId)
                .append(key: "orderType", value: orderType)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryMyCoupons(state: let state, pageNum: let pageNum, size: let size):
            let params = APIParamsAppender()
                .append(key: "state", value: state)
                .append(key: "pageNum", value: pageNum)
                .append(key: "size", value: size)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryOrderServer(orderId: let orderId,orderType: let orderType):
            let params = APIParamsAppender()
                .append(key: "orderId", value: orderId)
                .append(key: "orderType", value: orderType)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryDriverInfo(id: let id):
            let params = APIParamsAppender()
                .append(key: "id", value: id)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryOrderEvaluate(id: let id, pageNum: let pageNum, size: let size):
            let params = APIParamsAppender()
                .append(key: "id", value: id)
                .append(key: "pageNum", value: pageNum)
                .append(key: "size", value: size)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryEndPush(orderId: let orderId,orderType: let orderType):
            let params = APIParamsAppender()
                .append(key: "orderId", value: orderId)
                .append(key: "orderType", value: orderType)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .addCancle(id: let id,orderType: let orderType, reason: let reason, remark: let remark,lat: let lat,lon: let lon):
            let params = APIParamsAppender()
                .append(key: "id", value: id)
                .append(key: "orderType", value: orderType)
                .append(key: "reason", value: reason)
                .append(key: "remark", value: remark)
                .append(key: "lat", value: lat)
                .append(key: "lon", value: lon)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryCoupon(orderId: let orderId,orderType: let orderType, pageNum: let pageNum, size: let size):
            let params = APIParamsAppender()
                .append(key: "orderId", value: orderId)
                .append(key: "orderType", value: orderType)
                .append(key: "pageNum", value: pageNum)
                .append(key: "size", value: size)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryServingOrder:
            let params = APIParamsAppender()
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryTrack(orderId: let orderId, orderType: let orderType):
            let params = APIParamsAppender()
                .append(key: "orderId", value: orderId)
                .append(key: "orderType", value: orderType)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .updateInfo(avatar: let avatar, birthday: let birthday, nickname: let nickname, sex: let sex, let lastname, let firstname):
            let params = APIParamsAppender()
                .append(key: "avatar", value: avatar)
                .append(key: "birthday", value: birthday)
                .append(key: "nickname", value: nickname)
                .append(key: "sex", value: sex)
                .append(key: "lastName", value: lastname)
                .append(key: "firstName", value: firstname)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryUser(phone: let phone):
            let params = APIParamsAppender()
                .append(key: "phone", value: phone)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .handselCoupon(id: let id, userId: let userId):
            let params = APIParamsAppender()
                .append(key: "id", value: id)
                .append(key: "userId", value: userId)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .delMyCoupon(id: let id):
            let params = APIParamsAppender()
                .append(key: "id", value: id)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .setUrgentUser(name: let name, phone: let phone):
            let params = APIParamsAppender()
                .append(key: "name", value: name)
                .append(key: "phone", value: phone)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryMyTravelRecord(pageNum: let pageNum, size: let size):
            let params = APIParamsAppender()
                .append(key: "pageNum", value: pageNum)
                .append(key: "size", value: size)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryMyRedEnvelope(pageNum: let pageNum, size: let size):
            let params = APIParamsAppender()
                .append(key: "pageNum", value: pageNum)
                .append(key: "size", value: size)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryRedEnvelope(pageNum: let pageNum, size: let size):
            let params = APIParamsAppender()
                .append(key: "pageNum", value: pageNum)
                .append(key: "size", value: size)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .withdrawal(let money,let mark):
            let params = APIParamsAppender()
                .append(key: "money", value: money)
                .append(key: "remark", value: mark)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .feedback(content: let content):
            let params = APIParamsAppender()
                .append(key: "content", value: content)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryCustomerPhone(let lat,let lon):
            let params = APIParamsAppender()
                .append(key: "lat", value: lat)
                .append(key: "lnt", value: lon)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .leaveMessage(content: let content):
            let params = APIParamsAppender()
                .append(key: "content", value: content)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryProblems(pageNum: let pageNum, size: let size):
            let params = APIParamsAppender()
                .append(key: "pageNum", value: pageNum)
                .append(key: "size", value: size)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .checkCaptcha(phone: let phone, code: let code):
            let params = APIParamsAppender()
                .append(key: "phone", value: phone)
                .append(key: "code", value: code)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .updatePassword(password: let password):
            let params = APIParamsAppender()
                .append(key: "password", value: password)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .agreement(type: let type):
            let params = APIParamsAppender()
                .append(key: "type", value: type)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .systemNotice(type: let type, pageNum: let pageNum, size: let size):
            let params = APIParamsAppender()
                .append(key: "type", value: type)
                .append(key: "pageNum", value: pageNum)
                .append(key: "size", value: size)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .readSystemNotice(id: let id):
            let params = APIParamsAppender()
                .append(key: "id", value: id)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .delSystemNotice(id: let id):
            let params = APIParamsAppender()
                .append(key: "id", value: id)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .clearSystemNotice:
            let params = APIParamsAppender()
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryNoReadNoticeNum:
            let params = APIParamsAppender()
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .verified(name: let name, idcode: let idcode):
            let params = APIParamsAppender()
                .append(key: "name", value: name)
                .append(key: "idcode", value: idcode)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryRealName:
            let params = APIParamsAppender()
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryWithdrawal(pageNum: let pageNum, size: let size,let state):
            let params = APIParamsAppender()
                .append(key: "pageNum", value: pageNum)
                .append(key: "size", value: size)
                .append(key: "state", value: state)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .updatePhone(phone: let phone, code: let code,let operation):
            let params = APIParamsAppender()
                .append(key: "phone", value: phone)
                .append(key: "code", value: code)
                .append(key: "phoneOperator", value: operation)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .depositBalance(money: let money, payType: let payType, let bankId):
            let params = APIParamsAppender()
                .append(key: "money", value: money)
                .append(key: "payType", value: payType)
                .append(key: "type", value: 1)
                .append(key: "bankCardId", value: bankId)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .shareRedEnvelope(orderId: let orderId, orderType: let orderType):
            let params = APIParamsAppender()
                .append(key: "orderId", value: orderId)
                .append(key: "orderType", value: orderType)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .completeOrder(orderId: let orderId, orderType: let orderType):
            let params = APIParamsAppender()
                .append(key: "orderId", value: orderId)
                .append(key: "orderType", value: orderType)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryServerCarModel(startLonLat: let startLonLat, endLonLat: let endLonLat, type: let type):
            let params = APIParamsAppender()
                .append(key: "startLonLat", value: startLonLat)
                .append(key: "endLonLat", value: endLonLat)
                .append(key: "type", value: type)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .saveOrderPrivateCar(driverId: let driverId, endAddress: let endAddress, endLat: let endLat, endLon: let endLon, orderSource: let orderSource, orderType: let orderType, passengers: let passengers, passengersPhone: let passengersPhone, placementLat: let placementLat, placementLon: let placementLon, serverCarModelId: let serverCarModelId, startAddress: let startAddress, startLat: let startLat, startLon: let startLon, substitute: let substitute, travelTime: let travelTime, type: let type):
            let params = APIParamsAppender()
                .append(key: "driverId", value: driverId)
                .append(key: "endAddress", value: endAddress)
                .append(key: "endLat", value: endLat)
                .append(key: "endLon", value: endLon)
                .append(key: "orderSource", value: orderSource)
                .append(key: "orderType", value: orderType)
                .append(key: "passengers", value: passengers)
                .append(key: "passengersPhone", value: passengersPhone)
                .append(key: "placementLat", value: placementLat)
                .append(key: "placementLon", value: placementLon)
                .append(key: "serverCarModelId", value: serverCarModelId)
                .append(key: "startAddress", value: startAddress)
                .append(key: "startLat", value: startLat)
                .append(key: "startLon", value: startLon)
                .append(key: "substitute", value: substitute)
                .append(key: "travelTime", value: travelTime)
                .append(key: "type", value: type)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .siteQuerySite(let startSiteId):
            let params = APIParamsAppender()
                .append(key: "startSiteId", value: startSiteId)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
        case .travelQueryLines(let startId,let endId):
            let params = APIParamsAppender()
                .append(key: "startId", value: startId)
                .append(key: "endId", value: endId)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
        case.travelQueryDriver(let day,let driverId,let lineId):
            let params = APIParamsAppender()
                .append(key: "day", value: day)
                .append(key: "driverId", value: driverId)
                .append(key: "lineId", value: lineId)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
        case .travelSiteQueryLocation(siteId: let siteId):
            let params = APIParamsAppender()
                .append(key: "siteId", value: siteId)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
        case .travelLineSiteQueryLocation(id: let id):
            let params = APIParamsAppender()
                .append(key: "id", value: id)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
        case .travelAreaMonitoring(code: let code, lonLat: let lonLat, siteId: let siteId):
            let params = APIParamsAppender()
                .append(key: "code", value: code)
                .append(key: "lonLat", value: lonLat)
                .append(key: "siteId", value: siteId)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
        case .travelOrderMoeny(endLonLat: let endLonLat, lineId: let lineId, peopleNumber: let peopleNumber, seatNumber: let seatNumber, serverCarModelId: let serverCarModelId, startLonLat: let startLonLat, totalSeat: let totalSeat, travelMode: let travelMode):
            let params = APIParamsAppender()
                .append(key: "endLonLat", value: endLonLat)
                .append(key: "lineId", value: lineId)
                .append(key: "peopleNumber", value: peopleNumber)
                .append(key: "seatNumber", value: seatNumber)
                .append(key: "serverCarModelId", value: serverCarModelId)
                .append(key: "startLonLat", value: startLonLat)
                .append(key: "totalSeat", value: totalSeat)
                .append(key: "travelMode", value: travelMode)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .travelOrderCrossCity(carId: let carId, distance: let distance, driverId: let driverId, endAddress: let endAddress, endLat: let endLat, endLon: let endLon, lineId: let lineId, lineShiftDriverId: let lineShiftDriverId, orderSource: let orderSource, peopleNumber: let peopleNumber, placementAddress: let placementAddress, placementLat: let placementLat, placementLon: let placementLon, remark: let remark, seatNumber: let seatNumber, serverCarModelId: let serverCarModelId, startAddress: let startAddress, startLat: let startLat, startLon: let startLon, totalSeat: let totalSeat, travelMode: let travelMode, travelTime: let travelTime):
            let params = APIParamsAppender()
                .append(key: "carId", value: carId)
                .append(key: "distance", value: distance)
                .append(key: "driverId", value: driverId)
                .append(key: "endAddress", value: endAddress)
                .append(key: "endLat", value: endLat)
                .append(key: "endLon", value: endLon)
                .append(key: "lineId", value: lineId)
                .append(key: "lineShiftDriverId", value: lineShiftDriverId)
            
                .append(key: "orderSource", value: orderSource)
                .append(key: "peopleNumber", value: peopleNumber)
                .append(key: "placementAddress", value: placementAddress)
                .append(key: "placementLat", value: placementLat)
                .append(key: "placementLon", value: placementLon)
                .append(key: "remark", value: remark)
                .append(key: "seatNumber", value: seatNumber)
                .append(key: "serverCarModelId", value: serverCarModelId)
            
                .append(key: "startAddress", value: startAddress)
                .append(key: "startLat", value: startLat)
                .append(key: "startLon", value: startLon)
                .append(key: "totalSeat", value: totalSeat)
                .append(key: "travelMode", value: travelMode)
                .append(key: "travelTime", value: travelTime)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .orderCrossCitySaveOrderFerry(endAddress: let endAddress, endLat: let endLat, endLon: let endLon, orderSource: let orderSource, placementLat: let placementLat, placementLon: let placementLon, serverCarModelIds: let serverCarModelIds, startAddress: let startAddress, startLat: let startLat, startLon: let startLon, travelTime: let travelTime,let crossCityOrderId,let place):
            let params = APIParamsAppender()
                .append(key: "endAddress", value: endAddress)
                .append(key: "endLat", value: endLat)
                .append(key: "endLon", value: endLon)
                .append(key: "orderSource", value: orderSource)
                .append(key: "placementLat", value: placementLat)
                .append(key: "placementLon", value: placementLon)
                .append(key: "serverCarModelIds", value: serverCarModelIds)
                .append(key: "startAddress", value: startAddress)
                .append(key: "startLat", value: startLat)
                .append(key: "startLon", value: startLon)
                .append(key: "travelTime", value: travelTime)
                .append(key: "crossCityOrderId", value: crossCityOrderId)
                .append(key: "place", value: place)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
        case .queryLogisticsNumber:
            let params = APIParamsAppender()
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .judgingTheCity(endAddress: let endAddress, startLonLat: let startLonLat):
            let params = APIParamsAppender()
                .append(key: "endAddress", value: endAddress)
                .append(key: "startLonLat", value: startLonLat)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
        case .queryLogisticsUnitPrice(endAddress: let endAddress, startLonLat: let startLonLat, type: let type):
            let params = APIParamsAppender()
                .append(key: "endAddress", value: endAddress)
                .append(key: "startLonLat", value: startLonLat)
                .append(key: "type", value: type)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
        case .smallLogistics(cargoNumber: let cargoNumber, cargoType: let cargoType, endAddress: let endAddress, orderSource: let orderSource, placementLat: let placementLat, placementLon: let placementLon, recipient: let recipient, recipientPhone: let recipientPhone, remark: let remark, startAddress: let startAddress, startLat: let startLat, startLon: let startLon, tipMoney: let tipMoney, travelTime: let travelTime, type: let type, urgent: let urgent, let endLonLat):
            let params = APIParamsAppender()
                .append(key: "cargoNumber", value: cargoNumber)
                .append(key: "cargoType", value: cargoType)
                .append(key: "endAddress", value: endAddress)
                .append(key: "orderSource", value: orderSource)
                .append(key: "recipient", value: recipient)
                .append(key: "placementLat", value: placementLat)
                .append(key: "placementLon", value: placementLon)
                .append(key: "recipientPhone", value: recipientPhone)
                .append(key: "remark", value: remark)
                .append(key: "startAddress", value: startAddress)
                .append(key: "startLat", value: startLat)
                .append(key: "startLon", value: startLon)
                .append(key: "tipMoney", value: tipMoney)
                .append(key: "travelTime", value: travelTime)
                .append(key: "type", value: type)
                .append(key: "urgent", value: urgent)
                .append(key: "endLonLat", value: endLonLat)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .smallLogisticsV2(let driverId, let endAddress,let endLat, let endLon, let placementLat, let placementLon, let recipient, let recipientPhone, let remark, let serverCarModelId, let startAddress, let startLat, let startLon):
            let params = APIParamsAppender()
                .append(key: "driverId", value: driverId)
                .append(key: "endAddress", value: endAddress)
                .append(key: "endLat", value: endLat)
                .append(key: "endLon", value: endLon)
                .append(key: "orderSource", value: 1)
                .append(key: "recipient", value: recipient)
                .append(key: "placementLat", value: placementLat)
                .append(key: "placementLon", value: placementLon)
                .append(key: "recipientPhone", value: recipientPhone)
                .append(key: "remark", value: remark)
                .append(key: "serverCarModelId", value: serverCarModelId)
                .append(key: "startAddress", value: startAddress)
                .append(key: "startLat", value: startLat)
                .append(key: "startLon", value: startLon)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .payOrderLogisticsSpread(orderId: let orderId , payType:let  payType, let bankCardId):
            let params = APIParamsAppender()
                .append(key: "orderId", value: orderId)
                .append(key: "payType", value: payType)
                .append(key: "type", value: 1)
                .append(key: "bankCardId", value: bankCardId)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .logisticsQueryPayMoney(endAddress: let endAddress,let endLonLat , number: let number, startLonLat:let  startLonLat, type: let type):
            let params = APIParamsAppender()
                .append(key: "endAddress", value: endAddress)
                .append(key: "number", value: number)
                .append(key: "startLonLat", value: startLonLat)
                .append(key: "endLonLat", value: endLonLat)
                .append(key: "type", value: type)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .getCharterCarType:
            let params = APIParamsAppender()
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
        case .charterCommitOrder(carTime: let carTime, contactPerson:let contactPerson, contactPhone: let contactPhone, modelUse: let modelUse, peopleNumber: let peopleNumber, placeLonLat: let placeLonLat, serverCarModelId: let serverCarModelId, travelTime: let travelTime):
            let params = APIParamsAppender()
                .append(key: "carTime", value: carTime)
                .append(key: "contactPerson", value: contactPerson)
                .append(key: "contactPhone", value: contactPhone)
                .append(key: "modelUse", value: modelUse)
                .append(key: "peopleNumber", value: peopleNumber)
                .append(key: "placeLonLat", value: placeLonLat)
                .append(key: "serverCarModelId", value: serverCarModelId)
                .append(key: "travelTime", value: travelTime)
            
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .integralGoodsData(pageNum: let pageNum , size: let size):
            let params = APIParamsAppender()
                .append(key: "pageNum", value: pageNum)
                .append(key: "size", value: size)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
        case .queryGoodsInfoUsing(id: let id ):
            let params = APIParamsAppender()
                .append(key: "id", value: id)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
        case .changeGoods(consigneeAddress: let  consigneeAddress, consigneeName: let consigneeName, consigneePhone: let consigneePhone, goodsId: let goodsId, remark: let remark):
            let params = APIParamsAppender()
                .append(key: "consigneeAddress", value: consigneeAddress)
                .append(key: "consigneeName", value: consigneeName)
                .append(key: "consigneePhone", value: consigneePhone)
                .append(key: "goodsId", value: goodsId)
                .append(key: "remark", value: remark)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryConvertHistory(page: let pageNum):
            let params = APIParamsAppender()
                .append(key: "pageNum", value: pageNum)
                .append(key: "size", value: 20)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
            
        case .queryInvoiceOrder(orderType: let orderType , pageNum: let pageNum, size: let _, type: let type):
            let params = APIParamsAppender()
                .append(key: "pageNum", value: pageNum)
                .append(key: "size", value: 20)
                .append(key: "orderType", value: orderType)
                .append(key: "type", value: type)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryInvoiceOrder_1:
            let params = APIParamsAppender()
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .invoicingData(address: let address, bank: let bank, code: let code, content: let content, email: let email, name: let name, order: let order, remark: let remark, type: let type,let money):
            let params = APIParamsAppender()
                .append(key: "address", value: address)
                .append(key: "bank", value: bank)
                .append(key: "code", value: code)
                .append(key: "content", value: content)
            
                .append(key: "email", value: email)
                .append(key: "name", value: name)
                .append(key: "order", value: order)
                .append(key: "remark", value: remark)
                .append(key: "type", value: type)
                .append(key: "money", value: money)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case.queryMyInvoice(pageNum: let pageNum, size: let size):
            let params = APIParamsAppender()
                .append(key: "pageNum", value: pageNum)
                .append(key: "size", value: size)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
        case.getInviteList(pageNum: let pageNum, size: let size,let type):
            let params = APIParamsAppender()
                .append(key: "pageNum", value: pageNum)
                .append(key: "size", value: size)
                .append(key: "type", value: type)//类型[1:乘客，2：司机]
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
        case.updateEndAddress(endAddress: let endAddress, endLat: let endLat, endLon: let endLon, orderId: let  orderId):
            let params = APIParamsAppender()
                .append(key: "endAddress", value: endAddress)
                .append(key: "endLat", value: endLat)
                .append(key: "endLon", value: endLon)
                .append(key: "orderId", value: orderId)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
        case .isEnterEmergencyContact:
            return .requestParameters(parameters: APIParamsAppender().done(), encoding: URLEncoding.queryString)
        case .sedEmail(let email):
            let params = APIParamsAppender()
                .append(key: "email", value: email)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .bindingEmail(let email, let code, let type):
            let params = APIParamsAppender()
                .append(key: "email", value: email)
                .append(key: "code", value: code)
                .append(key: "type", value: type)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .logoffUser:
            let params = APIParamsAppender()
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.httpBody)
            
        case .getVerifyCodeUtils:
            let params = APIParamsAppender()
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryBankCardList:
            let params = APIParamsAppender()
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .addBankCard(let bank, let code, let firstName, let lastName):
            let params = APIParamsAppender()
                .append(key: "bank", value: bank)
                .append(key: "code", value: code)
                .append(key: "firstName", value: firstName)
                .append(key: "lastName", value: lastName)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .deleBankCard(let id):
            let params = APIParamsAppender()
                .append(key: "id", value: id)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryRechargeRecord(let pageNum, let size):
            let params = APIParamsAppender()
                .append(key: "pageNum", value: pageNum)
                .append(key: "size", value: size)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryArea:
            let params = APIParamsAppender()
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryArea_1(let pid):
            let params = APIParamsAppender()
                .append(key: "pid", value: pid)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .updateTaxiEndAddress(let endAddress, let endLat, let endLon, let orderId, let orderType):
            let params = APIParamsAppender()
                .append(key: "endAddress", value: endAddress)
                .append(key: "endLat", value: endLat)
                .append(key: "endLon", value: endLon)
                .append(key: "orderId", value: orderId)
                .append(key: "orderType", value: orderType.rawValue)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .redenvelopeDeductionAmount(let orderId, let orderType):
            let params = APIParamsAppender()
                .append(key: "orderId", value: orderId)
                .append(key: "orderType", value: orderType.rawValue)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .confirmDifferencePrice(let difference, let orderId, let status):
            let params = APIParamsAppender()
                .append(key: "difference", value: difference)
                .append(key: "orderId", value: orderId)
                .append(key: "status", value: status)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .queryTimeInfo(let orderId):
            let params = APIParamsAppender()
                .append(key: "orderId", value: orderId)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .googleToken(let type,let tripId):
            
            var trip:String = tripId
            if tripId.contains("providers/i-go-odrd-testing/trips/"){
                trip = tripId.replacingOccurrences(of: "providers/i-go-odrd-testing/trips/", with: "")
            }
            
            let params = APIParamsAppender()
                .append(key: "type", value: type)
                .append(key: "tripId", value: trip)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .getNewTripId:
            let params = APIParamsAppender()
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
            
        case .uploadImage(let data):
            return .uploadMultipart([MultipartFormData(provider: .data(data), name: "file", fileName: "profile_\(String.random(ofLength: 5)).jpg", mimeType: "multipart/form-data")])
            
            
            //												case .queryRedEnvelopRecord(let pageNum, let size):
            //																let params = APIParamsAppender()
            //																				.append(key: "pageNum", value: pageNum)
            //																				.append(key: "size", value: size)
            //																return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
        case .queryOrderDrivingData(orderId: let orderId, orderType: let orderType):
            let params = APIParamsAppender()
                .append(key: "orderId", value: orderId)
                .append(key: "orderType", value: orderType)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
        case .queryHomeEntrance:
            let params = APIParamsAppender()
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
        }
        
    }
}
