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

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());
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;
}
@@ -934,10 +943,17 @@ public class OrderService {
UniAppOrderVO.BillingDetails billingDetails = new UniAppOrderVO.BillingDetails();
BeanUtils.copyBeanProp(billingDetails, orderDetail);
vo.setBillingDetails(billingDetails);
// 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;
}

View File

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

View File

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

View File

@@ -706,7 +706,8 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
* 从redis中取出实时记录保存到表中
* 当订单完成的时候调用
*/
private void realTimeMonitorDataRedis2DB(String transactionCode, String orderCode) {
@Override
public void realTimeMonitorDataRedis2DB(String transactionCode, String orderCode) {
if (StringUtils.isBlank(transactionCode)) {
return;
}
@@ -1060,6 +1061,15 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
RealTimeMonitorData data = JSONObject.parseObject((String) o, RealTimeMonitorData.class);
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;
}