外卖小程序实战

简介: 外卖小程序实战
    /**
     * 商家端APP接单
     * @param param
     * @param userId
     * @return
     */
    @Override
    public Object acceptOrder(acceptOrderDto param, Integer userId) throws Exception {
 
        //1.检查参数
        if (param == null || param.getShopId() == null) {
            throw new TakeOutException("shopId 为空");
        }
 
        // 2. 获取分布式锁,key设置为订单 ID
        RLock lock = redissonClient.getLock("order_lock:" + param.getOrderId());
        try {
            // 2.1 尝试获取锁,等待超时时间30秒
            boolean lockAcquired = lock.tryLock(30, TimeUnit.SECONDS);
            if (!lockAcquired) {
                throw new TakeOutException("获取订单锁失败");
            }
            //3.得到订单信息
            Order order = orderMapper.selectById(param.getOrderId());
 
            //订单不存在
            if (order == null) {
                throw new TakeOutException("订单不存在");
            }
 
            //4.改变订单状态
            order.setStatus(2); // 设置订单状态为“已接单”
            orderMapper.updateById(order);
 
            //5.返回处理结果
            acceptedOrderResp acceptedOrderResp = new acceptedOrderResp();
            acceptedOrderResp.setStatus(2);
            acceptedOrderResp.setShopId(param.getShopId());
            return Result.ok(acceptedOrderResp);
        }finally {
            // 6. 无论如何,在方法结束时都要释放锁
            lock.unlock();
        }
 
    }
    @PostMapping("/acceptedOrder")
    @Operation(summary = "商家端APP接受订单")
    public Result acceptOrder(@RequestBody @Valid acceptOrderDto param) throws Exception {
        log.info("/api/order/acceptedOrder ", JSONUtil.toJsonStr(param));
        Integer userId = super.getUserId();
        return Result.ok(orderService.acceptOrder(param, userId));
    }


目录
相关文章
|
2月前
|
JavaScript 小程序 开发者
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
462 0
|
5月前
|
小程序 安全 搜索推荐
【微信小程序开发实战项目】——个人中心页面的制作
本文介绍了如何设计和实现一个网上花店的微信小程序,包括个人中心、我的订单和我的地址等功能模块。个人中心让用户能够查看订单历史、管理地址和与客服互动。代码示例展示了`own.wxml`、`own.wxss`和`own.js`文件,用于构建个人中心界面,包括用户信息、订单链接、收藏、地址、客服和版本信息。我的订单部分展示了订单详情,包括商品图片、名称、销量、价格和订单状态,用户可以查看和管理订单。我的地址功能允许用户输入和编辑收货信息,包括联系人、性别、电话、城市和详细地址。每个功能模块都附有相应的WXML和WXSS代码,以及简洁的样式设计。
281 0
【微信小程序开发实战项目】——个人中心页面的制作
|
5月前
|
小程序 开发者
uniapp实战 —— 开发微信小程序的调试技巧
uniapp实战 —— 开发微信小程序的调试技巧
490 1
|
5月前
|
前端开发 小程序
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
423 0
|
5月前
|
小程序
【微信小程序】实战案例 -- 向订阅用户发送消息(范例:报名提醒)
【微信小程序】实战案例 -- 向订阅用户发送消息(范例:报名提醒)
296 0
|
5月前
|
小程序 前端开发
【微信小程序-原生开发】TDesign 实战模板——聊天气泡
【微信小程序-原生开发】TDesign 实战模板——聊天气泡
105 0
|
5月前
|
小程序
【微信小程序-原生开发】TDesign 实战模板——带性别图标的头像
【微信小程序-原生开发】TDesign 实战模板——带性别图标的头像
74 0
|
5月前
|
小程序 定位技术
【微信小程序-原生开发】TDesign 实战模板——个人信息编辑页
【微信小程序-原生开发】TDesign 实战模板——个人信息编辑页
55 0
|
5月前
|
JSON 小程序 JavaScript
【微信小程序-原生开发】TDesign 实战模板——账号密码登录页(含密码显示隐藏的技巧)
【微信小程序-原生开发】TDesign 实战模板——账号密码登录页(含密码显示隐藏的技巧)
154 0
|
5月前
|
小程序 定位技术
微信小程序实战——获取用户地理位置信息
微信小程序实战——获取用户地理位置信息
92 0