key 过期

订单 超时 取消 定时任务
历史订单
订单取消 队列
redis 序列化
This commit is contained in:
2025-02-26 16:14:31 +08:00
parent 0674936901
commit b056d53e91
13 changed files with 191 additions and 44 deletions

View File

@@ -35,7 +35,6 @@ import com.czg.service.RedisService;
import com.czg.service.order.dto.BigDecimalDTO;
import com.czg.service.order.enums.OrderStatusEnums;
import com.czg.service.order.mapper.OrderInfoMapper;
import com.czg.system.entity.SysParams;
import com.czg.utils.AssertUtil;
import com.czg.utils.CzgStrUtils;
import com.czg.utils.PageUtil;
@@ -131,13 +130,24 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
}
@Override
public HistoryOrderVo historyOrder(Long orderId) {
public HistoryOrderVo historyOrder(Long orderId, String tableCode) {
if (orderId == null && StrUtil.isBlank(tableCode)) {
throw new ValidateException("订单id或台桌码不可为空");
}
HistoryOrderVo historyOrderVo = new HistoryOrderVo();
OrderInfo orderInfo = getById(orderId);
OrderInfo orderInfo;
if (orderId == null) {
orderInfo = queryChain()
.select()
.eq(OrderInfo::getTableCode, tableCode)
.one();
} else {
orderInfo = getById(orderId);
}
AssertUtil.isNull(orderInfo, "订单不存在");
historyOrderVo.setInfo(orderInfo);
List<OrderDetail> orderDetails = orderDetailService.queryChain().select()
.eq(OrderDetail::getOrderId, orderId).list();
.eq(OrderDetail::getOrderId, orderInfo.getId()).list();
Map<Integer, List<OrderDetail>> resultMap = new HashMap<>();
// 遍历订单详情列表
for (OrderDetail orderDetail : orderDetails) {
@@ -208,6 +218,8 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
if ("after-pay".equals(orderInfo.getPayMode())) {
//发送打票信息
rabbitPublisher.sendOrderPrintMsg(orderInfo.getId().toString());
} else {
redisService.set(RedisCst.classKeyExpired.EXPIRED_ORDER + orderInfo.getId(), "", 60 * 15);
}
rabbitPublisher.sendOrderStockMsg(orderInfo.getId().toString());
return orderInfo;
@@ -216,6 +228,13 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
@Override
public OrderInfo checkOrderPay(CheckOrderPay param) {
OrderInfo orderInfo = getById(param.getOrderId());
if (!"after-pay".equals(orderInfo.getPayMode())) {
if (redisService.hasKey(RedisCst.classKeyExpired.EXPIRED_ORDER + param.getOrderId())) {
redisService.set(RedisCst.classKeyExpired.EXPIRED_ORDER + param.getOrderId(), "", 60 * 15);
} else {
throw new ValidateException("订单已过期,请重新下单");
}
}
log.info("订单信息:{},优惠信息:{}", JSONObject.toJSONString(orderInfo), JSONObject.toJSONString(param));
if (!orderInfo.getStatus().equals(OrderStatusEnums.UNPAID.getCode())) {
throw new ValidateException("生成支付订单失败,订单不可支付");
@@ -433,6 +452,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
}
upOrderInfo(orderInfo, new BigDecimal(czgCallBackDto.getAmount() / 100L),
DateUtil.parseLocalDateTime(czgCallBackDto.getPayTime()), payment.getId(), null);
redisService.del(RedisCst.classKeyExpired.EXPIRED_ORDER + orderInfo.getId());
} else if ("memberIn".equals(payment.getPayType())) {
ShopUser shopUser = shopUserService.getById(payment.getSourceId());
if (shopUser == null) {
@@ -525,6 +545,23 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
}
}
/**
* 订单到期
*/
@Override
@Transactional
public void expired(Long orderId) {
OrderInfo orderInfo = getById(orderId);
if (orderInfo.getStatus().equals(OrderStatusEnums.UNPAID.getCode())) {
updateChain().set(OrderInfo::getStatus, OrderStatusEnums.CANCELLED.getCode())
.where(OrderInfo::getId).eq(orderId)
.update();
rabbitPublisher.sendOrderCancelMsg(orderId.toString());
} else {
log.info("订单取消失败,订单Id:{},订状态:{}", orderInfo.getId(), orderInfo.getStatus());
}
}
/**
* 初始化订单信息
*/

View File

@@ -94,6 +94,7 @@ public class PayServiceImpl implements PayService {
OrderInfo orderInfo = checkPay(payParam.getCheckOrderPay());
orderInfoService.upOrderInfo(orderInfo, orderInfo.getOrderAmount(),
LocalDateTime.now(), null, PayEnums.CREDIT_PAY);
redisService.del(RedisCst.classKeyExpired.EXPIRED_ORDER + orderInfo.getId());
//TODO 挂账后续逻辑
return CzgResult.success();
}
@@ -104,6 +105,7 @@ public class PayServiceImpl implements PayService {
OrderInfo orderInfo = checkPay(payParam.getCheckOrderPay());
orderInfoService.upOrderInfo(orderInfo, orderInfo.getOrderAmount(),
LocalDateTime.now(), null, PayEnums.CASH_PAY);
redisService.del(RedisCst.classKeyExpired.EXPIRED_ORDER + orderInfo.getId());
return CzgResult.success();
}
@@ -152,6 +154,7 @@ public class PayServiceImpl implements PayService {
Long flowId = shopUserService.updateMoney(shopUser.getShopId(), shopUserMoneyEditDTO);
orderInfoService.upOrderInfo(orderInfo, orderInfo.getOrderAmount(),
LocalDateTime.now(), flowId, PayEnums.VIP_PAY);
redisService.del(RedisCst.classKeyExpired.EXPIRED_ORDER + orderInfo.getId());
return CzgResult.success();
}