diff --git a/afis-recall-api/.gitignore b/afis-recall-api/.gitignore
new file mode 100644
index 0000000..5ff6309
--- /dev/null
+++ b/afis-recall-api/.gitignore
@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/afis-recall-api/pom.xml b/afis-recall-api/pom.xml
new file mode 100644
index 0000000..4a2a087
--- /dev/null
+++ b/afis-recall-api/pom.xml
@@ -0,0 +1,100 @@
+
+
+ 4.0.0
+
+ com.wabestway.recall
+ afis-recall-api
+ 1.0.0
+
+
+
+ 1.8
+ 1.8
+ UTF-8
+ UTF-8
+
+
+
+
+ com.wabestway.common
+ afis-web-common
+ 1.0
+
+
+ org.springframework.cloud
+ spring-cloud-starter-openfeign
+ 2.2.3.RELEASE
+ provided
+
+
+
+ com.google.code.gson
+ gson
+ 2.8.6
+
+
+
+ io.springfox
+ springfox-swagger2
+ 3.0.0
+
+
+ io.swagger
+ swagger-models
+
+
+ provided
+
+
+
+ io.swagger
+ swagger-models
+ 1.5.22
+ provided
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.6
+ true
+
+
+ org.springframework.cloud
+ spring-cloud-openfeign-core
+ 2.2.3.RELEASE
+ compile
+
+
+
+
+
+ release
+ Nexus Release Repository
+ http://dev.wabestway.com/nexus/repository/maven-releases/
+
+
+
+ snapshot
+ Nexus Snapshot Repository
+ http://dev.wabestway.com/nexus/repository/maven-snapshots/
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+ none
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/afis-recall-api/src/main/java/com/wabestway/recall/api/dto/TraceRecord.java b/afis-recall-api/src/main/java/com/wabestway/recall/api/dto/TraceRecord.java
new file mode 100644
index 0000000..67a88df
--- /dev/null
+++ b/afis-recall-api/src/main/java/com/wabestway/recall/api/dto/TraceRecord.java
@@ -0,0 +1,43 @@
+package com.wabestway.recall.api.dto;
+
+import lombok.Data;
+
+@Data
+public class TraceRecord {
+ /**
+ * 业务订单ID
+ */
+ private String orderId;
+ /**
+ * 产品编码
+ */
+ private String supplierProductCode;
+ /**
+ * 产品名称
+ */
+ private String supplierProductName;
+ /**
+ * 保单号
+ */
+ private String policyNo;
+ /**
+ * 投保人名称
+ */
+ private String holderName;
+ /**
+ * 投保人手机号
+ */
+ private String holderPhone;
+ /**
+ * 保险公司名称
+ */
+ private String supplierName;
+ /**
+ * 保单起始日期
+ */
+ private String startDate;
+ /**
+ * 保单结束日期
+ */
+ private String endDate;
+}
diff --git a/afis-recall-api/src/main/java/com/wabestway/recall/api/dto/TraceUpDTO.java b/afis-recall-api/src/main/java/com/wabestway/recall/api/dto/TraceUpDTO.java
new file mode 100644
index 0000000..8034aa0
--- /dev/null
+++ b/afis-recall-api/src/main/java/com/wabestway/recall/api/dto/TraceUpDTO.java
@@ -0,0 +1,13 @@
+package com.wabestway.recall.api.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class TraceUpDTO {
+ private String batchId;
+ private Long batchTime;
+ List records;
+}
+
diff --git a/afis-recall-api/src/main/java/com/wabestway/recall/api/fallback/TraceFeignClientFallback.java b/afis-recall-api/src/main/java/com/wabestway/recall/api/fallback/TraceFeignClientFallback.java
new file mode 100644
index 0000000..6497d16
--- /dev/null
+++ b/afis-recall-api/src/main/java/com/wabestway/recall/api/fallback/TraceFeignClientFallback.java
@@ -0,0 +1,19 @@
+package com.wabestway.recall.api.fallback;
+
+import com.alibaba.fastjson.JSON;
+import com.wabestway.commons.http.ResObj;
+import com.wabestway.recall.api.dto.TraceUpDTO;
+import com.wabestway.recall.api.feign.TraceFeignClient;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+@Component
+@Slf4j
+public class TraceFeignClientFallback implements TraceFeignClient {
+
+ @Override
+ public ResObj batchTraceUp(TraceUpDTO traceUpDTO) {
+ log.error("回溯业务数据更新:{}", JSON.toJSONString(traceUpDTO));
+ return ResObj.fail("服务不可用");
+ }
+}
diff --git a/afis-recall-api/src/main/java/com/wabestway/recall/api/feign/TraceFeignClient.java b/afis-recall-api/src/main/java/com/wabestway/recall/api/feign/TraceFeignClient.java
new file mode 100644
index 0000000..41afef1
--- /dev/null
+++ b/afis-recall-api/src/main/java/com/wabestway/recall/api/feign/TraceFeignClient.java
@@ -0,0 +1,15 @@
+package com.wabestway.recall.api.feign;
+
+import com.wabestway.commons.http.ResObj;
+import com.wabestway.recall.api.dto.TraceUpDTO;
+import com.wabestway.recall.api.fallback.TraceFeignClientFallback;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+@FeignClient(value = "afis-recall", fallback = TraceFeignClientFallback.class)
+public interface TraceFeignClient {
+ @RequestMapping(method = RequestMethod.POST, value ="/api/traceUp")
+ ResObj batchTraceUp(@RequestBody TraceUpDTO traceUpDTO);
+}
diff --git a/afis-recall-service/.gitignore b/afis-recall-service/.gitignore
new file mode 100644
index 0000000..5ff6309
--- /dev/null
+++ b/afis-recall-service/.gitignore
@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/afis-recall-service/pom.xml b/afis-recall-service/pom.xml
new file mode 100644
index 0000000..2b743f3
--- /dev/null
+++ b/afis-recall-service/pom.xml
@@ -0,0 +1,65 @@
+
+
+ 4.0.0
+
+ com.wabestway.recall
+ afis-recall
+ 1.0-SNAPSHOT
+
+ jar
+ afis-recall-service
+
+ 1.8
+ 1.8
+ UTF-8
+ UTF-8
+ 3.3.2
+
+
+
+
+ com.wabestway.common
+ afis-web-common
+ 1.0
+
+
+
+ javax.validation
+ validation-api
+ 2.0.1.Final
+
+
+ org.springframework
+ spring-context
+ 5.2.10.RELEASE
+ provided
+
+
+ org.springframework
+ spring-beans
+ 5.2.10.RELEASE
+ provided
+
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.10.5
+ provided
+
+
+ com.baomidou
+ mybatis-plus
+ ${mybatisplus.version}
+ provided
+
+
+ com.baomidou
+ dynamic-datasource-spring-boot-starter
+ 3.5.1
+ provided
+
+
+
\ No newline at end of file
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/dao/RecallApiDao.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dao/RecallApiDao.java
new file mode 100644
index 0000000..f3cb63c
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dao/RecallApiDao.java
@@ -0,0 +1,51 @@
+package com.wabestway.recall.trace.dao;
+
+import com.wabestway.recall.trace.entity.RecallApiEntity;
+import com.wabestway.recall.trace.dto.RecallApiDTO;
+import com.wabestway.recall.trace.vo.RecallApiVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import java.util.List;
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-15 09:59:12
+ */
+@Mapper
+public interface RecallApiDao extends BaseMapper {
+
+ /**
+ * 分页查询
+ * @param page 分页对象
+ * @param recallApiDTO
+ * @return
+ */
+ IPage queryRecallApiByCondition(Page page, @Param("recallApiDTO")RecallApiDTO recallApiDTO);
+
+ /**
+ * 条件查询,不分页
+ * @param recallApiDTO
+ * @return
+ */
+ List queryRecallApiListNoPage(@Param("recallApiDTO")RecallApiDTO recallApiDTO);
+
+ /**
+ * 根据id更新
+ * @param recallApi 对象
+ * @return
+ */
+ void updateRecallApiById(@Param("recallApi")RecallApiEntity recallApi);
+
+ /**
+ * 根据id查询详情
+ * @param id
+ * @return
+ */
+ RecallApiVO queryRecallApiById(@Param("id") String id);
+}
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/dao/RecallOrderDao.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dao/RecallOrderDao.java
new file mode 100644
index 0000000..22efc10
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dao/RecallOrderDao.java
@@ -0,0 +1,51 @@
+package com.wabestway.recall.trace.dao;
+
+import com.wabestway.recall.trace.entity.RecallOrderEntity;
+import com.wabestway.recall.trace.dto.RecallOrderDTO;
+import com.wabestway.recall.trace.vo.RecallOrderVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import java.util.List;
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-06 17:37:03
+ */
+@Mapper
+public interface RecallOrderDao extends BaseMapper {
+
+ /**
+ * 分页查询
+ * @param page 分页对象
+ * @param recallOrderDTO
+ * @return
+ */
+ IPage queryRecallOrderByCondition(Page page, @Param("recallOrderDTO")RecallOrderDTO recallOrderDTO);
+
+ /**
+ * 条件查询,不分页
+ * @param recallOrderDTO
+ * @return
+ */
+ List queryRecallOrderListNoPage(@Param("recallOrderDTO")RecallOrderDTO recallOrderDTO);
+
+ /**
+ * 根据id更新
+ * @param recallOrder 对象
+ * @return
+ */
+ void updateRecallOrderById(@Param("recallOrder")RecallOrderEntity recallOrder);
+
+ /**
+ * 根据id查询详情
+ * @param id
+ * @return
+ */
+ RecallOrderVO queryRecallOrderById(@Param("id") String id);
+}
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/dao/RecallProductDao.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dao/RecallProductDao.java
new file mode 100644
index 0000000..ec286b1
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dao/RecallProductDao.java
@@ -0,0 +1,51 @@
+package com.wabestway.recall.trace.dao;
+
+import com.wabestway.recall.trace.entity.RecallProductEntity;
+import com.wabestway.recall.trace.dto.RecallProductDTO;
+import com.wabestway.recall.trace.vo.RecallProductVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import java.util.List;
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-15 09:59:12
+ */
+@Mapper
+public interface RecallProductDao extends BaseMapper {
+
+ /**
+ * 分页查询
+ * @param page 分页对象
+ * @param recallProductDTO
+ * @return
+ */
+ IPage queryRecallProductByCondition(Page page, @Param("recallProductDTO")RecallProductDTO recallProductDTO);
+
+ /**
+ * 条件查询,不分页
+ * @param recallProductDTO
+ * @return
+ */
+ List queryRecallProductListNoPage(@Param("recallProductDTO")RecallProductDTO recallProductDTO);
+
+ /**
+ * 根据id更新
+ * @param recallProduct 对象
+ * @return
+ */
+ void updateRecallProductById(@Param("recallProduct")RecallProductEntity recallProduct);
+
+ /**
+ * 根据id查询详情
+ * @param id
+ * @return
+ */
+ RecallProductVO queryRecallProductById(@Param("id") String id);
+}
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/dao/RecallRecordDao.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dao/RecallRecordDao.java
new file mode 100644
index 0000000..09391ce
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dao/RecallRecordDao.java
@@ -0,0 +1,53 @@
+package com.wabestway.recall.trace.dao;
+
+import com.wabestway.recall.trace.entity.RecallRecordEntity;
+import com.wabestway.recall.trace.dto.RecallRecordDTO;
+import com.wabestway.recall.trace.vo.RecallRecordVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import java.util.List;
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-06 17:37:03
+ */
+@Mapper
+public interface RecallRecordDao extends BaseMapper {
+
+ /**
+ * 分页查询
+ * @param page 分页对象
+ * @param recallRecordDTO
+ * @return
+ */
+ IPage queryRecallRecordByCondition(Page page, @Param("recallRecordDTO")RecallRecordDTO recallRecordDTO);
+
+ /**
+ * 条件查询,不分页
+ * @param recallRecordDTO
+ * @return
+ */
+ List queryRecallRecordListNoPage(@Param("recallRecordDTO")RecallRecordDTO recallRecordDTO);
+
+ /**
+ * 根据id更新
+ * @param recallRecord 对象
+ * @return
+ */
+ void updateRecallRecordById(@Param("recallRecord")RecallRecordEntity recallRecord);
+
+ /**
+ * 根据id查询详情
+ * @param id
+ * @return
+ */
+ RecallRecordVO queryRecallRecordById(@Param("id") String id);
+
+ List queryTraceRecords(@Param("traceId") String traceId);
+}
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/RecallApiDTO.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/RecallApiDTO.java
new file mode 100644
index 0000000..ecd1646
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/RecallApiDTO.java
@@ -0,0 +1,35 @@
+package com.wabestway.recall.trace.dto;
+
+import java.io.Serializable;
+import lombok.Data;
+import com.wabestway.commons.http.PageDTO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-15 09:59:12
+ */
+@Data
+@ApiModel
+public class RecallApiDTO extends PageDTO implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /** */
+ @ApiModelProperty(value = "")
+ private String id;
+ /** 可回溯调用appKey */
+ @ApiModelProperty(value = "可回溯调用appKey")
+ private String appKey;
+ /** 调用方名称 */
+ @ApiModelProperty(value = "调用方名称")
+ private String name;
+ /** 备注 */
+ @ApiModelProperty(value = "备注")
+ private String remark;
+
+}
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/RecallOrderDTO.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/RecallOrderDTO.java
new file mode 100644
index 0000000..712c29c
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/RecallOrderDTO.java
@@ -0,0 +1,79 @@
+package com.wabestway.recall.trace.dto;
+
+import java.io.Serializable;
+import lombok.Data;
+import com.wabestway.commons.http.PageDTO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-06 17:37:03
+ */
+@Data
+@ApiModel
+public class RecallOrderDTO extends PageDTO implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /** 主键 */
+ @ApiModelProperty(value = "主键")
+ private String id;
+ @ApiModelProperty(value = "租户ID")
+ private String tenantId;
+ /** 产品编码 */
+ @ApiModelProperty(value = "产品编码")
+ private String productCode;
+ /** 产品名称 */
+ @ApiModelProperty(value = "产品名称")
+ private String productName;
+ /** 保单号 */
+ @ApiModelProperty(value = "保单号")
+ private String policyNo;
+ /** 投保人名称 */
+ @ApiModelProperty(value = "投保人名称")
+ private String holderName;
+ /** 投保人手机号 */
+ @ApiModelProperty(value = "投保人手机号")
+ private String holderPhone;
+ /** 保险公司名称 */
+ @ApiModelProperty(value = "保险公司名称")
+ private String supplierName;
+ /** 是否记录完整0-否1-是 */
+ @ApiModelProperty(value = "是否记录完整0-否1-是")
+ private String complete;
+ /** 是否已归档 0-否1-是 */
+ @ApiModelProperty(value = "是否已归档 0-否1-是 ")
+ private String archived;
+ /** 完成日期 */
+ @ApiModelProperty(value = "完成日期")
+ private Long completeDate;
+ /** 归档日期 */
+ @ApiModelProperty(value = "归档日期")
+ private Long archivedDate;
+ /** 保单起始日期 */
+ @ApiModelProperty(value = "保单起始日期")
+ private String startDate;
+ /** 保单结束日期 */
+ @ApiModelProperty(value = "保单结束日期")
+ private String endDate;
+ /** 生成视频文件ID */
+ @ApiModelProperty(value = "生成视频文件ID")
+ private String fileId;
+ /** 生成视频文件地址 */
+ @ApiModelProperty(value = "生成视频文件地址")
+ private String fileUrl;
+ /** 业务订单ID */
+ @ApiModelProperty(value = "业务订单ID")
+ private String orderId;
+ /** 回溯记录跟踪ID */
+ @ApiModelProperty(value = "回溯记录跟踪ID")
+ private String traceId;
+ /** 可回溯记录appKey */
+ @ApiModelProperty(value = "可回溯记录appKey")
+ private String appKey;
+
+}
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/RecallProductDTO.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/RecallProductDTO.java
new file mode 100644
index 0000000..c3a4e0e
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/RecallProductDTO.java
@@ -0,0 +1,44 @@
+package com.wabestway.recall.trace.dto;
+
+import java.io.Serializable;
+import lombok.Data;
+import com.wabestway.commons.http.PageDTO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-15 09:59:12
+ */
+@Data
+@ApiModel
+public class RecallProductDTO extends PageDTO implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /** */
+ @ApiModelProperty(value = "")
+ private String id;
+ /** 产品编码 */
+ @ApiModelProperty(value = "产品编码")
+ private String productCode;
+ /** 产品名称 */
+ @ApiModelProperty(value = "产品名称")
+ private String productName;
+ /** 保险公司编码 */
+ @ApiModelProperty(value = "保险公司编码")
+ private String supplierCode;
+ /** 保险公司名称 */
+ @ApiModelProperty(value = "保险公司名称")
+ private String supplierName;
+ /** 是否归档 0-否1-是 */
+ @ApiModelProperty(value = "是否归档 0-否1-是 ")
+ private String archived;
+ /** 是否记录轨迹 0-否1-是 */
+ @ApiModelProperty(value = "是否记录轨迹 0-否1-是 ")
+ private String tracked;
+
+}
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/RecallRecordDTO.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/RecallRecordDTO.java
new file mode 100644
index 0000000..7b8d154
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/RecallRecordDTO.java
@@ -0,0 +1,46 @@
+package com.wabestway.recall.trace.dto;
+
+import java.io.Serializable;
+import java.util.List;
+
+import lombok.Data;
+import com.wabestway.commons.http.PageDTO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-06 17:37:03
+ */
+@Data
+@ApiModel
+public class RecallRecordDTO extends PageDTO implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /** 主键 */
+ @ApiModelProperty(value = "主键")
+ private String id;
+ /** 产品编码 */
+ @ApiModelProperty(value = "产品编码")
+ private String productCode;
+ /** 产品名称 */
+ @ApiModelProperty(value = "产品名称")
+ private String productName;
+ /** 模块 */
+ @ApiModelProperty(value = "模块")
+ private String module;
+ /** 页面说明 */
+ @ApiModelProperty(value = "页面说明")
+ private String content;
+ /** 记录事件 */
+ @ApiModelProperty(value = "记录事件")
+ private List events;
+ /** 回溯记录跟踪ID */
+ @ApiModelProperty(value = "回溯记录跟踪ID")
+ private String traceId;
+
+}
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/TraceDTO.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/TraceDTO.java
new file mode 100644
index 0000000..606321c
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/TraceDTO.java
@@ -0,0 +1,73 @@
+package com.wabestway.recall.trace.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-06 17:37:03
+ */
+@Data
+@ApiModel
+public class TraceDTO implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @ApiModelProperty(value = "主键")
+ private String id;
+ /**
+ * 产品编码
+ */
+ @ApiModelProperty(value = "产品编码")
+ private String productCode;
+ /**
+ * 产品名称
+ */
+ @ApiModelProperty(value = "产品名称")
+ private String productName;
+ /**
+ * 模块
+ */
+ @ApiModelProperty(value = "模块")
+ private String module;
+ /**
+ * 页面说明
+ */
+ @ApiModelProperty(value = "页面说明")
+ private String content;
+ /**
+ * 记录事件
+ */
+ @ApiModelProperty(value = "记录事件")
+ private List events;
+ /**
+ * 回溯记录跟踪ID
+ */
+ @ApiModelProperty(value = "回溯记录跟踪ID")
+ private String traceId;
+ /**
+ * 回溯订单Id
+ */
+ @ApiModelProperty(value = "回溯订单Id")
+ private String orderId;
+ /**
+ * 是否最后提交
+ */
+ @ApiModelProperty(value = "是否最后提交")
+ private boolean last;
+ /**
+ * 调用接口appKey
+ */
+ @ApiModelProperty(value = "调用接口appKey")
+ private String appKey;
+
+
+}
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/entity/RecallApiEntity.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/entity/RecallApiEntity.java
new file mode 100644
index 0000000..7cd1d9f
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/entity/RecallApiEntity.java
@@ -0,0 +1,38 @@
+package com.wabestway.recall.trace.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import lombok.Data;
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-15 09:59:12
+ */
+@Data
+@TableName(value = "recall_api")
+public class RecallApiEntity {
+ /** */
+ @TableId
+ private String id;
+ /** 可回溯调用appKey */
+ private String appKey;
+ /** 调用方名称 */
+ private String name;
+ /** 租户Id */
+ private String tenantId;
+ /** 备注 */
+ private String remark;
+ /** 创建人 */
+ private String createBy;
+ /** 创建时间 */
+ private Long createTime;
+ /** 更新人 */
+ private String updateBy;
+ /** 更新时间 */
+ private Long updateTime;
+
+}
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/entity/RecallOrderEntity.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/entity/RecallOrderEntity.java
new file mode 100644
index 0000000..317f8c9
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/entity/RecallOrderEntity.java
@@ -0,0 +1,66 @@
+package com.wabestway.recall.trace.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import lombok.Data;
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-06 17:37:03
+ */
+@Data
+@TableName(value = "recall_order")
+public class RecallOrderEntity {
+ /** 主键 */
+ @TableId
+ private String id;
+ /** 产品编码 */
+ private String productCode;
+ /** 产品名称 */
+ private String productName;
+ /** 保单号 */
+ private String policyNo;
+ /** 投保人名称 */
+ private String holderName;
+ /** 投保人手机号 */
+ private String holderPhone;
+ /** 保险公司名称 */
+ private String supplierName;
+ /** 是否记录完整0-否1-是 */
+ private String complete;
+ /** 是否已归档 0-否1-是 */
+ private String archived;
+ /** 完成日期 */
+ private Long completeDate;
+ /** 归档日期 */
+ private Long archivedDate;
+ /** 保单起始日期 */
+ private String startDate;
+ /** 保单结束日期 */
+ private String endDate;
+ /** 生成视频文件ID */
+ private String fileId;
+ /** 生成视频文件地址 */
+ private String fileUrl;
+ /** 业务订单ID */
+ private String orderId;
+ /** 回溯记录跟踪ID */
+ private String traceId;
+ /** 租户ID */
+ private String tenantId;
+ /** 可回溯记录appKey */
+ private String appKey;
+ /** 创建人 */
+ private String createBy;
+ /** 创建时间 */
+ private Long createTime;
+ /** 更新人 */
+ private String updateBy;
+ /** 更新时间 */
+ private Long updateTime;
+
+}
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/entity/RecallProductEntity.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/entity/RecallProductEntity.java
new file mode 100644
index 0000000..ba1feab
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/entity/RecallProductEntity.java
@@ -0,0 +1,44 @@
+package com.wabestway.recall.trace.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import lombok.Data;
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-15 09:59:12
+ */
+@Data
+@TableName(value = "recall_product")
+public class RecallProductEntity {
+ /** */
+ @TableId
+ private String id;
+ /** 产品编码 */
+ private String productCode;
+ /** 产品名称 */
+ private String productName;
+ /** 保险公司编码 */
+ private String supplierCode;
+ /** 保险公司名称 */
+ private String supplierName;
+ /** 是否归档 0-否1-是 */
+ private String archived;
+ /** 是否记录轨迹 0-否1-是 */
+ private String tracked;
+ /** 租户Id */
+ private String tenantId;
+ /** 创建人 */
+ private String createBy;
+ /** 创建时间 */
+ private Long createTime;
+ /** 更新人 */
+ private String updateBy;
+ /** 更新时间 */
+ private Long updateTime;
+
+}
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/entity/RecallRecordEntity.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/entity/RecallRecordEntity.java
new file mode 100644
index 0000000..6c630c0
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/entity/RecallRecordEntity.java
@@ -0,0 +1,43 @@
+package com.wabestway.recall.trace.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import com.wabestway.recall.trace.handler.ListTypeHandler;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-06 17:37:03
+ */
+@Data
+@TableName(value = "recall_record")
+public class RecallRecordEntity {
+ /** 主键 */
+ @TableId
+ private String id;
+ /** 产品编码 */
+ private String productCode;
+ /** 产品名称 */
+ private String productName;
+ /** 模块 */
+ private String module;
+ /** 页面说明 */
+ private String content;
+ /** 记录事件 */
+ @TableField(typeHandler = ListTypeHandler.class)
+ private List events;
+ /** 回溯记录跟踪ID */
+ private String traceId;
+ /** 创建人 */
+ private String createBy;
+ /** 创建时间 */
+ private Long createTime;
+
+}
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/handler/ListTypeHandler.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/handler/ListTypeHandler.java
new file mode 100644
index 0000000..d7eeebd
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/handler/ListTypeHandler.java
@@ -0,0 +1,73 @@
+package com.wabestway.recall.trace.handler;
+
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.ibatis.type.JdbcType;
+import org.apache.ibatis.type.MappedJdbcTypes;
+import org.apache.ibatis.type.MappedTypes;
+import org.apache.ibatis.type.TypeHandler;
+
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+@MappedTypes(value = {List.class})
+@MappedJdbcTypes(value = {JdbcType.BLOB})
+public class ListTypeHandler implements TypeHandler> {
+ private ObjectMapper objectMapper = new ObjectMapper();
+
+ @Override
+ public void setParameter(PreparedStatement ps, int i, List strings, JdbcType jdbcType) throws SQLException {
+ String jsonStr = null;
+ try {
+ jsonStr = objectMapper.writeValueAsString(strings);
+ } catch (JsonProcessingException e) {
+ throw new RuntimeException(e);
+ }
+ ps.setString(i, jsonStr);
+ }
+
+ @Override
+ public List getResult(ResultSet rs, String s) throws SQLException {
+ String str = rs.getString(s);
+ List newList = new ArrayList<>();
+ try {
+ newList = objectMapper.readValue(str, new TypeReference>() {
+ });
+ } catch (JsonProcessingException e) {
+ throw new RuntimeException(e);
+ }
+ return newList;
+ }
+
+ @Override
+ public List getResult(ResultSet rs, int i) throws SQLException {
+ String str = rs.getString(i);
+ List newList = new ArrayList<>();
+ try {
+ newList = objectMapper.readValue(str, new TypeReference>() {
+ });
+ } catch (JsonProcessingException e) {
+ throw new RuntimeException(e);
+ }
+ return newList;
+ }
+
+ @Override
+ public List getResult(CallableStatement cs, int i) throws SQLException {
+ String str = cs.getString(i);
+ List newList = new ArrayList<>();
+ try {
+ newList = objectMapper.readValue(str, new TypeReference>() {
+ });
+ } catch (JsonProcessingException e) {
+ throw new RuntimeException(e);
+ }
+ return newList;
+ }
+}
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/RecallApiService.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/RecallApiService.java
new file mode 100644
index 0000000..df52d26
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/RecallApiService.java
@@ -0,0 +1,55 @@
+package com.wabestway.recall.trace.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.wabestway.recall.trace.entity.RecallApiEntity;
+import com.wabestway.recall.trace.dto.RecallApiDTO;
+import com.wabestway.recall.trace.vo.RecallApiVO;
+import java.util.List;
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-15 09:59:12
+ */
+public interface RecallApiService extends IService {
+
+ /**
+ * 分页查询
+ * @param page 分页对象
+ * @param recallApiDTO
+ * @return
+ */
+ IPage queryRecallApiByCondition(long page, long size, RecallApiDTO recallApiDTO);
+
+ /**
+ * 条件查询,不分页
+ * @param recallApiDTO
+ * @return
+ */
+ List queryRecallApiListNoPage(RecallApiDTO recallApiDTO);
+
+ /**
+ * 根据id更新
+ * @param recallApi 对象
+ * @return
+ */
+ void updateRecallApiById(RecallApiEntity recallApi);
+
+ /**
+ * 根据id查询详情
+ * @param id
+ * @return
+ */
+ RecallApiVO queryRecallApiById(String id);
+
+ /**
+ * 查询调用app归属租户
+ * @param appKey
+ * @return
+ */
+ String queryApiTenant(String appKey);
+}
+
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/RecallOrderService.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/RecallOrderService.java
new file mode 100644
index 0000000..2803958
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/RecallOrderService.java
@@ -0,0 +1,54 @@
+package com.wabestway.recall.trace.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.wabestway.recall.trace.entity.RecallOrderEntity;
+import com.wabestway.recall.trace.dto.RecallOrderDTO;
+import com.wabestway.recall.trace.vo.RecallOrderVO;
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-06 17:37:03
+ */
+public interface RecallOrderService extends IService {
+
+ /**
+ * 分页查询
+ * @param page 分页对象
+ * @param recallOrderDTO
+ * @return
+ */
+ IPage queryRecallOrderByCondition(long page, long size, RecallOrderDTO recallOrderDTO);
+
+ /**
+ * 根据id更新
+ * @param recallOrder 对象
+ * @return
+ */
+ void updateRecallOrderById(RecallOrderEntity recallOrder);
+
+ /**
+ * 根据id查询详情
+ * @param id
+ * @return
+ */
+ RecallOrderVO queryRecallOrderById(String id);
+
+ /**
+ * 根据业务订单Id 查询回溯订单
+ * @param orderId
+ * @return
+ */
+ RecallOrderEntity queryRecallOrderByOrderId(String orderId);
+
+ /**
+ * 根据回溯轨迹ID 查询回溯订单
+ * @param traceId
+ * @return
+ */
+ RecallOrderEntity queryRecallOrderByTraceId(String traceId);
+}
+
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/RecallProductService.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/RecallProductService.java
new file mode 100644
index 0000000..c43311c
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/RecallProductService.java
@@ -0,0 +1,48 @@
+package com.wabestway.recall.trace.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.wabestway.recall.trace.entity.RecallProductEntity;
+import com.wabestway.recall.trace.dto.RecallProductDTO;
+import com.wabestway.recall.trace.vo.RecallProductVO;
+import java.util.List;
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-15 09:59:12
+ */
+public interface RecallProductService extends IService {
+
+ /**
+ * 分页查询
+ * @param page 分页对象
+ * @param recallProductDTO
+ * @return
+ */
+ IPage queryRecallProductByCondition(long page, long size, RecallProductDTO recallProductDTO);
+
+ /**
+ * 条件查询,不分页
+ * @param recallProductDTO
+ * @return
+ */
+ List queryRecallProductListNoPage(RecallProductDTO recallProductDTO);
+
+ /**
+ * 根据id更新
+ * @param recallProduct 对象
+ * @return
+ */
+ void updateRecallProductById(RecallProductEntity recallProduct);
+
+ /**
+ * 根据id查询详情
+ * @param id
+ * @return
+ */
+ RecallProductVO queryRecallProductById(String id);
+}
+
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/RecallRecordService.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/RecallRecordService.java
new file mode 100644
index 0000000..c0f8644
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/RecallRecordService.java
@@ -0,0 +1,55 @@
+package com.wabestway.recall.trace.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.wabestway.recall.trace.entity.RecallRecordEntity;
+import com.wabestway.recall.trace.dto.RecallRecordDTO;
+import com.wabestway.recall.trace.vo.RecallRecordVO;
+import java.util.List;
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-06 17:37:03
+ */
+public interface RecallRecordService extends IService {
+
+ /**
+ * 分页查询
+ * @param page 分页对象
+ * @param recallRecordDTO
+ * @return
+ */
+ IPage queryRecallRecordByCondition(long page, long size, RecallRecordDTO recallRecordDTO);
+
+ /**
+ * 条件查询,不分页
+ * @param recallRecordDTO
+ * @return
+ */
+ List queryRecallRecordListNoPage(RecallRecordDTO recallRecordDTO);
+
+ /**
+ * 根据id更新
+ * @param recallRecord 对象
+ * @return
+ */
+ void updateRecallRecordById(RecallRecordEntity recallRecord);
+
+ /**
+ * 根据id查询详情
+ * @param id
+ * @return
+ */
+ RecallRecordVO queryRecallRecordById(String id);
+
+ /**
+ * 根据traceId 查询列表
+ * @param traceId
+ * @return
+ */
+ List queryTraceRecords(String traceId);
+}
+
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/impl/RecallApiServiceImpl.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/impl/RecallApiServiceImpl.java
new file mode 100644
index 0000000..af37122
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/impl/RecallApiServiceImpl.java
@@ -0,0 +1,59 @@
+package com.wabestway.recall.trace.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.wabestway.recall.trace.dao.RecallApiDao;
+import com.wabestway.recall.trace.entity.RecallApiEntity;
+import com.wabestway.recall.trace.dto.RecallApiDTO;
+import com.wabestway.recall.trace.vo.RecallApiVO;
+import com.wabestway.recall.trace.service.RecallApiService;
+
+import java.util.List;
+
+/**
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-15 09:59:12
+ */
+@Service
+public class RecallApiServiceImpl extends ServiceImpl implements RecallApiService {
+
+ @Override
+ public IPage queryRecallApiByCondition(long page, long size, RecallApiDTO recallApiDTO) {
+ Page paramReq = new Page<>(page, size);
+ paramReq.addOrder(new OrderItem().setColumn("create_time").setAsc(false));//创建时间降序排序
+ IPage iPage = baseMapper.queryRecallApiByCondition(paramReq, recallApiDTO);
+ return iPage;
+ }
+
+ public List queryRecallApiListNoPage(RecallApiDTO recallApiDTO) {
+ return baseMapper.queryRecallApiListNoPage(recallApiDTO);
+ }
+
+ @Override
+ public void updateRecallApiById(RecallApiEntity recallApi) {
+ baseMapper.updateRecallApiById(recallApi);
+ }
+
+ @Override
+ public RecallApiVO queryRecallApiById(String id) {
+ return baseMapper.queryRecallApiById(id);
+ }
+
+ @Override
+ public String queryApiTenant(String appKey) {
+ LambdaQueryWrapper query = Wrappers.lambdaQuery();
+ query.eq(RecallApiEntity::getAppKey, appKey);
+ query.last("limit 1");
+ RecallApiEntity recallApi = baseMapper.selectOne(query);
+ if (recallApi != null) {
+ return recallApi.getTenantId();
+ }
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/impl/RecallOrderServiceImpl.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/impl/RecallOrderServiceImpl.java
new file mode 100644
index 0000000..fc886c8
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/impl/RecallOrderServiceImpl.java
@@ -0,0 +1,58 @@
+package com.wabestway.recall.trace.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.wabestway.recall.trace.dao.RecallOrderDao;
+import com.wabestway.recall.trace.entity.RecallOrderEntity;
+import com.wabestway.recall.trace.dto.RecallOrderDTO;
+import com.wabestway.recall.trace.vo.RecallOrderVO;
+import com.wabestway.recall.trace.service.RecallOrderService;
+
+/**
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-06 17:37:03
+ */
+@Service
+public class RecallOrderServiceImpl extends ServiceImpl implements RecallOrderService {
+
+ @Override
+ public IPage queryRecallOrderByCondition(long page, long size, RecallOrderDTO recallOrderDTO) {
+ Page paramReq = new Page<>(page, size);
+ paramReq.addOrder(new OrderItem().setColumn("create_time").setAsc(false));//创建时间降序排序
+ IPage iPage = baseMapper.queryRecallOrderByCondition(paramReq, recallOrderDTO);
+ return iPage;
+ }
+
+
+ @Override
+ public void updateRecallOrderById(RecallOrderEntity recallOrder) {
+ baseMapper.updateRecallOrderById(recallOrder);
+ }
+
+ @Override
+ public RecallOrderVO queryRecallOrderById(String id) {
+ return baseMapper.queryRecallOrderById(id);
+ }
+
+ @Override
+ public RecallOrderEntity queryRecallOrderByOrderId(String orderId) {
+ LambdaQueryWrapper orderQuery = Wrappers.lambdaQuery();
+ orderQuery.eq(RecallOrderEntity::getOrderId, orderId);
+ orderQuery.last("limit 1");
+ return baseMapper.selectOne(orderQuery);
+ }
+
+ @Override
+ public RecallOrderEntity queryRecallOrderByTraceId(String traceId) {
+ LambdaQueryWrapper orderQuery = Wrappers.lambdaQuery();
+ orderQuery.eq(RecallOrderEntity::getTraceId, traceId);
+ orderQuery.last("limit 1");
+ return baseMapper.selectOne(orderQuery);
+ }
+}
\ No newline at end of file
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/impl/RecallProductServiceImpl.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/impl/RecallProductServiceImpl.java
new file mode 100644
index 0000000..68bdc96
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/impl/RecallProductServiceImpl.java
@@ -0,0 +1,46 @@
+package com.wabestway.recall.trace.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.wabestway.recall.trace.dao.RecallProductDao;
+import com.wabestway.recall.trace.entity.RecallProductEntity;
+import com.wabestway.recall.trace.dto.RecallProductDTO;
+import com.wabestway.recall.trace.vo.RecallProductVO;
+import com.wabestway.recall.trace.service.RecallProductService;
+import java.util.List;
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-15 09:59:12
+ */
+@Service
+public class RecallProductServiceImpl extends ServiceImpl implements RecallProductService {
+
+ @Override
+ public IPage queryRecallProductByCondition(long page, long size, RecallProductDTO recallProductDTO) {
+ Page paramReq = new Page<>(page,size);
+ paramReq.addOrder(new OrderItem().setColumn("create_time").setAsc(false));//创建时间降序排序
+ IPage iPage = baseMapper.queryRecallProductByCondition(paramReq, recallProductDTO);
+ return iPage;
+ }
+
+ public List queryRecallProductListNoPage(RecallProductDTO recallProductDTO) {
+ return baseMapper.queryRecallProductListNoPage(recallProductDTO);
+ }
+
+ @Override
+ public void updateRecallProductById(RecallProductEntity recallProduct) {
+ baseMapper.updateRecallProductById(recallProduct);
+ }
+
+ @Override
+ public RecallProductVO queryRecallProductById(String id ) {
+ return baseMapper.queryRecallProductById(id);
+ }
+}
\ No newline at end of file
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/impl/RecallRecordServiceImpl.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/impl/RecallRecordServiceImpl.java
new file mode 100644
index 0000000..8ce5cd8
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/impl/RecallRecordServiceImpl.java
@@ -0,0 +1,51 @@
+package com.wabestway.recall.trace.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.wabestway.recall.trace.dao.RecallRecordDao;
+import com.wabestway.recall.trace.entity.RecallRecordEntity;
+import com.wabestway.recall.trace.dto.RecallRecordDTO;
+import com.wabestway.recall.trace.vo.RecallRecordVO;
+import com.wabestway.recall.trace.service.RecallRecordService;
+import java.util.List;
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-06 17:37:03
+ */
+@Service
+public class RecallRecordServiceImpl extends ServiceImpl implements RecallRecordService {
+
+ @Override
+ public IPage queryRecallRecordByCondition(long page, long size, RecallRecordDTO recallRecordDTO) {
+ Page paramReq = new Page<>(page,size);
+ paramReq.addOrder(new OrderItem().setColumn("create_time").setAsc(false));//创建时间降序排序
+ IPage iPage = baseMapper.queryRecallRecordByCondition(paramReq, recallRecordDTO);
+ return iPage;
+ }
+
+ public List queryRecallRecordListNoPage(RecallRecordDTO recallRecordDTO) {
+ return baseMapper.queryRecallRecordListNoPage(recallRecordDTO);
+ }
+
+ @Override
+ public void updateRecallRecordById(RecallRecordEntity recallRecord) {
+ baseMapper.updateRecallRecordById(recallRecord);
+ }
+
+ @Override
+ public RecallRecordVO queryRecallRecordById(String id ) {
+ return baseMapper.queryRecallRecordById(id);
+ }
+
+ @Override
+ public List queryTraceRecords(String traceId) {
+ return baseMapper.queryTraceRecords(traceId);
+ }
+}
\ No newline at end of file
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/vo/RecallApiVO.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/vo/RecallApiVO.java
new file mode 100644
index 0000000..8e3a47e
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/vo/RecallApiVO.java
@@ -0,0 +1,45 @@
+package com.wabestway.recall.trace.vo;
+
+import java.io.Serializable;
+import lombok.Data;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-15 09:59:12
+ */
+@Data
+@ApiModel
+public class RecallApiVO implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /** */
+ @ApiModelProperty(value = "")
+ private String id;
+ /** 可回溯调用appKey */
+ @ApiModelProperty(value = "可回溯调用appKey")
+ private String appKey;
+ /** 调用方名称 */
+ @ApiModelProperty(value = "调用方名称")
+ private String name;
+ /** 备注 */
+ @ApiModelProperty(value = "备注")
+ private String remark;
+ /** 创建人 */
+ @ApiModelProperty(value = "创建人")
+ private String createBy;
+ /** 创建时间 */
+ @ApiModelProperty(value = "创建时间")
+ private Long createTime;
+ /** 更新人 */
+ @ApiModelProperty(value = "更新人")
+ private String updateBy;
+ /** 更新时间 */
+ @ApiModelProperty(value = "更新时间")
+ private Long updateTime;
+
+}
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/vo/RecallOrderVO.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/vo/RecallOrderVO.java
new file mode 100644
index 0000000..f5d7822
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/vo/RecallOrderVO.java
@@ -0,0 +1,134 @@
+package com.wabestway.recall.trace.vo;
+
+import java.io.Serializable;
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-06 17:37:03
+ */
+@Data
+@ApiModel
+public class RecallOrderVO implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @ApiModelProperty(value = "主键")
+ private String id;
+ /**
+ * 产品编码
+ */
+ @ApiModelProperty(value = "产品编码")
+ private String productCode;
+ /**
+ * 产品名称
+ */
+ @ApiModelProperty(value = "产品名称")
+ private String productName;
+ /**
+ * 保单号
+ */
+ @ApiModelProperty(value = "保单号")
+ private String policyNo;
+ /**
+ * 投保人名称
+ */
+ @ApiModelProperty(value = "投保人名称")
+ private String holderName;
+ /**
+ * 投保人手机号
+ */
+ @ApiModelProperty(value = "投保人手机号")
+ private String holderPhone;
+ /**
+ * 保险公司名称
+ */
+ @ApiModelProperty(value = "保险公司名称")
+ private String supplierName;
+ /**
+ * 是否记录完整0-否1-是
+ */
+ @ApiModelProperty(value = "是否记录完整0-否1-是")
+ private String complete;
+ /**
+ * 是否已归档 0-否1-是
+ */
+ @ApiModelProperty(value = "是否已归档 0-否1-是 ")
+ private String archived;
+ /**
+ * 完成日期
+ */
+ @ApiModelProperty(value = "完成日期")
+ private Long completeDate;
+ /**
+ * 归档日期
+ */
+ @ApiModelProperty(value = "归档日期")
+ private Long archivedDate;
+ /**
+ * 保单起始日期
+ */
+ @ApiModelProperty(value = "保单起始日期")
+ private String startDate;
+ /**
+ * 保单结束日期
+ */
+ @ApiModelProperty(value = "保单结束日期")
+ private String endDate;
+ /**
+ * 生成视频文件ID
+ */
+ @ApiModelProperty(value = "生成视频文件ID")
+ private String fileId;
+ /**
+ * 生成视频文件地址
+ */
+ @ApiModelProperty(value = "生成视频文件地址")
+ private String fileUrl;
+ /**
+ * 业务订单ID
+ */
+ @ApiModelProperty(value = "业务订单ID")
+ private String orderId;
+ /**
+ * 回溯记录跟踪ID
+ */
+ @ApiModelProperty(value = "回溯记录跟踪ID")
+ private String traceId;
+ /**
+ * 可回溯记录appKey
+ */
+ @ApiModelProperty(value = "可回溯记录appKey")
+ private String appKey;
+ /**
+ * 创建人
+ */
+ @ApiModelProperty(value = "创建人")
+ private String createBy;
+ /**
+ * 创建时间
+ */
+ @ApiModelProperty(value = "创建时间")
+ @JsonProperty(value = "createAt")
+ private Long createTime;
+ /**
+ * 更新人
+ */
+ @ApiModelProperty(value = "更新人")
+ private String updateBy;
+ /**
+ * 更新时间
+ */
+ @ApiModelProperty(value = "更新时间")
+ private Long updateTime;
+
+ private List events;
+
+}
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/vo/RecallProductVO.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/vo/RecallProductVO.java
new file mode 100644
index 0000000..c7aa5bb
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/vo/RecallProductVO.java
@@ -0,0 +1,54 @@
+package com.wabestway.recall.trace.vo;
+
+import java.io.Serializable;
+import lombok.Data;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-15 09:59:12
+ */
+@Data
+@ApiModel
+public class RecallProductVO implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /** */
+ @ApiModelProperty(value = "")
+ private String id;
+ /** 产品编码 */
+ @ApiModelProperty(value = "产品编码")
+ private String productCode;
+ /** 产品名称 */
+ @ApiModelProperty(value = "产品名称")
+ private String productName;
+ /** 保险公司编码 */
+ @ApiModelProperty(value = "保险公司编码")
+ private String supplierCode;
+ /** 保险公司名称 */
+ @ApiModelProperty(value = "保险公司名称")
+ private String supplierName;
+ /** 是否归档 0-否1-是 */
+ @ApiModelProperty(value = "是否归档 0-否1-是 ")
+ private String archived;
+ /** 是否记录轨迹 0-否1-是 */
+ @ApiModelProperty(value = "是否记录轨迹 0-否1-是 ")
+ private String tracked;
+ /** 创建人 */
+ @ApiModelProperty(value = "创建人")
+ private String createBy;
+ /** 创建时间 */
+ @ApiModelProperty(value = "创建时间")
+ private Long createTime;
+ /** 更新人 */
+ @ApiModelProperty(value = "更新人")
+ private String updateBy;
+ /** 更新时间 */
+ @ApiModelProperty(value = "更新时间")
+ private Long updateTime;
+
+}
diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/vo/RecallRecordVO.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/vo/RecallRecordVO.java
new file mode 100644
index 0000000..01151ea
--- /dev/null
+++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/vo/RecallRecordVO.java
@@ -0,0 +1,50 @@
+package com.wabestway.recall.trace.vo;
+
+import java.io.Serializable;
+import java.util.List;
+
+import lombok.Data;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-06 17:37:03
+ */
+@Data
+@ApiModel
+public class RecallRecordVO implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /** 主键 */
+ @ApiModelProperty(value = "主键")
+ private String id;
+ /** 产品编码 */
+ @ApiModelProperty(value = "产品编码")
+ private String productCode;
+ /** 产品名称 */
+ @ApiModelProperty(value = "产品名称")
+ private String productName;
+ /** 模块 */
+ @ApiModelProperty(value = "模块")
+ private String module;
+ /** 页面说明 */
+ @ApiModelProperty(value = "页面说明")
+ private String content;
+ /** 记录事件 */
+ @ApiModelProperty(value = "记录事件")
+ private List events;
+ /** 回溯记录跟踪ID */
+ @ApiModelProperty(value = "回溯记录跟踪ID")
+ private String traceId;
+ /** 创建人 */
+ @ApiModelProperty(value = "创建人")
+ private String createBy;
+ /** 创建时间 */
+ @ApiModelProperty(value = "创建时间")
+ private Long createTime;
+
+}
diff --git a/afis-recall-service/src/main/resources/mapper/trace/RecallApiDao.xml b/afis-recall-service/src/main/resources/mapper/trace/RecallApiDao.xml
new file mode 100644
index 0000000..c2bc6aa
--- /dev/null
+++ b/afis-recall-service/src/main/resources/mapper/trace/RecallApiDao.xml
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+ t.id id,
+ t.app_key appKey,
+ t.name name,
+ t.tenant_id tenantId,
+ t.remark remark,
+ t.create_by createBy,
+ t.create_time createTime,
+ t.update_by updateBy,
+ t.update_time updateTime
+
+
+
+
+
+
+
+
+
+ update recall_api t
+
+
+
+ t.id = #{recallApi.id},
+
+
+ t.app_key = #{recallApi.appKey},
+
+
+ t.name = #{recallApi.name},
+
+
+ t.remark = #{recallApi.remark},
+
+
+ t.update_by = #{recallApi.updateBy},
+
+
+ t.update_time = #{recallApi.updateTime},
+
+
+ where t.id= #{recallApi.id}
+
+
+
\ No newline at end of file
diff --git a/afis-recall-service/src/main/resources/mapper/trace/RecallOrderDao.xml b/afis-recall-service/src/main/resources/mapper/trace/RecallOrderDao.xml
new file mode 100644
index 0000000..cd47806
--- /dev/null
+++ b/afis-recall-service/src/main/resources/mapper/trace/RecallOrderDao.xml
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+ t.id id,
+ t.product_code productCode,
+ t.product_name productName,
+ t.policy_no policyNo,
+ t.holder_name holderName,
+ t.holder_phone holderPhone,
+ t.supplier_name supplierName,
+ t.complete complete,
+ t.archived archived,
+ t.complete_date completeDate,
+ t.archived_date archivedDate,
+ t.start_date startDate,
+ t.end_date endDate,
+ t.file_id fileId,
+ t.file_url fileUrl,
+ t.order_id orderId,
+ t.trace_id traceId,
+ t.tenant_id tenantId,
+ t.app_key appKey,
+ t.create_by createBy,
+ t.create_time createTime,
+ t.update_by updateBy,
+ t.update_time updateTime
+
+
+
+
+
+
+
+
+
+ update recall_order t
+
+
+
+ t.id = #{recallOrder.id},
+
+
+ t.product_code = #{recallOrder.productCode},
+
+
+ t.product_name = #{recallOrder.productName},
+
+
+ t.policy_no = #{recallOrder.policyNo},
+
+
+ t.holder_name = #{recallOrder.holderName},
+
+
+ t.holder_phone = #{recallOrder.holderPhone},
+
+
+ t.supplier_name = #{recallOrder.supplierName},
+
+
+ t.complete = #{recallOrder.complete},
+
+
+ t.archived = #{recallOrder.archived},
+
+
+ t.complete_date = #{recallOrder.completeDate},
+
+
+ t.archived_date = #{recallOrder.archivedDate},
+
+
+ t.start_date = #{recallOrder.startDate},
+
+
+ t.end_date = #{recallOrder.endDate},
+
+
+ t.file_id = #{recallOrder.fileId},
+
+
+ t.file_url = #{recallOrder.fileUrl},
+
+
+ t.order_id = #{recallOrder.orderId},
+
+
+ t.trace_id = #{recallOrder.traceId},
+
+
+ t.app_key = #{recallOrder.appKey},
+
+
+ t.update_by = #{recallOrder.updateBy},
+
+
+ t.update_time = #{recallOrder.updateTime},
+
+
+ where t.id= #{recallOrder.id}
+
+
+
\ No newline at end of file
diff --git a/afis-recall-service/src/main/resources/mapper/trace/RecallProductDao.xml b/afis-recall-service/src/main/resources/mapper/trace/RecallProductDao.xml
new file mode 100644
index 0000000..8481b66
--- /dev/null
+++ b/afis-recall-service/src/main/resources/mapper/trace/RecallProductDao.xml
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+ t.id id,
+ t.product_code productCode,
+ t.product_name productName,
+ t.supplier_code supplierCode,
+ t.supplier_name supplierName,
+ t.archived archived,
+ t.tracked tracked,
+ t.tenant_id tenantId,
+ t.create_by createBy,
+ t.create_time createTime,
+ t.update_by updateBy,
+ t.update_time updateTime
+
+
+
+
+
+
+
+
+
+ update recall_product t
+
+
+
+ t.id = #{recallProduct.id},
+
+
+ t.product_code = #{recallProduct.productCode},
+
+
+ t.product_name = #{recallProduct.productName},
+
+
+ t.supplier_code = #{recallProduct.supplierCode},
+
+
+ t.supplier_name = #{recallProduct.supplierName},
+
+
+ t.archived = #{recallProduct.archived},
+
+
+ t.tracked = #{recallProduct.tracked},
+
+
+ t.update_by = #{recallProduct.updateBy},
+
+
+ t.update_time = #{recallProduct.updateTime},
+
+
+ where t.id= #{recallProduct.id}
+
+
+
\ No newline at end of file
diff --git a/afis-recall-service/src/main/resources/mapper/trace/RecallRecordDao.xml b/afis-recall-service/src/main/resources/mapper/trace/RecallRecordDao.xml
new file mode 100644
index 0000000..6e00ba3
--- /dev/null
+++ b/afis-recall-service/src/main/resources/mapper/trace/RecallRecordDao.xml
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+ t.id id,
+ t.product_code productCode,
+ t.product_name productName,
+ t.module module,
+ t.content content,
+ t.events events,
+ t.trace_id traceId,
+ t.create_by createBy,
+ t.create_time createTime
+
+
+
+
+
+
+
+
+
+ update recall_record t
+
+
+
+ t.id = #{recallRecord.id},
+
+
+ t.product_code = #{recallRecord.productCode},
+
+
+ t.product_name = #{recallRecord.productName},
+
+
+ t.module = #{recallRecord.module},
+
+
+ t.content = #{recallRecord.content},
+
+
+ t.events = #{recallRecord.events},
+
+
+ t.trace_id = #{recallRecord.traceId},
+
+
+ where t.id= #{recallRecord.id}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/afis-recall-web/.gitignore b/afis-recall-web/.gitignore
new file mode 100644
index 0000000..5ff6309
--- /dev/null
+++ b/afis-recall-web/.gitignore
@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/afis-recall-web/pom.xml b/afis-recall-web/pom.xml
new file mode 100644
index 0000000..3bf9ef3
--- /dev/null
+++ b/afis-recall-web/pom.xml
@@ -0,0 +1,152 @@
+
+
+ 4.0.0
+
+ com.wabestway.recall
+ afis-recall
+ 1.0-SNAPSHOT
+
+
+ afis-recall-web
+ jar
+
+ Hoxton.SR9
+ 2.2.1.RELEASE
+
+ 1.8
+ 1.8
+ UTF-8
+ UTF-8
+ 3.3.2
+ 1.1.22
+
+
+
+
+ com.xuxueli
+ xxl-job-core
+ 2.3.0
+
+
+
+ com.wabestway.recall
+ afis-recall-api
+ 1.0.0
+
+
+ com.wabestway.recall
+ afis-recall-service
+ 1.0-SNAPSHOT
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ ${mybatisplus.version}
+
+
+ com.baomidou
+ mybatis-plus-generator
+
+
+
+
+ mysql
+ mysql-connector-java
+ runtime
+
+
+ com.alibaba
+ druid-spring-boot-starter
+ ${alibaba.boot.druid}
+
+
+ org.springframework.cloud
+ spring-cloud-starter-openfeign
+
+
+ com.wabestway.engine
+ afis-engine-api
+ 2.5
+
+
+ com.wabestway.auth
+ afis-auth-api
+ 1.3
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ io.projectreactor
+ reactor-test
+ test
+
+
+ com.alibaba
+ fastjson
+ 2.0.17
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud.version}
+ pom
+ import
+
+
+ com.alibaba.cloud
+ spring-cloud-alibaba-dependencies
+ ${spring-cloud-alibaba.version}
+ pom
+ import
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ org.projectlombok
+ lombok
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/AfisRecallApplication.java b/afis-recall-web/src/main/java/com/wabestway/recall/AfisRecallApplication.java
new file mode 100644
index 0000000..83093f5
--- /dev/null
+++ b/afis-recall-web/src/main/java/com/wabestway/recall/AfisRecallApplication.java
@@ -0,0 +1,30 @@
+package com.wabestway.recall;
+
+import org.springframework.beans.factory.ObjectProvider;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.annotation.Bean;
+import org.springframework.http.converter.HttpMessageConverter;
+
+import java.util.stream.Collectors;
+
+@SpringBootApplication
+@EnableDiscoveryClient
+@EnableFeignClients(basePackages = {"com.wabestway.engine"})
+public class AfisRecallApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(AfisRecallApplication.class, args);
+ }
+
+ @Bean
+ @ConditionalOnMissingBean
+ public HttpMessageConverters messageConverters(ObjectProvider> converters) {
+ return new HttpMessageConverters(converters.orderedStream().collect(Collectors.toList()));
+ }
+
+}
diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/config/MybatisPlusConfig.java b/afis-recall-web/src/main/java/com/wabestway/recall/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..d2b2707
--- /dev/null
+++ b/afis-recall-web/src/main/java/com/wabestway/recall/config/MybatisPlusConfig.java
@@ -0,0 +1,27 @@
+package com.wabestway.recall.config;
+
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.sql.DataSource;
+
+/**
+ * Created by king on 2021/5/9.
+ */
+@Configuration
+@ConditionalOnClass(value = {PaginationInterceptor.class})
+public class MybatisPlusConfig {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Bean
+ public PaginationInterceptor paginationInterceptor() {
+ PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
+ return paginationInterceptor;
+ }
+
+}
diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/feign/TraceFeignClientImpl.java b/afis-recall-web/src/main/java/com/wabestway/recall/feign/TraceFeignClientImpl.java
new file mode 100644
index 0000000..b323b3b
--- /dev/null
+++ b/afis-recall-web/src/main/java/com/wabestway/recall/feign/TraceFeignClientImpl.java
@@ -0,0 +1,39 @@
+package com.wabestway.recall.feign;
+
+import com.alibaba.fastjson.JSON;
+import com.wabestway.commons.http.ResObj;
+import com.wabestway.recall.api.dto.TraceUpDTO;
+import com.wabestway.recall.api.feign.TraceFeignClient;
+import com.wabestway.recall.trace.entity.RecallOrderEntity;
+import com.wabestway.recall.trace.service.RecallOrderService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@Slf4j
+public class TraceFeignClientImpl implements TraceFeignClient {
+ @Autowired
+ private RecallOrderService recallOrderService;
+
+ @Override
+ public ResObj batchTraceUp(TraceUpDTO traceUpDTO) {
+ log.info("同步请求数据:{}", JSON.toJSONString(traceUpDTO));
+ if (traceUpDTO != null && traceUpDTO.getRecords() != null) {
+ traceUpDTO.getRecords().forEach(order -> {
+ RecallOrderEntity recallOrderEntity = recallOrderService.queryRecallOrderByOrderId(order.getOrderId());
+ if (recallOrderEntity != null) {
+ recallOrderEntity.setPolicyNo(order.getPolicyNo());
+ recallOrderEntity.setHolderName(order.getHolderName());
+ recallOrderEntity.setHolderPhone(order.getHolderPhone());
+ recallOrderEntity.setStartDate(order.getStartDate());
+ recallOrderEntity.setEndDate(order.getEndDate());
+ recallOrderEntity.setSupplierName(order.getSupplierName());
+ recallOrderEntity.setUpdateTime(System.currentTimeMillis());
+ recallOrderService.updateRecallOrderById(recallOrderEntity);
+ }
+ });
+ }
+ return ResObj.ok();
+ }
+}
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/controller/RecallApiController.java b/afis-recall-web/src/main/java/com/wabestway/recall/trace/controller/RecallApiController.java
new file mode 100644
index 0000000..da65ec9
--- /dev/null
+++ b/afis-recall-web/src/main/java/com/wabestway/recall/trace/controller/RecallApiController.java
@@ -0,0 +1,63 @@
+package com.wabestway.recall.trace.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import com.wabestway.recall.trace.dto.RecallApiDTO;
+import com.wabestway.recall.trace.vo.RecallApiVO;
+import com.wabestway.recall.trace.service.RecallApiApiService;
+import com.wabestway.commons.http.Paging;
+import com.wabestway.commons.http.ResObj;
+
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-15 09:59:12
+ */
+@RestController
+@RequestMapping("/trace/recallApi")
+@Api(tags = {"-接口"}, description = "-接口")
+public class RecallApiController {
+ @Autowired
+ private RecallApiApiService recallApiApiService;
+
+ /**
+ * 列表
+ */
+ @PostMapping("/list")
+ @ApiOperation(value = "分页列表查询", notes = "条件分页查询列表", httpMethod = "POST")
+ public ResObj> list(@RequestBody RecallApiDTO paramRequest) {
+ return recallApiApiService.list(paramRequest);
+ }
+
+ /**
+ * 信息
+ */
+ @GetMapping("/info/{id}")
+ @ApiOperation(value = "根据id查详情", notes = "根据id查详情", httpMethod = "GET")
+ public ResObj info(@PathVariable("id") String id) {
+ return recallApiApiService.getRecallApi(id);
+ }
+
+ /**
+ * 保存
+ */
+ @PostMapping("/save")
+ @ApiOperation(value = "保存", notes = "保存", httpMethod = "POST")
+ public ResObj saveRecallApi(@RequestBody RecallApiDTO paramRequest) {
+ return recallApiApiService.saveRecallApi(paramRequest);
+ }
+
+ /**
+ * 修改
+ */
+ @PostMapping("/update")
+ @ApiOperation(value = "修改", notes = "修改", httpMethod = "POST")
+ public ResObj updateRecallApi(@RequestBody RecallApiDTO paramRequest) {
+ return recallApiApiService.updateRecallApi(paramRequest);
+ }
+}
diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/trace/controller/RecallOrderController.java b/afis-recall-web/src/main/java/com/wabestway/recall/trace/controller/RecallOrderController.java
new file mode 100644
index 0000000..1f6fdeb
--- /dev/null
+++ b/afis-recall-web/src/main/java/com/wabestway/recall/trace/controller/RecallOrderController.java
@@ -0,0 +1,67 @@
+package com.wabestway.recall.trace.controller;
+
+
+import com.wabestway.recall.util.HeaderDataUtil;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import com.wabestway.recall.trace.dto.RecallOrderDTO;
+import com.wabestway.recall.trace.vo.RecallOrderVO;
+import com.wabestway.recall.trace.service.RecallOrderApiService;
+import com.wabestway.commons.http.Paging;
+import com.wabestway.commons.http.ResObj;
+
+/**
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-06 17:37:03
+ */
+@RestController
+@RequestMapping("/order")
+@Api(tags = {"-接口"}, description = "-接口")
+public class RecallOrderController {
+ private final RecallOrderApiService recallOrderApiService;
+
+ public RecallOrderController(RecallOrderApiService recallOrderApiService) {
+ this.recallOrderApiService = recallOrderApiService;
+ }
+
+ /**
+ * 列表
+ */
+ @PostMapping("/list")
+ @ApiOperation(value = "分页列表查询", notes = "条件分页查询列表", httpMethod = "POST")
+ public ResObj> list(@RequestBody RecallOrderDTO paramRequest) {
+ paramRequest.setTenantId(null);
+ return recallOrderApiService.list(paramRequest);
+ }
+
+
+ @PostMapping("/tenant/list")
+ @ApiOperation(value = "租户分页列表查询", notes = "条件分页查询列表", httpMethod = "POST")
+ public ResObj> tenantList(@RequestBody RecallOrderDTO paramRequest) {
+ paramRequest.setTenantId(HeaderDataUtil.getTenantId());
+ return recallOrderApiService.list(paramRequest);
+ }
+
+
+ /**
+ * 信息
+ */
+ @PostMapping("/info/{id}")
+ @ApiOperation(value = "根据id查详情", notes = "根据id查详情", httpMethod = "GET")
+ public ResObj info(@PathVariable("id") String id) {
+ return recallOrderApiService.getRecallOrderByOrderId(id);
+ }
+
+ /**
+ * 生成回溯MP4文件
+ *
+ * @return
+ */
+ @GetMapping("/ffmpeg")
+ public ResObj createMp4() {
+ return recallOrderApiService.traceVideo();
+ }
+
+}
diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/trace/controller/RecallProductController.java b/afis-recall-web/src/main/java/com/wabestway/recall/trace/controller/RecallProductController.java
new file mode 100644
index 0000000..b985314
--- /dev/null
+++ b/afis-recall-web/src/main/java/com/wabestway/recall/trace/controller/RecallProductController.java
@@ -0,0 +1,64 @@
+package com.wabestway.recall.trace.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import com.wabestway.recall.trace.dto.RecallProductDTO;
+import com.wabestway.recall.trace.vo.RecallProductVO;
+import com.wabestway.recall.trace.service.RecallProductApiService;
+import com.wabestway.commons.http.Paging;
+import com.wabestway.commons.http.ResObj;
+
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-15 09:59:12
+ */
+@RestController
+@RequestMapping("/trace/recallProduct")
+@Api(tags = {"-接口"}, description = "-接口")
+public class RecallProductController {
+ @Autowired
+ private RecallProductApiService recallProductApiService;
+
+ /**
+ * 列表
+ */
+ @PostMapping("/list")
+ @ApiOperation(value = "分页列表查询", notes = "条件分页查询列表", httpMethod = "POST")
+ public ResObj> list(@RequestBody RecallProductDTO paramRequest) {
+ return recallProductApiService.list(paramRequest);
+ }
+
+ /**
+ * 信息
+ */
+ @GetMapping("/info/{id}")
+ @ApiOperation(value = "根据id查详情", notes = "根据id查详情", httpMethod = "GET")
+ public ResObj info(@PathVariable("id") String id) {
+ return recallProductApiService.getRecallProduct(id);
+ }
+
+ /**
+ * 保存
+ */
+ @PostMapping("/save")
+ @ApiOperation(value = "保存", notes = "保存", httpMethod = "POST")
+ public ResObj saveRecallProduct(@RequestBody RecallProductDTO paramRequest) {
+ return recallProductApiService.saveRecallProduct(paramRequest);
+ }
+
+ /**
+ * 修改
+ */
+ @PostMapping("/update")
+ @ApiOperation(value = "修改", notes = "修改", httpMethod = "POST")
+ public ResObj updateRecallProduct(@RequestBody RecallProductDTO paramRequest) {
+ return recallProductApiService.updateRecallProduct(paramRequest);
+ }
+
+}
diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/trace/controller/RecallRecordController.java b/afis-recall-web/src/main/java/com/wabestway/recall/trace/controller/RecallRecordController.java
new file mode 100644
index 0000000..c270f0f
--- /dev/null
+++ b/afis-recall-web/src/main/java/com/wabestway/recall/trace/controller/RecallRecordController.java
@@ -0,0 +1,34 @@
+package com.wabestway.recall.trace.controller;
+
+import com.wabestway.recall.trace.dto.TraceDTO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import com.wabestway.recall.trace.service.RecallRecordApiService;
+import com.wabestway.commons.http.ResObj;
+
+
+/**
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-06 17:37:03
+ */
+@RestController
+@RequestMapping("/track")
+@Api(tags = {"-接口"}, description = "-接口")
+public class RecallRecordController {
+ @Autowired
+ private RecallRecordApiService recallRecordApiService;
+
+
+ /**
+ * 保存
+ */
+ @PostMapping("/save")
+ @ApiOperation(value = "保存", notes = "保存", httpMethod = "POST")
+ public ResObj saveRecallRecord(@RequestBody TraceDTO record) {
+ return recallRecordApiService.save(record);
+ }
+
+}
diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/RecallApiApiService.java b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/RecallApiApiService.java
new file mode 100644
index 0000000..55cfa0f
--- /dev/null
+++ b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/RecallApiApiService.java
@@ -0,0 +1,47 @@
+package com.wabestway.recall.trace.service;
+
+
+import com.wabestway.recall.trace.dto.RecallApiDTO;
+import com.wabestway.recall.trace.vo.RecallApiVO;
+import com.wabestway.commons.http.Paging;
+import com.wabestway.commons.http.ResObj;
+
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-15 09:59:12
+ */
+public interface RecallApiApiService {
+
+ /**
+ * 列表
+ * @param paramReq
+ * @return
+ */
+ ResObj> list(RecallApiDTO paramReq);
+
+ /**
+ * 查询详情
+ * @param id
+ * @return
+ */
+ ResObj getRecallApi(String id);
+
+ /**
+ * 保存
+ * @param paramReq
+ * @return
+ */
+ ResObj saveRecallApi(RecallApiDTO paramReq);
+
+ /**
+ * 修改
+ * @param paramReq
+ * @return
+ */
+ ResObj updateRecallApi(RecallApiDTO paramReq);
+
+}
diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/RecallOrderApiService.java b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/RecallOrderApiService.java
new file mode 100644
index 0000000..f42848b
--- /dev/null
+++ b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/RecallOrderApiService.java
@@ -0,0 +1,32 @@
+package com.wabestway.recall.trace.service;
+
+import com.wabestway.recall.trace.dto.RecallOrderDTO;
+import com.wabestway.recall.trace.vo.RecallOrderVO;
+import com.wabestway.commons.http.Paging;
+import com.wabestway.commons.http.ResObj;
+
+
+/**
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-06 17:37:03
+ */
+public interface RecallOrderApiService {
+
+ /**
+ * 列表
+ *
+ * @param paramReq
+ * @return
+ */
+ ResObj> list(RecallOrderDTO paramReq);
+
+ ResObj getRecallOrderByOrderId(String orderId);
+
+ /**
+ * 根据回溯文件生成MP4视频
+ *
+ * @return
+ */
+ ResObj traceVideo();
+}
diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/RecallProductApiService.java b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/RecallProductApiService.java
new file mode 100644
index 0000000..2654d83
--- /dev/null
+++ b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/RecallProductApiService.java
@@ -0,0 +1,46 @@
+package com.wabestway.recall.trace.service;
+
+import java.util.List;
+import com.wabestway.recall.trace.dto.RecallProductDTO;
+import com.wabestway.recall.trace.vo.RecallProductVO;
+import com.wabestway.commons.http.Paging;
+import com.wabestway.commons.http.ResObj;
+
+
+/**
+ *
+ *
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-15 09:59:12
+ */
+public interface RecallProductApiService {
+
+ /**
+ * 列表
+ * @param paramReq
+ * @return
+ */
+ ResObj> list(RecallProductDTO paramReq);
+
+ /**
+ * 查询详情
+ * @param id
+ * @return
+ */
+ ResObj getRecallProduct(String id);
+
+ /**
+ * 保存
+ * @param paramReq
+ * @return
+ */
+ ResObj saveRecallProduct(RecallProductDTO paramReq);
+
+ /**
+ * 修改
+ * @param paramReq
+ * @return
+ */
+ ResObj updateRecallProduct(RecallProductDTO paramReq);
+}
diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/RecallRecordApiService.java b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/RecallRecordApiService.java
new file mode 100644
index 0000000..bdb15c4
--- /dev/null
+++ b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/RecallRecordApiService.java
@@ -0,0 +1,23 @@
+package com.wabestway.recall.trace.service;
+
+
+import com.wabestway.recall.trace.dto.TraceDTO;
+import com.wabestway.commons.http.ResObj;
+
+
+/**
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-06 17:37:03
+ */
+public interface RecallRecordApiService {
+
+ /**
+ * 回溯数据记录
+ *
+ * @param record
+ * @return
+ */
+ ResObj save(TraceDTO record);
+
+}
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
new file mode 100644
index 0000000..4f1c229
--- /dev/null
+++ b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallApiApiServiceImpl.java
@@ -0,0 +1,74 @@
+package com.wabestway.recall.trace.service.impl;
+
+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;
+import com.wabestway.recall.trace.entity.RecallApiEntity;
+import com.wabestway.recall.trace.dto.RecallApiDTO;
+import com.wabestway.recall.trace.vo.RecallApiVO;
+import com.wabestway.recall.trace.service.RecallApiApiService;
+import com.wabestway.recall.trace.service.RecallApiService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-15 09:59:12
+ */
+@Service
+public class RecallApiApiServiceImpl implements RecallApiApiService {
+ @Autowired
+ private RecallApiService recallApiService;
+
+ @Override
+ public ResObj> list(RecallApiDTO paramReq) {
+ IPage resultPage = recallApiService.queryRecallApiByCondition(paramReq.getPage(), paramReq.getPageSize(), paramReq);
+
+ Paging paging = new Paging(resultPage.getRecords(), paramReq.getPage(), resultPage.getSize(), resultPage.getTotal());
+ return ResObj.ok(paging);
+ }
+
+ @Override
+ public ResObj getRecallApi(String id) {
+ RecallApiVO recallApiVO = recallApiService.queryRecallApiById(id);
+
+ return ResObj.ok(recallApiVO);
+ }
+
+ @Transactional
+ @Override
+ public ResObj saveRecallApi(RecallApiDTO paramReq) {
+ RecallApiEntity recallApi = new RecallApiEntity();
+ 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());//创建时间
+ recallApi.setUpdateBy(HeaderDataUtil.getUserId());//更新人
+ recallApi.setUpdateTime(System.currentTimeMillis());//更新时间
+
+ recallApiService.save(recallApi);
+ return ResObj.ok();
+ }
+
+ @Transactional
+ @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());//更新时间
+ recallApiService.updateById(recallApi);
+ return ResObj.ok();
+ }
+
+}
diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallOrderApiServiceImpl.java b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallOrderApiServiceImpl.java
new file mode 100644
index 0000000..e6af316
--- /dev/null
+++ b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallOrderApiServiceImpl.java
@@ -0,0 +1,190 @@
+package com.wabestway.recall.trace.service.impl;
+
+import cn.hutool.core.io.FileUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.wabestway.commons.http.Paging;
+import com.wabestway.commons.http.ResObj;
+import com.wabestway.engine.api.dfs.UploadFileDTO;
+import com.wabestway.engine.api.dfs.UploadRespVO;
+import com.wabestway.engine.api.feign.DfsStorageFeignClient;
+import com.wabestway.recall.trace.entity.RecallOrderEntity;
+import com.wabestway.recall.trace.service.RecallOrderService;
+import com.wabestway.recall.trace.service.RecallRecordService;
+import com.wabestway.recall.trace.vo.RecallRecordVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.wabestway.recall.trace.dto.RecallOrderDTO;
+import com.wabestway.recall.trace.vo.RecallOrderVO;
+import com.wabestway.recall.trace.service.RecallOrderApiService;
+import org.springframework.stereotype.Service;
+
+import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Comparator;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-06 17:37:03
+ */
+@Slf4j
+@Service
+public class RecallOrderApiServiceImpl implements RecallOrderApiService {
+ @Autowired
+ private RecallOrderService recallOrderService;
+ @Autowired
+ private DfsStorageFeignClient storageFeignClient;
+ @Autowired
+ private RecallRecordService recallRecordService;
+
+ @Override
+ public ResObj> list(RecallOrderDTO paramReq) {
+ IPage resultPage = recallOrderService.queryRecallOrderByCondition(paramReq.getPage(), paramReq.getPageSize(), paramReq);
+
+ Paging paging = new Paging(resultPage.getRecords(), paramReq.getPage(), resultPage.getSize(), resultPage.getTotal());
+ return ResObj.ok(paging);
+ }
+
+
+ @Override
+ public ResObj getRecallOrderByOrderId(String orderId) {
+ RecallOrderVO recallOrderVO = new RecallOrderVO();
+ RecallOrderEntity recallOrderEntity = recallOrderService.queryRecallOrderByOrderId(orderId);
+ if (recallOrderEntity != null) {
+ BeanUtils.copyProperties(recallOrderEntity, recallOrderVO);
+
+ List recordList = recallRecordService.queryTraceRecords(recallOrderEntity.getTraceId());
+ log.info(JSON.toJSONString(recordList));
+ List events = recordList.stream()
+ .flatMap(entity -> entity.getEvents().stream())
+ .collect(Collectors.toList());
+ recallOrderVO.setEvents(events);
+ }
+ return ResObj.ok(recallOrderVO);
+ }
+
+ @Override
+ public ResObj traceVideo() {
+ LambdaQueryWrapper orderQuery = Wrappers.lambdaQuery();
+ orderQuery.eq(RecallOrderEntity::getComplete, "1");
+ orderQuery.isNull(RecallOrderEntity::getFileId);
+ orderQuery.orderByDesc(RecallOrderEntity::getCompleteDate);
+ //orderQuery.last("limit 1");
+ List orderList = recallOrderService.getBaseMapper().selectList(orderQuery);
+ orderList.forEach(order -> {
+
+ List recordList = recallRecordService.queryTraceRecords(order.getTraceId());
+ List events = recordList.stream()
+ .flatMap(entity -> entity.getEvents().stream())
+ .collect(Collectors.toList());
+ JSONArray array = JSONArray.parseArray(JSON.toJSONString(events));
+ try {
+ createVideo(order, array.toJSONString());
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ }
+ });
+ return ResObj.ok();
+ }
+
+ void createVideo(RecallOrderEntity fo, String jsonData) throws IOException {
+
+ // 创建临时目录
+ Path tempDir = null;
+ try {
+ tempDir = Files.createTempDirectory("ts");
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ System.out.println("Created temporary directory: " + tempDir);
+
+ try {
+ File tempFile = new File(tempDir.toFile(), "traces.json");
+ FileWriter fw = new FileWriter(tempFile);
+ BufferedWriter bw = new BufferedWriter(fw);
+ bw.write(jsonData);
+ bw.flush();
+ bw.close();
+ fw.close();
+ /*String[] command = {"ts-node", " /opt/rrvideo/src/cli.ts --input traces.json"};
+ ProcessBuilder processBuilder = new ProcessBuilder(command);
+ processBuilder.directory(tempDir.toFile());
+ // 在临时目录下执行命令
+ Process p1 = processBuilder.start();
+
+ Thread processThread = new Thread(() -> {
+ try {
+ // 读取命令输出
+ BufferedReader reader = new BufferedReader(new InputStreamReader(p1.getInputStream()));
+ String line;
+ while ((line = reader.readLine()) != null) {
+ System.out.println(line);
+ }
+ reader.close();
+ // 等待命令执行完成
+ int exitCode = p1.waitFor();
+
+ System.out.println("Command exited with code " + exitCode);
+ } catch (InterruptedException | IOException e) {
+ e.printStackTrace();
+ }
+ });
+ processThread.start();*/
+ try {
+ String[] cmd = {"rrvideo", "--input", "traces.json"};
+ ProcessBuilder processBuilder = new ProcessBuilder(cmd);
+ processBuilder.directory(tempDir.toFile());
+ System.out.printf(processBuilder.command().toString());
+ Process process = processBuilder.start();
+
+ // 捕获输出
+ BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
+ String line;
+ while ((line = reader.readLine()) != null) {
+ System.out.println(line);
+ }
+
+ // 等待进程结束
+ int exitCode = process.waitFor();
+ System.out.println("Command exited with code " + exitCode);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ File file = new File(tempDir.toFile(), "video.mp4");
+ if (file.exists()) {
+ log.info(String.valueOf(file.length()));
+ //byte[] fileBytes = Files.readAllBytes(file.toPath());
+ byte[] fileBytes = FileUtil.readBytes(file);
+ String titles = fo.getOrderId() + ".mp4";
+ UploadFileDTO uploadFileDTO = new UploadFileDTO(fileBytes, "RECALL", titles);
+
+ ResObj uploadResObj = storageFeignClient.uploadBytes(uploadFileDTO);
+ log.info(JSON.toJSONString(uploadResObj));
+ if (uploadResObj.isOk()) {
+ fo.setFileId(uploadResObj.getData().getFileId());
+ fo.setFileUrl(uploadResObj.getData().getFileUrl());
+ fo.setUpdateTime(System.currentTimeMillis());
+ recallOrderService.updateRecallOrderById(fo);
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error(e.getMessage());
+ } finally {
+ // 删除临时目录
+ Files.walk(tempDir)
+ .sorted(Comparator.reverseOrder())
+ .map(Path::toFile)
+ .forEach(File::delete);
+ }
+ }
+
+}
diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallProductApiServiceImpl.java b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallProductApiServiceImpl.java
new file mode 100644
index 0000000..1d023f3
--- /dev/null
+++ b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallProductApiServiceImpl.java
@@ -0,0 +1,73 @@
+package com.wabestway.recall.trace.service.impl;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.wabestway.commons.http.Paging;
+import com.wabestway.commons.http.ResObj;
+import com.wabestway.commons.enums.DataValidEnum;
+import com.wabestway.recall.util.HeaderDataUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.BeanUtils;
+import com.wabestway.ins.utils.UUIDUtil;
+import com.wabestway.recall.trace.entity.RecallProductEntity;
+import com.wabestway.recall.trace.dto.RecallProductDTO;
+import com.wabestway.recall.trace.vo.RecallProductVO;
+import com.wabestway.recall.trace.service.RecallProductApiService;
+import com.wabestway.recall.trace.service.RecallProductService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+
+/**
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-15 09:59:12
+ */
+@Service
+public class RecallProductApiServiceImpl implements RecallProductApiService {
+ @Autowired
+ private RecallProductService recallProductService;
+
+ @Override
+ public ResObj> list(RecallProductDTO paramReq) {
+ IPage resultPage = recallProductService.queryRecallProductByCondition(paramReq.getPage(), paramReq.getPageSize(), paramReq);
+
+ Paging paging = new Paging(resultPage.getRecords(), paramReq.getPage(), resultPage.getSize(), resultPage.getTotal());
+ return ResObj.ok(paging);
+ }
+
+ @Override
+ public ResObj getRecallProduct(String id) {
+ RecallProductVO recallProductVO = recallProductService.queryRecallProductById(id);
+
+ return ResObj.ok(recallProductVO);
+ }
+
+ @Transactional
+ @Override
+ public ResObj saveRecallProduct(RecallProductDTO paramReq) {
+ RecallProductEntity recallProduct = new RecallProductEntity();
+ BeanUtils.copyProperties(paramReq, recallProduct);
+
+ recallProduct.setId(UUIDUtil.generate());//赋值id
+ recallProduct.setCreateBy(HeaderDataUtil.getUserId());//创建人
+ recallProduct.setCreateTime(System.currentTimeMillis());//创建时间
+ recallProduct.setUpdateBy(HeaderDataUtil.getUserId());//更新人
+ recallProduct.setUpdateTime(System.currentTimeMillis());//更新时间
+
+ recallProductService.save(recallProduct);
+ return ResObj.ok();
+ }
+
+ @Transactional
+ @Override
+ public ResObj updateRecallProduct(RecallProductDTO paramReq) {
+ RecallProductEntity recallProduct = new RecallProductEntity();
+ BeanUtils.copyProperties(paramReq, recallProduct);
+ recallProduct.setUpdateBy(HeaderDataUtil.getUserId());//更新人
+ recallProduct.setUpdateTime(System.currentTimeMillis());//更新时间
+ recallProductService.updateById(recallProduct);
+ return ResObj.ok();
+ }
+
+}
diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallRecordApiServiceImpl.java b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallRecordApiServiceImpl.java
new file mode 100644
index 0000000..7c70f20
--- /dev/null
+++ b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallRecordApiServiceImpl.java
@@ -0,0 +1,90 @@
+package com.wabestway.recall.trace.service.impl;
+
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.wabestway.commons.http.ResObj;
+import com.wabestway.recall.trace.dto.TraceDTO;
+import com.wabestway.recall.trace.entity.RecallOrderEntity;
+import com.wabestway.recall.trace.entity.RecallRecordEntity;
+import com.wabestway.recall.trace.service.RecallApiService;
+import com.wabestway.recall.trace.service.RecallOrderService;
+import com.wabestway.recall.trace.service.RecallRecordService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.wabestway.recall.trace.service.RecallRecordApiService;
+import org.springframework.stereotype.Service;
+
+import java.util.Objects;
+import java.util.Optional;
+import java.util.UUID;
+
+
+/**
+ * @author wangH
+ * @company 北京华焱坤泰科技有限公司
+ * @Time 2023-05-06 17:37:03
+ */
+@Service
+@Slf4j
+public class RecallRecordApiServiceImpl implements RecallRecordApiService {
+ @Autowired
+ private RecallRecordService recallRecordService;
+ @Autowired
+ private RecallOrderService recallOrderService;
+ @Autowired
+ private RecallApiService recallApiService;
+
+ @Override
+ public ResObj save(TraceDTO record) {
+ Objects.requireNonNull(record);
+
+ String traceId = StringUtils.isBlank(record.getTraceId()) ? UUID.randomUUID().toString().replace("-", "") : record.getTraceId();
+
+ boolean isLastEvent = record.isLast();
+ RecallOrderEntity order = Optional.ofNullable(Optional.ofNullable(record.getOrderId())
+ .map(recallOrderService::queryRecallOrderByOrderId)
+ .orElse(null))
+ .orElseGet(() -> Optional.ofNullable(recallOrderService.queryRecallOrderByTraceId(traceId)).orElseGet(() -> {
+ RecallOrderEntity newOrder = new RecallOrderEntity();
+ newOrder.setId(UUID.randomUUID().toString().replace("-", ""));
+ Optional.ofNullable(record.getOrderId())
+ .ifPresent(newOrder::setOrderId);
+ newOrder.setTraceId(traceId);
+ newOrder.setProductCode(record.getProductCode());
+ newOrder.setProductName(record.getProductName());
+ newOrder.setCreateTime(System.currentTimeMillis());
+ newOrder.setUpdateTime(System.currentTimeMillis());
+ newOrder.setAppKey(record.getAppKey());
+ newOrder.setArchived("0");
+ newOrder.setComplete(isLastEvent ? "1" : "0");
+ String tenantId = recallApiService.queryApiTenant(record.getAppKey());
+ Optional.ofNullable(tenantId)
+ .ifPresent(newOrder::setTenantId);
+ if (isLastEvent) {
+ newOrder.setCompleteDate(System.currentTimeMillis());
+ }
+ recallOrderService.save(newOrder);
+ return newOrder;
+ }));
+ if (isLastEvent && !"1".equals(order.getComplete())) {
+ order.setComplete("1");
+ Optional.ofNullable(record.getOrderId())
+ .ifPresent(order::setOrderId);
+ order.setCompleteDate(System.currentTimeMillis());
+ order.setUpdateTime(System.currentTimeMillis());
+ recallOrderService.updateRecallOrderById(order);
+ }
+ record.setTraceId(traceId);
+ RecallRecordEntity recallRecord = new RecallRecordEntity();
+ BeanUtils.copyProperties(record, recallRecord);
+ recallRecord.setId(UUID.randomUUID().toString().replace("-", ""));
+ recallRecord.setCreateTime(System.currentTimeMillis());
+ recallRecordService.save(recallRecord);
+
+ record.setEvents(null);
+ log.info("保存数据:{}", JSON.toJSONString(record));
+ return ResObj.ok(record);
+ }
+}
diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/util/HeaderDataUtil.java b/afis-recall-web/src/main/java/com/wabestway/recall/util/HeaderDataUtil.java
new file mode 100644
index 0000000..3b8fbaa
--- /dev/null
+++ b/afis-recall-web/src/main/java/com/wabestway/recall/util/HeaderDataUtil.java
@@ -0,0 +1,111 @@
+package com.wabestway.recall.util;
+
+import com.google.gson.Gson;
+import com.wabestway.auth.api.user.ReqOrgInfo;
+import com.wabestway.auth.api.user.ReqTenantInfo;
+import com.wabestway.auth.api.user.ReqUser;
+import com.wabestway.auth.api.user.TokenObj;
+import com.wabestway.commons.exception.AlertException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import java.net.URLDecoder;
+
+public class HeaderDataUtil {
+ private static Logger logger = LoggerFactory.getLogger(HeaderDataUtil.class);
+
+ public HeaderDataUtil() {
+ }
+
+ public static ReqUser getUserData() {
+ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
+ .getRequest();
+ ReqUser reqUser = null;
+ try {
+ String header = request.getHeader(TokenObj._USER);
+ if (header != null) {
+ String str = URLDecoder.decode(header, "UTF-8");
+ logger.info("用户信息:{}", str);
+ reqUser = new Gson().fromJson(str, ReqUser.class);
+ }
+ } catch (Exception e) {
+ logger.error("用户信息转化异常", e);
+ throw new AlertException("未获取到header用户信息!");
+ }
+
+ return reqUser;
+ }
+
+ public static ReqOrgInfo getOrgInfoData() {
+ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
+ .getRequest();
+ ReqOrgInfo orgInfo = null;
+ try {
+ String header = request.getHeader(TokenObj._ORG);
+ if (header != null) {
+ String str = URLDecoder.decode(header, "UTF-8");
+ logger.info("机构信息:{}", str);
+ orgInfo = new Gson().fromJson(str, ReqOrgInfo.class);
+ }
+ } catch (Exception e) {
+ logger.error("机构信息转化异常", e);
+ throw new AlertException("未获取到header机构信息!");
+ }
+
+ return orgInfo;
+ }
+
+ public static ReqTenantInfo getTenantData() {
+ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
+ .getRequest();
+ ReqTenantInfo tenant = null;
+ try {
+ String header = request.getHeader(TokenObj._TENANT);
+ if (header != null) {
+ String str = URLDecoder.decode(header, "UTF-8");
+ logger.info("机构信息:{}", str);
+ tenant = new Gson().fromJson(str, ReqTenantInfo.class);
+ }
+ } catch (Exception e) {
+ logger.error("租户信息转化异常", e);
+ }
+
+ return tenant;
+ }
+
+ public static String getUserId() {
+ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
+ .getRequest();
+ String userId = null;
+ try {
+ String header = request.getHeader(TokenObj._USERID);
+ if (header != null) {
+ userId = URLDecoder.decode(header, "UTF-8");
+ }
+ } catch (Exception e) {
+ logger.error("用户ID信息转化异常", e);
+ }
+
+ return userId;
+ }
+
+ public static String getTenantId() {
+ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
+ .getRequest();
+ String tenantId = null;
+
+ try {
+ String header = request.getHeader(TokenObj._TENANTID);
+ if (header != null) {
+ tenantId = URLDecoder.decode(header, "UTF-8");
+ }
+ } catch (Exception e) {
+ logger.error("租户id信息转化异常", e);
+ }
+
+ return tenantId;
+ }
+}
\ No newline at end of file
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..2510f08
--- /dev/null
+++ b/afis-recall-web/src/main/java/com/wabestway/recall/util/ShortAppKeyGenerator.java
@@ -0,0 +1,49 @@
+package com.wabestway.recall.util;
+
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+import java.util.Arrays;
+import java.util.UUID;
+
+public class ShortAppKeyGenerator {
+ private static final char[] BASE62_CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".toCharArray();
+
+ public static String generate() {
+ String input = System.currentTimeMillis() + "";
+ MessageDigest md = null;
+ try {
+ md = MessageDigest.getInstance("MD5");
+ } catch (NoSuchAlgorithmException e) {
+ throw new RuntimeException(e);
+ }
+ byte[] bytes = md.digest(input.getBytes());
+ 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 |= ((long) (bytes[i] & 0xFF));
+ }
+ return result;
+ }
+
+ public static void main(String[] args) {
+ String appKey = generate();
+ System.out.println(appKey); // 输出:pT8bnL3ZTYqdBlUo
+ }
+}
diff --git a/afis-recall-web/src/main/resources/application-dev.yml b/afis-recall-web/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..ec8bad2
--- /dev/null
+++ b/afis-recall-web/src/main/resources/application-dev.yml
@@ -0,0 +1 @@
+# nacos
\ No newline at end of file
diff --git a/afis-recall-web/src/main/resources/application-native.yml b/afis-recall-web/src/main/resources/application-native.yml
new file mode 100644
index 0000000..c222560
--- /dev/null
+++ b/afis-recall-web/src/main/resources/application-native.yml
@@ -0,0 +1,2 @@
+server:
+ port: 9235
diff --git a/afis-recall-web/src/main/resources/application.yml b/afis-recall-web/src/main/resources/application.yml
new file mode 100644
index 0000000..59170e0
--- /dev/null
+++ b/afis-recall-web/src/main/resources/application.yml
@@ -0,0 +1,16 @@
+
+#spring:
+# jackson:
+# date-format: yyyy-MM-dd HH:mm:ss
+# time-zone: GMT+8
+
+mybatis-plus:
+ #MyBaits 别名包扫描路径,通过该属性可以给包中的类注册别名
+ configuration:
+ # 打印控制台
+ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+spring:
+ freemarker:
+ settings:
+ classic_compatible: true
\ No newline at end of file
diff --git a/src/main/resources/bootstrap-dev.yml b/afis-recall-web/src/main/resources/bootstrap-dev.yml
similarity index 84%
rename from src/main/resources/bootstrap-dev.yml
rename to afis-recall-web/src/main/resources/bootstrap-dev.yml
index a2c0c81..4f674fa 100644
--- a/src/main/resources/bootstrap-dev.yml
+++ b/afis-recall-web/src/main/resources/bootstrap-dev.yml
@@ -1,5 +1,5 @@
-
spring:
+ profiles: dev
application:
name: afis-recall
cloud:
@@ -12,5 +12,6 @@ spring:
#Nacos服务注册中心地址
server-addr: 192.168.0.141:8848
namespace: ns-car-dev
+
main:
- allow-bean-definition-overriding: true
\ No newline at end of file
+ allow-bean-definition-overriding: true
diff --git a/afis-recall-web/src/main/resources/bootstrap-native.yml b/afis-recall-web/src/main/resources/bootstrap-native.yml
new file mode 100644
index 0000000..0f9ae01
--- /dev/null
+++ b/afis-recall-web/src/main/resources/bootstrap-native.yml
@@ -0,0 +1,51 @@
+spring:
+ profiles: native
+ application:
+ name: afis-recall
+ cloud:
+ nacos:
+ config:
+ file-extension: yaml
+ server-addr: 49.7.225.107:8848
+ namespace: native-test
+ discovery:
+ #Nacos服务注册中心地址
+ server-addr: 49.7.225.107:8848
+ namespace: native-test
+ main:
+ allow-bean-definition-overriding: true
+
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ url: jdbc:mysql://203.189.0.250:13049/afis-agency?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+ username: yxb-dev
+ password: yxbDev!902
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ platform: mysql
+ druid:
+ initial-size: 2
+ max-active: 100
+ time-between-eviction-runs-millis: 60000
+ min-evictable-idle-time-millis: 300000
+ validation-query: SELECT 1 FROM DUAL
+ test-while-idle: true
+ test-on-borrow: false
+ test-on-return: false
+ pool-prepared-statements: true
+ max-pool-prepared-statement-per-connection-size: 5
+ filter:
+ stat:
+ log-slow-sql: true
+ slow-sql-millis: 2000
+ enabled: true
+ config:
+ enabled: true
+ wall:
+ enabled: true
+ encoding:
+ enabled: true
+ stat-view-servlet:
+ enabled: true
+ url-pattern: /druid/*
+ login-username: admin
+ login-password: admin
\ No newline at end of file
diff --git a/src/main/resources/bootstrap-prod.yml b/afis-recall-web/src/main/resources/bootstrap-prod.yml
similarity index 69%
rename from src/main/resources/bootstrap-prod.yml
rename to afis-recall-web/src/main/resources/bootstrap-prod.yml
index 90acfa4..b211039 100644
--- a/src/main/resources/bootstrap-prod.yml
+++ b/afis-recall-web/src/main/resources/bootstrap-prod.yml
@@ -7,11 +7,11 @@ spring:
nacos:
config:
file-extension: yaml
- server-addr: 192.168.0.249:8848,192.168.0.203:8848
+ server-addr: 192.168.208.47:18848,192.168.208.48:18848
namespace: yxb-prod
discovery:
#Nacos服务注册中心地址
- server-addr: 192.168.0.249:8848,192.168.0.203:8848
+ server-addr: 192.168.208.47:18848,192.168.208.48:18848
namespace: yxb-prod
main:
allow-bean-definition-overriding: true
diff --git a/src/main/resources/bootstrap-uat.yml b/afis-recall-web/src/main/resources/bootstrap-uat.yml
similarity index 100%
rename from src/main/resources/bootstrap-uat.yml
rename to afis-recall-web/src/main/resources/bootstrap-uat.yml
diff --git a/src/main/resources/bootstrap.yml b/afis-recall-web/src/main/resources/bootstrap.yml
similarity index 100%
rename from src/main/resources/bootstrap.yml
rename to afis-recall-web/src/main/resources/bootstrap.yml
diff --git a/afis-recall-web/src/main/resources/logback-spring.xml b/afis-recall-web/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..8060e20
--- /dev/null
+++ b/afis-recall-web/src/main/resources/logback-spring.xml
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
+
+ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{trace_id}] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+ ${LOG_HOME}/${SERVICE_NAME}/${SERVICE_NAME}.log.%d{yyyy-MM-dd}.log
+
+ 181
+
+
+
+ %d{yyyy-MM-dd HH:mm:ss.SSS} ${PID} %X{trace_id} [%thread] %-5level %logger{50} - %msg%n
+
+
+
+ 10MB
+
+
+
+
+
+
+ ${LOG_HOME}/${SERVICE_NAME}/${SERVICE_NAME}.log
+
+
+ %d{yyyy-MM-dd HH:mm:ss.SSS} ${PID} %X{trace_id} [%thread] %-5level %logger{50} - %msg%n
+ UTF-8
+
+
+
+
+ ${LOG_HOME}/${SERVICE_NAME}/${SERVICE_NAME}-info-%d{yyyy-MM-dd}.%i.log
+
+ 100MB
+
+
+ 181
+
+
+
+ info
+ ACCEPT
+ DENY
+
+
+
+
+
+
+ ${LOG_HOME}/${SERVICE_NAME}/${SERVICE_NAME}-warn.log
+
+
+ %d{yyyy-MM-dd HH:mm:ss.SSS} ${PID} %X{trace_id} [%thread] %-5level %logger{50} - %msg%n
+ UTF-8
+
+
+
+ ${LOG_HOME}/${SERVICE_NAME}/${SERVICE_NAME}-warn-%d{yyyy-MM-dd}.%i.log
+
+ 100MB
+
+
+ 181
+
+
+
+ warn
+ ACCEPT
+ DENY
+
+
+
+
+
+
+ ${LOG_HOME}/${SERVICE_NAME}/${SERVICE_NAME}-error.log
+
+
+ %d{yyyy-MM-dd HH:mm:ss.SSS} ${PID} %X{trace_id} [%thread] %-5level %logger{50} - %msg%n
+ UTF-8
+
+
+
+ ${LOG_HOME}/${SERVICE_NAME}/${SERVICE_NAME}-error-%d{yyyy-MM-dd}.%i.log
+
+ 100MB
+
+
+ 181
+
+
+
+ ERROR
+ ACCEPT
+ DENY
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 236c479..09b25a0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,99 +1,53 @@
-
+
4.0.0
+
+ com.wabestway.recall
+ afis-recall
+ pom
+ 1.0-SNAPSHOT
+
+ afis-recall-web
+ afis-recall-service
+
org.springframework.boot
spring-boot-starter-parent
- 2.3.12.RELEASE
+ 2.2.11.RELEASE
- com.wabestway.recall
- afis-recall
- 0.0.1-SNAPSHOT
- afis-recall
- afis-recall
+
- 1.8
- Hoxton.SR9
- 2.2.3.RELEASE
+ 2.0.3
+ 2.9.2
+
- com.alibaba.cloud
- spring-cloud-starter-alibaba-nacos-config
+ io.springfox
+ springfox-swagger-ui
+ ${swagger.version}
- com.alibaba.cloud
- spring-cloud-starter-alibaba-nacos-discovery
+ io.springfox
+ springfox-swagger2
+ ${swagger.version}
- org.springframework.boot
- spring-boot-starter-actuator
-
-
- org.springframework.boot
- spring-boot-starter-data-mongodb-reactive
-
-
- org.springframework.boot
- spring-boot-starter-webflux
+ com.github.xiaoymin
+ knife4j-spring-boot-starter
+
+ ${knife4j.version}
+
org.projectlombok
lombok
+ 1.18.6
true
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- io.projectreactor
- reactor-test
- test
-
-
- com.alibaba
- fastjson
- 2.0.17
-
-
-
-
- org.springframework.cloud
- spring-cloud-dependencies
- ${spring-cloud.version}
- pom
- import
-
-
- com.alibaba.cloud
- spring-cloud-alibaba-dependencies
- ${spring-cloud-alibaba.version}
- pom
- import
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
- org.projectlombok
- lombok
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/src/main/java/com/wabestway/recall/AfisRecallApplication.java b/src/main/java/com/wabestway/recall/AfisRecallApplication.java
deleted file mode 100644
index 7233137..0000000
--- a/src/main/java/com/wabestway/recall/AfisRecallApplication.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.wabestway.recall;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
-
-@SpringBootApplication
-@EnableDiscoveryClient
-public class AfisRecallApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(AfisRecallApplication.class, args);
- }
-
-}
diff --git a/src/main/java/com/wabestway/recall/model/Order.java b/src/main/java/com/wabestway/recall/model/Order.java
deleted file mode 100644
index c532873..0000000
--- a/src/main/java/com/wabestway/recall/model/Order.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.wabestway.recall.model;
-
-import lombok.Data;
-import org.bson.codecs.pojo.annotations.BsonIgnore;
-import org.springframework.data.annotation.Id;
-import org.springframework.data.mongodb.core.index.Indexed;
-import org.springframework.data.mongodb.core.mapping.Document;
-
-import java.util.List;
-
-@Data
-@Document(collection = "orders")
-public class Order {
- @Id
- private String id;
- private String appKey;
- private String tenantId;
- private String productCode;
- private String productName;
- @BsonIgnore
- private List events;
- @Indexed(unique = true)
- private String traceId;
- @Indexed(unique = true)
- private String orderId;
- private String complete;
- private String archived;
- private String fileId;
- private String fileUrl;
- private long createAt;
- @BsonIgnore
- private int page;
- @BsonIgnore
- private int pageSize;
-
- private String startDate;
- private String endDate;
- private String policyNo;
- private String holderName;
- private String holderPhone;
- private String supplierName;
-}
diff --git a/src/main/java/com/wabestway/recall/model/OrderList.java b/src/main/java/com/wabestway/recall/model/OrderList.java
deleted file mode 100644
index 5d9f624..0000000
--- a/src/main/java/com/wabestway/recall/model/OrderList.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.wabestway.recall.model;
-
-import lombok.Data;
-
-import java.util.List;
-
-@Data
-public class OrderList {
- private int page;
- private int pageSize;
- private long total;
- private List list;
-}
diff --git a/src/main/java/com/wabestway/recall/model/Record.java b/src/main/java/com/wabestway/recall/model/Record.java
deleted file mode 100644
index d81df73..0000000
--- a/src/main/java/com/wabestway/recall/model/Record.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.wabestway.recall.model;
-
-import lombok.Data;
-import org.bson.codecs.pojo.annotations.BsonIgnore;
-import org.springframework.data.annotation.Id;
-import org.springframework.data.mongodb.core.index.Indexed;
-import org.springframework.data.mongodb.core.mapping.Document;
-
-import java.util.List;
-
-@Data
-@Document(collection = "records")
-public class Record {
- @Id
- private String id;
- private List events;
- @Indexed(unique = false)
- private String traceId;
- @BsonIgnore
- private String orderId;
- private boolean last;
- private String productCode;
- private String productName;
- private long createAt;
- @BsonIgnore
- private String appKey;
- private String module;
- private String content;
-}
diff --git a/src/main/java/com/wabestway/recall/model/ResObj.java b/src/main/java/com/wabestway/recall/model/ResObj.java
deleted file mode 100644
index 662d9c3..0000000
--- a/src/main/java/com/wabestway/recall/model/ResObj.java
+++ /dev/null
@@ -1,173 +0,0 @@
-package com.wabestway.recall.model;
-
-import lombok.Data;
-
-import java.util.Map;
-
-@Data
-public class ResObj {
- private static final String SUCCESS = "success";
-
- private static final String FAILURE = "failure";
-
- private static final Integer SUCCESS_CODE = 200;
-
- private static final Integer FAILURE_CODE = 400;
-
- private Integer code;
-
- private String message;
-
- private String _trackId;
-
- private T data;
-
- private Map extr;
-
- private long timestamp;
-
- private Integer _status;
-
- private ResObj(Integer code, T data) {
- this.code = code;
- this.data = data;
- this.timestamp = System.currentTimeMillis();
- }
-
- private ResObj(Integer code, String message, T data) {
- this.code = code;
- this.data = data;
- this.message = message;
- this.timestamp = System.currentTimeMillis();
- }
-
- private ResObj(T data) {
- this.data = data;
- this.timestamp = System.currentTimeMillis();
- }
-
- private ResObj(Integer code) {
- this.code = code;
- this.timestamp = System.currentTimeMillis();
- }
-
- public boolean isOk() {
- return SUCCESS_CODE.equals(this.code);
- }
-
- public T data() {
- return (T) this.data;
- }
-
- public Object get(String key) {
- if (this.data != null && key != null) {
- return ((Map) this.data).get(key);
- }
- return null;
- }
-
- public ResObj() {
- this.timestamp = System.currentTimeMillis();
- }
-
- public static ResObj ok() {
- ResObj o = new ResObj(SUCCESS_CODE);
- return o;
- }
-
- public static ResObj ok(Object data) {
- ResObj o = new ResObj(SUCCESS_CODE, data);
- return o;
- }
-
- public static ResObj fail(String msg) {
- ResObj o = new ResObj(FAILURE_CODE, msg, null);
- return o;
- }
-
-
- public static ResObj fail() {
- ResObj o = new ResObj(FAILURE_CODE);
- return o;
- }
-
- public static ResObj result(Integer code, Object data) {
- ResObj o = new ResObj(code, data);
- return o;
- }
-
- public static ResObj result(Integer code, String message, Object data) {
- ResObj o = new ResObj(code, message, data);
- return o;
- }
-
- public Integer getCode() {
- return code;
- }
-
- public void setCode(Integer code) {
- this.code = code;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public T getData() {
- return data;
- }
-
- public ResObj setData(T data) {
- this.data = data;
- return this;
- }
-
- public Long getTimestamp() {
- return timestamp;
- }
-
- public ResObj setTimestamp(Long timestamp) {
- this.timestamp = timestamp;
- return this;
- }
-
- public Map getExtr() {
- return extr;
- }
-
-
- public Integer get_status() {
- return _status;
- }
-
- public void set_status(Integer _status) {
- this._status = _status;
- }
-
- public String get_trackId() {
- return _trackId;
- }
-
- public void set_trackId(String _trackId) {
- this._trackId = _trackId;
- }
-
- public ResObj trackId(String _trackId) {
- this._trackId = _trackId;
- return this;
- }
-
- @Override
- public String toString() {
- if (message == null) {
- return "ResObj(" + code + ")";
- }
- return "ResObj(" + code + "){" + message + "}";
- }
-
-
-}
diff --git a/src/main/java/com/wabestway/recall/repository/OrderRepository.java b/src/main/java/com/wabestway/recall/repository/OrderRepository.java
deleted file mode 100644
index 4c71441..0000000
--- a/src/main/java/com/wabestway/recall/repository/OrderRepository.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.wabestway.recall.repository;
-
-import com.wabestway.recall.model.Order;
-import org.springframework.data.domain.*;
-import org.springframework.data.mongodb.repository.ReactiveMongoRepository;
-import reactor.core.publisher.Flux;
-import reactor.core.publisher.Mono;
-
-public interface OrderRepository extends ReactiveMongoRepository {
- Mono findByOrderId(String orderId);
-
- Mono findByTraceId(String traceId);
-}
diff --git a/src/main/java/com/wabestway/recall/repository/RecordRepository.java b/src/main/java/com/wabestway/recall/repository/RecordRepository.java
deleted file mode 100644
index 43b522c..0000000
--- a/src/main/java/com/wabestway/recall/repository/RecordRepository.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.wabestway.recall.repository;
-
-
-import com.wabestway.recall.model.Record;
-import org.springframework.data.mongodb.repository.ReactiveMongoRepository;
-import reactor.core.publisher.Flux;
-
-
-public interface RecordRepository extends ReactiveMongoRepository {
- Flux findAllByTraceIdOrderByCreateAtAsc(String traceId);
-}
diff --git a/src/main/java/com/wabestway/recall/web/OrderController.java b/src/main/java/com/wabestway/recall/web/OrderController.java
deleted file mode 100644
index 44d5439..0000000
--- a/src/main/java/com/wabestway/recall/web/OrderController.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package com.wabestway.recall.web;
-
-import com.wabestway.recall.model.Order;
-import com.wabestway.recall.model.OrderList;
-import com.wabestway.recall.model.Record;
-import com.wabestway.recall.model.ResObj;
-import com.wabestway.recall.repository.OrderRepository;
-import com.wabestway.recall.repository.RecordRepository;
-import org.springframework.data.domain.*;
-import org.springframework.web.bind.annotation.*;
-import reactor.core.publisher.Flux;
-import reactor.core.publisher.Mono;
-
-import java.util.ArrayList;
-import java.util.List;
-
-
-@RestController
-@RequestMapping("/order")
-public class OrderController {
- private final RecordRepository recordRepository;
- private final OrderRepository orderRepository;
-
- public OrderController(RecordRepository recordRepository, OrderRepository orderRepository) {
- this.recordRepository = recordRepository;
- this.orderRepository = orderRepository;
- }
-
- @GetMapping
- public Flux getAllOrders() {
- return orderRepository.findAll();
- }
-
- @PostMapping("/list")
- public Mono list(@RequestBody Order order) {
- OrderList resList = new OrderList();
- List list = new ArrayList<>();
- Sort s = Sort.by("createAt").descending();
- PageRequest pageRequest = PageRequest.of(order.getPage() - 1, order.getPageSize(), s);
- ExampleMatcher matcher = ExampleMatcher.matching()
- .withIgnoreNullValues().withIgnorePaths("createAt", "last", "page", "pageSize");
- Example ep = Example.of(order, matcher);
- Flux flux = orderRepository.findAll(ep, s);
- flux.skip(pageRequest.getOffset()).limitRequest(pageRequest.getPageSize()).subscribe(list::add);
- resList.setList(list);
-// Mono> listMono = flux.skip(pageRequest.getOffset()).limitRequest(pageRequest.getPageSize()).collectList();
-// return listMono.flatMap(list -> {
-// resList.setList(list);
-// return Mono.just(ResObj.ok(resList));
-// });
- return flux.count().flatMap(count -> {
- resList.setTotal(count);
- return Mono.just(ResObj.ok(resList));
- });
- }
-
- @PostMapping("/info/{orderId}")
- public Mono findByOrderId(@PathVariable String orderId) {
- Mono forder = orderRepository.findByOrderId(orderId);
- return forder.flatMap(fo -> {
- Flux rs = recordRepository.findAllByTraceIdOrderByCreateAtAsc(fo.getTraceId());
- Mono>> es = rs.map(rr -> rr.getEvents()).collectList();
- Mono> events = es.flatMapIterable(lists -> lists).flatMapIterable(list -> list).collectList();
- return events.flatMap(e -> {
- fo.setEvents(e);
- return Mono.just(ResObj.ok(fo));
- });
- });
- }
-}
diff --git a/src/main/java/com/wabestway/recall/web/RecallController.java b/src/main/java/com/wabestway/recall/web/RecallController.java
deleted file mode 100644
index 2c7813c..0000000
--- a/src/main/java/com/wabestway/recall/web/RecallController.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package com.wabestway.recall.web;
-
-import com.wabestway.recall.model.Order;
-import com.wabestway.recall.model.Record;
-import com.wabestway.recall.model.ResObj;
-import com.wabestway.recall.repository.OrderRepository;
-import com.wabestway.recall.repository.RecordRepository;
-import org.springframework.web.bind.annotation.*;
-import reactor.core.publisher.Flux;
-import reactor.core.publisher.Mono;
-
-import java.util.UUID;
-
-@RestController
-@RequestMapping("/track")
-public class RecallController {
- private final RecordRepository recordRepository;
- private final OrderRepository orderRepository;
-
- public RecallController(RecordRepository recordRepository, OrderRepository orderRepository) {
- this.recordRepository = recordRepository;
- this.orderRepository = orderRepository;
- }
-
- @GetMapping
- public Flux getAllUsers() {
- return recordRepository.findAll();
- }
-
- @PostMapping("/save")
- public Mono save(@RequestBody Record record) {
- if (record.getOrderId() != null && !record.getOrderId().isEmpty()) {
- Mono order = orderRepository.findByOrderId(record.getOrderId());
- order.hasElement().subscribe(exit -> {
- if (!exit) {
- if (record.getTraceId() != null && !record.getTraceId().isEmpty()) {
- Mono tcOrder = orderRepository.findByTraceId(record.getTraceId());
- tcOrder.filter(to -> to.getId() != null).flatMap(to -> {
- to.setOrderId(record.getOrderId());
- if (record.isLast()) {
- to.setComplete("1");
- }
- return orderRepository.save(to);
- }).subscribe();
- } else {
- record.setTraceId(UUID.randomUUID().toString().replace("-", ""));
- Order forder = new Order();
- forder.setOrderId(record.getOrderId());
- forder.setTraceId(record.getTraceId());
- forder.setProductCode(record.getProductCode());
- forder.setProductName(record.getProductName());
- forder.setCreateAt(System.currentTimeMillis());
- forder.setAppKey(record.getAppKey());
- forder.setArchived("0");
- forder.setComplete("0");
- forder.setHolderName("王五");
- forder.setHolderPhone("18515064530");
- forder.setSupplierName("阳光保险");
- forder.setStartDate("2023-01-01");
- forder.setEndDate("2035-01-01");
- if (record.isLast()) {
- forder.setComplete("1");
- }
- orderRepository.save(forder).subscribe();
- }
- } else {
- order.subscribe(to -> {
- if (record.isLast()) {
- to.setComplete("1");
- orderRepository.save(to).subscribe();
- }
- });
- }
- });
- } else {
- if (record.getTraceId() == null || record.getTraceId().isEmpty()) {
- record.setTraceId(UUID.randomUUID().toString().replace("-", ""));
- Order order = new Order();
- order.setTraceId(record.getTraceId());
- order.setProductCode(record.getProductCode());
- order.setProductName(record.getProductName());
- order.setCreateAt(System.currentTimeMillis());
- order.setAppKey(record.getAppKey());
- order.setArchived("0");
- order.setComplete("0");
- order.setHolderName("王五");
- order.setHolderPhone("18515064530");
- order.setSupplierName("阳光保险");
- order.setStartDate("2023-01-01");
- order.setEndDate("2035-01-01");
- if (record.isLast()) {
- order.setComplete("1");
- }
- orderRepository.save(order).subscribe();
- }
- }
- record.setCreateAt(System.currentTimeMillis());
-
- return recordRepository.save(record).flatMap(ss -> {
- ss.setEvents(null);
- return Mono.just(ResObj.ok(ss));
- });
- }
-}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
deleted file mode 100644
index 6b0df99..0000000
--- a/src/main/resources/application-dev.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-server:
- port: 9235
-
-spring:
- data:
- mongodb:
- uri: mongodb://localhost:27017/recall
\ No newline at end of file
diff --git a/src/main/resources/application-native.yml b/src/main/resources/application-native.yml
deleted file mode 100644
index 6b0df99..0000000
--- a/src/main/resources/application-native.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-server:
- port: 9235
-
-spring:
- data:
- mongodb:
- uri: mongodb://localhost:27017/recall
\ No newline at end of file
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
deleted file mode 100644
index 253dcf4..0000000
--- a/src/main/resources/application.properties
+++ /dev/null
@@ -1 +0,0 @@
-spring.data.mongodb.uri=mongodb://localhost:27017/recall
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
deleted file mode 100644
index 8b13789..0000000
--- a/src/main/resources/application.yml
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/src/main/resources/bootstrap-sit.yml b/src/main/resources/bootstrap-sit.yml
deleted file mode 100644
index 8565c97..0000000
--- a/src/main/resources/bootstrap-sit.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-spring:
- profiles: sit
- application:
- name: afis-recall
- cloud:
- nacos:
- config:
- file-extension: yaml
- server-addr: 10.255.255.177:8848
- namespace: ns-car-sit
- discovery:
- #Nacos服务注册中心地址
- server-addr: 10.255.255.177:8848
- namespace: ns-car-sit
- main:
- allow-bean-definition-overriding: true
diff --git a/src/test/java/com/wabestway/recall/FFmpeg.java b/src/test/java/com/wabestway/recall/FFmpeg.java
deleted file mode 100644
index adb9639..0000000
--- a/src/test/java/com/wabestway/recall/FFmpeg.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.wabestway.recall;
-
-
-import org.junit.jupiter.api.Test;
-
-public class FFmpeg {
- @Test
- public void TestMp4() {
-
-
- }
-}