package com.tashow.cloud.trade.dal.dataobject.order;

import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.tashow.cloud.tenant.core.db.TenantBaseDO;
import lombok.*;

import java.time.LocalDateTime;

/**
 * 交易订单项 DO
 *
 * @author 芋道源码
 */
@TableName("tz_trade_order_item")
@KeySequence("tz_trade_order_item_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TradeOrderItemDO extends TenantBaseDO {

    /**
     * 编号
     */
    @TableId
    private Long id;
    /**
     * 用户编号
     */
    private Long userId;
    /**
     * 订单编号
     */
    private Long orderId;
    /**
     * 购物车项编号
     */
    private Long cartId;
    /**
     * 商品 SPU 编号
     */
    private Long spuId;
    /**
     * 商品 SPU 名称
     */
    private String spuName;
    /**
     * 商品类型（1商品 2服务）
     */
    private Boolean spuType;
    /**
     * 商品 SKU 编号
     */
    private Long skuId;
    /**
     * 商品 SKU 名称
     */
    private String skuName;
    /**
     * 店铺id
     */
    private Long shopId;
    /**
     * 店铺名称
     */
    private String shopName;
    /**
     * 店铺logo
     */
    private String shopLogo;
    /**
     * 订单类目id
     */
    private Long orderCategoryId;
    /**
     * 订单类目名称
     */
    private String orderCategoryName;
    /**
     * 商品图片
     */
    private String picUrl;
    /**
     * 购买数量
     */
    private Integer count;
    /**
     * 商品单位
     */
    private String unit;
    /**
     * 商品成本（单），单位：分
     */
    private Integer expensePrice;
    /**
     * 商品原价（单），单位：分
     */
    private Integer price;
    /**
     * 优惠金额（总），单位：分
     */
    private Integer discountPrice;
    /**
     * 运费金额（总），单位：分
     */
    private Integer deliveryPrice;
    /**
     * 订单调价（总），单位：分
     */
    private Integer adjustPrice;
    /**
     * 应付金额（总），单位：分
     */
    private Integer payPrice;
    /**
     * 实收金额（总），单位：分
     */
    private Integer livePrice;
    /**
     * 退款金额（总），单位：分
     */
    private Integer refundPrice;
    /**
     * 退款状态
     */
    private Integer refundStatus;
    /**
     * 退款时间
     */
    private LocalDateTime refundTime;
    /**
     * 预约类型（1预约 2 加急）
     */
    private Boolean subType;
    /**
     * 预约时间
     */
    private LocalDateTime subTime;

    /**
     * 服务地址
     */
    private String serveAddress;

    /**
     * 服务内容
     */
    private String serveContent;
    /**
     * 属性数组
     */
    private String properties;
    /**
     * 服务信息
     */
    private String serveInfo;
    /**
     * 扩展服务信息，存储额外的服务相关数据
     */
    private String serveExtInfo;
    /**
     * 附加费信息
     */
    private String priceExtInfo;
    /**
     * 版本号（乐观锁）
     */
    private Integer version;

}