package com.kmall.common.utils;

import com.kmall.common.utils.R;
import org.apache.commons.lang.StringUtils;

import java.util.Map;

public class ValidatorUtil {

    /**
     * 非空校验
     *
     * @param awaitValideField 要验证的字段 <code>{"字段名","错误消息"}</code>
     * @param valideDate       验证数据
     * @return
     */
    public static R isEmpty(Map<String, Object> awaitValideField, Map<String, Object> valideDate) {
        return isEmpty(awaitValideField, valideDate, null, null);
    }


    /**
     * 非空校验
     *
     * @param awaitValideField 要验证的字段 <code>{"字段名","错误消息"}</code>
     * @param valideDate       验证数据
     * @param code             验证失败消息码
     * @param msg              验证失败消息
     * @return
     */
    public static R isEmpty(Map<String, Object> awaitValideField, Map<String, Object> valideDate, String code, String msg) {

        code = StringUtils.isBlank(code) ? "500" : code;
        msg = StringUtils.isBlank(msg) ? "未知异常，请联系管理员" : msg;

        /**
         * 验证数据为空
         */
        if (valideDate == null) {
            return R.ok();
        }

        /**
         * 没有要验证的
         */
        if (awaitValideField == null) {
            return R.ok();
        }

        for (String key : awaitValideField.keySet()) {
            //验证数据没有要验证的字段, 或有要验证的字段,但字段为空
            if (!valideDate.containsKey(key) ||
                    (valideDate.containsKey(key) && StringUtils.isBlank(String.valueOf(valideDate.get(key)))) ||
                    String.valueOf(valideDate.get(key)).equals("null")) {
                return R.error(awaitValideField.get(key) + "不能为空！");
            }
        }
        return R.ok();
    }

}
