package com.yj.bean;

import java.math.BigDecimal;

/**
 * @author yj
 * @create 2020-10-02 19:51
 *
 * Book类表示一本书的信息，包含了书籍的基本属性，如ID、书名、作者、价格、销量、库存、分类和图片路径等。
 */
public class Book {

    // 书籍的唯一标识符
    private Integer id;

    // 书籍的名称
    private String name;

    // 书籍的作者
    private String author;

    // 书籍的价格，使用BigDecimal类型以确保精度
    private BigDecimal price;

    // 书籍的销量
    private Integer sales;

    // 书籍的库存数量
    private Integer stock;

    // 书籍的分类
    private String classification;

    // 书籍的图片路径，默认值为"static/img/default.jpg"
    private String imgPath = "static/img/default.jpg";

    /**
     * 获取书籍的分类
     * @return 书籍的分类
     */
    public String getClassification() {
        return classification;
    }

    /**
     * 设置书籍的分类
     * @param classification 书籍的分类
     */
    public void setClassification(String classification) {
        this.classification = classification;
    }

    /**
     * 获取书籍的ID
     * @return 书籍的ID
     */
    public Integer getId() {
        return id;
    }

    /**
     * 设置书籍的ID
     * @param id 书籍的ID
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * 获取书籍的名称
     * @return 书籍的名称
     */
    public String getName() {
        return name;
    }

    /**
     * 设置书籍的名称
     * @param name 书籍的名称
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取书籍的作者
     * @return 书籍的作者
     */
    public String getAuthor() {
        return author;
    }

    /**
     * 设置书籍的作者
     * @param author 书籍的作者
     */
    public void setAuthor(String author) {
        this.author = author;
    }

    /**
     * 获取书籍的价格
     * @return 书籍的价格
     */
    public BigDecimal getPrice() {
        return price;
    }

    /**
     * 设置书籍的价格
     * @param price 书籍的价格
     */
    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    /**
     * 获取书籍的销量
     * @return 书籍的销量
     */
    public Integer getSales() {
        return sales;
    }

    /**
     * 设置书籍的销量
     * @param sales 书籍的销量
     */
    public void setSales(Integer sales) {
        this.sales = sales;
    }

    /**
     * 获取书籍的库存数量
     * 如果库存数量小于0，则返回0
     * @return 书籍的库存数量
     */
    public Integer getStock() {
        if (stock < 0) stock = 0;
        return stock;
    }

    /**
     * 设置书籍的库存数量
     * 如果库存数量小于0，则将其设置为0
     * @param stock 书籍的库存数量
     */
    public void setStock(Integer stock) {
        if (stock < 0) stock = 0;
        this.stock = stock;
    }

    /**
     * 获取书籍的图片路径
     * @return 书籍的图片路径
     */
    public String getImgPath() {
        return imgPath;
    }

    /**
     * 设置书籍的图片路径
     * 如果传入的图片路径为null或空字符串，则使用默认图片路径"static/img/default.jpg"
     * @param imgPath 书籍的图片路径
     */
    public void setImgPath(String imgPath) {
        if (imgPath == null || "".equals(imgPath)) {
            this.imgPath = "static/img/default.jpg";
        } else {
            this.imgPath = imgPath;
        }
    }

    /**
     * 重写toString方法，返回书籍的详细信息
     * @return 书籍的详细信息字符串
     */
    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", sales=" + sales +
                ", stock=" + stock +
                ", classification='" + classification + '\'' +
                ", imgPath='" + imgPath + '\'' +
                '}';
    }

    /**
     * 无参构造方法
     */
    public Book() {
    }

    /**
     * 全参构造方法
     * @param id 书籍的ID
     * @param name 书籍的名称
     * @param author 书籍的作者
     * @param price 书籍的价格
     * @param sales 书籍的销量
     * @param stock 书籍的库存数量
     * @param classification 书籍的分类
     * @param imgPath 书籍的图片路径
     */
    public Book(Integer id, String name, String author, BigDecimal price, Integer sales, Integer stock, String classification, String imgPath) {
        this.id = id;
        this.name = name;
        this.author = author;
        this.price = price;
        this.sales = sales;
        this.stock = stock;
        this.classification = classification;
        this.imgPath = imgPath;
    }
}