订单实时数据保存到数据库

This commit is contained in:
2023-05-10 16:03:11 +08:00
parent 11240e08dc
commit 4a753f7656
4 changed files with 36 additions and 3 deletions

View File

@@ -842,6 +842,15 @@ public class OrderService {
MemberVO memberVO = memberService.getMemberInfoByMemberId(orderBasicInfo.getMemberId()); MemberVO memberVO = memberService.getMemberInfoByMemberId(orderBasicInfo.getMemberId());
vo.setMemberInfo(memberVO); vo.setMemberInfo(memberVO);
try {
// 因为原来的数据在redis中是永久保存所以这里做下查询详情的时候发现已经是完成的订单redis数据存到表中
if (StringUtils.equals(orderBasicInfo.getOrderStatus(), OrderStatusEnum.ORDER_COMPLETE.getValue())) {
// 如果是已完成的订单把redis中的实时数据存到表中
orderBasicInfoService.realTimeMonitorDataRedis2DB(orderBasicInfo.getTransactionCode(), orderBasicInfo.getOrderCode());
}
} catch (Exception e) {
log.error("后管查询订单详情时把redis中的实时数据存到表发生异常", e);
}
return vo; return vo;
} }
@@ -934,10 +943,17 @@ public class OrderService {
UniAppOrderVO.BillingDetails billingDetails = new UniAppOrderVO.BillingDetails(); UniAppOrderVO.BillingDetails billingDetails = new UniAppOrderVO.BillingDetails();
BeanUtils.copyBeanProp(billingDetails, orderDetail); BeanUtils.copyBeanProp(billingDetails, orderDetail);
vo.setBillingDetails(billingDetails); vo.setBillingDetails(billingDetails);
// orderDetail.getSharpElectricityPrice() // orderDetail.getSharpElectricityPrice()
}
try {
// 因为原来的数据在redis中是永久保存所以这里做下查询详情的时候发现已经是完成的订单redis数据存到表中
if (StringUtils.equals(orderBasicInfo.getOrderStatus(), OrderStatusEnum.ORDER_COMPLETE.getValue())) {
// 如果是已完成的订单把redis中的实时数据存到表中
orderBasicInfoService.realTimeMonitorDataRedis2DB(orderBasicInfo.getTransactionCode(), orderBasicInfo.getOrderCode());
}
} catch (Exception e) {
log.error("后管查询订单详情时把redis中的实时数据存到表发生异常", e);
} }
return vo; return vo;
} }

View File

@@ -77,6 +77,11 @@
<groupId>com.fasterxml.jackson.dataformat</groupId> <groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-avro</artifactId> <artifactId>jackson-dataformat-avro</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
</dependency>
</dependencies> </dependencies>
<properties> <properties>

View File

@@ -119,6 +119,8 @@ public interface IOrderBasicInfoService {
List<OrderVO> getListByMemberIdAndOrderStatus(String memberId, List<String> orderStatusList, LocalDateTime dateTime); List<OrderVO> getListByMemberIdAndOrderStatus(String memberId, List<String> orderStatusList, LocalDateTime dateTime);
void realTimeMonitorDataRedis2DB(String transactionCode, String orderCode);
void updateElecAmount(); void updateElecAmount();
/** /**

View File

@@ -706,7 +706,8 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
* 从redis中取出实时记录保存到表中 * 从redis中取出实时记录保存到表中
* 当订单完成的时候调用 * 当订单完成的时候调用
*/ */
private void realTimeMonitorDataRedis2DB(String transactionCode, String orderCode) { @Override
public void realTimeMonitorDataRedis2DB(String transactionCode, String orderCode) {
if (StringUtils.isBlank(transactionCode)) { if (StringUtils.isBlank(transactionCode)) {
return; return;
} }
@@ -1060,6 +1061,15 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
RealTimeMonitorData data = JSONObject.parseObject((String) o, RealTimeMonitorData.class); RealTimeMonitorData data = JSONObject.parseObject((String) o, RealTimeMonitorData.class);
resultList.add(data); resultList.add(data);
} }
} else {
logger.debug("redis中没有实时数据了去数据库查");
// redis中为空去查库
OrderMonitorData orderMonitorData = orderMonitorDataService.selectByTransactionCode(transactionCode);
if (orderMonitorData != null) {
String monitorData = orderMonitorData.getMonitorData();
List<RealTimeMonitorData> dataList = JSON.parseArray(monitorData, RealTimeMonitorData.class);
resultList.addAll(dataList);
}
} }
return resultList; return resultList;
} }