package com.ms.biz.consts;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class AfterSaleConst {

    public static final String TAB_ALL = "all";
    public static final String TAB_WAIT_PROCESS_REFUND = "wait_process_refund";//未发货退款待处理
    public static final String TAB_WAIT_PROCESSED_DELIVERED_AND_ONLY_REFUND = "wait_processed_delivered_and_only_refund";//已发货仅退款待处理
    public static final String TAB_WAIT_PROCESS_RETURN_GOODS = "wait_process_return_goods";//退货待处理
    public static final String TAB_WAIT_SELLER_RECEIVING_GOODS = "wait_seller_receiving_goods";//待商家收货
    public static final String TAB_ARBITRATION = "arbitration";//仲裁中
    public static final String TAB_PRICE_PROTECTION = "priceProtection";//价保
    public static final String TAB_WAIT_SELLER_EXCHANGE_AUDIT = "wait_seller_exchange_audit";//换货待卖家处理
    public static final String TAB_WAIT_SELLER_RESEND_AUDIT = "wait_seller_resend_audit";//补寄待卖家处理
    public static final String TAB_FAST_REFUND = "fast_refund";//极速退款售后单

    public static final Integer AFTERSALE_STATUS_PRE_SALE_ALL_AUDIT = 2;//发货前退款待处理
    public static final Integer AFTERSALE_STATUS_REFUND_AUDIT = 3;//发货后仅退款待处理
    public static final Integer AFTERSALE_STATUS_RETURN_AUDIT = 4;//退货待处理
    public static final Integer AFTERSALE_STATUS_EXCHANGE_AUDIT = 5;//换货待处理
    public static final Integer AFTERSALE_STATUS_AFTER_SALE_AUDIT = 6;//待商家处理
    public static final Integer AFTERSALE_STATUS_WAIT_BUYER_RETURN_GOODS = 7;//待买家退货
    public static final Integer AFTERSALE_STATUS_WAIT_SELLER_SEND_GOODS = 8;//待卖家发货
    public static final Integer AFTERSALE_STATUS_RETURN_RECEIVE = 11;//待商家收货
    public static final Integer AFTERSALE_STATUS_AUDIT_REFUNDING = 10;//同意退款，退款中
    public static final Integer AFTERSALE_STATUS_REFUND_SUCCESS = 12;//商家同意退款：发货前退款，商家同意退款|发货后仅退款，商家同意退款|发货后退货退款，商家确认收货
    public static final Integer AFTERSALE_STATUS_RETURN_SHIP = 13;//（接口和抖店后台）实际已经显示 "换货，待买家收货"
    public static final Integer AFTERSALE_STATUS_WAIT_BUYER_RECEIVE = 14;//（接口和抖店后台）实际已经显示换货成功
    public static final Integer AFTERSALE_STATUS_EXCHANGE_SUCCESS = 15;//换货成功
    public static final Integer AFTERSALE_STATUS_REFUSE = 16;//拒绝售后
    public static final Integer AFTERSALE_STATUS_RECEIVE_REFUSE = 17;//退货后拒绝退款
    public static final Integer AFTERSALE_STATUS_UPLOAD_REFUND = 18;//待商家上传退款凭证
    public static final Integer AFTERSALE_STATUS_WAIT_RESEND = 21;//待商家发货，当卖家同意补寄售后申请后，售后单会流转到这—状态
    public static final Integer AFTERSALE_STATUS_RESEND_SUCCESS = 22;//补寄成功
    public static final Integer AFTERSALE_STATUS_REFUSE_AFTER_SALE_APPLY = 27;//拒绝售后申请
    public static final Integer AFTERSALE_STATUS_CLOSE = 28;//售后关闭
    public static final Integer AFTERSALE_STATUS_SELLER_REFUSE_TO_RETURN_GOODS_AFTER = 29;//退货后商家拒绝
    public static final Integer AFTERSALE_STATUS_SUCCESS = 51;//订单取消成功
    public static final Integer AFTERSALE_STATUS_REVERSE_SUCCESS = 53;//逆向交易已成功

    public static final Integer AFTERSALE_TYPE_RETURN_GOODS_AND_REFUND = 0;//售后退货退款
    public static final Integer AFTERSALE_TYPE_AFTER_SALE_ONLY_REFUND = 1;//售后仅退款
    public static final Integer AFTERSALE_TYPE_REFUND_ONLY_BEFORE_SALE = 2;//售前仅退款
    public static final Integer AFTERSALE_TYPE_EXCHANGE_GOODS = 3;//换货
    public static final Integer AFTERSALE_TYPE_PRICE_PROTECTION = 6;//价保
    public static final Integer AFTERSALE_TYPE_RESEND = 7;//补寄

    public static final String COMMENT_TYPE_NO_RECEIVED = "noReceived";//未收到货
    public static final String COMMENT_TYPE_RECEIVED = "received";//已收到货

    public static final Integer REFUND_STATUS_NO_NEED_REFUND = 0;//无需退款
    public static final Integer REFUND_STATUS_WAIT_REFUND = 1;//待退款
    public static final Integer REFUND_STATUS_REFUNDING = 2;//退款中
    public static final Integer REFUND_STATUS_SUCCESS = 3;//退款成功
    public static final Integer REFUND_STATUS_FAIL = 4;//退款失败

    public static final Integer OPERATE_TYPE_AGREE_RETURN_GOODS_APPLY = 101;//101 同意退货申请（一次审核） Logistics.ReceiverAddressId 或 Logistics.AfterSaleAddressDetail
    public static final Integer OPERATE_TYPE_REFUSE_RETURN_GOODS_APPLY = 102;//拒绝退货申请（一次审核）reason , evidence
    public static final Integer OPERATE_TYPE_AGREE_RETURN_GOODS = 111;//同意退货（二次审核）
    public static final Integer OPERATE_TYPE_REFUSE_RETURN_GOODS = 112;//拒绝退货 (二次审核) reason , evidence
    public static final Integer OPERATE_TYPE_RETURN_GOODS_TO_REFUND = 121;//退货转退款
    public static final Integer OPERATE_TYPE_AGREE_ONLY_REFUND = 201;//同意仅退款
    public static final Integer OPERATE_TYPE_REFUSE_ONLY_REFUND = 202;//拒绝仅退款 reason , evidence
    public static final Integer OPERATE_TYPE_AGREE_EXCHANGE_GOODS_APPLY = 301;//同意换货申请（一次审核)Logistics.ReceiverAddressId 或 Logistics.AfterSaleAddressDetail
    public static final Integer OPERATE_TYPE_REFUSE_EXCHANGE_GOODS_APPLY = 302;//拒绝换货申请（一次审核）reason,evidence
    public static final Integer OPERATE_TYPE_AGREE_EXCHANGE_GOODS = 311;//同意换货（二次审核）logistics.companyCode,logistics.logisticsCode
    public static final Integer OPERATE_TYPE_REFUSE_EXCHANGE_GOODS = 312;//拒绝换货（二次审核）reason,evidence
    public static final Integer OPERATE_TYPE_EXCHANGE_GOODS_TO_REFUND = 321;//换货转退款
    public static final Integer OPERATE_TYPE_AGREE_PRE_SALE_APPLY = 401;//同意售前退申请
    public static final Integer OPERATE_TYPE_AGREE_RESEND_APPLY = 501; //同意补寄申请
    public static final Integer OPERATE_TYPE_REFUSE_RESEND_APPLY = 502; //拒绝补寄申请

    public static final Integer AFTERSALE_SEND_TYPE_RESEND = 1; //发货类型， 1-补寄

    public static final Integer LINK_TYPE_MOBILE = 0;//0-手机
    public static final Integer LINK_TYPE_GENERAL_LANDLINE = 1;//1-普通座机
    public static final Integer LINK_TYPE_COMPANY_LANDLINE = 2;//2-企业座机

    public static final String CANCEL_SEND_GOODS_RETURN_MONEY = "returnMoney";
    public static final String CANCEL_SEND_GOODS_RETURN_GOODS_TO_WARE_HOUSE = "returnGoodsToWareHouse";
    public static final String CANCEL_SEND_GOODS_APPLY_LOGISTICS_INTERCEPT = "applyLogisticsIntercept";

    public static final Integer REFUND_TYPE_FAST_REFUND = 1;
    public static final Integer REFUND_TYPE_ASSISTANT = 2;

    public static final String WARNING_SOURCE_PRINT = "print";
    public static final String WARNING_SOURCE_PURCHASE = "purchase";
    public static final String WARNING_SOURCE_DISTRIBUTION = "distribution";

    public static List<Integer> getAfterSaleCloseOrCancelStatusList() {
        return new ArrayList<>(Arrays.asList(AFTERSALE_STATUS_CLOSE, AFTERSALE_STATUS_REFUSE_AFTER_SALE_APPLY));
    }
}
