package com.czg.product.vo;

import cn.hutool.core.convert.Convert;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalTime;
import java.util.List;

/**
 * 商品规格详情
 *
 * @author tankaikai
 * @since 2025-02-19 09:23
 */
@Data
public class ShopProductInfoVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 商品id
     */
    private Long id;
    /**
     * 商品名称
     */
    private String name;
    /**
     * 短标题--促销语
     */
    private String shortTitle;
    /**
     * 封面图url
     */
    private String coverImg;
    /**
     * 商品图集
     */
    private Object images;
    /**
     * 单位名称
     */
    private String unitName;
    /**
     * 原价
     */
    private BigDecimal originPrice;
    /**
     * 销售价
     */
    private BigDecimal salePrice;
    /**
     * 会员价
     */
    private BigDecimal memberPrice;
    /**
     * 是否售罄 1-是 0-否
     */
    private Integer isSoldStock;
    /**
     * 是否自动售罄 1-是 0-否
     */
    private Integer isAutoSoldStock;
    /**
     * 库存数量
     */
    private Integer stockNumber;
    /**
     * 商品类型 single-单规格商品 sku-多规格商品 package-套餐商品 weight-称重商品 coupon-团购券
     */
    private String type;
    /**
     * 套餐内容
     */
    private Object groupSnap;
    /**
     * 套餐类型 0-固定套餐 1-可选套餐
     */
    private Integer groupType;
    /**
     * 是否可售时间 1-是 0-否
     */
    private Integer isSaleTime;
    /**
     * 起售数量
     */
    private Integer suitNum;
    /**
     * 商品规格
     */
    private Object selectSpecInfo;
    /**
     * 打包费
     */
    private BigDecimal packFee;
    /**
     * 商品每周销售日 如：Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
     */
    @JSONField(serialize = false)
    private String days;
    /**
     * 可售卖起始时间
     */
    @JSONField(serialize = false)
    private LocalTime startTime;
    /**
     * 可售卖截止时间
     */
    @JSONField(serialize = false)
    private LocalTime endTime;
    /**
     * 相关推荐商品
     */
    private List<ShopProductVo> relatedRecommendJson;
    @JsonIgnore
    private String relatedRecommend;

    public Object getImages() {
        return JSON.parseArray(Convert.toStr(images, "[]"));
    }

    /**
     * {"口味":[{"甜度":["少甜","中甜","多甜"]},{"辣度":["微辣","重辣","变态辣"]},{"小料":["葱花","香菜","折耳根"]}]}
     */
    public Object getSelectSpecInfo() {
        return JSON.parseObject(Convert.toStr(selectSpecInfo, "{}"));
    }

    public Object getGroupSnap() {
        return JSON.parseArray(Convert.toStr(groupSnap, "[]"));
    }
}
