package cn.superdesk.uniorder.common.excel.validate.annotion;

import cn.superdesk.uniorder.common.excel.validate.constraint.RelationIsEntryValidator;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * @Description: 发票抬头
 * @Author: linjinyu
 * @CreateDate: 2021/8/26 下午5:38
 * @UpdateUser: linjinyu
 * @UpdateDate: 2021/8/26 下午5:38
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
@Target({TYPE, ANNOTATION_TYPE, FIELD})
//@Retention(RetentionPolicy.RUNTIME)
@Retention(RUNTIME)
@Constraint(validatedBy = {RelationIsEntryValidator.class})
public @interface RelationIsEntry {

	boolean isSuggest() default false;

	/**
	 * 是否强制校验(是否必须)
	 *
	 * @return 是否强制校验的boolean值
	 */
//	boolean required() default true;

	/****************************************** DataBase模式 start ******************************************/
//	/**
//	 * 实体类id字段-默认为id (该值可无)
//	 *
//	 * @return
//	 */
//	String id() default "id";
//	/**
//	 * 注解属性-对应校验字段
//	 *
//	 * @return
//	 */
//	String field();


	/****************************************** Cache  模式 start ******************************************/
	/**
	 * 哪个表或哪个键
	 *
	 * @return
	 */
	String cachePrefix();

	String cacheKey();


	/**
	 * 校验不通过时的报错信息
	 *
	 * @return 校验不通过时的报错信息
	 */
	String message() default "!标准化!^_^信息不标准^_^信息还未入库";

	/**
	 * 将 validator 进行分组,不同 group 中会执行不同的 validator 操作
	 *
	 * @return validator的分类类型
	 */
	Class<?>[] groups() default {};


	/**
	 * 主要是针对bean,很少使用
	 *
	 * @return 负载
	 */
	Class<? extends Payload>[] payload() default {};
}
