package com.aiotagro.cattletrade.business.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

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

/**
 * 订单管理实体类
 *
 * @author System
 * @date 2025-01-20
 */
@Data
@TableName("`order`")
public class Order implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 买方ID（多个买家用逗号分隔）
     */
    @TableField("buyer_id")
    private String buyerId;

    /**
     * 卖方ID（多个卖家用逗号分隔）
     */
    @TableField("seller_id")
    private String sellerId;

    /**
     * 结算方式：1-上车重量，2-下车重量，3-按肉价结算
     */
    @TableField("settlement_type")
    private Integer settlementType;

    /**
     * 约定价格（元/斤）
     */
    @TableField("firm_price")
    private java.math.BigDecimal firmPrice;

    /**
     * 逻辑删除标记(0-正常,1-已删除)
     */
    @TableLogic(value = "0", delval = "1")
    @TableField("is_delete")
    private Integer isDelete;

    /**
     * 创建时间
     */
    @TableField("create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /**
     * 创建人ID
     */
    @TableField("created_by")
    private Integer createdBy;

    /**
     * 更新时间
     */
    @TableField("update_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;

    /**
     * 更新人ID
     */
    @TableField("updated_by")
    private Integer updatedBy;

    /**
     * 买方名称（不存储在数据库中，用于显示）
     */
    @TableField(exist = false)
    private String buyerName;

    /**
     * 卖方名称（不存储在数据库中，用于显示）
     */
    @TableField(exist = false)
    private String sellerName;

    /**
     * 创建人姓名（不存储在数据库中，用于显示）
     */
    @TableField(exist = false)
    private String createdByName;

    /**
     * 结算方式描述（不存储在数据库中，用于显示）
     */
    @TableField(exist = false)
    private String settlementTypeDesc;
}

