diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index a78b6e4fd..055d75f75 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -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; } diff --git a/jsowell-pile/pom.xml b/jsowell-pile/pom.xml index 161983f02..bc0cace92 100644 --- a/jsowell-pile/pom.xml +++ b/jsowell-pile/pom.xml @@ -77,6 +77,11 @@ com.fasterxml.jackson.dataformat jackson-dataformat-avro + + + com.alibaba.fastjson2 + fastjson2 + diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java index 473b8554c..34afc2aa4 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java @@ -119,6 +119,8 @@ public interface IOrderBasicInfoService { List getListByMemberIdAndOrderStatus(String memberId, List orderStatusList, LocalDateTime dateTime); + void realTimeMonitorDataRedis2DB(String transactionCode, String orderCode); + void updateElecAmount(); /** diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index 4a4361ce7..e36696ce6 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -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 dataList = JSON.parseArray(monitorData, RealTimeMonitorData.class); + resultList.addAll(dataList); + } } return resultList; }