package cn.ysk.cashier.dto.order;

import cn.ysk.cashier.pojo.order.TbGroupOrderCoupon;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.sql.Date;
import java.sql.Timestamp;
import java.math.BigDecimal;
import java.io.Serializable;
import java.util.List;

@Data
public class TbGroupOrderInfoDto implements Serializable {

    /** id */
    private Integer id;

    /** 订单编号 */
    private String orderNo;

    private Integer merchantId;

    /** 商户Id */
    private Integer shopId;

    /** 用户id */
    private Integer userId;

    /** 商品id */
    private Integer proId;

    /** 商品图 */
    private String proImg;

    /** 商品名称 */
    private String proName;


    private Timestamp expDate;

    /** 订单类型 预留字段 */
    private String orderType;

    /** 支付方式 wechatPay微信支付，aliPay支付宝支付 */
    private String payType;

    /** 订单金额 */
    private BigDecimal orderAmount;

    /** 优惠金额 */
    private BigDecimal saveAmount;

    /** 实付金额 */
    private BigDecimal payAmount;

    /** 退单金额 */
    private BigDecimal refundAmount;

    /** 退单数量 */
    private Integer refundNumber;

    /** 数量 */
    private Integer number;

    /** 订单状态
     状态: unpaid-待付款;unused-待使用;closed-已完成;refunding-退款中;refund-已退款;cancelled-已取消; */
    private String status;

    /** 备注 */
    private String remark;

    /** 手机号 */
    private String phone;

    /** 付款时间 */
    private Timestamp payTime;

    /** 是否支持退款 0：不支持 1：支持 */
    private Integer refundAble;

    /** 创建时间 */
    private Timestamp createTime;

    /** 卷码核销员 */
    private String verifier;

    /** 更新时间 */
    private Timestamp updateTime;

    /** 支付订单号 */
    private String payOrderNo;

    /** 交易日期 */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date tradeDay;

    /** 原订单id 退单 */
    private Integer source;
    /**
     * 卷码
     */
    private List<TbGroupOrderCoupon> coupons;

    public void setStatus(String status) {
        switch (status) {
            case "unpaid":
                this.status = "待付款";
                break;
            case "unused":
                this.status = "待使用";
                break;
            case "closed":
                this.status = "已完成";
                break;
            case "refunding":
                this.status = "退款中";
                break;
            case "refund":
                this.status = "已退款";
                break;
            case "cancelled":
                this.status = "已取消";
                break;
            default:
                this.status = status;
        }
    }
}