Timer--预约单

每两分钟执行一次findBookingOrderNeedDispatchAndDispatch()方法

  public void findBookingOrderNeedDispatchAndDispatch(){
        List<BookingOrder> list=bookingOrderMapper.findBookingOrderNeedDispatch();
        for (BookingOrder bookingOrder :list){
            //如果用户最早可收获时间-当前时间<30分钟
            if(bookingOrder.getDeliveryStartTime().getTime()-new Date().getTime()<1800000){
                bookingOrder.setEnableToDispatch(1);
                bookingOrder.setIsUseFul(0);
                //根据bookingOrder表的orderId查询到order表的信息
               Order order= bookingOrderMapper.selectFullOrderByBookingOrderId(bookingOrder.getOrderId());
                //更幸order表的enableToDispatch where order.orderId=bookingOrder.orderId;
                bookingOrderMapper.updateBookingOrdersStatus(order.getOrderId());
            }
            else{
                break;
            }
        }

    }
当用户最早收货时间-当前时间<30分钟时,把订单设置为可派单,并把isUseFul设置为0(逻辑删除),并获得oderId ,根据orderId更改order表的是否可派单改为可派单  因为是预约单订单表是通过“用户最早可收获时间排序”,所以当前面的订单不满足if里面的条件的话,后面的也肯定不满足,故使用break; 若满足的话,将其从队列里“删除(不删数据,逻辑删除)”
 update `order` set `order`.enableToDispatch = 1 and `order`.isUseFul= 0  where `order`.orderId=#{orderId}

这样的话自动派单模块就可以把该订单加入派单逻辑

===============================================================================================

还没测试,不一定能跑,天天加班不一定有时间写博客 先甩上来再说。

 

================================================================================================

刚开始做预约单的时候,准备用户下一个预约单,就用一个Timer去管理,这样会有大量的Timer,影响性能,网上查了很多管理Timer的方法,基本上都是https://www.cnblogs.com/lujiango/p/9378669.html类似于这个文章,查了好久个不同的博客都是一模一样,这里写的最后一个方法,看了一会也不清楚,预约单又急着上线,暂时先用了我的方法,以后看懂了会继续做优化 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值