package com.vci.starter.web.annotation.permission; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 权限控制的注解 * 用于自动控制功能权限,按钮权限,和数据权限--数据权限会通过AOP的方式将数据权限的规则注入到QueryMap中 * @author weidy * */ @Target({java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface VciPermission { /** * 所属功能模块key--与功能菜单中的编号对应 * @return */ String[] modelKey() default ""; /** * 所属按钮key--会自动注入到平台的操作类型中 * @return */ String[] methodKey() default ""; /** * 所属按钮的名称 * @return */ String[] methodName() default ""; /** * 所属按钮的名称 * @return */ String[] methodAlias() default ""; /** * 所属按钮的描述 * @return */ String[] methodDesc() default ""; /** * 所属按钮在菜单中的排序 * @return */ int[] methodOrder() default 0; /** * 固定的角色--角色的编码,多个使用逗号分隔 * 支持表达式${lt}角色的类型值,表示访问的用户的角色类型必须小于某种类型,${eq}表示相等,${more}表示大于 * *可以用于做通配符 * @return */ String defineRole() default ""; /** * 允许的密级等级 * @return */ int secretGrade() default -1; /** * 允许ip密级 * @return */ String ipSecret() default ""; /** * 方法的权限控制,如果为空时取defineRole的值 * 固定的角色--角色的编码,多个使用逗号分隔 * 支持表达式${lt}角色的类型值,表示访问的用户的角色类型必须小于某种类型,${eq}表示相等,${more}表示大于 * *可以用于做通配符 * @return */ String defineRoleForMethod() default ""; /** * 方法的权限密级控制,如果为空时取secretGrade的值 * @return */ int secretGradeForMethod() default -2; /** * 方法的权限IP控制,如果为空时取ipSecret的值 * @return */ String ipSecretForMethod() default ""; /** * 数据权限判断所需的业务类型 * @return */ String dataPermissionBtmType() default ""; /** * 数据权限判断所需的方法key。默认等于methodKey,所以不用设置 * @return */ String[] dataPermissionMethodKey() default ""; /** * 是否控制数据权限,如果在config.properties里配置了right.switch后,默认值会处理为配置的值 * @return */ boolean controlDataPermission() default false; /** * 是否控制功能权限,如果在config.properties里配置了function.switch后,默认值会处理为配置的值 * @return */ boolean controlModelPermission() default true; /** * 是否控制按钮权限,如果在config.properties里配置了ui.right.switch后,默认值会处理为配置的值 * @return */ boolean controlMethodPermission() default true; /** * 用户密级 * none--非密 * inner--内部 * secret--秘密 * privacy--机密 * @author weidy * */ public static enum UserSecretGrade{ none,inner,secret,privacy } }