using JiaZhiQuan.Common.Response;
using Newtonsoft.Json;
using NPOI.SS.Util;
using System;
using System.Collections.Generic;

namespace JiaZhiQuan.Common.Models.MallGoodsModel {
    public class RefundModel {
        //退单计时器05-单位是小时
        public const int REFUND_TIMER05 = 24;
        //退单计时器06-单位是小时
        public const int REFUND_TIMER06 = 24 * 3;
        //退单计时器07-单位是小时
        public const int REFUND_TIMER07 = 24 * 2;
        //退单计时器08-单位是小时
        public const int REFUND_TIMER08 = 24 * 2;

        public const int REFUND_TIMER09 = 24 * 3;

        public const int REFUND_TIMER10 = 24 * 2;

        public const int REFUND_TIMER11 = 24 * 2;

        public const int REFUND_TIMER12 = 24 * 3;

        public const int REFUND_TIMER13 = 24 * 7;

        public const int REFUND_TIMER14 = 24 * 10;

        public const int REFUND_TIMER15 = 24 * 3;

        public const int REFUND_TIMER16 = 24 * 2;
        public enum BillType {
            支付流水 = 1,
            分账流水 = 2,
            退单流水 = 3
        }
        public enum RefundType {
            待发仅退款 = 1,
            待收仅退款 = 2,
            退款退货 = 3
        }
        public enum RefundState {
            已关闭 = -1,
            待卖家处理 = 1,
            退单维权举证 = 21,
            货损维权举证 = 42,
            退单成功 = 5
        }

        public enum UserType {
            系统 = 0,
            买家 = 1,
            卖家 = 2
        }

        public enum DealType {
            买家申请退单 = 1,
            买家撤销退单 = 2,
            买家发起维权 = 3,
            买家退单维权补充证据 = 4,
            买家寄出退货 = 5,
            买家同意货损 = 6,
            买家拒绝货损 = 7,
            买家货损维权补充证据 = 8,
            买家超时未申请维权= 9,
            买家超时未寄出退货=10,
            买家超时未处理货损=11,
            买家退款失败=12,
            买家退款成功=13,
            买家提醒卖家收货=14,

            卖家同意退单 = 21,
            卖家拒绝退单 = 22,
            卖家退单维权补充证据 = 23,
            卖家申请货损 = 24,
            卖家货损维权补充证据 = 25,
            卖家确认收货 = 26,
            卖家撤销货损 = 27,
            卖家延长收货 = 28,
            卖家发起货损维权 = 29,
            卖家超时未处理=30,
            卖家发送退货地址=31,
            卖家超时未发送退货地址=32, 
            卖家超时未确认收货=33,
            卖家超时未申请维权=34,

            退单维权买家胜 = 41,
            退单维权卖家胜 = 42,
            货损维权买家胜 = 43,
            货损维权卖家胜 = 44
        }

        public class AfterSale {
            [JsonConverter(typeof(NumberConverter), NumberConverterShip.Int64)]
            public long afterSaleId { get; set; }
            [JsonConverter(typeof(NumberConverter), NumberConverterShip.Int64)]
            public long orderId { get; set; }
            [JsonConverter(typeof(NumberConverter), NumberConverterShip.Int64)]
            public long orderDetailId { get; set; }
            [JsonConverter(typeof(NumberConverter), NumberConverterShip.Int64)]
            public long userId { get; set; }
            [JsonConverter(typeof(NumberConverter), NumberConverterShip.Int64)]
            public long sellerId { get; set; }
            public int type { get; set; }
            public int judgeState { get; set; }
            public int refundAmount { get; set; }
            public int refundPoints { get; set; }
            public int refundOrderAmount { get; set; }
            public int? lossApplyAmount { get; set; }
            public int lossAmount { get; set; }
            public int state { get; set; }
            public DateTime receiveExpireAt { get; set; }
            //货损平台处理时间
            public DateTime lossProtectDealAt { get; set; }
            public int SellerDelayCnt { get; set; }
            public int lossCount { get; set; }
            public string consigneePhone { get; set; }
            public string eventDesc { get; set; }
        }

        public class EventInfo {
            public int afterSaleEventId;
            public string eventDesc;
            public DateTime createAt;
            public RefundResources resources;
        }

        public class RefundResources {
            public string reason;
            public List<Extra> extra;
        }
        public class Extra {
            // 1文本，2图片，3，视频
            public int type;
            public string content;
        }

        public class  ImInfo {
            public string msg;
            public long afterSaleId;
            public long senderId;
            public long acceptId;
        }

        public class InsertResult {
            public int count;
            public long insertId;
        }
    }
}
