package com.hdkj.lt.base.annotations;

import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.hdkj.lt.base.serializer.DecimalFormatJsonDeserializer;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.math.RoundingMode;

/**
 * @Description: 反序列化时格式化小数类型
 * @Author: wenhao
 * @Create: 2022/10/18 14:05
 * @Version: 1.0
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.METHOD})
@JacksonAnnotationsInside
@JsonDeserialize(using = DecimalFormatJsonDeserializer.class)
public @interface DecimalFormat {

    /**
     * 小数点后保留的位数
     *
     * @return
     */
    int scale() default 2;

    /**
     * 是否抛出异常，不抛出异常但是出现了异常的情况会返回默认值
     *
     * @return
     */
    boolean isThrowException() default true;

    /**
     * 默认值，值不是数字或空字符串的情况返回该值
     */
    double defaultVal() default 0.0;

    /**
     * 格式化的规则，默认四舍五入
     */
    RoundingMode roundMode() default RoundingMode.HALF_UP;

    /**
     * 是否保留无效0后缀
     *
     * @return
     */
    boolean isTrailingZeros() default false;

}
