package com.yiqi.order.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiqi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.yiqi.common.core.domain.BaseEntity;
import lombok.Data;

/**
 * 洗衣订单对象 order_cloth
 *
 * @author xiaohei
 * @date 2023-10-17
 */
@ApiModel("洗衣订单")
@TableName("order_cloth")
@Data
public class OrderCloth extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @ApiModelProperty("主键ID")

    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 订单编号
     */
    @Excel(name = "订单编号")
    @ApiModelProperty("订单编号")
    private String orderNo;

    @ApiModelProperty("订单类型（0=普通订单，1=云洗订单，2=第三方订单）,默认0")
    private String orderType;

    /**
     * 门店/工厂ID
     */
    @Excel(name = "门店")
    @ApiModelProperty("门店")
    private Long orgId;

    /**
     * 来源类型
     */
    @Excel(name = "来源类型")
    @ApiModelProperty("来源类型")
    private String sourceType;

    /**
     * 工厂ID
     */
    @Excel(name = "工厂ID")
    @ApiModelProperty("工厂ID")

    private Long factoryId;

    /**
     * 客户ID
     */
    @Excel(name = "客户ID")
    @ApiModelProperty("客户ID")

    private Long appUserId;

    /**
     * 联系人
     */
    @Excel(name = "联系人")
    @ApiModelProperty("联系人")
    private String contactName;

    /**
     * 联系人手机号
     */
    @Excel(name = "联系人手机号")
    @ApiModelProperty("联系人手机号")
    private String contactPhone;

    /**
     * 订单总金额
     */
    @Excel(name = "订单总金额")
    @ApiModelProperty("订单总金额")
    private BigDecimal orderAmount;

    /**
     * 支付信息
     */
    @Excel(name = "支付信息")
    @ApiModelProperty("支付信息")
    private String payInfo;


    @ApiModelProperty("衣服总金额")
    private BigDecimal orderClothPrice;


    @ApiModelProperty("衣服件数")
    private Integer orderClothCount;

    /**
     * 支付金额
     */
    @Excel(name = "支付金额")
    @ApiModelProperty("支付金额")
    private BigDecimal payAmount;


    @ApiModelProperty("付款时间类型（0=收衣付款,1=取衣付款）")
    private String payTimeType;


    /**
     * 现金支付金额
     */
    @Excel(name = "现金支付金额")
    @ApiModelProperty("现金支付金额")
    private BigDecimal cashPayAmount;

    /**
     * 微信支付金额
     */
    @Excel(name = "微信支付金额")
    @ApiModelProperty("微信支付金额")
    private BigDecimal wxPayAmount;

    /**
     * 支付宝支付金额
     */
    @Excel(name = "支付宝支付金额")
    @ApiModelProperty("支付宝支付金额")
    private BigDecimal aliPayAmount;

    /**
     * 支付宝支付金额
     */
    @Excel(name = "会员卡支付金额")
    @ApiModelProperty("支付宝支付金额")
    private BigDecimal memberPayAmount;
    /**
     * 支付方式（0=微信，1=支付宝，2=现金，3=储值卡）
     */
    @Excel(name = "支付方式", readConverterExp = "0==微信，1=支付宝，2=现金，3=会员卡 8=组合支付")
    @ApiModelProperty("支付方式（0=微信，1=支付宝，2=现金，3=会员卡 8=组合支付）")
    private String payType;

    @Excel(name = "支付状态", readConverterExp = "0==待支付，1=支付成功，2=支付失败")
    @ApiModelProperty("支付状态 0：待支付 1: 支付成功 -1：支付失败")
    private String payStatus;

    /**
     * 支付时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("支付时间")
    private Date payTime;

    /**
     * 支付宝/微信支付订单号
     */
    @Excel(name = "支付宝/微信支付订单号")
    @ApiModelProperty("支付宝/微信支付订单号")
    private String outTradeOrderNo;

    /**
     * 下单渠道（APP=APP，WXAPP=小程序，OFFLINE=线下门店）
     */
    @Excel(name = "下单渠道", readConverterExp = "A=PP=APP，WXAPP=小程序，OFFLINE=线下门店")
    @ApiModelProperty("下单渠道（APP=APP，WXAPP=小程序，OFFLINE=线下门店）")
    private String orderSource;

    /**
     * 退款金额
     */
    @Excel(name = "退款金额")
    @ApiModelProperty("退款金额")
    private BigDecimal refundAmount;

    /**
     * 退款描述
     */
    @Excel(name = "退款描述")
    @ApiModelProperty("退款描述")
    private String refundContent;

    /**
     * 预约时间（yyyy-MM-dd HH:mm）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty("预约时间")
    private Date appointmentTime;

    /**
     * 预约件数
     */
    @Excel(name = "预约件数")
    @ApiModelProperty("预约件数")
    private Integer appointmentCount;

    /**
     * 是否预约订单
     */
    @Excel(name = "是否预约订单")
    @ApiModelProperty("是否预约订单")
    private String isAppointment;

    /**
     * 订单状态（0. 待下单  1. 已下单待送衣   2. 洗衣中   3.衣服已到店待取衣   8. 取衣完成待评价  9.已完成   100. 已取消）
     */
    @Excel(name = "订单状态", readConverterExp = "0=预约处理中，1=已下单待送衣，2=洗衣中，3=衣服已到店待取衣，8=取衣完成待评价，9=已完成，-1=已取消")
    @ApiModelProperty("订单状态（0=预约待取，1=已取货、待门店定价，2=已定价、待支付，3=已支付、待工厂取货，4=工厂已取货、洗衣中，5=洗衣完成、待送店，6=已到店、待送衣，7=送衣中，8=已送达、待评价，9=已完成，-1=已取消）")
    private String orderStatus;


    /**
     * 取衣时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "取衣时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("取衣时间")
    private Date takeClothTime;

    /**
     * 取衣人
     */
    @Excel(name = "取衣人")
    @ApiModelProperty("取衣人")
    private Long takeClothAppUserId;

    /**
     * 定价时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "定价时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("定价时间")
    private Date setPriceTime;

    /**
     * 取货时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "取货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("取货时间")
    private Date pickUpTime;

    /**
     * 开始洗衣时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "开始洗衣时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("开始洗衣时间")
    private Date washClothStartTime;

    /**
     * 结束洗衣时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "结束洗衣时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("结束洗衣时间")
    private Date washClothEndTime;

    /**
     * 送店时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "送店时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("送店时间")
    private Date sendToStoreTime;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "预计取衣时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("预计取衣时间")
    private Date planSendToUserTime;

    /**
     * 取衣时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "取衣时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("取衣时间")
    private Date sendToUserTime;

    /**
     * 退款时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "退款时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("退款时间")
    private Date refundTime;

    /**
     * 退款状态（0=正常，1=退款申请中，2=退款同意，3=退款拒绝，4=退款取消）
     */
    @Excel(name = "退款状态", readConverterExp = "0==正常，1=退款申请中，2=退款同意，3=退款拒绝，4=退款取消")
    @ApiModelProperty("退款状态（0=正常，1=退款申请中，2=退款同意，3=退款拒绝，4=退款取消）")
    private String refundStatus;

    /**
     * 退款原因
     */
    @Excel(name = "退款原因")
    @ApiModelProperty("退款原因")
    private String refundReason;

    /**
     * 送衣人
     */
    @Excel(name = "送衣人")
    @ApiModelProperty("送衣人")
    private Long sendClothAppUserId;

    /**
     * 收衣方式（0=到店，1=上门）
     */
    @Excel(name = "收衣方式", readConverterExp = "0==到店，1=上门")
    @ApiModelProperty("收衣方式（0=到店，1=上门）")
    private String takeClothWay;

    /**
     * 取衣方式（0=到店，1=上门）
     */
    @Excel(name = "取衣方式", readConverterExp = "0==到店，1=上门")
    @ApiModelProperty("取衣方式（0=到店，1=上门）")
    private String sendClothWay;



    @ApiModelProperty("折扣活动ID")
    private Long discountActivityId;

    /**
     * 活动折扣金额
     */
    @Excel(name = "活动折扣金额")
    @ApiModelProperty("活动折扣金额")
    private BigDecimal activityDiscountAmount;

    /**
     * 优惠券抵扣金额
     */
    @Excel(name = "优惠券抵扣金额")
    @ApiModelProperty("优惠券抵扣金额")
    private BigDecimal couponDeductAmount;


    @ApiModelProperty("现金抵扣金额")
    private BigDecimal cashDeductAmount;

    @ApiModelProperty("配送费抵扣金额")
    private BigDecimal deliveryDeductAmount;

    /**
     * 订单完成
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "订单完成", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("订单完成")
    private Date finishTime;

    /**
     * 门店员工ID
     */
    @Excel(name = "门店员工ID")
    @ApiModelProperty("门店员工ID")

    private Long employeeId;

    /**
     * 删除状态（0=正常,2=删除）
     */
    @ApiModelProperty("删除状态（0=正常,2=删除）")
    private String delFlag;

    /**
     * 是否拆装
     */
    @Excel(name = "是否拆装")
    @ApiModelProperty("是否拆装")
    private String isDisassemblyAndAssembly;

    /**
     * 是否大件
     */
    @Excel(name = "是否大件")
    @ApiModelProperty("是否大件")
    private String isLargeItem;

    /**
     * 大件项目类型
     */
    private String largeItemType;

    /**
     * 订单加急
     */
    @Excel(name = "订单加急")
    @ApiModelProperty("订单加急")

    private Long clothSpeedId;

    /**
     * 订单加急
     */
    @Excel(name = "订单加急")
    @ApiModelProperty("订单加急")
    private String clothSpeedName;

    /**
     * 是否特殊
     */
    @Excel(name = "是否特殊")
    @ApiModelProperty("是否特殊")
    private String isSpecial;

    /**
     * 配送费
     */
    @Excel(name = "实际配送费")
    @ApiModelProperty("配送费")
    private BigDecimal deliveryAmount;

}
