Browse Source

feat(all): 增加job定时任务配置

dist.1.3.0
zhaoqiaobo 6 months ago
parent
commit
efd7be441b
  1. 81
      blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/aspect/JobAnnotationAspect.java
  2. 1
      blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/job/ExpenseJob.java

81
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;
}
}

1
blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/job/ExpenseJob.java

@ -80,6 +80,7 @@ public class ExpenseJob {
*/
@XxlJob("dayWarehouseExpenseJob")
public ReturnT<String> dayWarehouseExpenseJob(String param) throws Exception {
log.info("dayWarehouseExpenseJob 参数:{}", param);
DateTime statisticsTime = DateUtil.yesterday();
if (StrUtil.isNotEmpty(param)) {
statisticsTime = DateUtil.parseDate(param);

Loading…
Cancel
Save