PermissionPositionAspect.java 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package jnpf.aop;
  2. import jnpf.constant.PermissionConstant;
  3. import jnpf.permission.entity.PositionEntity;
  4. import jnpf.permission.model.position.PositionCrForm;
  5. import jnpf.permission.model.position.PositionUpForm;
  6. import jnpf.permission.service.OrganizeService;
  7. import jnpf.permission.service.PositionService;
  8. import jnpf.util.PermissionAspectUtil;
  9. import jnpf.util.UserProvider;
  10. import lombok.extern.slf4j.Slf4j;
  11. import org.aspectj.lang.ProceedingJoinPoint;
  12. import org.aspectj.lang.annotation.Around;
  13. import org.aspectj.lang.annotation.Aspect;
  14. import org.aspectj.lang.annotation.Pointcut;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Component;
  17. /**
  18. * @author JNPF开发平台组
  19. * @version V3.1.0
  20. * @copyright 引迈信息技术有限公司
  21. * @date 2021/3/15 17:12
  22. */
  23. @Slf4j
  24. @Aspect
  25. @Component
  26. public class PermissionPositionAspect implements PermissionAdminBase{
  27. @Autowired
  28. private PositionService positionService;
  29. @Autowired
  30. private OrganizeService organizeService;
  31. /**
  32. * 分级管理切点
  33. */
  34. @Pointcut("within(jnpf.*.controller.*) && @annotation(jnpf.annotation.PositionPermission)")
  35. public void pointcut() {
  36. }
  37. /**
  38. * 分级管理切点
  39. *
  40. * @param pjp
  41. * @return
  42. * @throws Throwable
  43. */
  44. @Around("pointcut()")
  45. public Object around(ProceedingJoinPoint pjp) throws Throwable {
  46. return PermissionAdminBase.permissionCommon(pjp, this);
  47. }
  48. @Override
  49. public Boolean detailPermission(ProceedingJoinPoint pjp, String operatorUserId, String methodName) {
  50. switch (methodName){
  51. case PermissionConstant.METHOD_CREATE:
  52. return PermissionAspectUtil.getPermitByOrgId(
  53. // 操作目标对象组织ID集合
  54. ((PositionCrForm) pjp.getArgs()[0]).getOrganizeId(),
  55. operatorUserId,
  56. methodName);
  57. case PermissionConstant.METHOD_UPDATE:
  58. // 得到岗位信息后,判断是否有修改前的权限
  59. PositionEntity info = positionService.getInfo(((String) pjp.getArgs()[0]));
  60. if (PermissionAspectUtil.getPermitByOrgId(
  61. // 操作目标对象组织ID集合
  62. info.getOrganizeId(),
  63. operatorUserId,
  64. methodName)) {
  65. return PermissionAspectUtil.getPermitByOrgId(
  66. // 操作目标对象组织ID集合
  67. ((PositionUpForm) pjp.getArgs()[1]).getOrganizeId(),
  68. operatorUserId,
  69. methodName);
  70. }
  71. return false;
  72. case PermissionConstant.METHOD_DELETE:
  73. // 获取岗位所关联的组织ID字符串
  74. String positionId = String.valueOf(pjp.getArgs()[0]);
  75. String orgIds = organizeService.getInfo(positionService.getInfo(positionId).getOrganizeId()).getId();
  76. return PermissionAspectUtil.getPermitByOrgId(
  77. // 操作目标对象组织ID集合
  78. orgIds,
  79. operatorUserId,
  80. PermissionConstant.METHOD_DELETE);
  81. default:
  82. return false;
  83. }
  84. }
  85. }