您的位置:首页 > 娱乐 > 八卦 > “再来一单“业务功能开发

“再来一单“业务功能开发

2024/10/6 0:37:34 来源:https://blog.csdn.net/Very_a/article/details/140848650  浏览:    关键词:“再来一单“业务功能开发

文章目录

    • 概要
    • 整体架构流程
    • 技术细节
    • 小结

概要

再来一单”功能常见于餐饮、零售、外卖等行业,主要目的是为了简化用户的重复购买流程,提高用户体验和效率。

需求分析以及接口设计

  • 再来一单就是将原订单中的商品重新加入到购物车中,所以本质上是"增"的操作,则用post请求
  • 前端将订单id提交过来
  • 后端返回一个成功的信号即可

技术细节

1.Controller层:

按照接口设计来编写

@PostMapping("/repetition/{id}")@ApiOperation("再来一单")public Result againSubmit(@PathVariable Long id){log.info("再来一单,id为:{}", id);orderService.againSubmit(id);return Result.success();}

2.Service层:

  • 利用订单id将订单明细查出来
  • 将订单明细对象转换成购物车,方便插入购物车表
  • 插入购物车表
public void againSubmit(Long id) {//再来一单就是将原订单中的商品重新加入到购物车中Long userId = BaseContext.getCurrentId();//根据订单id查询到这个订单明细List<OrderDetail> orderDetails = orderDetailMapper.selectByOrderId(id);// 将订单详情对象转换为购物车对象List<ShoppingCart> shoppingCartList = orderDetails.stream().map(x -> {ShoppingCart shoppingCart = new ShoppingCart();// 将原订单详情里面的菜品信息重新复制到购物车对象中BeanUtils.copyProperties(x, shoppingCart, "id");//id是忽略填充shoppingCart.setUserId(userId);shoppingCart.setCreateTime(LocalDateTime.now());return shoppingCart;}).collect(Collectors.toList());//将数据插入至购物车表shoppingCartMapper.insertBatch(shoppingCartList);}

3.Mapper层

<insert id="insertBatch">insert into `sky-take-out`.shopping_cart (id, name, image, user_id, dish_id, setmeal_id, dish_flavor, number, amount, create_time) VALUES<foreach collection="shoppingCartList" item="shoppingCart" separator=",">(#{shoppingCart.id},#{shoppingCart.name},#{shoppingCart.image},#{shoppingCart.userId},#{shoppingCart.dishId},#{shoppingCart.setmealId},#{shoppingCart.dishFlavor},#{shoppingCart.number},#{shoppingCart.amount},#{shoppingCart.createTime})</foreach></insert>

效果展示

 

说明代码没有问题

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com