PermissionRoleAspect.java 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package jnpf.aop;
  2. import jnpf.constant.PermissionConstant;
  3. import jnpf.permission.service.RoleService;
  4. import jnpf.util.UserProvider;
  5. import lombok.extern.slf4j.Slf4j;
  6. import org.aspectj.lang.ProceedingJoinPoint;
  7. import org.aspectj.lang.annotation.Around;
  8. import org.aspectj.lang.annotation.Aspect;
  9. import org.aspectj.lang.annotation.Pointcut;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Component;
  12. import java.util.List;
  13. /**
  14. * 角色操作权限
  15. *
  16. * @author JNPF开发平台组 YanYu
  17. * @version V3.2.0
  18. * @copyright 引迈信息技术有限公司
  19. * @date 2022/2/10
  20. */
  21. @Slf4j
  22. @Aspect
  23. @Component
  24. public class PermissionRoleAspect implements PermissionAdminBase {
  25. @Autowired
  26. private RoleService roleService;
  27. /**
  28. * 分级管理切点
  29. */
  30. @Pointcut("within(jnpf.*.controller.*) && @annotation(jnpf.annotation.RolePermission)")
  31. public void pointcut() {
  32. }
  33. /**
  34. * 分级管理切点
  35. *
  36. * @param pjp
  37. * @return
  38. * @throws Throwable
  39. */
  40. @Around("pointcut()")
  41. public Object around(ProceedingJoinPoint pjp) throws Throwable {
  42. return PermissionAdminBase.permissionCommon(pjp, this);
  43. }
  44. @Override
  45. public Boolean detailPermission(ProceedingJoinPoint pjp, String operatorUserId, String methodName) {
  46. boolean flag = false;
  47. switch (methodName) {
  48. case PermissionConstant.METHOD_CREATE:
  49. case PermissionConstant.METHOD_UPDATE:
  50. return true;
  51. case PermissionConstant.METHOD_DELETE:
  52. return true;
  53. default:
  54. break;
  55. }
  56. return true;
  57. }
  58. /**
  59. * 转成组织id字符串
  60. *
  61. * @param orgIdsTree
  62. * @return
  63. */
  64. private String getOrganize(List<List<String>> orgIdsTree) {
  65. StringBuilder orgIds = new StringBuilder();
  66. for (List<String> list : orgIdsTree) {
  67. if (list.size() > 0) {
  68. String orgId = list.get(list.size() - 1);
  69. orgIds.append(orgId + ",");
  70. }
  71. }
  72. return orgIds.toString();
  73. }
  74. /**
  75. * 全局角色只能超管来操作
  76. *
  77. * @param globalMark 全局标识 1:全局 0: 非全局
  78. */
  79. private Boolean checkAdminGlobal(Integer globalMark) {
  80. if (globalMark != null && globalMark == 1) {
  81. return UserProvider.getUser().getIsAdministrator();
  82. }
  83. return false;
  84. }
  85. }