package jnpf.aop; import jnpf.base.ActionResult; import jnpf.base.UserInfo; import jnpf.constant.MsgCode; import jnpf.util.UserProvider; import org.aspectj.lang.ProceedingJoinPoint; public interface PermissionAdminBase{ /** * 详细的权限判断 * @param pjp AOP切点参数 * @param operatorUserId 操作者对象 */ Boolean detailPermission(ProceedingJoinPoint pjp, String operatorUserId, String methodName); /** * 管理者权限判断 * */ static Object permissionCommon(ProceedingJoinPoint pjp, PermissionAdminBase permissionAdminBase) throws Throwable { // 获取用户信息 UserInfo operatorUser = UserProvider.getUser(); // 是否是管理员 if(operatorUser.getIsAdministrator()){ return pjp.proceed(); }else { // 获取方法名 String methodName = pjp.getSignature().getName(); // 具体方法权限 if(permissionAdminBase.detailPermission(pjp, operatorUser.getUserId(),methodName)){ return pjp.proceed(); } } return ActionResult.fail(MsgCode.FA021.get()); } }