//
//  LalamoveInterface.swift
//  GeliBusinessPlatform
//
//  Created by junye lu on 2020/7/29.
//  Copyright © 2020 junye lu. All rights reserved.
//

import Foundation
import ObjectMapper
//MARK: - 城市列表
class cityListModel: Mappable {
    var code:Int?
    var message : String?
    var data :Array<cityListDataModel>?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        code <- map["code"]
        message <- map["message"]
        data <- map["data"]
    }
}

class cityListDataModel: Mappable {
    var name : String?
    var lat_lon : citySearchDataPoiLocationModel?
    var city_id : Int?
    var name_en : String?
    
    
    required init?( map: Map) {
        
    }
    
    func mapping(map: Map) {
        name <- map["name"]
        lat_lon <- map["lat_lon"]
        city_id <- map["city_id"]
        name_en <- map["name_en"]
    }
}


//MARK: - 获取城市下可选车型信息
class cityCartModel: Mappable {
    var code:Int?
    var message : String?
    var data :cityCartDataModel?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        code <- map["code"]
        message <- map["message"]
        data <- map["data"]
    }
}

class cityCartDataModel: Mappable {
    var enable_virtual_number:Int?
    var vehicle_arr : Array<vehicle_arr_data>?
    var name :String?
    var spec_req_arr : Array<spec_req_arr_data>?
    var enable_ep_virtual_number_status:Int?
    var city_id:Int?
    var name_en:String?
    var revision:Int?
    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        enable_virtual_number <- map["enable_virtual_number"]
        vehicle_arr <- map["vehicle_arr"]
        name <- map["name"]
        
        spec_req_arr <- map["spec_req_arr"]
        enable_ep_virtual_number_status <- map["enable_ep_virtual_number_status"]
        city_id <- map["city_id"]
        
        name_en <- map["name_en"]
        revision <- map["revision"]
    }
}

class vehicle_arr_data: Mappable {
    var img_url_high_light:String?
    var vehicle_std_arr : Array<vehicle_std_arr_data>?
    var surcharge_desc :String?
    var carriage_length_cm :String?
    var vehicle_price_text_item :vehicle_price_text_item_data?
    
    var is_truck_direction:Int?
    var name : String?
    var order_vehicle_id :Int?
    var img_url_off_light :String?
    var carriage_height_cm :String?
    
    var carriage_width_cm:String?
    var spread_remark : String?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        img_url_high_light <- map["img_url_high_light"]
        vehicle_std_arr <- map["vehicle_std_arr"]
        surcharge_desc <- map["surcharge_desc"]
        carriage_length_cm <- map["carriage_length_cm"]
        vehicle_price_text_item <- map["vehicle_price_text_item"]
        
        is_truck_direction <- map["is_truck_direction"]
        name <- map["name"]
        order_vehicle_id <- map["order_vehicle_id"]
        img_url_off_light <- map["img_url_off_light"]
        carriage_height_cm <- map["carriage_height_cm"]
        
        carriage_width_cm <- map["carriage_width_cm"]
        spread_remark <- map["spread_remark"]
    }
}

class vehicle_price_text_item_data: Mappable {
    var text_weight : String?
    var exceed_segment_price :Array<exceed_segment_price_data>?
    var text_desc :String?
    
    var text_size : String?
    var start_distance_km :Float?
    var text_volume :String?
    
    var price_fen_after_start : Float?
    var start_price_fen :Float?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        text_weight <- map["text_weight"]
        exceed_segment_price <- map["exceed_segment_price"]
        text_desc <- map["text_desc"]
        
        text_size <- map["text_size"]
        start_distance_km <- map["start_distance_km"]
        text_volume <- map["text_volume"]
        
        price_fen_after_start <- map["price_fen_after_start"]
        start_price_fen <- map["start_price_fen"]
    }
}

class exceed_segment_price_data: Mappable {
    var end_exdistancekm : Float?
    var price_extra_fen :Float?
    var start_exdistancekm :Float?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        end_exdistancekm <- map["end_exdistancekm"]
        price_extra_fen <- map["price_extra_fen"]
        start_exdistancekm <- map["start_exdistancekm"]
    }
}

class vehicle_std_arr_data: Mappable {
    var name : String?
    var price_fen :Float?
    var desc :String?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        name <- map["name"]
        price_fen <- map["price_fen"]
        desc <- map["desc"]
    }
}


class spec_req_arr_data: Mappable {
    var price_value_fen:Float?
    var name : String?
    var price_type :Int?
    var type :Int?
    var desc :String?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        price_value_fen <- map["price_value_fen"]
        name <- map["name"]
        price_type <- map["price_type"]
        type <- map["type"]
        desc <- map["desc"]
    }
}
//MARK: - 物流预估价格
class orderPriceCalculateModel: Mappable {
    var code:Int?
    var message : String?
    var data :orderPriceCalculateDataModel?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        code <- map["code"]
        message <- map["message"]
        data <- map["data"]
    }
}
class orderPriceCalculateDataModel: Mappable {
    var path_id:String?
    var distance_by : Int?
    var distance_total :Int?
    var total_price_fen :Float? //订单预估总价
    var order_vehicle_name:String?
    var exceed_distance : Int?
    var spec_req_price_arr:Array<orderPriceCalculateSpecReqDataModel>? //增值(额外)服务项已经价格
    var order_price_arr:Array<orderPriceCalculateOrderPriceDataModel>?
//    var vehicle_std_price_arr:Array<>
    
    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        path_id <- map["path_id"]
        distance_by <- map["distance_by"]
        distance_total <- map["distance_total"]
        total_price_fen <- map["total_price_fen"]
        order_vehicle_name <- map["order_vehicle_name"]
        exceed_distance <- map["exceed_distance"]
        spec_req_price_arr <- map["spec_req_price_arr"]
        order_price_arr <- map["order_price_arr"]
    }
}
class orderPriceCalculateSpecReqDataModel: Mappable {
    var price_value_fen:Int?
    var name : String?
    var price_fen :Float?
    var price_type :Int?
    var driver_price_value_fen:Float?
    var type : Int?
    var driver_price_fen:Float?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        price_value_fen <- map["price_value_fen"]
        name <- map["name"]
        price_fen <- map["price_fen"]
        price_type <- map["price_type"]
        driver_price_value_fen <- map["driver_price_value_fen"]
        type <- map["type"]
        driver_price_fen <- map["driver_price_fen"]
    }
}
class orderPriceCalculateOrderPriceDataModel: Mappable {
    var pay_status:Int?
    var price_fen :Float?
    var type :Int?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        pay_status <- map["pay_status"]
        price_fen <- map["price_fen"]
        type <- map["type"]
 
    }
}
//MARK: - 地址检索poi
class citySearchModel: Mappable {
    var code:Int?
    var message : String?
    var data :citySearchDataModel?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        code <- map["code"]
        message <- map["message"]
        data <- map["data"]
    }
}
class citySearchDataModel: Mappable {
    var poi:Array<citySearchDataPoiModel>?
 

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        poi <- map["poi"]
        
    }
}
class citySearchDataPoiModel: Mappable {
    var area:String?//地址所属区(县),示例:⻰华区
    var uid:String? //地址uid
    var address:String? //  地址详情,示例:深圳市⻰华区致远中路28号
    var name:String?// 地址名称,示例:深圳北站
    var city:String?//地址所属城市名称, 示例:深圳市
    var distance:String? //距离(将返回与输入参数中经纬度的距离,如果输入参数中没有传经纬度 则返回空)
    var location:citySearchDataPoiLocationModel?//地址经纬度(wgs84坐标系)
    var children:Array<citySearchDataPoiChildrenModel>?//可选子节点地址
    var city_id:Int?//地址所属城市ID,示例:1002

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        uid <- map["uid"]
        name <- map["name"]
        address <- map["address"]
        city <- map["city"]
        city_id <- map["city_id"]
        area <- map["area"]
        distance <- map["distance"]
        children <- map["children"]
        location <- map["location"]
    }
}
class citySearchDataPoiLocationModel: Mappable {
    var lat:Double?
    var lon:Double?
    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        lat <- map["lat"]
        lon <- map["lon"]

    }
}
class citySearchDataPoiChildrenModel: Mappable {
    var uid:String? //地址uid
    var name:String?// 子节点地址名称, 示例:a口
    var address:String? //  地子节点地址详情, 示例:上梅林地铁站-A口
    var location:citySearchDataPoiLocationModel?//子节点地址经纬度(wgs84坐标系)
 
    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        uid <- map["uid"]
        name <- map["name"]
        address <- map["address"]
        location <- map["location"]

    }
}
//MARK: - 货拉拉下单
class shopsAuthListModel: Mappable {
    var code:Int?
    var message : String?
    var data :Int?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        code <- map["code"]
        message <- map["message"]
        data <- map["data"]
    }
}

//MARK: - 查看收发货历史
class getSearchLogListModel: Mappable {
    var code:Int?
    var message : String?
    var data :Array<getSearchLogListDataModel>?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        code <- map["code"]
        message <- map["message"]
        data <- map["data"]
    }
}
class getSearchLogListDataModel: Mappable {
    var id:Int?
    var poi : String?
    var house_number :String?
    var contact_name :String?
    var contact_phone_no :String?
    var sr_type :Int?
    var shop_id :Int?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        id <- map["id"]
        poi <- map["poi"]
        house_number <- map["house_number"]
        contact_name <- map["contact_name"]
        contact_phone_no <- map["contact_phone_no"]
        sr_type <- map["sr_type"]
        shop_id <- map["shop_id"]
 
    }
}
//MARK: - 获取货拉拉预约时间
class getHllTimeModel: Mappable {
    var code:Int?
    var message : String?
    var data :Array<getHllTimeDataModel>?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        code <- map["code"]
        message <- map["message"]
        data <- map["data"]
    }
}
class getHllTimeDataModel: Mappable {
    var date:String?
    var h:Array<getHllTimeDayHDataModel>?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        date <- map["date"]
        h <- map["h"]
        
    }
}
class getHllTimeDayHDataModel: Mappable {
    var val:String?
    var stime:Double?
    var i:Array<getHllTimeDayIDataModel>?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        i <- map["i"]
        val <- map["val"]
        stime <- map["stime"]
    }
}
class getHllTimeDayIDataModel: Mappable {
    var val:String?
    var stime:Double?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        val <- map["val"]
        stime <- map["stime"]

    }
}
//MARK: - 获取取消订单原因
class orderCancelReasonModel: Mappable {
    var code:Int?
    var message : String?
    var data :Array<orderCancelReasonDataModel>?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        code <- map["code"]
        message <- map["message"]
        data <- map["data"]
    }
}
class orderCancelReasonDataModel: Mappable {
    var id:Int?
    var category:String? //分类名称;示例:自己原因
    var sub_cat:Array<orderCancelReasonSubCatDataModel>?
    var isShow:Bool = false
  
    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        id <- map["id"]
        category <- map["category"]
        sub_cat <- map["sub_cat"]
 
   
    }
}
class orderCancelReasonSubCatDataModel: Mappable {
    var sub_id:Int?
    var sub_name:String? //子分类原因名称;示例:计划有变,暂时不需要用车
    var ep_model:Int?
 
    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        sub_id <- map["sub_id"]
        sub_name <- map["sub_name"]
        ep_model <- map["ep_model"]
 
   
    }
}
//MARK: - 查看货拉拉运单详情
class getHllOrderDetailsModel: Mappable {
    var code:Int?
    var message : String?
    var data :getHllOrderDetailsDataModel?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        code <- map["code"]
        message <- map["message"]
        data <- map["data"]
    }
}
class getHllOrderDetailsDataModel: Mappable {

    var order_detail_item :getHllOrderDetailsOrderDetailItemDataModel?//订单明细信息
    var driver_info :getHllOrderDetailsdriverInfoDataModel?//接单司机信息
    var delivery :getHllOrderDetailsSalePlatDataModel?//关联信息

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        order_detail_item <- map["order_detail_item"]
        driver_info <- map["driver_info"]
        delivery <- map["delivery"]

     }
}
class getHllOrderDetailsSalePlatDataModel: Mappable {
    var sale_plat : String?
    var order_sn : String?
    var hll_pay_status_two : Int?
    var wb_no : String?
    var bill_price_arr:Float?
    var pay_status:Int?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        sale_plat <- map["sale_plat"]
        order_sn <- map["order_sn"]
        hll_pay_status_two <- map["hll_pay_status_two"]
        wb_no <- map["wb_no"]
        bill_price_arr <- map["bill_price_arr"]
        pay_status <- map["pay_status"]

    }
}
class getHllOrderDetailsdriverInfoDataModel: Mappable {
    var name : String?
    var phone_no : String?
    var license_plate : String?
    var lat_lon : citySearchDataPoiLocationModel?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        name <- map["name"]
        phone_no <- map["phone_no"]
        license_plate <- map["license_plate"]
        lat_lon <- map["lat_lon"]
    }
}
class getHllOrderDetailsOrderDetailItemDataModel: Mappable {//订单明细信息
    var order_item : orderDetailItemDataModel?
    var spec_req_price_arr : Array<specReqPriceArrDataModel>?
    var bill_price_arr : Array<billPricearrDataModel>?
 
    var contact_name : String? //下单联系人 示例:罗瑞
    var contact_phone_no : String? //下单联系人手机
    var total_distance : Int? //总里数(KM)
    var exceed_distance : Int?//超里数(KM)
    var driver_id : Int?//接单司机ID
    var vehicle_std_price_arr : Array<Any>?//车型附加要求项及费用信息
    var progress_str : String?//
//    订单跟踪信息, 示例:订单已提交|2019-12-25 12:47,司机已接单|2019-12-25 12:48,货物已装车|2019-12-25 12:48,订单已完成|2019-12-25 12:48,账单已发送|2019-12-25 12:53
    var complete_time : String?//订单完成时间 示例:2019-12-25 12:48:35
    var vehicle_id : Int?//下单车型ID
    var pickup_ts : String?//司机接单时间戳
    var loaded_ts : String?//司机装货时间戳
    var driver_amount_fen : Int?
    var amount_fen : Int?
    var brokerage_fen : Int?//平台信息费
    var goods_type_id : Int?
    var person_insurance_fen : Int?//保险费用
    var virtual_bind_status : Int?//虚拟号绑定状态
    var use_virtual_phone : Int?
    var last_bind_phone_no : Int?
    var virtual_phone_info : Array<Any>?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        order_item <- map["order_item"]
        spec_req_price_arr <- map["spec_req_price_arr"]
        bill_price_arr <- map["bill_price_arr"]
        contact_name <- map["contact_name"]
        contact_phone_no <- map["contact_phone_no"]
        total_distance <- map["total_distance"]
        exceed_distance <- map["exceed_distance"]
        driver_id <- map["driver_id"]
        vehicle_std_price_arr <- map["vehicle_std_price_arr"]
        progress_str <- map["progress_str"]
        complete_time <- map["complete_time"]
        vehicle_id <- map["vehicle_id"]
        pickup_ts <- map["pickup_ts"]
        loaded_ts <- map["loaded_ts"]
        driver_amount_fen <- map["driver_amount_fen"]
        amount_fen <- map["amount_fen"]
        brokerage_fen <- map["brokerage_fen"]
        goods_type_id <- map["goods_type_id"]
        person_insurance_fen <- map["person_insurance_fen"]
        virtual_bind_status <- map["virtual_bind_status"]
        use_virtual_phone <- map["use_virtual_phone"]
        last_bind_phone_no <- map["last_bind_phone_no"]
        virtual_phone_info <- map["virtual_phone_info"]
     }
}
class specReqPriceArrDataModel: Mappable { //订单额外服务项及费用信息
    var type : Int?//
    var name : String?//例:拍照回单
    var price_fen : Float?//费用
    var price_type : Int?//费用
    var price_value_fen : Int?

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        type <- map["type"]
        name <- map["name"]
        price_fen <- map["price_fen"]
        price_type <- map["price_type"]
        price_value_fen <- map["price_value_fen"]
    }
}
class billPricearrDataModel: Mappable { //司机添加的额外费用信息
    
    var bill_type : Int?//费用类型ID,1过桥费,2停车费,3搬运费,5逾时等候费
    var name : String?//费用类型名称 示例:高速路桥费
    var price_fen : Float?//费用金额(分) 示例:0
    var img_url : String?//票据凭证图片链接 示例:

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        bill_type <- map["bill_type"]
        name <- map["name"]
        price_fen <- map["price_fen"]
        img_url <- map["img_url"]
    }
}

class orderDetailItemDataModel: Mappable { //订单信息
    var order_display_id : String?//货拉拉订单号(对外)
    var order_id : Int?//货拉拉订单号(对内
    var order_uuid : String?//
    var order_status : Int?//订单当前状态
    var pay_status : Int?//订单总支付状态1已支付,0未支付
    var order_vehicle_id : Int?//订单车型ID
    var vehicle_type_name : String?//订单车型名称, 示例:小型厢货
    var order_time : String?//需用车时间 示例:2019-12-25 12:57:04
    var create_time : String?// 订单创建时间, 示例:2019-12-25 12:47:14
    var order_reason : String?//员工用车原因
    var remark : String?//订单备注
    var price_fen : Float?//订单总价格
    var user_id : Int?//下单用户ID
    var city_id : Int?//下单城市ID
    var ep_id : Int?//下单用户企业账号ID
    var driver_id : Int?//接单司机ID
    var send_bill_time : String?//司机账单发送时间, 示例:2019-12-25 12:53:40
    var send_bill_price_fen : Int?//司机账单发送金额(分)
    var update_bill_time : String?//账单更新时间 示例:2019-12-25 12:53:40
    var is_complain_order : Int?//用户是否申诉账单
    var complain_bill_time : String?//账单申诉时间, 示例:2019-12-25 12:53:40
    var abnormal_bill_time : String?//账单异常完成时间, 示例:2019-12-25 12:53:40
    var pay_type : Int?//支付方式(3企业账户余额支付,8账期支付)
    var order_type : Int?//订单类型
 
    var addr_info_arr : Array<orderDetailItemAddrInfoArrDataModel>?//订单地址信息
    var order_price_arr : Array<orderDetailItemOrderPriceArrDataModel>?//订单计价明细数组

    
    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        order_display_id <- map["order_display_id"]
        order_id <- map["order_id"]
        order_uuid <- map["order_uuid"]
        order_status <- map["order_status"]
        pay_status <- map["pay_status"]
        order_vehicle_id <- map["order_vehicle_id"]
        vehicle_type_name <- map["vehicle_type_name"]
        order_time <- map["order_time"]
        create_time <- map["create_time"]
        order_reason <- map["order_reason"]
        remark <- map["remark"]
        price_fen <- map["price_fen"]
        user_id <- map["user_id"]
        city_id <- map["city_id"]
        ep_id <- map["ep_id"]
        driver_id <- map["driver_id"]
        send_bill_time <- map["send_bill_time"]
        send_bill_price_fen <- map["send_bill_price_fen"]
        update_bill_time <- map["update_bill_time"]
        is_complain_order <- map["is_complain_order"]
        complain_bill_time <- map["complain_bill_time"]
        abnormal_bill_time <- map["abnormal_bill_time"]
        pay_type <- map["pay_type"]
        order_type <- map["order_type"]
        addr_info_arr <- map["addr_info_arr"]
        order_price_arr <- map["order_price_arr"]

    }
}


class orderDetailItemAddrInfoArrDataModel: Mappable { //订单地址信息
    var name : String?//地址名称 示例:卓悦汇购物中心
    var addr : String?//地址详情 示例:深圳市-福田区-中康路126号
    var city_id : Int?//地址所属城市ID
    var district_name : String?//地址所属区(县) 示例:福田区
    var house_number : String?// 楼层及门牌号 示例:4楼403
    var contact_name : String?//地址联系人 示例:roly
    var contact_phone_no : String?//地址联系人手机 示例:18825162021
    var lat_lon_item : citySearchDataPoiLocationModel?//经纬度(wgs84坐标系)

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        name <- map["name"]
        addr <- map["addr"]
        city_id <- map["city_id"]
        district_name <- map["district_name"]
        house_number <- map["house_number"]
        contact_name <- map["contact_name"]
        contact_phone_no <- map["contact_phone_no"]
        lat_lon_item <- map["lat_lon_item"]

    }
}

class poiDataModel: Mappable {
    var district: String?
    var location: String?
    var city_id: Int?
    var city: String?
    var address:String?
    var wgs84_location: String?
    var name: String?
    
    required init?(map: Map) {
        
    }
    
    // Mappable
    func mapping(map: Map) {
        name    <- map["name"]
        district     <- map["district"]
        wgs84_location   <- map["wgs84_location"]
        address  <- map["address"]
        city     <- map["city"]
        district   <- map["district"]
        location  <- map["location"]
    }
}


class orderDetailItemOrderPriceArrDataModel: Mappable { //订单计价明细数组
    
    var type : Int?//
//    计价类型 1-起步价,2-超里程价,3-拉拉券扣减,4-额外需求产生的费用,5-小费,6-规格,7-平台订单补贴,8-司机添加的额外费用,15-货物保险费用,21-高速费,22-停车费,23-搬运费,24-其他,25-逾时等候费
    var price_fen : Float?//费用金额(分) 示例:0
    var pay_status : Int?//支付状态 1已支付, 0未支付

    required init?( map: Map) {
        
    }
    func mapping(map: Map) {
        type <- map["type"]
        price_fen <- map["price_fen"]
        pay_status <- map["pay_status"]
    }
}