VisualBindAspect.java 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package jnpf.visualdata.controller.aop;
  2. /**
  3. * @author JNPF开发平台组
  4. * @version V3.1.0
  5. * @copyright 引迈信息技术有限公司(https://www.jnpfsoft.com)
  6. * @date 2021-03-26
  7. */
  8. import jnpf.base.UserInfo;
  9. import jnpf.config.ConfigValueUtil;
  10. import jnpf.database.util.TenantDataSourceUtil;
  11. import jnpf.util.ServletUtil;
  12. import jnpf.util.StringUtil;
  13. import jnpf.util.UserProvider;
  14. import lombok.extern.slf4j.Slf4j;
  15. import org.aspectj.lang.ProceedingJoinPoint;
  16. import org.aspectj.lang.annotation.Around;
  17. import org.aspectj.lang.annotation.Aspect;
  18. import org.aspectj.lang.annotation.Pointcut;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.core.annotation.Order;
  21. import org.springframework.stereotype.Component;
  22. /**
  23. * @author JNPF开发平台组
  24. * @version V3.1.0
  25. * @copyright 引迈信息技术有限公司
  26. * @date 2021/3/15 17:12
  27. */
  28. @Slf4j
  29. @Aspect
  30. @Component
  31. @Order(1)
  32. public class VisualBindAspect {
  33. @Autowired
  34. private ConfigValueUtil configValueUtil;
  35. @Pointcut("within(jnpf.visualdata.controller.VisualCategoryController || jnpf.visualdata.controller.VisualMapController) && (execution(* jnpf.*.controller.VisualCategoryController.list(..)) || execution(* jnpf.*.controller.VisualMapController.dataInfo(..)))")
  36. public void bindDataSource() {
  37. }
  38. /**
  39. * NoDataSourceBind 不需要绑定数据库的注解
  40. *
  41. * @param pjp
  42. * @return
  43. * @throws Throwable
  44. */
  45. @Around("bindDataSource()")
  46. public Object doAroundService(ProceedingJoinPoint pjp) throws Throwable {
  47. if (configValueUtil.isMultiTenancy()) {
  48. String jwtToken = ServletUtil.getRequest().getHeader("Authorization");
  49. if(StringUtil.isEmpty(jwtToken)){
  50. //兼容旧版大屏前端
  51. jwtToken = ServletUtil.getRequest().getParameter("token");
  52. }
  53. UserInfo userInfo = UserProvider.getUser(jwtToken);
  54. if(userInfo.getTenantId() == null){
  55. throw new RuntimeException("租户信息为空: " + jwtToken);
  56. }
  57. //设置租户
  58. TenantDataSourceUtil.switchTenant(userInfo.getTenantId());
  59. }
  60. Object obj = pjp.proceed();
  61. return obj;
  62. }
  63. }