| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- package jnpf.aop;
- import jnpf.constant.PermissionConstant;
- import jnpf.permission.entity.PositionEntity;
- import jnpf.permission.model.position.PositionCrForm;
- import jnpf.permission.model.position.PositionUpForm;
- import jnpf.permission.service.OrganizeService;
- import jnpf.permission.service.PositionService;
- import jnpf.util.PermissionAspectUtil;
- 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;
- /**
- * @author JNPF开发平台组
- * @version V3.1.0
- * @copyright 引迈信息技术有限公司
- * @date 2021/3/15 17:12
- */
- @Slf4j
- @Aspect
- @Component
- public class PermissionPositionAspect implements PermissionAdminBase{
- @Autowired
- private PositionService positionService;
- @Autowired
- private OrganizeService organizeService;
- /**
- * 分级管理切点
- */
- @Pointcut("within(jnpf.*.controller.*) && @annotation(jnpf.annotation.PositionPermission)")
- 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) {
- switch (methodName){
- case PermissionConstant.METHOD_CREATE:
- return PermissionAspectUtil.getPermitByOrgId(
- // 操作目标对象组织ID集合
- ((PositionCrForm) pjp.getArgs()[0]).getOrganizeId(),
- operatorUserId,
- methodName);
- case PermissionConstant.METHOD_UPDATE:
- // 得到岗位信息后,判断是否有修改前的权限
- PositionEntity info = positionService.getInfo(((String) pjp.getArgs()[0]));
- if (PermissionAspectUtil.getPermitByOrgId(
- // 操作目标对象组织ID集合
- info.getOrganizeId(),
- operatorUserId,
- methodName)) {
- return PermissionAspectUtil.getPermitByOrgId(
- // 操作目标对象组织ID集合
- ((PositionUpForm) pjp.getArgs()[1]).getOrganizeId(),
- operatorUserId,
- methodName);
- }
- return false;
- case PermissionConstant.METHOD_DELETE:
- // 获取岗位所关联的组织ID字符串
- String positionId = String.valueOf(pjp.getArgs()[0]);
- String orgIds = organizeService.getInfo(positionService.getInfo(positionId).getOrganizeId()).getId();
- return PermissionAspectUtil.getPermitByOrgId(
- // 操作目标对象组织ID集合
- orgIds,
- operatorUserId,
- PermissionConstant.METHOD_DELETE);
- default:
- return false;
- }
- }
- }
|