package jnpf.aop; import jnpf.constant.PermissionConstant; import jnpf.permission.service.RoleService; import jnpf.util.UserProvider; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; /** * 角色操作权限 * * @author JNPF开发平台组 YanYu * @version V3.2.0 * @copyright 引迈信息技术有限公司 * @date 2022/2/10 */ @Slf4j @Aspect @Component public class PermissionRoleAspect implements PermissionAdminBase { @Autowired private RoleService roleService; /** * 分级管理切点 */ @Pointcut("within(jnpf.*.controller.*) && @annotation(jnpf.annotation.RolePermission)") public void pointcut() { } /** * 分级管理切点 * * @param pjp * @return * @throws Throwable */ @Around("pointcut()") public Object around(ProceedingJoinPoint pjp) throws Throwable { return PermissionAdminBase.permissionCommon(pjp, this); } @Override public Boolean detailPermission(ProceedingJoinPoint pjp, String operatorUserId, String methodName) { boolean flag = false; switch (methodName) { case PermissionConstant.METHOD_CREATE: case PermissionConstant.METHOD_UPDATE: return true; case PermissionConstant.METHOD_DELETE: return true; default: break; } return true; } /** * 转成组织id字符串 * * @param orgIdsTree * @return */ private String getOrganize(List> orgIdsTree) { StringBuilder orgIds = new StringBuilder(); for (List list : orgIdsTree) { if (list.size() > 0) { String orgId = list.get(list.size() - 1); orgIds.append(orgId + ","); } } return orgIds.toString(); } /** * 全局角色只能超管来操作 * * @param globalMark 全局标识 1:全局 0: 非全局 */ private Boolean checkAdminGlobal(Integer globalMark) { if (globalMark != null && globalMark == 1) { return UserProvider.getUser().getIsAdministrator(); } return false; } }