网站维护 静态页面quercus wordpress
web/
2025/9/30 12:13:02/
文章来源:
网站维护 静态页面,quercus wordpress,广东广州网点快速网站建设,网站页面效果图怎么做1.首先明确一下业务规则:
业务规则#xff1a; 再来一单就是将原订单中的商品重新加入到购物车中
2.产品页面原型和开发接口文档 3.业务层逻辑代码开发
3.1 查询方向
我们要明确的是: 再来一单就是将原订单中的商品重新加入到购物车中------直接把商品加入到购物车#…1.首先明确一下业务规则:
业务规则 再来一单就是将原订单中的商品重新加入到购物车中
2.产品页面原型和开发接口文档 3.业务层逻辑代码开发
3.1 查询方向
我们要明确的是: 再来一单就是将原订单中的商品重新加入到购物车中------直接把商品加入到购物车不需要查找orders对象我们直接利用参数id查询当前订单详情包括菜品信息以及喜好或者套餐信息。
3.2 将订单详情对象转换为购物车对象
此次对象的转换我们使用到的是:orderDetailList.stream().map(x-){ } ListShoppingCart shoppingCartList orderDetailList.stream().map(x-{//这里的x代表的是 orderDetailList集合中每一个元素ShoppingCart shoppingCartnew ShoppingCart();return shoppingCart;}) 这里orderDetailList是一个列表经过查询数据后的结果)而 stream() 方法会将其转换为一个流Stream以便进行一系列的函数式操作。 先将orderDetailList转换为一个Stream然后使用map操作将每个OrderDetail对象转换为ShoppingCart对象。 map 是Stream API中的一个中间操作它接受一个函数作为参数并将该函数应用到流中的每一个元素上。这里的 x 是流中元素的占位符你可以通过 x 来引用流中的每一个元素并对其进行某种转换或操作。
注: map操作必须返回一个对象 例如假设你有一个 OrderDetail 类它有一个 price 属性你想得到所有订单详情的价格之和。你可以这样做
ListOrderDetail orderDetailList // ... 获取订单详情列表
double totalPrice orderDetailList.stream().map(orderDetail::getPrice) //将每个OrderDetail对象转换为它的价格(假设getPrice是获取价格的方法).mapToDouble(Double::doubleValue) //将StreamBigDecimal转换为StreamDouble(如果price是BigDecimal类型).sum(); //计算价格的总和 在上面的代码中OrderDetail::getPrice 是一个方法引用它等价于 x - x.getPrice()。这意味着对于 orderDetailList 中的每个 OrderDetail 对象 x我们都在调用其 getPrice() 方法来获取价格。 mapToDouble 方法是将Stream中的元素转换为一个double值的流这里假设 getPrice() 返回的是 BigDecimal 类型我们需要将其转换为 double 以便进行数学运算。 最后sum() 方法计算了所有价格的总和。
请注意Stream API 提供了丰富的中间操作和终止操作允许你以声明式的方式处理集合数据。中间操作会返回一个新的流而终止操作会返回一个非流的结果或者执行某种副作用。
3.3 将原订单详情里面的菜品信息重新复制到购物车对象中
BeanUtils.copyProperties(x, shoppingCart, id); 使用Java的Stream API和Apache Commons BeanUtils库来将orderDetailList中的OrderDetail对象转换为ShoppingCart对象列表。 BeanUtils.copyProperties( )的第三个参数是一个用来指定要排除的属性名(参数)即忽略哪个参数
为什么要根据id参数值忽略某些数据 我们在进行再来一单业务逻辑处理前首先在浏览界面对所选菜品或套餐进行加入购物车操作在这一操作中购物车中的id代表自身序号接入一份数据便会在支付成功之后购物车中的数据会自动删除。由于购物车属性shopping_cart与订单属性orders性质不同若是把订单属性中的id强加给购物车信息紊乱无法使用。
3.4 收集Stream中映射后的对象
.collect(Collectors.toList()); 使用了Collectors.toList()来收集Stream中映射后的所有ShoppingCart对象到一个新的列表中。
完整代码如下
public void repetition(long id) {//根据id查询到原来订单中菜品信息ListOrderDetail orderDetailList orderDetailMapper.getByOrderId(id);
//查询当前用户idLong userId BaseContext.getCurrentId();
// 将订单详情对象转换为购物车对象ListShoppingCart shoppingCartList orderDetailList.stream().map(x-{//这里的x代表的是 orderDetailList集合中每一个元素ShoppingCart shoppingCartnew ShoppingCart();
// 将原订单详情里面的菜品信息重新复制到购物车对象中BeanUtils.copyProperties(x,shoppingCart,id);shoppingCart.setUserId(userId);shoppingCart.setCreateTime(LocalDateTime.now());
return shoppingCart;}).collect(Collectors.toList());//Collectors.toList()来收集Stream中映射后的所有ShoppingCart对象到一个新的列表中
//将购物车对象批量添加到数据库shoppingCartMapper.insertBatch(shoppingCartList);}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84444.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!