package com.czg.product.entity;

import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalTime;

/**
 * 商品
 *
 * @author Tankaikai tankaikai@aliyun.com
 * @since 1.0 2025-02-16
 */
@Data
@Table("tb_product")
public class Product implements Serializable {

    @Serial
	private static final long serialVersionUID = 1L;

	/**
	* id
	*/
	@Id(keyType = KeyType.Auto)
	private Long id;
	/**
	 * 同步id
	 */
	private Long syncId;
	/**
	* 商品分类
	*/
	private Long categoryId;
	/**
	* 商品规格
	*/
	private Long specId;
	/**
	* 单位Id
	*/
	private Long unitId;
	/**
	 * 店铺id
	 */
	private Long shopId;
	/**
	* 商品名称
	*/
	private String name;
	/**
	* 短标题--促销语
	*/
	private String shortTitle;
	/**
	* 商品类型 single-单规格商品 sku-多规格商品 package-套餐商品  weight-称重商品 coupon-团购券
	*/
	private String type;
	/**
	* 0 固定套餐 1可选套餐
	*/
	private Integer groupType;
	/**
	* 包装费
	*/
	private BigDecimal packFee;
	/**
	* 商品封面图
	*/
	private String coverImg;
	/**
	* 商品图片（第一张为缩略图，其他为详情）
	*/
	private String images;
	/**
	* 套餐内容
	*/
	private String groupSnap;
	/**
	* 称重 价格/千克
	*/
	private String weight;
	/**
	* 是否允许临时改价
	*/
	private Integer isAllowTempModifyPrice;
	/**
	* 周 数组 'Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday'
	*/
	private String days;
	/**
	* 可用开始时间
	*/
	private LocalTime startTime;
	/**
	* 可用结束时间
	*/
	private LocalTime endTime;
	/**
	* 选中规格
	*/
	private String selectSpecInfo;
	/**
	* 排序
	*/
	private Integer sort;
	/**
	* 是否热销
	*/
	private Integer isHot;
	/**
	* 是否自动售罄
	*/
	private Integer isAutoSoldStock;
    /**
     * 退菜是否退库存 1退菜退库存 2仅退菜不退库存 3每次询问-退菜后弹窗提示
     */
    private Integer refundMode;
	/**
	* 是否售罄
	*/
	private Integer isSoldStock;
	/**
	* 团购卷分类，可有多个分类
	*/
	private String groupCategoryId;
	/**
	* 是否上架
	*/
	private Integer isSale;
	/**
	 * 相关推荐
	 */
	private String relatedRecommend;
	/**
	* 创建时间
	*/
	@Column(onInsertValue = "now()")
	private LocalDateTime createTime;
	/**
	* 更新时间
	*/
	@Column(onInsertValue = "now()", onUpdateValue = "now()")
	private LocalDateTime updateTime;
	/**
	* 逻辑删除
	*/
	private Integer isDel;
}