From e1dcb45e0b7c80eedaf2bb0e5616bc752b60dd28 Mon Sep 17 00:00:00 2001 From: xiao-fajia <1665375861@qq.com> Date: Tue, 27 Aug 2024 11:11:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=A1=A5=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/RescueOrderInfoServiceImpl.java | 39 +++++++++++++++---- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/dl-module-rescue/src/main/java/cn/iocoder/yudao/module/rescue/service/impl/RescueOrderInfoServiceImpl.java b/dl-module-rescue/src/main/java/cn/iocoder/yudao/module/rescue/service/impl/RescueOrderInfoServiceImpl.java index 25107ef4..3e668959 100644 --- a/dl-module-rescue/src/main/java/cn/iocoder/yudao/module/rescue/service/impl/RescueOrderInfoServiceImpl.java +++ b/dl-module-rescue/src/main/java/cn/iocoder/yudao/module/rescue/service/impl/RescueOrderInfoServiceImpl.java @@ -22,12 +22,12 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.nio.charset.StandardCharsets; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.locks.ReentrantLock; +import java.util.stream.Collectors; +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception0; import static cn.iocoder.yudao.module.rescue.service.impl.RescueDriverInfoServiceImpl.getRandomString6; @@ -158,7 +158,7 @@ public class RescueOrderInfoServiceImpl extends ServiceImpl<RescueOrderInfoMappe // } // } //待支付的情况下进行主动查询 - orderInfo.setOrderNo("appJy" + "-" + System.currentTimeMillis() + "-" + getRandomString6()); + orderInfo.setOrderNo("appJy" + "-" + System.currentTimeMillis() + "-" + getRandomString6() + "-" + rescueInfo.getId()); this.updateById(orderInfo); RescueOrderDetail rescueOrderDetail =new RescueOrderDetail(); rescueOrderDetail.setRecordTime(new Date()); @@ -178,6 +178,30 @@ public class RescueOrderInfoServiceImpl extends ServiceImpl<RescueOrderInfoMappe return one; } + /** + * 通过rescue_info_id去拿订单 + * @author 小李 + * @date 10:56 2024/8/27 + * @param rescueInfoId + **/ + private RescueOrderInfo getOrderByRescueInfoId(Integer rescueInfoId){ + /* + 不确定是否会出现多条记录的情况,所以用创建订单时的时间降序去取最新的一条 + */ + List<RescueOrderInfo> list = this.list(new LambdaQueryWrapper<RescueOrderInfo>().eq(RescueOrderInfo::getRescueInfoId, rescueInfoId)); + // 没查到直接抛异常,理论上讲是不会抛的,但以防万一,抛了好过直接报错 + if (ObjectUtils.isEmpty(list) || CollectionUtil.isEmpty(list)){ + throw exception0(500, "系统故障"); + } + // 如果只有一条,就用这一条 + if (list.size() == 1){ + return list.get(0); + } + // 多条就创建时间降序排序取第一条 + List<RescueOrderInfo> result = list.stream().sorted(Comparator.comparing(RescueOrderInfo::getCreateTime).reversed()).collect(Collectors.toList()); + return result.get(0); + } + public Map<String,Object> transactions(Long orderId){ RescueOrderInfo orderInfo = this.getById(orderId); @@ -216,9 +240,10 @@ public class RescueOrderInfoServiceImpl extends ServiceImpl<RescueOrderInfoMappe JSONObject decryptDataObj = JSONObject.parseObject(decryptData, JSONObject.class); if(lock.tryLock()) { try { - // 解密resource中的通知数据 + // 解密resource中的通知数据 TODO String orderNo = decryptDataObj.get("out_trade_no").toString(); - RescueOrderInfo orderInfo = this.getOrderByOrderNo(orderNo); + String rescueInfoId = orderNo.split("-")[orderNo.split("-").length - 1]; + RescueOrderInfo orderInfo = getOrderByRescueInfoId(Integer.parseInt(rescueInfoId)); if (orderInfo.getOrderStatus().equals("1")){ RescueInfo rescueInfo = rescueInfoService.getById(orderInfo.getRescueInfoId()); DriverInfo driverInfo = driverInfoService.getById(rescueInfo.getDriverId());