From e371816998091e58cf61963779a3308194468184 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Wed, 16 Oct 2024 17:48:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E4=BB=98=E4=BA=8B=E5=8A=A1=E6=89=8B?= =?UTF-8?q?=E5=8A=A8=E6=8F=90=E4=BA=A4=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashierservice/service/PayService.java | 58 ++++++++----------- 1 file changed, 23 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java index a6d4007..14725e7 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java @@ -972,7 +972,6 @@ public class PayService { return Result.success(CodeEnum.SUCCESS); } - @Transactional(rollbackFor = Exception.class) public Result cashPay(String orderId, String token, BigDecimal payAmount, BigDecimal discountAmount) { if (ObjectUtil.isEmpty(orderId)) { return Result.fail(CodeEnum.PARAM); @@ -1013,49 +1012,39 @@ public class PayService { return Result.fail(CodeEnum.PAYTYPENOEXIST); } + utils.runFunAndTransactional(() -> { + orderInfo.setPayAmount(ObjectUtil.isEmpty(payAmount) ? orderInfo.getOrderAmount() : payAmount); + orderInfo.setDiscountAmount(ObjectUtil.isEmpty(discountAmount) ? null : discountAmount); + orderInfo.setStaffId(ObjectUtil.isEmpty(staff) ? null : staff.getId()); + orderInfo.setDiscountRatio(ObjectUtil.isNotEmpty(payAmount) ? payAmount.divide(orderInfo.getOrderAmount(), 2, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_DOWN) : null); + orderInfo.setPayType("cash"); + orderInfo.setStatus("closed"); + orderInfo.setPayOrderNo("cash".concat(SnowFlakeUtil.generateOrderNo())); - orderInfo.setPayAmount(ObjectUtil.isEmpty(payAmount) ? orderInfo.getOrderAmount() : payAmount); - orderInfo.setDiscountAmount(ObjectUtil.isEmpty(discountAmount) ? null : discountAmount); - orderInfo.setStaffId(ObjectUtil.isEmpty(staff) ? null : staff.getId()); - orderInfo.setDiscountRatio(ObjectUtil.isNotEmpty(payAmount) ? payAmount.divide(orderInfo.getOrderAmount(), 2, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_DOWN) : null); - orderInfo.setPayType("cash"); - orderInfo.setStatus("closed"); - orderInfo.setPayOrderNo("cash".concat(SnowFlakeUtil.generateOrderNo())); + tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo); - tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo); - // 创建一个新的事务定义 - DefaultTransactionDefinition def = new DefaultTransactionDefinition(); - TransactionStatus status = transactionManager.getTransaction(def); - try { - // 提交当前事务 - transactionManager.commit(status); - } catch (Exception e) { - transactionManager.rollback(status); // 回滚 - throw e; // 重新抛出异常 - } - log.info("已经手动提交事务"); + //更新购物车状态 + int cartCount = tbCashierCartMapper.updateByOrderId(orderId, "final"); + + + if (ObjectUtil.isNotNull(orderInfo.getDiscountRatio()) && ObjectUtil.isNotEmpty(orderInfo.getDiscountRatio())) { + tbOrderDetailMapper.updateStatusByOrderId(Integer.parseInt(orderId), "closed", orderInfo.getDiscountRatio()); + } else { + tbOrderDetailMapper.updateStatusByOrderId(Integer.parseInt(orderId), "closed", null); + } + log.info("更新购物车:{}", cartCount); + return orderInfo; + }); + + log.info("事务已提交"); ThreadUtil.sleep(10, TimeUnit.SECONDS); - - //更新购物车状态 - int cartCount = tbCashierCartMapper.updateByOrderId(orderId, "final"); - - - if (ObjectUtil.isNotNull(orderInfo.getDiscountRatio()) && ObjectUtil.isNotEmpty(orderInfo.getDiscountRatio())) { - tbOrderDetailMapper.updateStatusByOrderId(Integer.valueOf(orderId), "closed", orderInfo.getDiscountRatio()); - } else { - tbOrderDetailMapper.updateStatusByOrderId(Integer.valueOf(orderId), "closed", null); - } - log.info("更新购物车:{}", cartCount); - JSONObject jsonObject = new JSONObject(); jsonObject.put("token", token); jsonObject.put("type", "create"); jsonObject.put("orderId", orderId); - producer.putOrderCollect(jsonObject.toJSONString()); - // 打印消息 if (!OrderUseTypeEnum.DINE_IN_AFTER.getValue().equals(orderInfo.getUseType())) { List detailList = mPOrderDetailMapper.selectList(new LambdaQueryWrapper() @@ -1071,7 +1060,6 @@ public class PayService { mqData.put("type", "pc"); producer.sendStockSaleMsg(mqData); - redisUtil.del("SHOP:CODE:USER:" + "pc" + ":" + orderInfo.getShopId() + ":" + DateUtils.getDay() + TokenUtil.parseParamFromToken(token).getString("accountId")); // 小程序购物车缓存