-- 物流费用计算系统数据库表结构
-- 创建数据库: logistics

-- ============================================
-- 物流公司配置表
-- ============================================
CREATE TABLE IF NOT EXISTS logistics_company (
    id INT AUTO_INCREMENT PRIMARY KEY,
    company_code VARCHAR(50) NOT NULL COMMENT '公司代码',
    company_name VARCHAR(100) NOT NULL COMMENT '公司名称',
    country VARCHAR(10) NOT NULL COMMENT '国家代码: US, UK, AU, DE等',
    logistics_type VARCHAR(20) NOT NULL COMMENT '物流类型: EXPRESS, COURIER, OCEAN, AIR',
    port VARCHAR(20) DEFAULT 'DEFAULT' COMMENT '港口: DEFAULT, WEST, EAST等',
    currency VARCHAR(10) DEFAULT 'USD' COMMENT '货币',
    active TINYINT DEFAULT 1 COMMENT '是否启用: 0-禁用, 1-启用',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    UNIQUE KEY uk_company_code (company_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物流公司配置表';

-- ============================================
-- 英国物流价格表
-- ============================================

-- 英国卡派-分区表
CREATE TABLE IF NOT EXISTS uk_postcode_zone (
    id INT AUTO_INCREMENT PRIMARY KEY,
    postcode_prefix VARCHAR(10) NOT NULL COMMENT '邮编前缀',
    zone VARCHAR(10) NOT NULL COMMENT '分区',
    is_remote TINYINT DEFAULT 0 COMMENT '是否偏远: 0-否, 1-是',
    UNIQUE KEY uk_postcode (postcode_prefix)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='英国邮编分区表';

-- 英国卡派-运费表
CREATE TABLE IF NOT EXISTS uk_kp_nv_price (
    id INT AUTO_INCREMENT PRIMARY KEY,
    zone VARCHAR(10) NOT NULL COMMENT '分区',
    tuopan INT NOT NULL COMMENT '托盘数',
    fee DECIMAL(10,2) NOT NULL COMMENT '运费',
    INDEX idx_zone (zone)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='英国卡派NV运费表';

-- ============================================
-- 美国物流价格表
-- ============================================

-- 美国邮编分区表
CREATE TABLE IF NOT EXISTS us_postcode_zone (
    id INT AUTO_INCREMENT PRIMARY KEY,
    postcode VARCHAR(5) NOT NULL COMMENT '邮编(5位)',
    port VARCHAR(20) DEFAULT 'west' COMMENT '港口: west, east',
    zone VARCHAR(10) COMMENT '分区',
    remote_type INT DEFAULT 0 COMMENT '偏远类型: 0-非偏远, 1-偏远, 2-超偏远, 3-超超偏远',
    INDEX idx_postcode (postcode)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='美国邮编分区表';

-- 美国快递-邮差小马 价格表
CREATE TABLE IF NOT EXISTS us_fedex_pp_price (
    id INT AUTO_INCREMENT PRIMARY KEY,
    lbs INT NOT NULL COMMENT '重量(磅)',
    zone_2 DECIMAL(10,2) COMMENT '2区价格',
    zone_3 DECIMAL(10,2) COMMENT '3区价格',
    zone_4 DECIMAL(10,2) COMMENT '4区价格',
    zone_5 DECIMAL(10,2) COMMENT '5区价格',
    zone_6 DECIMAL(10,2) COMMENT '6区价格',
    zone_7 DECIMAL(10,2) COMMENT '7区价格',
    zone_8 DECIMAL(10,2) COMMENT '8区价格',
    INDEX idx_lbs (lbs)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='美国Fedex邮差小马价格表';

-- 美国快递-金宏亚 价格表
CREATE TABLE IF NOT EXISTS us_fedex_kh_price (
    id INT AUTO_INCREMENT PRIMARY KEY,
    lbs INT NOT NULL COMMENT '重量(磅)',
    zone_2 DECIMAL(10,2) COMMENT '2区价格',
    zone_3 DECIMAL(10,2) COMMENT '3区价格',
    zone_4 DECIMAL(10,2) COMMENT '4区价格',
    zone_5 DECIMAL(10,2) COMMENT '5区价格',
    zone_6 DECIMAL(10,2) COMMENT '6区价格',
    zone_7 DECIMAL(10,2) COMMENT '7区价格',
    zone_8 DECIMAL(10,2) COMMENT '8区价格',
    INDEX idx_lbs (lbs)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='美国Fedex金宏亚价格表';

-- 美国快递-FEDEX 价格表
CREATE TABLE IF NOT EXISTS us_fedex_price (
    id INT AUTO_INCREMENT PRIMARY KEY,
    lbs INT NOT NULL COMMENT '重量(磅)',
    zone_2 DECIMAL(10,2) COMMENT '2区价格',
    zone_3 DECIMAL(10,2) COMMENT '3区价格',
    zone_4 DECIMAL(10,2) COMMENT '4区价格',
    zone_5 DECIMAL(10,2) COMMENT '5区价格',
    zone_6 DECIMAL(10,2) COMMENT '6区价格',
    zone_7 DECIMAL(10,2) COMMENT '7区价格',
    zone_8 DECIMAL(10,2) COMMENT '8区价格',
    INDEX idx_lbs (lbs)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='美国FEDEX价格表';

-- 美国卡派-GIGA 价格表
CREATE TABLE IF NOT EXISTS us_giga_price (
    id INT AUTO_INCREMENT PRIMARY KEY,
    zip_code VARCHAR(5) NOT NULL COMMENT '邮编',
    delivery_warehouse VARCHAR(50) COMMENT '仓库',
    general_area VARCHAR(50) COMMENT '地区',
    fee_type VARCHAR(20) COMMENT '费用类型',
    zone VARCHAR(10) COMMENT '分区',
    local_pickup_fee DECIMAL(10,2) COMMENT '本地取货费',
    warehouse_handling_fee DECIMAL(10,2) COMMENT '仓库操作费',
    delivery_fee_rate DECIMAL(10,2) COMMENT '配送费率',
    additional_delivery_fee DECIMAL(10,2) COMMENT '额外配送费',
    assembly_fee DECIMAL(10,2) COMMENT '装配费',
    INDEX idx_zip (zip_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='美国GIGA价格表';

-- 美国卡派-CEVA 价格表
CREATE TABLE IF NOT EXISTS us_ceva_price (
    id INT AUTO_INCREMENT PRIMARY KEY,
    ceva_weight INT NOT NULL COMMENT 'CEVA重量',
    zone_ca DECIMAL(10,2) COMMENT 'CA区价格',
    zone_wa DECIMAL(10,2) COMMENT 'WA区价格',
    zone_or DECIMAL(10,2) COMMENT 'OR区价格',
    zone_nv DECIMAL(10,2) COMMENT 'NV区价格',
    zone_az DECIMAL(10,2) COMMENT 'AZ区价格',
    zone_co DECIMAL(10,2) COMMENT 'CO区价格',
    zone_ut DECIMAL(10,2) COMMENT 'UT区价格',
    zone_nm DECIMAL(10,2) COMMENT 'NM区价格',
    remote_area_surcharge DECIMAL(10,2) COMMENT '偏远地区附加费',
    INDEX idx_weight (ceva_weight)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='美国CEVA价格表';

-- 美国卡派-CEVA 邮编分区表
CREATE TABLE IF NOT EXISTS us_ceva_zone (
    id INT AUTO_INCREMENT PRIMARY KEY,
    postal_code VARCHAR(5) NOT NULL COMMENT '邮编',
    state VARCHAR(20) COMMENT '州',
    beyond_zone VARCHAR(10) COMMENT '超出分区',
    remote_type VARCHAR(20) DEFAULT 'standard' COMMENT '偏远类型: standard, remote',
    INDEX idx_postal (postal_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='美国CEVA邮编分区表';

-- 美国卡派-CEVA 分区表
CREATE TABLE IF NOT EXISTS us_ceva_zone_grade (
    id INT AUTO_INCREMENT PRIMARY KEY,
    to_state VARCHAR(20) NOT NULL COMMENT '目的地州',
    ca DECIMAL(10,2) COMMENT 'CA分区',
    wa DECIMAL(10,2) COMMENT 'WA分区',
    INDEX idx_state (to_state)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='美国CEVA分区等级表';

-- 美国卡派-Metro 价格表
CREATE TABLE IF NOT EXISTS us_metro_price (
    id INT AUTO_INCREMENT PRIMARY KEY,
    origins VARCHAR(20) NOT NULL COMMENT '出发地',
    zone_1l DECIMAL(10,2) COMMENT 'Zone 1L价格',
    zone_2l DECIMAL(10,2) COMMENT 'Zone 2L价格',
    zone_3l DECIMAL(10,2) COMMENT 'Zone 3L价格',
    zone_4l DECIMAL(10,2) COMMENT 'Zone 4L价格',
    zone_5l DECIMAL(10,2) COMMENT 'Zone 5L价格',
    zone_6l DECIMAL(10,2) COMMENT 'Zone 6L价格',
    zone_7l DECIMAL(10,2) COMMENT 'Zone 7L价格',
    zone_8l DECIMAL(10,2) COMMENT 'Zone 8L价格',
    zone_9l DECIMAL(10,2) COMMENT 'Zone 9L价格',
    INDEX idx_origins (origins)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='美国Metro价格表';

-- 美国卡派-Metro 邮编分区表
CREATE TABLE IF NOT EXISTS us_metro_zone (
    id INT AUTO_INCREMENT PRIMARY KEY,
    zip_code VARCHAR(5) NOT NULL COMMENT '邮编',
    new_zone_name VARCHAR(20) COMMENT '新分区名',
    INDEX idx_zip (zip_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='美国Metro邮编分区表';

-- 美国卡派-Metro 偏远表
CREATE TABLE IF NOT EXISTS us_metro_remote (
    id INT AUTO_INCREMENT PRIMARY KEY,
    zip_code VARCHAR(5) NOT NULL COMMENT '邮编',
    area_type VARCHAR(50) COMMENT '区域类型',
    INDEX idx_zip (zip_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='美国Metro偏远表';

-- 美国卡派-XMILES 邮编表
CREATE TABLE IF NOT EXISTS us_xmiles_zone (
    id INT AUTO_INCREMENT PRIMARY KEY,
    postcode VARCHAR(5) NOT NULL COMMENT '邮编',
    area VARCHAR(20) COMMENT '地区',
    INDEX idx_postcode (postcode)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='美国XMILES邮编分区表';

-- 美国卡派-AM 价格表
CREATE TABLE IF NOT EXISTS us_am_price (
    id INT AUTO_INCREMENT PRIMARY KEY,
    pu_zone VARCHAR(5) NOT NULL COMMENT 'PU区',
    dl_zone VARCHAR(5) NOT NULL COMMENT 'DL区',
    zone_combo VARCHAR(10) NOT NULL COMMENT '分区组合',
    minimum_weight DECIMAL(10,2) NOT NULL COMMENT '最小重量',
    maximum_weight DECIMAL(10,2) NOT NULL COMMENT '最大重量',
    fee_without_sc DECIMAL(10,2) COMMENT '无附加费价格',
    shipping_cost DECIMAL(10,2) COMMENT '运费',
    surcharge DECIMAL(10,2) DEFAULT 0 COMMENT '附加费',
    INDEX idx_zone_combo (zone_combo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='美国AM卡派价格表';

-- 美国卡派-AM 邮编表
CREATE TABLE IF NOT EXISTS us_am_postcode (
    id INT AUTO_INCREMENT PRIMARY KEY,
    zip_code VARCHAR(5) NOT NULL COMMENT '邮编',
    zone VARCHAR(5) NOT NULL COMMENT '分区',
    INDEX idx_zip (zip_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='美国AM卡派邮编表';

-- ============================================
-- 澳洲物流价格表
-- ============================================

-- 澳洲eparcel价格表
CREATE TABLE IF NOT EXISTS au_eparcel_price (
    id INT AUTO_INCREMENT PRIMARY KEY,
    post VARCHAR(20) NOT NULL COMMENT '邮寄方式',
    weight_0_5 DECIMAL(10,2) COMMENT '0.5kg价格',
    weight_1 DECIMAL(10,2) COMMENT '1kg价格',
    weight_2 DECIMAL(10,2) COMMENT '2kg价格',
    weight_3 DECIMAL(10,2) COMMENT '3kg价格',
    weight_4 DECIMAL(10,2) COMMENT '4kg价格',
    weight_5 DECIMAL(10,2) COMMENT '5kg价格',
    weight_7 DECIMAL(10,2) COMMENT '7kg价格',
    weight_10 DECIMAL(10,2) COMMENT '10kg价格',
    weight_15 DECIMAL(10,2) COMMENT '15kg价格',
    INDEX idx_post (post)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='澳洲eparcel价格表';

-- 澳洲eparcel邮编表
CREATE TABLE IF NOT EXISTS au_eparcel_zone (
    id INT AUTO_INCREMENT PRIMARY KEY,
    postcode VARCHAR(10) NOT NULL COMMENT '邮编',
    zone VARCHAR(10) COMMENT '分区',
    INDEX idx_postcode (postcode)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='澳洲eparcel邮编表';

-- 澳洲toll价格表
CREATE TABLE IF NOT EXISTS au_toll_price (
    id INT AUTO_INCREMENT PRIMARY KEY,
    post VARCHAR(20) NOT NULL COMMENT '邮寄方式',
    zone_1 DECIMAL(10,2) COMMENT '1区价格',
    zone_2 DECIMAL(10,2) COMMENT '2区价格',
    zone_3 DECIMAL(10,2) COMMENT '3区价格',
    zone_4 DECIMAL(10,2) COMMENT '4区价格',
    INDEX idx_post (post)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='澳洲toll价格表';

-- 澳洲toll邮编表
CREATE TABLE IF NOT EXISTS au_toll_zone (
    id INT AUTO_INCREMENT PRIMARY KEY,
    postcode VARCHAR(10) NOT NULL COMMENT '邮编',
    zone VARCHAR(10) COMMENT '分区',
    INDEX idx_postcode (postcode)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='澳洲toll邮编表';

-- 澳洲toll偏远表
CREATE TABLE IF NOT EXISTS au_toll_remote (
    id INT AUTO_INCREMENT PRIMARY KEY,
    postcode VARCHAR(10) NOT NULL COMMENT '邮编',
    remote_type VARCHAR(20) COMMENT '偏远类型',
    INDEX idx_postcode (postcode)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='澳洲toll偏远表';

-- 澳洲allied价格表
CREATE TABLE IF NOT EXISTS au_allied_price (
    id INT AUTO_INCREMENT PRIMARY KEY,
    post VARCHAR(20) NOT NULL COMMENT '邮寄方式',
    zone_1 DECIMAL(10,2) COMMENT '1区价格',
    zone_2 DECIMAL(10,2) COMMENT '2区价格',
    zone_3 DECIMAL(10,2) COMMENT '3区价格',
    zone_4 DECIMAL(10,2) COMMENT '4区价格',
    INDEX idx_post (post)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='澳洲allied价格表';

-- 澳洲allied邮编表
CREATE TABLE IF NOT EXISTS au_allied_zone (
    id INT AUTO_INCREMENT PRIMARY KEY,
    postcode VARCHAR(10) NOT NULL COMMENT '邮编',
    zone VARCHAR(10) COMMENT '分区',
    remote_zone VARCHAR(10) COMMENT '偏远分区',
    INDEX idx_postcode (postcode)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='澳洲allied邮编表';

-- 澳洲allied偏远表
CREATE TABLE IF NOT EXISTS au_allied_remote (
    id INT AUTO_INCREMENT PRIMARY KEY,
    postcode VARCHAR(10) NOT NULL COMMENT '邮编',
    remote_type VARCHAR(20) COMMENT '偏远类型',
    INDEX idx_postcode (postcode)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='澳洲allied偏远表';

-- ============================================
-- 欧洲物流价格表
-- ============================================

-- 欧洲卡派-DHL价格表
CREATE TABLE IF NOT EXISTS eur_dhl_price (
    id INT AUTO_INCREMENT PRIMARY KEY,
    price_type VARCHAR(20) NOT NULL COMMENT '价格类型',
    country VARCHAR(50) NOT NULL COMMENT '国家',
    postalcode VARCHAR(10) COMMENT '邮编',
    ip_1 DECIMAL(10,2) COMMENT '1IP价格',
    ip_2 DECIMAL(10,2) COMMENT '2IP价格',
    ip_3 DECIMAL(10,2) COMMENT '3IP价格',
    ip_4 DECIMAL(10,2) COMMENT '4IP价格',
    ip_5 DECIMAL(10,2) COMMENT '5IP价格',
    ip_6 DECIMAL(10,2) COMMENT '6IP价格',
    INDEX idx_country (country)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='欧洲DHL卡派价格表';

-- ============================================
-- 物流公司配置数据
-- ============================================
INSERT INTO logistics_company (company_code, company_name, country, logistics_type, port, currency) VALUES
-- 英国
('UK_DPD', '智谷-DPD', 'UK', 'EXPRESS', 'DEFAULT', 'GBP'),
('UK_BIG', '智谷-大件', 'UK', 'COURIER', 'DEFAULT', 'GBP'),
('UK_KPZG', '海GB-卡派', 'UK', 'COURIER', 'DEFAULT', 'GBP'),
('UK_KPNV', '卡派-NV', 'UK', 'COURIER', 'DEFAULT', 'GBP'),
-- 美国
('US_FEDEX_PP', 'Fedex-邮差小马', 'US', 'EXPRESS', 'WEST', 'USD'),
('US_FEDEX_KH', 'Fedex-金宏亚', 'US', 'EXPRESS', 'WEST', 'USD'),
('US_FEDEX_HOME', 'Fedex-HOME', 'US', 'EXPRESS', 'WEST', 'USD'),
('US_FEDEX_GROUND', 'Fedex-GROUND', 'US', 'EXPRESS', 'WEST', 'USD'),
('US_GIGA', '大健-GIGA', 'US', 'COURIER', 'DEFAULT', 'USD'),
('US_CEVA', '大健-CEVA', 'US', 'COURIER', 'DEFAULT', 'USD'),
('US_METRO', 'Metro-SAIR', 'US', 'COURIER', 'DEFAULT', 'USD'),
('US_XMILES', 'XMILES-SAIR', 'US', 'COURIER', 'DEFAULT', 'USD'),
('US_AM_WEST', 'AM-美西', 'US', 'COURIER', 'WEST', 'USD'),
('US_AM_EAST', 'AM-美东', 'US', 'COURIER', 'EAST', 'USD'),
-- 澳洲
('AU_EPARCEL', 'AU-eparcel', 'AU', 'EXPRESS', 'DEFAULT', 'AUD'),
('AU_TOLL', 'AU-Toll', 'AU', 'COURIER', 'DEFAULT', 'AUD'),
('AU_ALLIED', 'AU-Allied', 'AU', 'COURIER', 'DEFAULT', 'AUD');
