package com.seer.teach.mall.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.seer.teach.common.entity.BaseEntity;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * <p>
 * 商城订单主表
 * </p>
 *
 * @author Captain
 * @since 2025-06-13
 */
@Getter
@Setter
@ToString
@TableName("mall_order")
@Schema(name = "ZsMallOrderEntity对象", description = "商城订单")
public class OrderEntity extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 订单编号
     */
    @TableField("order_sn")
    private String orderSn;

    @Schema(description = "用户ID")
    @TableField("user_id")
    private Integer userId;

    /**
     * 订单状态（0-待付款，1-已付款，2-已发货，3-已完成，4-已取消）
     */
    @TableField("order_status")
    private Integer orderStatus;

    /**
     * 物流状态（0-未发货，1-已发货，2-已签收）
     */
    @TableField("shipping_status")
    private Integer shippingStatus;

    /**
     * 支付状态（0-未支付，1-已支付，2-支付失败）
     */
    @TableField("pay_status")
    private Integer payStatus;

    /**
     * 收货人
     */
    @TableField("consignee")
    private String consignee;

    /**
     * 下单用户的收获地址Id
     */
    @TableField("address_id")
    private Integer addressId;

    @Schema(description = "省份")
    @TableField("province")
    private String province;

    @Schema(description = "城市")
    @TableField("city")
    private String city;

    @Schema(description = "区/县")
    @TableField("district")
    private String district;

    @Schema(description = "详细地址")
    @TableField("address")
    private String address;

    @Schema(description = "联系电话")
    @TableField("mobile")
    private String mobile;

    /**
     * （商家使用）订单备注
     */
    @TableField("remark")
    private String remark;

    /**
     * （下单用户使用）订单备注
     */
    @TableField("postscript")
    private String postscript;

    @TableField("pay_order_id")
    private Integer payOrderId;

    /**
     * 支付模式：0-线上支付 1-线下支付
     */
    @TableField("payment_mode")
    private Integer paymentMode;

    /**
     * 支付渠道编码
     */
    @TableField("pay_channel_code")
    private String payChannelCode;

    /**
     * 评价状态：0-未评价 1-已评价
     */
    @TableField("comment_status")
    private Integer commentStatus;

    /**
     * 订单实际支付金额
     */
    @TableField("actual_price")
    private BigDecimal actualPrice;

    /**
     * 子订单总价（含运费）
     */
    @TableField("order_price")
    private BigDecimal orderPrice;

    /**
     * 商品总价
     */
    @TableField("goods_price")
    private BigDecimal goodsPrice;

    /**
     * 订单总学豆
     */
    @TableField("order_total_coin")
    private BigDecimal orderTotalCoin;

    /**
     * 订单创建时间
     */
    @TableField("add_time")
    private LocalDateTime addTime;

    /**
     * 用户确认收货时间
     */
    @TableField("confirm_time")
    private LocalDateTime confirmTime;

    /**
     * 支付时间
     */
    @TableField("pay_time")
    private LocalDateTime payTime;

    /**
     * 物流单号
     */
    @TableField("shipping_no")
    private String shippingNo;

    /**
     * 发货人ID
     */
    @TableField("delivery_user_id")
    private Integer deliveryUserId;

    /**
     * 发货时间
     */
    @TableField("delivery_time")
    private LocalDateTime deliveryTime;

    /**
     * 物流公司编码
     */
    @TableField("logistics_code")
    private String logisticsCode;

    /**
     * 配置ID
     */
    @TableField("coin_config_id")
    private Integer coinConfigId;

    /**
     * 兑换比例
     */
    @TableField("exchange_ratio")
    private BigDecimal exchangeRatio;
}