package com.qmth.sop.business.sync;

import com.qmth.sop.common.enums.ExceptionResultEnum;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.Objects;

/**
 * @Description: 同步共用方法
 * @Author: CaoZixuan
 * @Date: 2023-11-14
 */
@Component
public class CommonUtils {

    /**
     * 校验参数值并返回（字符型）
     *
     * @param value        参数值
     * @param defaultValue 默认值
     * @param require      是否必填（true：是，false：否）
     * @param name         参数名称
     */
    public String validParam(String value, String defaultValue, boolean require, String name) {
        if (require && StringUtils.isAllBlank(value, defaultValue)) {
            throw ExceptionResultEnum.ERROR.exception((StringUtils.isBlank(name) ? "" : name) + "值必填");
        }
        return StringUtils.isBlank(value) ? defaultValue : value;

    }

    /**
     * 校验参数值并返回（Long型）
     *
     * @param value        参数值
     * @param defaultValue 默认值
     * @param require      是否必填（true：是，false：否）
     * @param name         参数名称
     */
    public Long validParam(Long value, Long defaultValue, boolean require, String name) {
        if (require && Objects.isNull(value) && Objects.isNull(defaultValue)) {
            throw ExceptionResultEnum.ERROR.exception((StringUtils.isBlank(name) ? "" : name) + "值必填");
        }
        return Objects.isNull(value) ? defaultValue : value;
    }

    /**
     * 校验参数值并返回 （布尔型）
     *
     * @param value        参数值
     * @param defaultValue 默认值
     * @param require      是否必填
     * @param name         描述
     */
    public Boolean validParam(Boolean value, Boolean defaultValue, Boolean require, String name) {
        if (require && value == null && defaultValue == null) {
            throw ExceptionResultEnum.ERROR.exception((StringUtils.isBlank(name) ? "" : name) + "值必填");
        }
        return value == null ? defaultValue : value;
    }
}
