package com.yc.ship.module.trade.enums;


import com.yc.ship.framework.common.exception.ErrorCode;

public interface ErrorCodeConstants {

    // ========== 电子发票相关 ==========
    ErrorCode INVOICE_NOT_EXISTS = new ErrorCode(30_030_01, "电子发票不存在");
    ErrorCode INVOICE_LOG_NOT_EXISTS = new ErrorCode(30_030_02, "发票记录不存在");
    ErrorCode INVOICING_FAIL = new ErrorCode(30_030_03, "开票失败");
    ErrorCode INVOICING_NOTFIND = new ErrorCode(30_030_04, "开票单位不能为空");
    ErrorCode INVOICING_ORDER_NOT_EXISTS = new ErrorCode(30_030_04, "订单不存在");
    ErrorCode ORDER_INVOICED = new ErrorCode(30_030_05, "订单已开票");
    ErrorCode ORDER_PAY_TENAND_FAIL = new ErrorCode(30_030_06, "支付失败,租户信息获取失败");
    ErrorCode INVOICING_FAIL_OTA = new ErrorCode(30_030_07, "开票失败,开票单位不能为空");



    // ========== 合同相关 ==========
    ErrorCode CONTRACT_NOT_EXISTS = new ErrorCode(15_003, "合同不存在");
    ErrorCode CONTRACT_APPLY_FAILED = new ErrorCode(15_003_01, "合同创建失败");
    ErrorCode CONTRACT_NOT_SIGNED = new ErrorCode(15_003_02, "该合同状态不是已签订");
    ErrorCode CONTRACT_BEING_INVALIDATED = new ErrorCode(15_003_03, "该合同正在作废中");
    ErrorCode CONTRACT_HAS_BEEN_INVALIDATED = new ErrorCode(15_003_04, "该合同已作废");
    ErrorCode NOTICE_PARAMETER_IS_EMPTY = new ErrorCode(15_003_05, "回调参数为空");
    ErrorCode ORDER_VALID_CONTRACT = new ErrorCode(15_003_06, "该订单已存在一个有效合同");
    ErrorCode CONTRACT_NOT_SIGNING = new ErrorCode(15_003_07, "该合同状态不是签订中");
    ErrorCode ORDER_NOT_EFFECT_CONTRACT = new ErrorCode(15_003_08, "该订单无有效合同");
    ErrorCode REPEAT_APPLY = new ErrorCode(15_003_09, "重复申请合同");


    // ========== 保险相关 ==========
    ErrorCode OPERATE_PASSWORD_NOT_EXISTS = new ErrorCode(15_001, "用户操作密码不存在");
    ErrorCode OPERATE_PASSWORD_FAILED = new ErrorCode(15_001_1, "操作密码校验失败");
    ErrorCode PASSWORD_DECRYPT_FAILED = new ErrorCode(15_001_2, "操作密码解密失败");
    ErrorCode INSURANCE_NOT_EXISTS = new ErrorCode(15_002, "订单保险信息不存在");
    ErrorCode ORDER_NOT_EXISTS = new ErrorCode(15_002, "保险订单不存在");
    ErrorCode INSURE_FAILED = new ErrorCode(15_002_01, "保险投保失败");
    ErrorCode INSURE_CANCEL_FAILED = new ErrorCode(15_002_02, "保险退保失败");
    ErrorCode INSURANCE_NO_INSURED = new ErrorCode(15_002_03, "该订单没有被保人信息");

// ========== 短信发送配置  ==========
    ErrorCode SMS_SENDCONFIG_NOT_EXISTS = new ErrorCode(17_001_01, "短信发送配置不存在");

    ErrorCode SMS_PRODUCT_NOT_EXISTS = new ErrorCode(17_001_02, "短信发送配置关联不存在");

    ErrorCode SMS_SEND_LOG_NOT_EXISTS = new ErrorCode(17_001_03, "短信发送配置不存在");

    // ========== PDA ==========
    ErrorCode IDCARD_VOUCHER_CANNOT_TOGETHER_NULL = new ErrorCode(30_050, "身份证或者票号不能同时为空！");
    ErrorCode ORDER_CANNOT_TOGETHER_NULL = new ErrorCode(30_050, "手机号或订单号或证件号不能同时为空！");
    ErrorCode INVALID_DEVICE = new ErrorCode(30_051, "无效设备");
    ErrorCode NOT_DISPATCH_CHECK = new ErrorCode(30_052, "门票与航次/班次不匹配");
    ErrorCode DISPATCH_NOT_EXIST = new ErrorCode(30_052, "航次/班次不存在");
    ErrorCode OVER_MAX_CAPACITY_ERROR = new ErrorCode(30_053, "检票失败，超过最大承载量");
    ErrorCode INVALID_TYPE_DEVICE = new ErrorCode(30_054, "闸机不允许二维码检票");

    // ========== 扎帐 ==========
    ErrorCode ACCOUNT_NOT_FAIL = new ErrorCode(30_201, "扎帐失败");
    //========== 账单 ==========
    ErrorCode BULL_NOT_FAIL = new ErrorCode(40_101, "账单生成失败");
    //========== 营销政策 ==========
    ErrorCode MARKETING_NOT_FAIL = new ErrorCode(50_101, "政策审核失败");
    ErrorCode NOT_MARKETING = new ErrorCode(50_102, "未查询到可申请的营销政策");
    ErrorCode NOT_MARKETING_USE = new ErrorCode(50_103, "未查询到可申请使用的营销政策");
    ErrorCode ORDER_APPLIED_MARKETING = new ErrorCode(50_104, "订单已申请营销政策");
    ErrorCode ORDER_APPLIED_MARKETING_USED = new ErrorCode(50_105, "订单已申请使用营销政策");
    ErrorCode ORDER_NOT_MATCH_STORE = new ErrorCode(50_106, "订单与门店不匹配");
    ErrorCode APPLY_MARKETING_NOT_FAIL = new ErrorCode(50_107, "申请政策失败");

    /** ========== 参数配置 交易模块（30） ========== **/
    ErrorCode UNKNOWN_EXCEPTION = new ErrorCode(30_000, "未知异常");
    ErrorCode ORDER_SAVE_EXCEPTION = new ErrorCode(30_001, "订单保存异常");
    ErrorCode SUPPLIER_ORDER_CREATE_FAIL = new ErrorCode(30_002, "供应商订单下单失败");
    ErrorCode ORDER_CREATE_FAIL = new ErrorCode(30_003, "下单失败");
    ErrorCode ORDER_MODIFY_FAIL = new ErrorCode(30_003, "订单修改失败");
    ErrorCode ORDER_OTC_FAIL = new ErrorCode(30_003, "当前登录用户不是旅行社");
    ErrorCode ORDER_STORE_FAIL = new ErrorCode(30_003, "当前登录用户不是门店");
    ErrorCode ORDER_OTC_NONE = new ErrorCode(30_003, "该旅行社不存在");
    ErrorCode ORDER_STORE_NONE = new ErrorCode(30_003, "该门店不存在");
    ErrorCode SUPPLIER_SERVICE_ORDER_CREATE_FAIL = new ErrorCode(30_004, "调用供应商服务下单失败");
    ErrorCode SUPPLIER_PLAT_ORDER_CREATE_FAIL = new ErrorCode(30_005, "平台供应商服务下单失败");
    ErrorCode SUPPLIER_ZSHL_ORDER_CREATE_FAIL = new ErrorCode(30_101, "川大票务系统供应商服务下单失败");
    ErrorCode SUPPLIER_ZWY_ORDER_CREATE_FAIL = new ErrorCode(30_101, "自我游系统供应商服务下单失败");
    ErrorCode SUPPLIER_ETERNAL_ORDER_CREATE_FAIL = new ErrorCode(30_102, "三峡千古情供应商服务下单失败");
    ErrorCode SUPPLIER_CRUISE_ORDER_CREATE_FAIL = new ErrorCode(30_103, "船舶物资系统供应商服务下单失败");
    ErrorCode SUPPLIER_ZSHL_REFUND_FAIL = new ErrorCode(30_201, "川大票务系统供应商服务退单失败");
    ErrorCode SUPPLIER_ZWY_REFUND_FAIL = new ErrorCode(30_201, "自我游系统供应商服务退单失败");
    ErrorCode SUPPLIER_ETERNAL_REFUND_FAIL = new ErrorCode(30_202, "三峡千古情供应商服务退单失败");
    ErrorCode SUPPLIER_CRUISE_REFUND_FAIL = new ErrorCode(30_203, "船舶物资系统供应商服务退单失败");
    ErrorCode OTA_INNER_ORDER_CREATE_FAIL = new ErrorCode(30_006, "内部分销下单失败");
    ErrorCode SUPPLIER_SERVICE_ORDER_PAY_FAIL = new ErrorCode(30_007, "调用供应商服务支付失败");
    ErrorCode SUPPLIER_ZWY_ORDER_PAY_FAIL = new ErrorCode(30_007, "调用自我游供应商服务支付失败");
    ErrorCode SUPPLIER_PLAT_ORDER_PAY_FAIL = new ErrorCode(30_008, "平台供应商服务下单支付失败");
    ErrorCode SUPPLIER_ZSHL_ORDER_PAY_FAIL = new ErrorCode(30_308, "川大票务系统供应商服务下单支付失败");
    ErrorCode SUPPLIER_ETERNAL_ORDER_PAY_FAIL = new ErrorCode(30_308, "三峡千古情供应商服务下单支付失败");
    ErrorCode SUPPLIER_CRUISE_ORDER_PAY_FAIL = new ErrorCode(30_308, "船舶物资系统供应商服务下单支付失败");
    ErrorCode SUPPLIER_SERVICE_ORDER_VOUCHER = new ErrorCode(30_009, "返回券码数量与下单数量不一致");
    ErrorCode ORDER_PAY_FAIL = new ErrorCode(30_010, "支付失败");
    ErrorCode PAY_PLAT_UNKNOWN_EXCEPTION = new ErrorCode(30_011, "支付平台调用异常");
    ErrorCode PAY_PLAT_EXCEPTION = new ErrorCode(30_011, "支付平台调用异常:{}");
    ErrorCode REFUND_SAVE_EXCEPTION = new ErrorCode(30_012, "退单保存异常");
    ErrorCode REFUND_AUDITING = new ErrorCode(30_013, "退款审核中");
    ErrorCode SUPPLIER_SERVICE_REFUND_FAIL = new ErrorCode(30_014, "调用供应商服务退款失败");
    ErrorCode SUPPLIER_SERVICE_REFUND_CONFIRM = new ErrorCode(30_015, "供应商退款需人工确认，不能退款");
    ErrorCode OTA_INNER_REFUND_FAIL = new ErrorCode(30_016, "内部分销退款失败");
    ErrorCode SUPPLIER_PLAT_REFUND_FAIL = new ErrorCode(30_017, "平台供应商服务退款失败");
    ErrorCode REFUND_TYPE_ERROR = new ErrorCode(30_018, "退款类型不支持");
    ErrorCode REFUND_UNKNOWN_FAIL = new ErrorCode(30_019, "退款未知失败");
    ErrorCode REFUND_FAIL_FROM_SYSTEM = new ErrorCode(30_020, "根据支付类型退款失败");
    ErrorCode GET_LOCK_EXCEPTION = new ErrorCode(30_021, "获取锁异常");
    ErrorCode SUPPLIER_REFUND_RETRY_EXCEPTION = new ErrorCode(30_022, "供应商退款重试异常");
    ErrorCode SUPPLIER_PAY_RETRY_EXCEPTION = new ErrorCode(30_023, "供应商出票重试异常");
    ErrorCode PAY_TYPE_NOT_SUPPORT_ZERO = new ErrorCode(30_024, "当前支付方式不支持0元支付");
    ErrorCode SUPPLIER_REFUND_AUDIT_REFUSE = new ErrorCode(30_025, "供应商退款审核拒绝退款");
    ErrorCode SUPPLIER_HANDLE_REFUND_AUDIT_EXCEPTION = new ErrorCode(30_026, "处理供应商退款审核通知异常");
    ErrorCode ORDER_PRODUCT_BASE_EXCEPTION = new ErrorCode(30_027, "下单产品基础产品已变更，请重新选择再下单{}");
    ErrorCode SUPPLIER_NOT_SUPPORT_BIND_VISITOR = new ErrorCode(30_028, "供应商不支持补录");
    ErrorCode SUPPLIER_BIND_VISITOR_FAIL = new ErrorCode(30_029, "供应商补录失败");
    ErrorCode ORDER_BIND_VISITOR_FAIL = new ErrorCode(30_030, "无补录成功记录");
    ErrorCode ORDER_CHANGE_PROCESS_FAIL = new ErrorCode(30_031, "改签出票失败");
    ErrorCode ORDER_CHANGE_REFUND_FAIL = new ErrorCode(30_032, "改签退款失败，无法改签");
    ErrorCode ORDER_CONTRACT_PRODUCT_NO_CONFIG = new ErrorCode(30_033, "当前产品未配置合同信息");
    ErrorCode ORDER_CONTRACT_NO_PEOPLE = new ErrorCode(30_034, "当前订单无出行人信息，不能签订合同");
    ErrorCode ORDER_PRODUCT_PLAT_BASE_EXCEPTION = new ErrorCode(30_035, "产品包含的平台分销产品已发生变更，无法下单{}");
    ErrorCode ORDER_DECRYPTION_EXCEPTION = new ErrorCode(30_036, "请求体解密异常");
    ErrorCode ORDER_PRODUCT_SKU_EXCEPTION = new ErrorCode(30_037, "当前规格未设置SKU信息{},{}");
    ErrorCode VOUCHER_CODE_CREDENTIAL_NO_NOT_MATCH = new ErrorCode(30_038, "供应商返回的券码{}，返回的对应证件号{}，与平台下单信息不匹配，实名制产品需要证件号与券码对应");
    ErrorCode ORDER_VISITOR_REPEAT_BUY_PRODUCT = new ErrorCode(30_039, "{}不能重复购买产品{}");
    ErrorCode ORDER_VISITOR_REPEAT_BUY_PRODUCT_BASE = new ErrorCode(30_040, "{}不能重复购买基础产品{}");
    ErrorCode SUPPLIER_SYSTEM_ORDER_CREATE_FAIL = new ErrorCode(30_041, "{}下单失败，{}");
    ErrorCode SUPPLIER_SYSTEM_ORDER_PAY_FAIL = new ErrorCode(30_042, "{}支付失败，{}");
    ErrorCode SUPPLIER_SYSTEM_ORDER_REFUND_FAIL = new ErrorCode(30_043, "{}退款失败，{}");
    ErrorCode ORDER_TRANSFER_FAIL = new ErrorCode(30_044, "订单转交失败");
    ErrorCode OTA_INNER_CANCEL_FAIL = new ErrorCode(30_045, "内部分销取消失败");
    ErrorCode ORDER_PAY_AUTO_REFUND = new ErrorCode(30_046, "当前订单已不能支付，系统将自动退款");
    ErrorCode ORDER_PAY_AUTO_REFUND_FAIL = new ErrorCode(30_047, "自动退款失败");
    ErrorCode OTC_CREATE_MOVE_ORDER_FAIL = new ErrorCode(30_048, "旅行社搬单下单失败");
    ErrorCode CONFIRM_ORDER_REFUND_FAIL = new ErrorCode(30_049, "二次确认订单退款失败");
    ErrorCode REFUND_RECORD_BUILD_FAIL = new ErrorCode(30_500, "退款单生成失败");
    ErrorCode GUIDE_REFUND_PRODUCT_BASE_NOT_EXISTS = new ErrorCode(30_501, "基础产品{}，没有对应规格");
    ErrorCode INORDER_VISITOR_REPEAT_BUY_PRODUCT = new ErrorCode(30_502, "当前订单证件号重复");

    // ========== 外部分销 ==========
    ErrorCode OTA_REQUEST_FAIL = new ErrorCode(30_040, "分销请求失败");
    ErrorCode OTA_REQUEST_TIMEOUT = new ErrorCode(30_041, "分销请求超时");

    // ========== 核销 ==========
    ErrorCode ORDER_NOT_EXIST = new ErrorCode(30_100, "订单不存在");
    ErrorCode ORDER_ISINVOICE = new ErrorCode(30_100, "订单已开票不能修改");
    ErrorCode ORDER_ISBILL = new ErrorCode(30_100, "订单已生成账单不能修改");
    ErrorCode ORDER_NOT_VOYAGE_CHANGE = new ErrorCode(30_101, "航次不能修改");
    ErrorCode ORDER_NOT_VOYAGE = new ErrorCode(30_101, "航次不能为空");
    ErrorCode USE_DATE_RANGE_ERROR = new ErrorCode(30_102, "使用日期范围不正确");
    ErrorCode TRAVEL_DATE_ERROR = new ErrorCode(30_103, "游玩日期不正确");
    ErrorCode TRADE_DETAIL_NOT_EXIST = new ErrorCode(30_104, "票码不存在");
    ErrorCode VOUCHER_STATUS_ERROR = new ErrorCode(30_105, "凭证码状态不正确");
    ErrorCode BEFORE_TOOK_STATUS_ERROR = new ErrorCode(30_105, "取票后可用");
    ErrorCode MACHINE_ID_NOT_EXIST = new ErrorCode(30_106, "设备id不能为空");
    ErrorCode OPERATOR_NOT_EXIST = new ErrorCode(30_107, "操作人信息不存在");
    ErrorCode CHECK_PRODUCT_LOCK_ERROR = new ErrorCode(30_108, "未获取到锁，核销(产品)门票失败");
    ErrorCode CHECK_DETAIL_NOT_EXIST = new ErrorCode(30_109, "子票不存在");
    ErrorCode CHECK_CODE_TYPE_ERROR = new ErrorCode(30_110, "核销内容类型错误");
    ErrorCode NO_SUB_TICKET_CHECK_SUCCESS = new ErrorCode(30_111,"无一张子票符合核销条件");
    ErrorCode TRADE_DETAIL_BASE_STATUS_ERROR = new ErrorCode(30_112, "子票状态错误");
    ErrorCode CHECK_MACHINE_NOT_EXIST = new ErrorCode(30_113, "检票设备不存在");
    ErrorCode TENANT_ID_NOT_EXIST = new ErrorCode(30_114, "租户id不能为空");
    ErrorCode NO_SUB_TICKET_ERROR = new ErrorCode(30_115, "未查询到符合(检票通道)的子票");
    ErrorCode PRODUCT_BASE_ID_NOT_EXIST = new ErrorCode(30_116, "基础产品id不存在");
    ErrorCode DISPATCH_ID_NOT_EXIST = new ErrorCode(30_117, "航次/班次不存在");
    ErrorCode POINT_NO_MATCHED = new ErrorCode(30_118, "检票点位与基础产品不匹配");
    ErrorCode CHANNEL_ERROR = new ErrorCode(30_119, "通道错误");
    ErrorCode TRADE_DETAIL_BASE_COUNT_ERROR = new ErrorCode(30_120, "子票次数已用完");
    ErrorCode OVER_MAX_NUM_ERROR = new ErrorCode(30_121, "检票失败，超过最大承载量");
    ErrorCode YD_CHECK_ERROR = new ErrorCode(30_122, "检票失败，优待票请走人工通道");
    ErrorCode CHECK_PARAM_LOCK_ERROR = new ErrorCode(30_123, "未获取到核销参数锁，核销失败");

    // ========== 订单分车相关 ==========
    ErrorCode ORDER_JZ_DISPATCH_NOT_EXISTS = new ErrorCode(30_124, "订单分车记录不存在");

}