package com.pj.tb_order;

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

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.EqualsAndHashCode;

import lombok.Data;
import lombok.experimental.Accessors;

/**
 * Model: tb_order -- 订单表
 *
 * @author lbl
 */
@Data
@Accessors(chain = true)
@TableName(TbOrder.TABLE_NAME)
@EqualsAndHashCode(callSuper = false)
public class TbOrder extends Model<TbOrder> implements Serializable {

    // ---------- 模块常量 ----------
    /**
     * 序列化版本id
     */
    private static final long serialVersionUID = 1L;
    /**
     * 此模块对应的表名
     */
    public static final String TABLE_NAME = "tb_order";
    /**
     * 此模块对应的权限码
     */
    public static final String PERMISSION_CODE = "tb-order";
    public static final String PERMISSION_CODE_ADD = "tb-order-add";
    public static final String PERMISSION_CODE_EDIT = "tb-order-edit";
    public static final String PERMISSION_CODE_DEL = "tb-order-del";
    public static final String PERMISSION_CODE_EDIT_PRICE = "tb-order-edit-price";
	public static final String PERMISSION_CODE_DEDUCTION = "tb-order-deduction";
	public static final String PERMISSION_CODE_REFUND = "tb-order-refund";
	public static final String PERMISSION_CODE_SEND009 = "tb-order-send009";
	public static final String PERMISSION_CODE_SENDCXB001 = "tb-order-sendCXB001";

    // ---------- 表中字段 ----------
    /**
     * 主键
     */
    @TableId(type = IdType.AUTO)
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /**
     * 订单号
     */
    private String tradeNo;

    /**
     * 交易地区ID
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long tradeAreaId;

    /**
     * 交易地区名称
     */
    private String tradeAreaName;

    /**
     * 地区ID集合
     */
    private String addressIds;

    /**
     * 过审商品id
     */
    private Long goodsId;

    /**
     * 商品名称字符串
     */
    private String goodsNames;

    /**
     * 商品单位
     */
    private String goodsUnit;

    /**
     * 商品图片
     */
    private String goodsImg;

    /**
     * 总重量
     */
    private Double totalWeight;

    /**
     * 总金额
     */
    private Double totalPrice;

	/**
	 * 买家ID
	 */
	private Long buyUserId;

	/**
	 * 买家名称
	 */
	private String buyUserName;

	/**
	 * 买家类型(1=边民,2=组长)
	 */
	private String buyUserType;

	/**
	 * 打款状态(0=初始值,1=打款成功,2=打款失败)
	 */
	private Integer tradeStatus;

	/**
	 * 打款回执时间
	 */
	private Date tradeTime;

	/**
	 * 支付方式(0=金融互助,1=现金刷卡)
	 */
	private Integer payType;

	/**
	 * 商铺ID
	 */
	private Long shopId;

	/**
	 * 商铺名称
	 */
	private String shopName;

	/**
	 * 商户ID
	 */
	private Long enterpriseId;

	/**
	 * 商户名称
	 */
	private String enterpriseName;

	/**
	 * 商户确认(0=待确认,1=是,2=否)
	 */
	private Integer enterpriseConfirm;

	/**
	 * 购买的互市组ID
	 */
	private Long groupId;

	/**
	 * 结算时间
	 */
	private Date settleTime;

	/**
	 * 当前结算金额
	 */
	private Double realPrice;

	/**
	 * 应结金额
	 */
	private Double shouldPrice;

	/**
	 * 是否对账(0=否,)
	 */
	private String record;

	/**
	 * 对账人
	 */
	private Long settleUserId;

	/**
	 * 对账人员
	 */
	private Long recordUserId;

	/**
	 * 对账时间
	 */
	private Date recordTime;

	/**
	 * 退款状态[0=初始值 1=退款成功 2=退款失败 3=退款中]
	 */
	private Integer refundStatus;

	/**
	 * 退款原因
	 */
	private String refundReason;

	/**
	 * 退款时间
	 */
	private Date refundTime;

	/**
	 * 收货人名称
	 */
	private String receiveName;

	/**
	 * 收货人电话
	 */
	private String receivePhone;

	/**
	 * 收货地址
	 */
	private String receiveAddress;

	/**
	 * 出互市区时间
	 */
	private Date outTime;

	/**
	 * 分配方式(0=均分,1=自选数量)
	 */
	private String distribution;

	/**
	 * 是否接单
	 */
	private String pick;

	/**
	 * 接单时间
	 */
	private Date pickTime;

	/**
	 * 是否发货
	 */
	private Integer send;

	/**
	 * 发货时间
	 */
	private Date sendTime;

	/**
	 * 叫车状态
	 */
	private Integer callCarStatus;

	/**
	 * 创建人编号
	 */
	private Long createBy;

	/**
	 * 创建人名称
	 */
	private String createName;

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

	/**
	 * 更新人编号
	 */
	private Long updateBy;

	/**
	 * 更新人名称
	 */
	private String updateName;

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

	/**
	 * 删除状态(0=禁用,1=启用)
	 */
	private Integer deleteStatus;

	/**
	 * 对应合作社的拼单订单ID
	 */
	private Long collageOrdersId;

	/**
	 * 申报单编号
	 */
	private Long applyNo;

	/**
	 * 申报
	 */
	private Integer apply;

	/**
	 * 申报时间
	 */
	private Date applyTime;

	/**
	 * 申报结果
	 */
	private String applyResult;

	/**
	 * 申报失败理由
	 */
	private String applyFailReason;

	/**
	 * 查验结果[1=查验通过 2=查验不通过]
	 */
	private Integer checkPassStatus;

	/**
	 * 查验时间（不通过）
	 */
	private Date checkPassTime;

	/**
	 * 边民确认
	 */
	private Integer peopleConfirmStatus;

	/**
	 * 边民确认类型
	 */
	private String peopleConfirmType;

	/**
	 * 边民确认时间
	 */
	private Date peopleConfirmTime;

	/**
	 * 互助委托申报确认状态
	 */
	private Integer cooperEntrustStatus;

	/**
	 * 互助委托申报确认时间
	 */
	private Date cooperEntrustTime;

	/**
	 * 边民进口申报确认状态
	 */
	private Integer applyConfirmStatus;

	/**
	 * 边民进口申报确认时间
	 */
	private Date applyConfirmTime;

	/**
	 * 订单完成状态(0=未完成,1=已完成)->车出一级市场才完成，完成后可以进行转售
	 */
	private Integer finishStatus;
	/**
	 * 完成时间
	 */
	private Date finishTime;

	/**
	 * 是否转售(0=未转售,1=已转售,2=转售中)
	 */
	private Integer resaleStatus;

	/**
	 * 订单转售后是否在二级市场被下单
	 */
	private Integer beingOrder;

	/**
	 * 预申报编号
	 */
	private String platSeqNo;

	/**
	 * 结算单号
	 */
	private String settleBillNo;

	/**
	 * 进出口预申报单号
	 */
	private String preIeportNo;

	/**
	 * 单证代码
	 */
	private String preNo;

	/**
	 * 车牌号
	 */
	private String veNo;

	/**
	 * 车航次(班)号
	 */
	private String voyageNo;

	/**
	 * 边民姓名
	 */
	private String borderName;

	/**
	 * 身份证号
	 */
	private String idno;

	/**
	 * 边民备案编号
	 */
	private String borderPutrecNo;

	/**
	 * 申报金额
	 */
	private Double buyAmount;

	/**
	 * 净重
	 */
	private Double netWt;

	/**
	 * 毛重
	 */
	private Double grossWt;

	/**
	 * 申报数量
	 */
	private Double buyQty;

	/**
	 * 第一数量
	 */
	private Double buyQty1;

	/**
	 * 第二数量
	 */
	private Double buyQty2;

	/**
	 * 不知道
	 */
	private Long saleMainId;

	/**
	 *
	 */
	private Integer cancelPeople;

	/**
	 * 边民额度序号
	 */
	private String limitNo;

	/**
	 * 商品额度
	 */
	private Double gLimit;

	/**
	 * 商品序号
	 */
	private String gNo;

	/**
	 * 进口申报单Id
	 */
	private Long importOrderId;

	/**
	 *  1-边民，2-商铺业主或其代理人，3-合作社代表，4-互助组代表
	 */
	private String declareType;


	/**
	 * 商品单价
	 */
	private Double declPrice;
	/**
	 * 商品编码
	 */
	private String codeTs;


	/**
	 * (一级市场)订单扣款回执状态[0=初始值 1=扣款成功 2=扣款失败，3=扣款中]
	 */
	private Integer Sxb010Status;
	/**
	 * 回执内容
	 */
	private String sxbNote;
	/**
	 * (一级市场)订单扣款回执时间
	 */
	private Date Sxb010StatusTime;
	/**
	 * (一级市场)订单补扣款次数
	 */
	private Integer deductionCount;
	/**
	 * (一级市场)订单最近一次补扣款时间
	 */
	private Date deductionTime;

    /**
     * 上架状态(1=未上架，2=上架,3=已下架）
     */
    private Integer upStatus;
    private Date upTime;

    private BigDecimal upPrice;

	/**
	 * 退运状态0正常 1 退运
	 */
	private Integer returns;
	/**
	 * 退运时间
	 */
	private Date returnsTime;
	/**
	 * 退单 0正常 1 退单
	 */
	private Integer chargebacks;
	/**
	 * 退单时间
	 */
	private Date chargebacksTime;

	@TableField(exist = false)
	private String phone;

}
