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() { - - - } -}