package com.za.net

import com.za.base.view.ReadTrainingCountBean
import com.za.bean.AppNewDriverInfoDTO
import com.za.bean.BaseResponse
import com.za.bean.BatteryCostQueryBean
import com.za.bean.BatteryCostQueryRequest
import com.za.bean.ChangeBatteryResponse
import com.za.bean.DriverIdentityAuthWebBean
import com.za.bean.DriverIdentityAuthWebRequest
import com.za.bean.DriverInfo
import com.za.bean.FetchChangeBatteryPhotoRequest
import com.za.bean.HistoryPhotoTemplates
import com.za.bean.HistoryTaskBean
import com.za.bean.ImageBean
import com.za.bean.JpushBean
import com.za.bean.LoginWithTaskBean
import com.za.bean.LoginWithTaskRequest
import com.za.bean.NewOrderRequestBean
import com.za.bean.PaymentInfoBean
import com.za.bean.ReportHistoryBean
import com.za.bean.ReportHistoryRequest
import com.za.bean.ReportInfoRequest
import com.za.bean.ReportItem
import com.za.bean.SettleInfoRequest
import com.za.bean.TaskNotesBean
import com.za.bean.TaskSettlementAndTraceBean
import com.za.bean.UpdateVersionBean
import com.za.bean.UpdateVersionRequest
import com.za.bean.UploadChangeBatteryRequest
import com.za.bean.VehicleInfo
import com.za.bean.db.order.OrderInfo
import com.za.bean.db.order.PhotoTemplateInfo
import com.za.bean.request.AcceptOrderRequest
import com.za.bean.request.AppNewOrderVoiceRequest
import com.za.bean.request.CustomerPaymentCreateBean
import com.za.bean.request.CustomerPaymentCreateRequest
import com.za.bean.request.DriverFaceCompareBean
import com.za.bean.request.DriverFaceCompareRequest
import com.za.bean.request.ElectronOrderResponse
import com.za.bean.request.FastLoginRequest
import com.za.bean.request.FetchVehicleMaintenanceSubmitHistoryRequestBean
import com.za.bean.request.GeneralInfoRequest
import com.za.bean.request.GiveUpTaskRequest
import com.za.bean.request.HistoryDetailRequest
import com.za.bean.request.HistoryPhotoTemplateRequest
import com.za.bean.request.HistoryTasksRequest
import com.za.bean.request.IaiCompareFaceBean
import com.za.bean.request.LoginRequest
import com.za.bean.request.OrderListRequest
import com.za.bean.request.OrderPhotoOcrRecognizeRequest
import com.za.bean.request.PaymentInfoRequest
import com.za.bean.request.PaymentUpdateRequest
import com.za.bean.request.PhotoTemplateRequest
import com.za.bean.request.QueryEleOrderRequest
import com.za.bean.request.ReadTrainingCountRequest
import com.za.bean.request.RecognizeRefuelOcrRequestBean
import com.za.bean.request.RecognizeRefuelTicketBean
import com.za.bean.request.RecognizeRefuelTicketRequestBean
import com.za.bean.request.RefuseOrderRequest
import com.za.bean.request.SaveEleOrderRequest
import com.za.bean.request.SwitchTaskRequest
import com.za.bean.request.TaskFinishRequest
import com.za.bean.request.TaskFinishResponse
import com.za.bean.request.TaskNotesRequest
import com.za.bean.request.TodayMaintainRequest
import com.za.bean.request.TodayMaintainUploadRequest
import com.za.bean.request.TodayMaintainbean
import com.za.bean.request.UpdateOrderConfirmTaskRequest
import com.za.bean.request.UpdatePhotoRequest
import com.za.bean.request.UpdateTaskBean
import com.za.bean.request.UpdateTaskRequest
import com.za.bean.request.UpdateVehicleStateRequest
import com.za.bean.request.UploadGpsRequest
import com.za.bean.request.UploadPhotoBean
import com.za.bean.request.VehicleListRequest
import com.za.bean.request.VehicleLogoutRequest
import com.za.bean.request.VehicleMaintenanceHistoryBean
import com.za.bean.request.VehicleMaintenanceSubmitRequest
import com.za.bean.request.VehicleRepairBean
import com.za.bean.request.VehicleRepairPointMatcherItem
import com.za.bean.request.VehicleRepairPointMatcherListRequest
import com.za.bean.request.VerifyCodeRequest
import com.za.bean.request.VerifyCodeResponse
import com.za.call.ContactRecordRequest
import com.za.room.db.user.DriverInfoBean
import com.za.water_marker.bean.MyWaterMarkerTemplateBean
import com.za.water_marker.bean.WaterMarkerRequestBean
import io.reactivex.rxjava3.core.Observable
import okhttp3.MultipartBody
import retrofit2.http.Body
import retrofit2.http.Multipart
import retrofit2.http.POST
import retrofit2.http.Part

interface ApiService {

	//获取车辆列表
	@POST("/driverApp/supplier/listVehicleNew")
	fun getVehicleList(@Body info : VehicleListRequest) : Observable<BaseResponse<List<VehicleInfo>>>

	//更改车辆状态
	@POST("/driverApp/task/switchVehicleStatus")
	fun newUpdateVehicleState(@Body info : UpdateVehicleStateRequest) : Observable<BaseResponse<String>>

	@POST("/driverApp/v2/user/generalInfo")
	fun generalInfo(@Body info : GeneralInfoRequest) : Observable<BaseResponse<DriverInfoBean>>

	@POST("/driverApp/base/appVersion")
	fun getUpdate(@Body versionRequest : UpdateVersionRequest) : Observable<BaseResponse<UpdateVersionBean>>

	@POST("/driverApp/base/getVerifyCode")
	fun getVerifyCode(@Body verifyCodeRequest : VerifyCodeRequest) : Observable<BaseResponse<VerifyCodeResponse>>

	@Multipart
	@POST("/order/uploadImage")
	fun uploadImage(@Part part : MultipartBody.Part) : Observable<ImageBean>

	@POST("/driverApp/task/uploadContactRecord")
	fun uploadContactRecord(@Body contactRecordRequest : ContactRecordRequest?) : Observable<BaseResponse<String>>

	@POST("/driverApp/task/login")
	fun login(@Body info : LoginRequest) : Observable<BaseResponse<DriverInfo?>>

	@POST("/driverApp/supplier/fastLogin")
	fun fastLogin(@Body info : FastLoginRequest) : Observable<BaseResponse<DriverInfo?>>

	//获取该手机号下面服务商列表
	@POST("/driverApp/supplier/getDriverListInfo")
	fun getDriverListInfo(@Body info : VerifyCodeRequest) : Observable<BaseResponse<List<AppNewDriverInfoDTO>>>

	@POST("/driverApp/supplier/getReadTrainingCount")
	fun getReadTrainingCount(@Body params : ReadTrainingCountRequest) : Observable<BaseResponse<ReadTrainingCountBean>>

	@POST("/driverApp/task/loginWithTask")
	fun loginWithTask(@Body loginWithTaskRequest : LoginWithTaskRequest) : Observable<BaseResponse<LoginWithTaskBean>>

	@POST("/driverApp/supplier/vehicleLogout")
	fun vehicleLogout(@Body info : VehicleLogoutRequest) : Observable<BaseResponse<String>>

	//当前订单列表
	@POST("/driverApp/v2/task/listCurrentTask")
	fun queryOrderList(@Body info : OrderListRequest) : Observable<BaseResponse<List<OrderInfo>?>>

	@POST("/driverApp/task/getNewOrder")
	fun getNewOrder(@Body newOrderRequestBean : NewOrderRequestBean) : Observable<BaseResponse<JpushBean>>

	@POST("/driverApp/supplier/uploadGps")
	fun uploadGps(@Body info : UploadGpsRequest) : Observable<BaseResponse<String>>

	//获取报备内容列表
	@POST("/driverApp/base/getReportTemplates")
	fun getReportTemplates() : Observable<BaseResponse<List<ReportItem>>>

	//提交报备
	@POST("/driverApp/task/submitReport")
	fun submitReport(@Body reportInfoRequest : ReportInfoRequest) : Observable<BaseResponse<String>>

	//历史报备内容
	@POST("/driverApp/task/reportHistory")
	fun getReportHistory(@Body reportHistoryRequest : ReportHistoryRequest) : Observable<BaseResponse<List<ReportHistoryBean>>>

	//拒绝任务
	@POST("/driverApp/task/refuseTask")
	fun refuseOrder(@Body request : RefuseOrderRequest) : Observable<BaseResponse<String>>

	//接受任务
	@POST("/driverApp/task/acceptTask")
	fun acceptOrder(@Body request : AcceptOrderRequest) : Observable<BaseResponse<String>>

	//更新任务
	@POST("/driverApp/v4/task/updateTask")
	fun updateTask(@Body request : UpdateTaskRequest) : Observable<BaseResponse<UpdateTaskBean>>

	//更新任务
	@POST("/driverApp/v4/task/updateTask")
	fun submitOrderConfirmTask(@Body request : UpdateOrderConfirmTaskRequest) : Observable<BaseResponse<UpdateTaskBean>>

	@POST("/driverApp/v2/supplier/photoTemplate")
	fun fetchPhotoTemplate(@Body request : PhotoTemplateRequest) : Observable<BaseResponse<List<PhotoTemplateInfo>>>

	@POST("/driverApp/supplier/getWatermarkTemplateConfig")
	fun getWatermarkTemplateConfig(@Body request : WaterMarkerRequestBean) : Observable<BaseResponse<MyWaterMarkerTemplateBean>>

	@POST("/driverApp/supplier/orderPhotoOcrRecognize")
	fun orderPhotoOcrRecognize(@Body info : OrderPhotoOcrRecognizeRequest) : Observable<BaseResponse<String>>

	@POST("/driverApp/v4/supplier/saveElectronOrder")
	fun saveElectronOrder(@Body info : SaveEleOrderRequest?) : Observable<BaseResponse<String>>

	@POST("/driverApp/supplier/queryElectronOrder")
	fun queryElectronOrder(@Body info : QueryEleOrderRequest?) : Observable<BaseResponse<ElectronOrderResponse>>

	//查询支付信息
	@POST("/driverApp/payment/paymentInfoQuery")
	fun paymentInfoQuery(@Body info : PaymentInfoRequest?) : Observable<BaseResponse<PaymentInfoBean>>

	@POST("/driverApp/payment/customerPaymentCreate")
	fun customerPaymentCreate(@Body customerPaymentCreateRequest : CustomerPaymentCreateRequest) : Observable<BaseResponse<CustomerPaymentCreateBean>>

	@POST("/driverApp/payment/paymentAmountUpdate")
	fun paymentAmountUpdate(@Body paymentUpdateRequest : PaymentUpdateRequest) : Observable<BaseResponse<String>>

	@POST("/driverApp/battery/saveReplaceBatteryPhoto")
	fun saveReplaceBatteryPhoto(@Body info : UploadChangeBatteryRequest) : Observable<BaseResponse<String>>

	@POST("/driverApp/supplier/getReplaceBatteryPhoto")
	fun getReplaceBatteryPhoto(@Body info : FetchChangeBatteryPhotoRequest) : Observable<BaseResponse<List<ChangeBatteryResponse>>>

	//电瓶费用查询
	@POST("/driverApp/battery/batteryCostQuery")
	fun batteryCostQuery(@Body info : BatteryCostQueryRequest) : Observable<BaseResponse<BatteryCostQueryBean>>

	@POST("/driverApp/v4/task/taskFinish")
	fun taskFinish(@Body info : TaskFinishRequest) : Observable<BaseResponse<TaskFinishResponse>>

	@POST("/driverApp/task/giveUpTask")
	fun giveUpTask(@Body info : GiveUpTaskRequest) : Observable<BaseResponse<String>>

	//历史订单补传照片
	@POST("/driverApp/task/updatePhoto")
	fun addPhoto(@Body params : UpdatePhotoRequest) : Observable<BaseResponse<UploadPhotoBean>>

	@POST("/driverApp/v2/task/switchTask")
	fun switchTask(@Body info : SwitchTaskRequest) : Observable<BaseResponse<String>>

	@POST("/driverApp/task/listHistoryTaskNew")
	fun getHistory(@Body info : HistoryTasksRequest) : Observable<BaseResponse<List<HistoryTaskBean>>>

	@POST("/driverApp/task/getHistoryTaskPhotos")
	fun getHistoryTaskPhotos(@Body info : HistoryPhotoTemplateRequest) : Observable<BaseResponse<List<HistoryPhotoTemplates>>>

	//历史结算单和轨迹
	@POST("/driverApp/task/getTaskSettlementAndTrace")
	fun getTaskSettlementAndTrace(@Body info : HistoryDetailRequest) : Observable<BaseResponse<TaskSettlementAndTraceBean>>

	@POST("driverApp/task/updateSettleInfo")
	fun updateSettleInfo(@Body settleInfoRequest : SettleInfoRequest) : Observable<BaseResponse<String>>


	//人脸比对
	@POST("driverApp/supplier/driverFaceCompare")
	fun driverFaceCompare(@Body driverFaceCompareRequest : DriverFaceCompareRequest) : Observable<BaseResponse<DriverFaceCompareBean>>

	@POST("driverApp/supplier/driverIdentityAuthWeb")
	fun driverIdentityAuthWeb(@Body request : DriverIdentityAuthWebRequest) : Observable<BaseResponse<DriverIdentityAuthWebBean>>

	//今日保养
	@POST("driverApp/supplier/getTodayMaintain")
	fun getTodayMaintain(@Body info : TodayMaintainRequest) : Observable<BaseResponse<List<TodayMaintainbean>>>

	//今日保养
	@POST("driverApp/supplier/uploadTodayMaintain")
	fun uploadTodayMaintain(@Body params : TodayMaintainUploadRequest) : Observable<BaseResponse<String>>

	//加油小票识别
	@POST("driverApp/supplier/recognizeRefuelTicket")
	fun recognizeRefuelTicket(@Body bean : RecognizeRefuelOcrRequestBean?) : Observable<BaseResponse<RecognizeRefuelTicketBean>>

	//提交加油记录
	@POST("driverApp/supplier/vehicleRefuelSubmit")
	fun vehicleRefuelSubmit(@Body info : RecognizeRefuelTicketRequestBean?) : Observable<BaseResponse<String>>

	//获取车辆维保记录
	@POST("driverApp/supplier/v2/getVehicleMaintenanceSubmit")
	fun getVehicleMaintenanceSubmit(@Body info : FetchVehicleMaintenanceSubmitHistoryRequestBean) : Observable<BaseResponse<VehicleRepairBean>>

	//获取车辆维保详细信息
	@POST("driverApp/supplier/v2/getVehicleMaintenanceDetail")
	fun getVehicleRepairDetail(@Body info : FetchVehicleMaintenanceSubmitHistoryRequestBean) : Observable<BaseResponse<VehicleRepairBean>>

	//维修地点匹配
	@POST("driverApp/supplier/v2/vehicleRepairPointMatcherList")
	fun vehicleRepairPointMatcherList(@Body info : VehicleRepairPointMatcherListRequest) : Observable<BaseResponse<List<VehicleRepairPointMatcherItem>>>

	//提交维保记录
	@POST("driverApp/supplier/v2/vehicleMaintenanceSubmit")
	fun vehicleMaintenanceSubmit(@Body info : VehicleMaintenanceSubmitRequest) : Observable<BaseResponse<String>>

	//获取车辆维修历史
	@POST("/driverApp/supplier/v2/vehicleMaintenanceList")
	fun vehicleMaintenanceList(@Body info : FetchVehicleMaintenanceSubmitHistoryRequestBean) : Observable<BaseResponse<List<VehicleMaintenanceHistoryBean>>>

	@POST("driverApp/base/getVoiceUrl")
	fun getVoiceUrl(@Body info : AppNewOrderVoiceRequest) : Observable<BaseResponse<String>>

	@POST("driverApp/supplier/iaiCompareFace")
	fun iaiCompareFace(@Body info : DriverFaceCompareRequest) : Observable<BaseResponse<IaiCompareFaceBean>>

	@POST("driverApp/task/getTaskNotes")
	fun getTaskNotes(@Body request : TaskNotesRequest) : Observable<BaseResponse<TaskNotesBean>>
}
