/*
 * Copyright 2023-2033 WanSen AI Team, Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
 * with the License. A copy of the License is located at
 *
 * http://opensource.wansenai.com/apache2.0/
 *
 * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
 * OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
 * and limitations under the License.
 */
package com.wansenai.vo.product;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.wansenai.bo.BigDecimalSerializerBO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
@Schema(description = "商品详情VO")
public class ProductDetailVO {

    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long productId;

    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long productCategoryId;

    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long productUnitId;

    private String productName;

    private String productStandard;

    private String productModel;

    private String productColor;

    private String productUnit;

    @JsonSerialize(using = BigDecimalSerializerBO.class)
    private BigDecimal productWeight;

    private Integer productExpiryNum;

    private String productCategoryName;

    private String remark;

    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer enableSerialNumber;

    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer enableBatchNumber;

    private String warehouseShelves;

    private List<ProductPriceVO> priceList;

    // Extended information
    private String productManufacturer;

    private String otherFieldOne;

    private String otherFieldTwo;

    private String otherFieldThree;

    // Image list information
    private List<ProductImageVO> imageList;

    // 新增字段
    @Schema(description = "商品ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long id;

    @Schema(description = "商品编号")
    private String productNumber;

    @Schema(description = "商品规格")
    private String standard;

    @Schema(description = "商品型号")
    private String model;

    @Schema(description = "商品单位")
    private String unit;

    @Schema(description = "商品分类ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long categoryId;

    @Schema(description = "商品分类名称")
    private String categoryName;

    @Schema(description = "零售价")
    private BigDecimal retailPrice;

    @Schema(description = "最低售价")
    private BigDecimal lowPrice;

    @Schema(description = "预设售价一")
    private BigDecimal salePrice1;

    @Schema(description = "预设售价二")
    private BigDecimal salePrice2;

    @Schema(description = "预设售价三")
    private BigDecimal salePrice3;

    @Schema(description = "批发价")
    private BigDecimal wholesalePrice;

    @Schema(description = "最低采购价")
    private BigDecimal lowPurchasePrice;

    @Schema(description = "默认采购价")
    private BigDecimal defaultPurchasePrice;

    @Schema(description = "状态")
    private Integer status;

    @Schema(description = "创建时间")
    private Date createTime;

    @Schema(description = "创建人")
    private String createBy;

    @Schema(description = "更新时间")
    private Date updateTime;

    @Schema(description = "更新人")
    private String updateBy;
}
