package com.ruoyi.frequency.order.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.controller.resp.AppealDetailResp;
import com.ruoyi.frequency.orderevaluate.entity.OrderEvaluate;
import com.ruoyi.frequency.orderpanorama.entity.OrderPanorama;
import com.ruoyi.vo.UserInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

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

/**
 * 订单主对象 t_order
 *
 * @author zj
 * @date 2023-10-13
 */
@Data
@Accessors(chain = true)
@TableName("t_order")
public class Order extends BaseEntity
{
    private static final long serialVersionUID = 1L;


    @ApiModelProperty("租户号")
    private Long id;

    @ApiModelProperty("删除标志;1 正常 2 删除 3 禁用")
    private Integer delFlag;

    @ApiModelProperty("订单标题")
    @Excel(name = "订单标题")
    private String title;

    @ApiModelProperty("素材")
    @Excel(name = "素材")
    private String sourceMaterial;

    @ApiModelProperty("原价")
    @Excel(name = "原价")
    private BigDecimal originAmount;

    @ApiModelProperty("订单金额")
    @Excel(name = "订单金额")
    private BigDecimal amount;

    @ApiModelProperty("改价后金额(客户确认后,改价后金额同步到amount中)")
    @Excel(name = "改价后金额(客户确认后,改价后金额同步到amount中)")
    private BigDecimal changeAmount;

    @ApiModelProperty("提出改价的用户身份 1 设计师 2 表现师")
    @Excel(name = "提出改价的用户身份 1 设计师 2 表现师")
    private Integer changeUserType;

    @ApiModelProperty("改价状态 1 待确认 2 已确认")
    @Excel(name = "改价状态 1 待确认 2 已确认")
    private Integer changeStatus;

    @ApiModelProperty("价格调整备注")
    @Excel(name = "价格调整备注")
    private String changeRemark;

    @ApiModelProperty("交付时间")
    @Excel(name = "交付时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date confirmDate;

    @ApiModelProperty("设计师id")
    @Excel(name = "设计师id")
    private Long customerId;

    @ApiModelProperty("表现师id")
    @Excel(name = "表现师id")
    private Long storeId;

    @ApiModelProperty("销售从中拿到的佣金")
    @Excel(name = "销售从中拿到的佣金")
    private BigDecimal saleAmount;

    @ApiModelProperty("销售id")
    @Excel(name = "销售id")
    private Long saleId;

    @ApiModelProperty("内容")
    @Excel(name = "内容")
    private String content;

    @ApiModelProperty("订单状态;-1 已取消 1待确认 2进行中 3待收图 4待评价 5已评价 ")
    @Excel(name = "订单状态;-1 已取消 1待确认 2进行中 3待收图 4待评价 5已评价 ")
    private Integer status;

    @ApiModelProperty("申诉状态;1无申诉 2申诉中 3申诉完成")
    @Excel(name = "申诉状态;1无申诉 2申诉中 3申诉完成")
    private Integer appealStatus;

    @ApiModelProperty("申请用户类型 1 设计师 2 表现师")
    @Excel(name = "申请用户类型 1 设计师 2 表现师")
    private Integer appealUserType;

    @ApiModelProperty("订单来源 1 设计师自己下单 2 表现师帮设计师下单")
    @Excel(name = "订单来源 1 设计师自己下单 2 表现师帮设计师下单")
    private Integer sourceUserType;

    /** 封面图 */
    @Excel(name = "封面图")
    private String coverImage;
    @ApiModelProperty("作品图片")
    @Excel(name = "作品图片")
    private String images;

    @ApiModelProperty("首款")
    @Excel(name = "首款")
    private BigDecimal firstPrice;

    @ApiModelProperty("首款支付状态 1 未支付 2 已支付")
    @Excel(name = "首款支付状态 1 未支付 2 已支付")
    private Integer firstStatus;

    @ApiModelProperty("首款支付方式 1app支付宝 2 h5支付宝 3 app微信 4 h5微信 5 小程序 6 苹果支付 7 余额")
    @Excel(name = "首款支付方式 1app支付宝 2 h5支付宝 3 app微信 4 h5微信 5 小程序 6 苹果支付 7 余额")
    private Integer firstPayType;


    @ApiModelProperty("尾款支付状态 1 未支付 2 已支付")
    @Excel(name = "尾款支付状态 1 未支付 2 已支付")
    private Integer secondStatus;

    @ApiModelProperty("尾款支付方式 1app支付宝 2 h5支付宝 3 app微信 4 h5微信 5 小程序 6 苹果支付 7 余额")
    @Excel(name = "尾款支付方式 1app支付宝 2 h5支付宝 3 app微信 4 h5微信 5 小程序 6 苹果支付 7 余额")
    private Integer secondPayType;

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

    @ApiModelProperty("支付宝支付返回的订单号")
    @Excel(name = "支付宝支付返回的订单号")
    private String aliBusinessId;

    @ApiModelProperty("首款支付时间")
    @Excel(name = "首款支付时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date firstPayTime;

    @ApiModelProperty("尾款支付时间")
    @Excel(name = "尾款支付时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date secondPayTime;

    @ApiModelProperty("作品类型ID")
    private Long worksTypeId;


    @ApiModelProperty("首款支付单号")
    private String firstPayOrderNo;

    @ApiModelProperty("尾款支付单号")
    private String secondPayOrderNo;

    @ApiModelProperty("设计师是否评价 1 没有 2 评价")
    private Integer isCustomerEvaluate;


    @ApiModelProperty("表现师是否评价1 没有 2 评价")
    private Integer isStoreEvaluate;

    @ApiModelProperty("图纸张数")
    private Integer drawingNum;

    @ApiModelProperty("是否同步到作品库 1不同步 2同步")
    private Integer isAgree;


    @ApiModelProperty("尾款支付宝支付返回的订单号")
    private String secondAliBusinessId;



    @ApiModelProperty("原始对图时间")
    @Excel(name = "原始对图时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date originDeliverTime;

    @ApiModelProperty("对图时间")
    @Excel(name = "对图时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date deliverTime;

    @ApiModelProperty("延期后时间 表现师确认后 更新对图时间")
    @Excel(name = "延期后时间 表现师确认后 更新对图时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date extensionDeliverTime;

    @ApiModelProperty("延期用户身份 1 设计师 2 表现师")
    @Excel(name = "延期用户身份 1 设计师 2 表现师")
    private Integer extensionUserType;

    @ApiModelProperty("延期状态 1 待确认 2 已确认")
    @Excel(name = "延期状态 1 待确认 2 已确认")
    private Integer extensionStatus;

    @ApiModelProperty("延期备注")
    @Excel(name = "延期备注")
    private String extensionRemark;


    @ApiModelProperty("是否到交付时间发送消息 1没有 2 发送")
    private Integer isPushMessage;


    @ApiModelProperty("是否高端认证:1:普通技术 2高端技术")
    private Integer ifHighend;

    @ApiModelProperty("首款赠送支付金额")
    private BigDecimal firstGivePrice;

    @ApiModelProperty("尾款赠送支付金额")
    private BigDecimal secondGivePrice;

    @ApiModelProperty("首款三方支付金额")
    private BigDecimal firstTripartitePrice;

    @ApiModelProperty("尾款三方支付金额")
    private BigDecimal secondTripartitePrice;


    @ApiModelProperty("作品类型名称")
    @TableField(exist = false)
    private String worksTypeName;


    @ApiModelProperty("开始时间")
    @TableField(exist = false)
    private Date beginTime;

    @ApiModelProperty("结束时间")
    @TableField(exist = false)
    private Date endTime;

    @ApiModelProperty("开始时间")
    @TableField(exist = false)
    private Date confirmBeginTime;

    @ApiModelProperty("结束时间")
    @TableField(exist = false)
    private Date confirmEndTime;

    @ApiModelProperty("设计师信息")
    @TableField(exist = false)
    private UserInfo customerInfo;

    @ApiModelProperty("表现师信息")
    @TableField(exist = false)
    private UserInfo storeInfo;

    @ApiModelProperty("3D图")
    @TableField(exist = false)
    private List<OrderPanorama> panoramaList;

    @ApiModelProperty("申诉详情")
    @TableField(exist = false)
    private AppealDetailResp appeal;

    @ApiModelProperty("申诉id")
    @TableField(exist = false)
    private Long appealId;

    @ApiModelProperty("设计师评价")
    @TableField(exist = false)
    private OrderEvaluate customerEvaluate;

    @ApiModelProperty("表现师评价")
    @TableField(exist = false)
    private OrderEvaluate storeEvaluate;
}
