From 4a753f76566629c6628ad6422145f9eea2daee41 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Wed, 10 May 2023 16:03:11 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=AE=9E=E6=97=B6=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E4=BF=9D=E5=AD=98=E5=88=B0=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jsowell/service/OrderService.java | 20 +++++++++++++++++-- jsowell-pile/pom.xml | 5 +++++ .../pile/service/IOrderBasicInfoService.java | 2 ++ .../impl/OrderBasicInfoServiceImpl.java | 12 ++++++++++- 4 files changed, 36 insertions(+), 3 deletions(-) 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; }