|
|
@@ -26,6 +26,7 @@ import org.springframework.web.bind.annotation.*;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Optional;
|
|
|
@@ -177,6 +178,7 @@ public class UserOrderController extends BaseController {
|
|
|
});
|
|
|
// 保存子订单
|
|
|
createFootprint(userId, item.getMdId());
|
|
|
+ setPickUpNum(posOrder);
|
|
|
posOrderService.save(posOrder);
|
|
|
|
|
|
// 创建订单成功,给商家推送"您有新订单了"
|
|
|
@@ -199,6 +201,41 @@ public class UserOrderController extends BaseController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //生成取餐码,根据门店id,当天取餐码从1开始累加
|
|
|
+ private void setPickUpNum(PosOrder order) {
|
|
|
+ if (order == null || order.getMdId() == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ // 获取当前日期,格式为 yyyy-MM-dd
|
|
|
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ String today = dateFormat.format(new Date());
|
|
|
+
|
|
|
+ // 查询当天该门店的最大取餐码
|
|
|
+ LambdaQueryWrapper<PosOrder> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(PosOrder::getMdId, order.getMdId());
|
|
|
+ queryWrapper.like(PosOrder::getCretim, today);
|
|
|
+ queryWrapper.orderByDesc(PosOrder::getPickUpNum);
|
|
|
+ queryWrapper.last("LIMIT 1");
|
|
|
+
|
|
|
+ PosOrder lastOrder = posOrderService.getOne(queryWrapper);
|
|
|
+ long nextNum = 1L;
|
|
|
+ if (lastOrder != null && lastOrder.getPickUpNum() != null) {
|
|
|
+ // 直接使用Long类型的取餐码
|
|
|
+ nextNum = lastOrder.getPickUpNum() + 1;
|
|
|
+ }
|
|
|
+ // 生成新的取餐码:直接使用Long数字
|
|
|
+ order.setPickUpNum(nextNum);
|
|
|
+ logger.info("生成取餐码成功:门店ID={}, 取餐码={}", order.getMdId(), nextNum);
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("生成取餐码失败:门店ID={}, 错误信息={}", order.getMdId(), e.getMessage(), e);
|
|
|
+ // 生成失败时使用时间戳作为备用方案
|
|
|
+ Long fallbackPickUpNum = System.currentTimeMillis() % 10000;
|
|
|
+ order.setPickUpNum(fallbackPickUpNum);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//设置显示状态
|
|
|
private void handleIsDisplay(PosOrder posOrder){
|
|
|
if (StringUtils.isEmpty(posOrder.getDelryTime())) {
|