package com.seer.teach.mall.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.seer.teach.common.entity.BaseEntity;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 *  商品表实体类
 * </p>
 *
 * @author Captain
 * @since 2025-06-12
 */
@Getter
@Setter
@TableName(value = "mall_goods", autoResultMap = true)
@ToString
public class GoodsEntity extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 商品分类ID
     */
    @TableField("category_id")
    private Integer categoryId;

    /**
     * 商品编号
     */
    @TableField("goods_sn")
    private String goodsSn;

    /**
     * 商品名称
     */
    @TableField("name")
    private String name;

    /**
     * 品牌ID
     */
    @TableField("brand_id")
    private Integer brandId;

    /**
     * 商品关键字，以逗号分隔
     */
    @TableField("keywords")
    private String keywords;

    /**
     * 商品简介
     */
    @TableField("goods_brief")
    private String goodsBrief;

    /**
     * 商品详细介绍
     */
    @TableField("goods_desc")
    private String goodsDesc;

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

    /**
     * 商家用户ID
     */
    @TableField("merchant_user_id")
    private Long merchantUserId;

    @TableField("sort_order")
    private Integer sortOrder;

    @TableField("is_new")
    private Integer isNew;

    /**
     * 商品价格
     *
     */
    @TableField("price")
    private BigDecimal price;

    /**
     * 市场价
     *
     */
    @TableField("market_price")
    private BigDecimal marketPrice;
    /**
     * 成本价
     *
     */
    @TableField("cost_price")
    private BigDecimal costPrice;
    /**
     * 库存
     */
    @TableField("stock")
    private Long stock;

    /**
     * 商品主图
     */
    @TableField("primary_pic_url")
    private String primaryPicUrl;

    /**
     * 商品图片列表
     */
    @TableField(value = "list_pic_url",typeHandler = JacksonTypeHandler.class)
    private List<String> listPicUrl;

    /**
     * 商品规格类型：0-单规格 1-多规格
     */
    @TableField("spec_type")
    private Integer specType;

    /**
     * 销量
     */
    @TableField("sales_count")
    private Long salesCount;

    /**
     * 虚拟销量
     */
    @TableField("virtual_sell_volume")
    private Long virtualSellVolume;

    /**
     * 浏览数
     */
    @TableField("browse_count")
    private Long browseCount;

    /**
     * 收藏数
     */
    @TableField("collect_count")
    private Long collectCount;

    /**
     * 配送方式：0-商家发货 1-自提
     */
    @TableField("delivery_type")
    private Integer deliveryType;

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

    /**
     * 物品类型（对应订单主表物品类型）: bm000001 文件  bm000002 数码产品  bm000003 生活用品  bm000004 食品  bm000005 服饰  bm000006 其他  bm000007 生鲜类  bm000008 易碎品  bm000009 液体
     * 必选
     */
    @TableField("goods_type")
    private String goodsType;

    /**
     * 上架时间
     */
    @TableField("on_sale_time")
    private LocalDateTime onSaleTime;

    /**
     * 下架时间
     */
    @TableField("off_sale_time")
    private LocalDateTime offSaleTime;

    /**
     * 是否虚拟产品：0-否 1-是
     */
    @TableField("is_virtual")
    private Integer isVirtual;

    /**
     * 商品的状态：0-待审核 1-审核通过，2：审核拒绝
     */
    @TableField("status")
    private Integer status;

    /**
     * 是否在售：0-否 1-是
     */
    @TableField("is_on_sale")
    private Integer isOnSale;

    /**
     * 是否热销：0-否 1-是
     */
    @TableField("is_hot")
    private Integer isHot;

    /**
     * 是否特价优惠：0-否 1-是
     */
    @TableField("is_special_offer")
    private Integer isSpecialOffer;

    /**
     * 是否精品推荐：0-否 1-是
     */
    @TableField("is_featured_recommend")
    private Integer isFeaturedRecommend;

    /**
     * 商品是否为限量商品，1 表示是，0 表示不是
     */
    @TableField("is_limited")
    private Integer isLimited;
}