支付事务手动提交测试

This commit is contained in:
2024-10-16 17:48:23 +08:00
parent d091184bf8
commit e371816998

View File

@@ -972,7 +972,6 @@ public class PayService {
return Result.success(CodeEnum.SUCCESS); return Result.success(CodeEnum.SUCCESS);
} }
@Transactional(rollbackFor = Exception.class)
public Result cashPay(String orderId, String token, BigDecimal payAmount, BigDecimal discountAmount) { public Result cashPay(String orderId, String token, BigDecimal payAmount, BigDecimal discountAmount) {
if (ObjectUtil.isEmpty(orderId)) { if (ObjectUtil.isEmpty(orderId)) {
return Result.fail(CodeEnum.PARAM); return Result.fail(CodeEnum.PARAM);
@@ -1013,7 +1012,7 @@ public class PayService {
return Result.fail(CodeEnum.PAYTYPENOEXIST); return Result.fail(CodeEnum.PAYTYPENOEXIST);
} }
utils.runFunAndTransactional(() -> {
orderInfo.setPayAmount(ObjectUtil.isEmpty(payAmount) ? orderInfo.getOrderAmount() : payAmount); orderInfo.setPayAmount(ObjectUtil.isEmpty(payAmount) ? orderInfo.getOrderAmount() : payAmount);
orderInfo.setDiscountAmount(ObjectUtil.isEmpty(discountAmount) ? null : discountAmount); orderInfo.setDiscountAmount(ObjectUtil.isEmpty(discountAmount) ? null : discountAmount);
orderInfo.setStaffId(ObjectUtil.isEmpty(staff) ? null : staff.getId()); orderInfo.setStaffId(ObjectUtil.isEmpty(staff) ? null : staff.getId());
@@ -1023,39 +1022,29 @@ public class PayService {
orderInfo.setPayOrderNo("cash".concat(SnowFlakeUtil.generateOrderNo())); 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("已经手动提交事务");
ThreadUtil.sleep(10, TimeUnit.SECONDS);
//更新购物车状态 //更新购物车状态
int cartCount = tbCashierCartMapper.updateByOrderId(orderId, "final"); int cartCount = tbCashierCartMapper.updateByOrderId(orderId, "final");
if (ObjectUtil.isNotNull(orderInfo.getDiscountRatio()) && ObjectUtil.isNotEmpty(orderInfo.getDiscountRatio())) { if (ObjectUtil.isNotNull(orderInfo.getDiscountRatio()) && ObjectUtil.isNotEmpty(orderInfo.getDiscountRatio())) {
tbOrderDetailMapper.updateStatusByOrderId(Integer.valueOf(orderId), "closed", orderInfo.getDiscountRatio()); tbOrderDetailMapper.updateStatusByOrderId(Integer.parseInt(orderId), "closed", orderInfo.getDiscountRatio());
} else { } else {
tbOrderDetailMapper.updateStatusByOrderId(Integer.valueOf(orderId), "closed", null); tbOrderDetailMapper.updateStatusByOrderId(Integer.parseInt(orderId), "closed", null);
} }
log.info("更新购物车:{}", cartCount); log.info("更新购物车:{}", cartCount);
return orderInfo;
});
log.info("事务已提交");
ThreadUtil.sleep(10, TimeUnit.SECONDS);
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("token", token); jsonObject.put("token", token);
jsonObject.put("type", "create"); jsonObject.put("type", "create");
jsonObject.put("orderId", orderId); jsonObject.put("orderId", orderId);
producer.putOrderCollect(jsonObject.toJSONString()); producer.putOrderCollect(jsonObject.toJSONString());
// 打印消息 // 打印消息
if (!OrderUseTypeEnum.DINE_IN_AFTER.getValue().equals(orderInfo.getUseType())) { if (!OrderUseTypeEnum.DINE_IN_AFTER.getValue().equals(orderInfo.getUseType())) {
List<TbOrderDetail> detailList = mPOrderDetailMapper.selectList(new LambdaQueryWrapper<TbOrderDetail>() List<TbOrderDetail> detailList = mPOrderDetailMapper.selectList(new LambdaQueryWrapper<TbOrderDetail>()
@@ -1071,7 +1060,6 @@ public class PayService {
mqData.put("type", "pc"); mqData.put("type", "pc");
producer.sendStockSaleMsg(mqData); producer.sendStockSaleMsg(mqData);
redisUtil.del("SHOP:CODE:USER:" + "pc" + ":" + orderInfo.getShopId() + ":" + DateUtils.getDay() + TokenUtil.parseParamFromToken(token).getString("accountId")); redisUtil.del("SHOP:CODE:USER:" + "pc" + ":" + orderInfo.getShopId() + ":" + DateUtils.getDay() + TokenUtil.parseParamFromToken(token).getString("accountId"));
// 小程序购物车缓存 // 小程序购物车缓存