diff --git a/afis-recall-web/pom.xml b/afis-recall-web/pom.xml
index 336f336..f51bb4c 100644
--- a/afis-recall-web/pom.xml
+++ b/afis-recall-web/pom.xml
@@ -23,6 +23,13 @@
1.1.22
+
+
+ com.xuxueli
+ xxl-job-core
+ 2.3.0
+
+
com.wabestway.recall
afis-recall-api
diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/jobtask/GenVideoJobHandler.java b/afis-recall-web/src/main/java/com/wabestway/recall/jobtask/GenVideoJobHandler.java
new file mode 100644
index 0000000..b229a24
--- /dev/null
+++ b/afis-recall-web/src/main/java/com/wabestway/recall/jobtask/GenVideoJobHandler.java
@@ -0,0 +1,23 @@
+package com.wabestway.recall.jobtask;
+
+import com.wabestway.recall.trace.service.RecallOrderApiService;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Slf4j
+@Component
+public class GenVideoJobHandler {
+ @Autowired
+ private RecallOrderApiService recallOrderApiService;
+
+ @XxlJob("VideoGenJobHandler")
+ public ReturnT genRecallVideo() {
+ log.info("[定时器:回溯视频]-开始执行");
+ recallOrderApiService.traceVideo();
+ log.info("[定时器:回溯视频]-执行完成");
+ return ReturnT.SUCCESS;
+ }
+}
diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/jobtask/XXLJobConfig.java b/afis-recall-web/src/main/java/com/wabestway/recall/jobtask/XXLJobConfig.java
new file mode 100644
index 0000000..9a65e8a
--- /dev/null
+++ b/afis-recall-web/src/main/java/com/wabestway/recall/jobtask/XXLJobConfig.java
@@ -0,0 +1,47 @@
+package com.wabestway.recall.jobtask;
+
+import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class XXLJobConfig {
+
+ private Logger logger = LoggerFactory.getLogger(XXLJobConfig.class);
+
+ @Value("${xxl.job.admin.addresses}")
+ private String adminAddresses;
+
+ @Value("${xxl.job.accessToken}")
+ private String accessToken;
+
+ @Value("${xxl.job.executor.appname}")
+ private String appname;
+
+ @Value("${xxl.job.executor.port:-1}")
+ private int port;
+
+ @Value("${xxl.job.executor.logpath}")
+ private String logPath;
+
+ @Value("${xxl.job.executor.logretentiondays}")
+ private int logRetentionDays;
+
+ @Bean
+ public XxlJobSpringExecutor xxlJobExecutor() {
+ logger.info(">>>>>>>>>>> xxl-job config init.");
+ XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
+ xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
+ xxlJobSpringExecutor.setAppname(appname);
+ xxlJobSpringExecutor.setPort(port);
+ xxlJobSpringExecutor.setAccessToken(accessToken);
+ xxlJobSpringExecutor.setLogPath(logPath);
+ xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
+
+ return xxlJobSpringExecutor;
+ }
+
+}
\ No newline at end of file
diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallApiApiServiceImpl.java b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallApiApiServiceImpl.java
index 0344171..4f1c229 100644
--- a/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallApiApiServiceImpl.java
+++ b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallApiApiServiceImpl.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.wabestway.commons.http.Paging;
import com.wabestway.commons.http.ResObj;
import com.wabestway.recall.util.HeaderDataUtil;
+import com.wabestway.recall.util.ShortAppKeyGenerator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.BeanUtils;
import com.wabestway.ins.utils.UUIDUtil;
@@ -47,6 +48,7 @@ public class RecallApiApiServiceImpl implements RecallApiApiService {
BeanUtils.copyProperties(paramReq, recallApi);
recallApi.setId(UUIDUtil.generate());//赋值id
+ recallApi.setAppKey(ShortAppKeyGenerator.generate());
recallApi.setTenantId(HeaderDataUtil.getTenantId());
recallApi.setCreateBy(HeaderDataUtil.getUserId());//创建人
recallApi.setCreateTime(System.currentTimeMillis());//创建时间
@@ -61,6 +63,7 @@ public class RecallApiApiServiceImpl implements RecallApiApiService {
@Override
public ResObj updateRecallApi(RecallApiDTO paramReq) {
RecallApiEntity recallApi = new RecallApiEntity();
+ paramReq.setAppKey(null);
BeanUtils.copyProperties(paramReq, recallApi);
recallApi.setUpdateBy(HeaderDataUtil.getUserId());//更新人
recallApi.setUpdateTime(System.currentTimeMillis());//更新时间
diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/util/ShortAppKeyGenerator.java b/afis-recall-web/src/main/java/com/wabestway/recall/util/ShortAppKeyGenerator.java
new file mode 100644
index 0000000..bde7ba2
--- /dev/null
+++ b/afis-recall-web/src/main/java/com/wabestway/recall/util/ShortAppKeyGenerator.java
@@ -0,0 +1,43 @@
+package com.wabestway.recall.util;
+
+import java.util.UUID;
+
+public class ShortAppKeyGenerator {
+ private static final char[] BASE62_CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".toCharArray();
+
+ public static String generate() {
+ UUID uuid = UUID.randomUUID();
+ long mostSigBits = uuid.getMostSignificantBits();
+ long leastSigBits = uuid.getLeastSignificantBits();
+ byte[] bytes = new byte[16];
+ for (int i = 0; i < 8; i++) {
+ bytes[i] = (byte) (mostSigBits >>> (8 * (7 - i)));
+ bytes[i + 8] = (byte) (leastSigBits >>> (8 * (7 - i)));
+ }
+ return toBase62(bytes);
+ }
+
+ private static String toBase62(byte[] bytes) {
+ StringBuilder sb = new StringBuilder();
+ long num = toLong(bytes);
+ while (num > 0) {
+ int remainder = (int) (num % 62);
+ sb.append(BASE62_CHARS[remainder]);
+ num /= 62;
+ }
+ return sb.toString();
+ }
+
+ private static long toLong(byte[] bytes) {
+ long result = 0;
+ for (int i = 0; i < 8; i++) {
+ result <<= 8;
+ result |= (bytes[i] & 0xFF);
+ }
+ for (int i = 8; i < 16; i++) {
+ result <<= 8;
+ result |= (bytes[i] & 0xFF);
+ }
+ return result;
+ }
+}