package cn.freemud.entities.product;

import cn.freemud.entities.dto.BindingCouponTypeDto;
import cn.freemud.entities.dto.GetMenuResponseDto;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * @author Clover.z
 * @Date 2021/10/29
 * @Desc
 */
@Data
public class ProductBean {

    private String barcode;
    private String brandId;
    private String brandName;
    private String category;
    private String categoryName;
    private String companyId;

    /**
     * 加料最大限购
     */
    private Integer maxNum;

    /**
     * 加料最小限购
     */
    private Integer minNum;
    private String customerCode;
    /**
     * 最终价格 单位分
     */
    private Long finalPrice;
    /**
     * 是否是SKU商品  1是0否
     */
    private Integer isSkuProduct;
    private String name;
    private String foreignName;
    /**
     * 原始价格 单位分
     */
    private Long originalPrice;
    /**
     * 包装费 单位分
     */
    private Long packPrice;

    private String picture;
    private String pid;
    private Integer pknumber;
    private String productionLocation;
    private String remark;
    private Integer saleCount;
    private String sellTimeName;
    private Integer sequence;
    private String sourceChannel;
    private String specification;
    private Integer status;
    private Integer stock;
    private Integer stockLimit;
    /**
     * type=10 多规格  type=1 单规格
     */
    private int type;
    /**
     * 是否是称重商品 1、表示为称重
     */
    private Integer weightType;
    /**
     * 重量,最多四位小数，单位kg
     */
    private Double weight;
    private String unit;
    private int updateStatus;
    private boolean valid;
    private int version;
    private List<GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean.ProductLabelNameListBean> labelNames;
    private List<GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean.ProductAttributeGroupListBean> productAttributeGroupList;
    private List<?> productGroupList;
    private List<GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean.ProductPictureListBean> productPictureList;
    private List<?> productSpecification;
    private List<?> sellTimeList;
    private List<?> specificationList;
    //SKU
    private List<GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean.SkuProductBean> skuList;
    //规格信息
    private List<GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean.SpecificationGroupBean> specificationGroupList;
    //Sku 规格 如果 当前是sku 则有值
    private List<GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean.SkuProductBean.SkuSpecValue> skuSpecValues;

    /**
     * 虚拟商品 绑定的券信息
     */
    private List<BindingCouponTypeDto> productBindingCouponTypes;

    @NoArgsConstructor
    @Data
    public static class SkuProductBean {
        private Long finalPrice;
        private Long originalPrice;
        private String productName;
        private String foreignProductName;
        private Integer productType;
        private Integer sequence;
        private String skuCode;
        private String skuId;

        private Integer status;
        //以下两个字段 1.5.4新加
        private Integer stockLimit;
        private Integer stockQty;
        //sku商品包装费 1.5.4新加
        private Long packPrice ;
        private List<GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean.SkuProductBean.SkuSpecValue> skuSpecValues;

        @NoArgsConstructor
        @Data
        public static class SkuSpecValue {
            private String productId;
            private Integer sequence;
            private String specId;
            private String specName;
            private String foreignSpecName;
            private String specValue;
            private String foreignSpecValue;
            private String specValueId;
        }
    }

    @NoArgsConstructor
    @Data
    public static class SpecificationGroupBean {
        private String partnerId;
        private Integer sequence;
        private String specId;
        private String specName;
        private String foreignSpecName;
        private List<GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean.SpecificationGroupBean.SpecValueVo> specValueVos;

        @NoArgsConstructor
        @Data
        public static class SpecValueVo {
            private Integer sequence;
            private String specId;
            private String specValue;
            private String foreignSpecValue;
            private String specValueId;
        }
    }

    @NoArgsConstructor
    @Data
    public static class ProductLabelNameListBean {
        private String id;
        private String name;
        private String foreignName;
        private String partnerId;
        List<?> productList;
        private String storeId;
        private String type;
    }

    @NoArgsConstructor
    @Data
    public static class ProductAttributeGroupListBean {
        /**
         * attributeName : 加料
         * attributeType : 1
         * attributeValues : [{"attributeValue":"","id":0,"price":0,"sequence":0,"status":0}]
         */

        /**
         * 属性名称
         */
        private String attributeName;

        private String foreignAttributeName;


        /**
         * 属性类型
         */
        private Integer attributeType;
        /**
         * 属性详细信息
         */
        private List<GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean.ProductAttributeGroupListBean.AttributeValueBean> attributeValues;

        @NoArgsConstructor
        @Data
        public static class AttributeValueBean {
            /**
             * attributeValue :
             * id : 0
             * price : 0
             * sequence : 0
             * status : 0
             */
            /**
             * 属性值
             */
            private String attributeId;

            private String attributeValue;

            private String foreignAttributeValue;
            /**
             * 属性ID
             */
            private Long id;
            /**
             *
             */
            private Long price;
            private Integer sequence;
            private Integer status;
        }
    }

    @NoArgsConstructor
    @Data
    public static class ProductPictureListBean {
        /**
         * pictureId : 107901339444445753
         * productId : 107901318808470072
         * sequence : 0
         * type : default
         * url : http://ojcpa0rpt.bkt.clouddn.com/xianfengfruit_DishPool_default_30b5f0ca-399a-4be3-9063-12a3d2622a38_1513952518.jpg
         */

        private String pictureId;
        private String productId;
        private String sequence;
        private String type;
        private String url;
    }

}
