From efd7be441befa67b92645c8d7dde8af6880d629a Mon Sep 17 00:00:00 2001 From: zhaoqiaobo <583671871@qq.com> Date: Sat, 28 Sep 2024 17:23:53 +0800 Subject: [PATCH] =?UTF-8?q?feat(all):=20=E5=A2=9E=E5=8A=A0job=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aspect/JobAnnotationAspect.java | 81 +++++++++++++++++++ .../com/logpm/statistics/job/ExpenseJob.java | 1 + 2 files changed, 82 insertions(+) create mode 100644 blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/aspect/JobAnnotationAspect.java diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/aspect/JobAnnotationAspect.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/aspect/JobAnnotationAspect.java new file mode 100644 index 000000000..7d47d7041 --- /dev/null +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/aspect/JobAnnotationAspect.java @@ -0,0 +1,81 @@ +package com.logpm.statistics.aspect; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; +import lombok.AllArgsConstructor; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.springblade.common.cache.CacheNames; +import org.springblade.common.component.MockLoginService; +import org.springblade.core.redis.cache.BladeRedis; +import org.springblade.core.redis.lock.LockType; +import org.springblade.core.redis.lock.RedisLockClient; +import org.springblade.core.tool.utils.ThreadLocalUtil; +import org.springframework.core.env.Environment; +import org.springframework.http.HttpHeaders; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import java.util.Objects; +import java.util.concurrent.TimeUnit; + +@Aspect +@Component +@AllArgsConstructor +public class JobAnnotationAspect { + private final BladeRedis bladeRedis; + private final Environment environment; + private final RedisLockClient redisLockClient; + private final MockLoginService mockLoginService; + + @Around("@annotation(com.xxl.job.core.handler.annotation.XxlJob)") + public Object xxlJobAnnotationMethods(ProceedingJoinPoint joinPoint) throws Throwable { + + + JSONObject jsonObject = mockLogin(); + MockHttpServletRequest mockRequest = new MockHttpServletRequest(); + mockRequest.addHeader("Blade-Auth", "bearer "+jsonObject.get("access_token")); + RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(mockRequest)); + + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.add("Blade-Auth","bearer "+jsonObject.get("access_token") ); + httpHeaders.add( "Authorization", "Basic bG9jYWw6bG9jYWxfc2VjcmV0"); + ThreadLocalUtil.put("bladeContext", httpHeaders); + + DynamicDataSourceContextHolder.push(jsonObject.getString("tenant_id")); + // 执行原方法 + Object result = joinPoint.proceed(); + // 在方法执行后,从数据源上下文中移除租户ID + DynamicDataSourceContextHolder.poll(); + + return result; + + + } + + private JSONObject mockLogin() throws InterruptedException { + + String account ="shujutongbu"; + String tenantId ="627683"; + String key =CacheNames.LOCAL_SERVER_USER+tenantId+":"+account; + String lockKey =key+":lock"; + JSONObject data =bladeRedis.get(key); + if(Objects.isNull(data)){ + boolean flag = redisLockClient.tryLock(lockKey, LockType.FAIR, 5000, 10000, TimeUnit.MILLISECONDS); + if(flag){ + data =bladeRedis.get(key); + if(Objects.isNull(data)){ + data = mockLoginService.mockToken(tenantId,account); + bladeRedis.setEx(key,data,2591990L); + redisLockClient.unLock(lockKey, LockType.FAIR); + } + } + } + return data; + } + + +} diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/job/ExpenseJob.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/job/ExpenseJob.java index b74451276..a9773dea0 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/job/ExpenseJob.java +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/job/ExpenseJob.java @@ -80,6 +80,7 @@ public class ExpenseJob { */ @XxlJob("dayWarehouseExpenseJob") public ReturnT dayWarehouseExpenseJob(String param) throws Exception { + log.info("dayWarehouseExpenseJob 参数:{}", param); DateTime statisticsTime = DateUtil.yesterday(); if (StrUtil.isNotEmpty(param)) { statisticsTime = DateUtil.parseDate(param);