package com.simuwang.logging;

import java.lang.annotation.*;

/**
 * 系统操作日志注解，必须标注在方法上，当类上也被标注时，只取value作为上级模块名
 *
 * @author fpwag
 */
@Target(value = {ElementType.TYPE, ElementType.METHOD})
@Retention(value = RetentionPolicy.RUNTIME)
@Documented
public @interface SystemLog {
    /**
     * 描述
     */
    String value();

    /**
     * 日志类型
     */
    Type type() default Type.QUERY;

    /**
     * 是否保存接口返回结果，默认不保存
     *
     * @return /
     */
    boolean saveResult() default false;

    /**
     * 日志类型
     */
    enum Type {
        /**
         * 查询
         */
        QUERY(1),
        /**
         * 新增
         */
        INSERT(2),
        /**
         * 修改
         */
        UPDATE(3),
        /**
         * 删除
         */
        DELETE(5),
        /**
         * 登录
         */
        LOGIN(6),
        /**
         * 退出登录
         */
        LOGOUT(7),
        /**
         * 导入
         */
        IMPORT(8),
        /**
         * 导出
         */
        EXPORT(9),
        /**
         * 其他
         */
        OTHER(0);

        private final int value;

        Type(int value) {
            this.value = value;
        }

        public int getValue() {
            return this.value;
        }
    }
}
