feat(可回溯): 重构

处理类型映射
This commit is contained in:
BrandWang
2023-05-09 11:03:31 +08:00
parent dbaab0484b
commit 875a14f2b7
11 changed files with 142 additions and 69 deletions
@@ -15,7 +15,9 @@ import com.wabestway.recall.trace.entity.RecallOrderEntity;
import com.wabestway.recall.trace.entity.RecallRecordEntity;
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;
@@ -55,13 +57,13 @@ public class RecallOrderApiServiceImpl implements RecallOrderApiService {
@Override
public ResObj<RecallOrderVO> getRecallOrderByOrderId(String orderId) {
RecallOrderVO recallOrderVO = recallOrderService.queryRecallOrderById(orderId);
if (recallOrderVO != null) {
LambdaQueryWrapper<RecallRecordEntity> recordQuery = Wrappers.lambdaQuery();
recordQuery.eq(RecallRecordEntity::getTraceId, recallOrderVO.getTraceId());
recordQuery.orderByAsc(RecallRecordEntity::getCreateTime);
List<RecallRecordEntity> recordList = recallRecordService.getBaseMapper().selectList(recordQuery);
RecallOrderVO recallOrderVO = new RecallOrderVO();
RecallOrderEntity recallOrderEntity = recallOrderService.queryRecallOrderByOrderId(orderId);
if (recallOrderEntity != null) {
BeanUtils.copyProperties(recallOrderEntity, recallOrderVO);
List<RecallRecordVO> recordList = recallRecordService.queryTraceRecords(recallOrderEntity.getTraceId());
log.info(JSON.toJSONString(recordList));
List<String> events = recordList.stream()
.flatMap(entity -> entity.getEvents().stream())
.collect(Collectors.toList());
@@ -2,6 +2,7 @@ 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;
@@ -14,6 +15,7 @@ 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;
@@ -33,18 +35,15 @@ public class RecallRecordApiServiceImpl implements RecallRecordApiService {
@Override
public ResObj save(TraceDTO record) {
String orderId = record.getOrderId();
String traceId = Optional.ofNullable(orderId)
.map(recallOrderService::queryRecallOrderByOrderId)
.map(RecallOrderEntity::getTraceId)
.orElse(UUID.randomUUID().toString().replace("-", ""));
log.info(traceId);
record.setTraceId(traceId);
boolean isLastEvent = record.isLast();
Objects.requireNonNull(record);
RecallOrderEntity order = Optional.ofNullable(orderId)
.flatMap(id -> Optional.ofNullable(recallOrderService.queryRecallOrderByOrderId(id)))
.orElseGet(() -> {
String orderId = StringUtils.isBlank(record.getOrderId()) ? UUID.randomUUID().toString().replace("-", "") : record.getOrderId();
String traceId = StringUtils.isBlank(record.getTraceId()) ? UUID.randomUUID().toString().replace("-", "") : record.getTraceId();
boolean isLastEvent = record.isLast();
RecallOrderEntity order = Optional.ofNullable(recallOrderService.queryRecallOrderByOrderId(orderId))
.orElseGet(() -> Optional.ofNullable(recallOrderService.queryRecallOrderByTraceId(traceId)).orElseGet(() -> {
RecallOrderEntity newOrder = new RecallOrderEntity();
newOrder.setId(UUID.randomUUID().toString().replace("-", ""));
newOrder.setOrderId(orderId);
@@ -60,19 +59,16 @@ public class RecallRecordApiServiceImpl implements RecallRecordApiService {
newOrder.setCompleteDate(System.currentTimeMillis());
}
recallOrderService.save(newOrder);
record.setTraceId(traceId);
record.setOrderId(orderId);
return newOrder;
});
if (isLastEvent) {
}));
if (isLastEvent && !"1".equals(order.getComplete())) {
order.setComplete("1");
order.setCompleteDate(System.currentTimeMillis());
order.setUpdateTime(System.currentTimeMillis());
recallOrderService.updateRecallOrderById(order);
}
record.setTraceId(traceId);
record.setOrderId(orderId);
RecallRecordEntity recallRecord = new RecallRecordEntity();
BeanUtils.copyProperties(record, recallRecord);
recallRecord.setId(UUID.randomUUID().toString().replace("-", ""));