package com.yiqi.order.domain;

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

import javax.validation.constraints.NotEmpty;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 商品订单对象 order_goods
 *
 * @author ruoyi
 * @date 2023-12-06
 */
@ApiModel("商品订单")
@TableName("order_goods")
@Data
public class OrderGoods extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @ApiModelProperty("主键ID")
    @TableId(type = IdType.AUTO)
    private Long id;

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

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

    /**
     * 组织ID
     */
    @Excel(name = "组织ID")
    @ApiModelProperty("组织ID")

    private Long orgId;

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

    private Long appUserId;

    @ApiModelProperty("客户地址id")

    private Long appUserAddressId;

    /**
     * 商品类别
     */
    @Excel(name = "商品类别")
    @ApiModelProperty("商品类别")
    private String goodsType;

    /**
     * 商品数量
     */
    @Excel(name = "商品数量")
    @ApiModelProperty("商品数量")
    private Integer goodsCount;

    /**
     * 商品订单类型
     */
    @Excel(name = "商品订单类型")
    @ApiModelProperty("商品订单类型")
    private String goodsOrderType;


    /**
     * 订单总价
     */
    @Excel(name = "订单总价")
    @ApiModelProperty("订单总价")
    private BigDecimal totalPrice;

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

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

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

    /**
     * 支付宝支付金额
     */
    @Excel(name = "会员卡支付金额")
    @ApiModelProperty("支付宝支付金额")
    private BigDecimal memberPayAmount;

    /**
     * 抵扣积分
     */
    @Excel(name = "抵扣积分")
    @ApiModelProperty("抵扣积分")
    private Integer deductPoint;

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

    /**
     * 配送方式（0=到店自取，1=快递）
     */
    @Excel(name = "配送方式", readConverterExp = "0==到店自取，1=快递")
    @ApiModelProperty("配送方式（0=到店自取，1=快递）")
    private String deliveryWay;

    /**
     * 快递公司
     */
    @Excel(name = "快递公司")
    @ApiModelProperty("快递公司")
    private String deliveryCompany;

    /**
     * 快递单号
     */
    @Excel(name = "快递单号")
    @ApiModelProperty("快递单号")
    private String deliveryNo;

    @ApiModelProperty("快递公司ID")
    private String deliveryId;

    /**
     * 订单状态（0待支付，1支付待确认，2已支付、待配送，3配送中，4已到货，5确认收货，-1取消订单）
     */
    @Excel(name = "订单状态", readConverterExp = "0=待支付，1支付待确认，2已支付、待配送，3配送中，4已到货，5确认收货，-1取消订单")
    @ApiModelProperty("订单状态（0待支付，1支付待确认，2已支付、待配送，3配送中，4已到货，5确认收货，-1取消订单）")
    private String orderStatus;

    /**
     * 支付状态（0=待支付，1=支付成功，-1=支付失败）
     */
    @Excel(name = "支付状态", readConverterExp = "0=待支付，1=支付成功，-1=支付失败")
    @ApiModelProperty("退款状态（0=待支付，1=支付成功，-1=支付失败）")
    private String payStatus;


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

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

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

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

    /**
     * 退款状态（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;

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

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

    /**
     * 支付方式（0=微信，1=支付宝，2=现金,3=余额）
     */
    @Excel(name = "支付方式", readConverterExp = "0==微信，1=支付宝，2=现金,3=余额")
    @ApiModelProperty("支付方式（0=微信，1=支付宝，2=现金,3=余额）")
    private String payType;

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

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

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

    /**
     * 抵扣金额
     */
    @Excel(name = "抵扣金额")
    @ApiModelProperty("抵扣金额")
    private BigDecimal deductAmount;

    @ApiModelProperty("优惠券抵扣金额")
    private BigDecimal couponDeductAmount;

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

}
