扫码上菜实现

This commit is contained in:
张松
2025-11-25 15:32:54 +08:00
parent c5597a39dc
commit 973019dd94
6 changed files with 94 additions and 0 deletions

View File

@@ -1722,4 +1722,27 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
mapper.updatePayOrderId(orderId, paymentId, payType, remark);
return true;
}
@Override
public void updateOrderDetailStatus(Long orderDetailId) {
OrderDetail orderDetail = orderDetailService.getById(orderDetailId);
if (orderDetail == null) {
log.warn("订单详情不存在");
}
if (!orderDetail.getSubStatus().equals(TableValueConstant.OrderDetail.SubStatus.READY_TO_SERVE.getCode())
|| !orderDetail.getSubStatus().equals(TableValueConstant.OrderDetail.SubStatus.SENT_OUT.getCode())) {
log.warn("订单详情状态不正确");
return;
}
if (TableValueConstant.OrderDetail.SubStatus.READY_TO_SERVE.getCode().equals(orderDetail.getSubStatus())) {
orderDetail.setSubStatus(TableValueConstant.OrderDetail.SubStatus.SENT_OUT.getCode());
}
if (TableValueConstant.OrderDetail.SubStatus.SENT_OUT.getCode().equals(orderDetail.getSubStatus())) {
orderDetail.setSubStatus(TableValueConstant.OrderDetail.SubStatus.DELIVERED.getCode());
}
orderDetailService.updateById(orderDetail);
}
}

View File

@@ -99,5 +99,27 @@ public class FunUtil {
return result;
}
/**
* 防抖函数:在指定秒数内相同 Key 的任务只会执行一次
* @param key 防抖使用的 Redis Key
* @param seconds 防抖时间(秒)
* @param task 要执行的业务逻辑
* @return true 执行了任务false 在防抖期内被拦截
*/
public boolean debounce(String key, long seconds, Runnable task) {
try {
Boolean success = redisTemplate.opsForValue().setIfAbsent(
key, "1", seconds, TimeUnit.SECONDS
);
if (Boolean.TRUE.equals(success)) {
task.run();
return true;
}
return false;
} catch (Exception e) {
log.error("防抖函数执行失败 key={} err={}", key, e.getMessage(), e);
return false;
}
}
}