swagger-ui枚举类说明注解扩展

时间:2025-03-16 07:12:10

1.创建API枚举注解类,代码如下


import ;

import ;
import ;
import ;
import ;

/**
 * @Description:枚举类字段属性的注解
 * @Author: tarzan Liu
 * @Company: 华夏天信研究院
 * @Date: 2020/10/31 14:24
 */
@Target({})
@Retention()
public @interface ApiModelPropertyEnum {

    /**
     * 枚举类对象
     *
     * @return
     */
    Class<? extends BaseEnum> value();

    String example() default "";

    boolean required() default true;

    String dataType() default "";

    String enumDesc() default "";

}

2.创建需要引用的基础BaseEnum 枚举类


import ;

/**
 * @Description: 基础枚举
 * @Author: tarzan Liu
 * @Company: 华夏天信研究院
 * @Date: 2020/10/28 9:27
 */
public interface BaseEnum {

    /**
     * 获取枚举类的值
     *
     * @return Integer
     */
    Object getValue();

    /**
     * 获取枚举类的说明
     *
     * @return String
     */
    String getDesc();

    /**
     * 比较参数是否与枚举类的value相同
     *
     * @param value
     * @return boolean
     */
    default boolean equalsValue(Object value) {
        return (getValue(), value);
    }

    /**
     * 比较枚举类是否相同
     *
     * @param baseEnum
     * @return boolean
     */
    default boolean equals(BaseEnum baseEnum) {
        return (getValue(), ()) && (getDesc(), ());
    }

    /**
     * @Description:返回枚举类的说明
     * @Date: 2020/11/7 16:54
     */
    static String getInfo(Class<? extends BaseEnum> clazz) {
        BaseEnum[] enums = ();
        String enumStr = " [ ";
        for (BaseEnum e : enums) {
            enumStr = enumStr + () + " - " + ()+";";
        }
        enumStr = enumStr + "]";
        return enumStr;
    }


}

3.创建所需要的枚举类继承基础BaseEnum 枚举类


import ;

/**
 * @Description:文件服务枚举类
 * @Author: tarzan LiU
 * @Company: 华夏天信研究院
 * @Date: 2020/11/25 11:13
 */
public enum FileServiceTypeEnum implements BaseEnum {

    /**
     * 本地文件服务
     */
    LOCAL(1, , "本地文件服务"),

    /**
     * 阿里OSS文件服务
     */
    ALI_OSS(2, FileServiceNameConst.ALI_OSS, "阿里OSS文件服务"),

    /**
     * 七牛文件服务
     */
    QI_NIU_OSS(3, FileServiceNameConst.QI_NIU_OSS, "七牛文件服务"),

    /**
     * minio文件服务
     */
    MINIO_OSS(4, FileServiceNameConst.MINIO_OSS, "minio文件服务");

    private Integer locationType;

    private String serviceName;

    private String desc;

    FileServiceTypeEnum(Integer locationType, String serviceName, String desc) {
         = locationType;
         = serviceName;
         = desc;
    }

    public Integer getLocationType() {
        return locationType;
    }

    public String getServiceName() {
        return serviceName;
    }
    @Override
    public Integer getValue() {
        return ;
    }

    @Override
    public String getDesc() {
        return ;
    }
}

4.对象上使用自定义注解


import ;
import ;
import ;
import ;


@Data
public class UploadVO {

    @ApiModelProperty(value = "原文件名称")
    private String fileName;
    @ApiModelProperty(value = "新文件名称")
    private String newFileName;
    @ApiModelProperty(value = "url")
    private String url;
    @ApiModelProperty(value = "filePath")
    private String filePath;
    @ApiModelProperty(value = "文件大小")
    private Long fileSize;
    @ApiModelPropertyEnum(enumDesc = "文件位置",value = )
    private Integer fileLocationType;
    @ApiModelProperty("文件id")
    private Long id;
}

 

相关文章