package com.fjhx.utils;

import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.ObjectUtil;

import java.math.BigDecimal;

public class Assert {

    /**
     * 断言client返回成功
     *
     * @param r 返回结果集
     */
    public static <T> T result(R<T> r) {
        Assert.eqTrue(r.isSuccess(), r.getMsg());
        return r.getData();
    }

    /**
     * 断言为空
     *
     * @param obj    参数
     * @param errStr 异常提示
     */
    public static void empty(Object obj, String errStr) {
        if (ObjectUtil.isNotEmpty(obj)) {
            throw new ServiceException(errStr);
        }
    }

    /**
     * 断言不为空
     *
     * @param obj    参数
     * @param errStr 异常提示
     */
    public static void notEmpty(Object obj, String errStr) {
        if (ObjectUtil.isEmpty(obj)) {
            throw new ServiceException(errStr);
        }
    }

    /**
     * 断言为0
     *
     * @param integer 参数
     * @param errStr  异常提示
     */
    public static void eqZero(Integer integer, String errStr) {
        if (integer != 0) {
            throw new ServiceException(errStr);
        }
    }

    /**
     * 断言为0
     *
     * @param integer 参数
     * @param errStr  异常提示
     */
    public static void eqZero(Long integer, String errStr) {
        if (integer != 0) {
            throw new ServiceException(errStr);
        }
    }

    /**
     * 断言为1
     *
     * @param along 参数
     * @param errStr  异常提示
     */
    public static void eqOne(Long along, String errStr) {
        if (along != 1) {
            throw new ServiceException(errStr);
        }
    }

    /**
     * 断言为1
     *
     * @param integer 参数
     * @param errStr  异常提示
     */
    public static void eqOne(Integer integer, String errStr) {
        if (integer != 1) {
            throw new ServiceException(errStr);
        }
    }

    /**
     * 断言为真
     *
     * @param flag   参数
     * @param errStr 异常提示
     */
    public static void eqTrue(Boolean flag, String errStr) {
        if (flag == null || flag.equals(false)) {
            throw new ServiceException(errStr);
        }
    }

    /**
     * 断言大于0
     *
     * @param bigDecimal 参数
     * @param errStr     异常提示
     */
    public static void gtZero(BigDecimal bigDecimal, String errStr) {
        if (bigDecimal == null || BigDecimal.ZERO.compareTo(bigDecimal) > 0) {
            throw new ServiceException(errStr);
        }
    }

    /**
     * 断言大于等于0
     *
     * @param bigDecimal 参数
     * @param errStr     异常提示
     */
    public static void geZero(BigDecimal bigDecimal, String errStr) {
        if (bigDecimal == null || BigDecimal.ZERO.compareTo(bigDecimal) >= 0) {
            throw new ServiceException(errStr);
        }
    }


    /**
     * 断言大于0
     *
     * @param integer 参数
     * @param errStr  异常提示
     */
    public static void gtZero(Integer integer, String errStr) {
        if (integer == null || integer <= 0) {
            throw new ServiceException(errStr);
        }
    }


    /**
     * 验证id是否正确
     *
     * @param id     参数
     * @param errStr 异常提示
     */
    public static void isAaaignId(Object id, String errStr) {
        if (id == null || id.toString().length() != 19) {
            throw new ServiceException(errStr);
        }
    }

}
