伙伴云客服论坛»论坛 S区 S客户管理 查看内容

0 评论

0 收藏

分享

Java电商项目学习(十) 订单管理模块开发

订单管理接口设计前台订单管理接口
后台订单管理接口
创建订单控制器中传入参数为session和收货地址ID,首先校验用户是否登录,假设是则将用户id和shippingId交给效劳层控制函数处置;
效劳层处置函数首先根据userId查询购物车表,得到购物车中已勾选的商品明细,然后遍历得到订单总价(前提要校验产品售卖状态和库存),转换为订单明细的列表,再生成订单Order(订单号的生成方式是currentTime + new Random().nextInt(100),防止反复,后续可以更详细的对订单号的生成方式停止编排),接着遍历订单明细的列表,给每个订单明细OrderItem添加订单号,之后将订单明细列表批量插入到order_item表中1
2
3
4
5
6
7
8
9
10
11
12
insert into mmall_order_item (id, order_no,user_id, product_id,
product_name, product_image, current_unit_price,
quantity, total_price, create_time,
update_time)
values
(
#{item.id},#{item.orderNo},#{item.userId},#{item.productId},#{item.productName},#{item.productImage},#{item.currentUnitPrice},#{item.quantity},#{item.totalPrice},now(),now()
)
通过购物车商品生成订单后,将产品库存减少,并清空购物车中已选的商品
返回给前端的订单数据还需要进一步装配,将Order和OrderItemList装配成OrderVo返回即可
取消订单控制器中传入参数为session和订单号orderNo,首先校验用户是否登录,假设是则将用户id和orderNo交给效劳层控制函数处置;
效劳层处置函数首先根据userId和orderNo查询数据库中的对应订单order,判断订单是否存在,判断订单状态是否为已支付,假设订单存在且未支付,则更新订单状态为CANCELED,更新到数据库订单列表中,返回胜利
获取订单商品信息控制器中传入参数为session,首先校验用户是否登录,假设是则将用户id交给效劳层控制函数处置;
效劳层处置函数中首先根据userId查询购物车中已勾选商品的明细列表cartList,然后转换成订单明细列表orderItemList,再转换成orderItemVo的列表orderItemVoList,并计算订单商品总价,根据以上信息装配ordERProductVo,作为ServerResponse的data返回即可
获取订单详情控制器中传入参数为session和订单号orderNo,首先校验用户是否登录,假设是则将用户id和orderNo交给效劳层控制函数处置;
效劳层处置函数根据userId和orderNo查询数据库订单表,判断订单order是否存在,然后再根据userId和orderNo查询数据库订单明细表,得到订单明细列表orderItemList,然后根据order和orderItemList装配orderVo,作为ServerResponse的data返回
获取用户订单分页列表控制器中传入参数为session、pageNum、pageSize,首先校验用户是否登录,假设是则将用户id和pageNum、pageSize交给效劳层控制函数处置;
效劳层处置函数仅根据userId查询数据库订单表,得到订单的列表orderList,然后装配成orderVo的列表orderVoList,作为分页信息的列表,最后将分页信息pageInfo作为ServerResponse的data返回即可1
2
3
4
5
6
7
8
9
10public ServerResponse (Integer userId, int pageNum, int pageSize){
PageHelper.startPage(pageNum, pageSize);
List orderList = orderMapper.selectByUserId(userId);
List orderVoList = assembleOrderVoList(orderList, userId);
PageInfo pageInfo = new PageInfo(orderList);
pageInfo.setList(orderVoList);
return ServerResponse.createBySuccess(pageInfo);
}
管理员获取用户订单分页列表与上面类似,不同之处在于控制器中需要判断是否是管理员,效劳层查订单表不需要userId,把全部订单表都查出来,分页即可1
2
3
4
5
6
7
8
9
10public ServerResponse manageList(int pageNum, int pageSize){
PageHelper.startPage(pageNum, pageSize);
List orderList = orderMapper.selectAllOrder();
List orderVoList = assembleOrderVoList(orderList, null);
PageInfo pageInfo = new PageInfo(orderList);
pageInfo.setList(orderVoList);
return ServerResponse.createBySuccess(pageInfo);
}
管理员获取订单详情与普通用户查看订单详情类似,传入参数为session和订单号orderNo,不同之处在于控制器中需要判断是否是管理员,查询数据库时不需要传入userId
管理员按订单号查询与管理员获取订单详情类似,传入参数为session和订单号orderNo,不同之处在于还要添加分页分页参数,为后续的模糊匹配查询作准备
管理员订单发货控制器中传入参数为session和订单号orderNo,首先校验用户是否登录,判断管理员权限,假设是则将orderNo交给效劳层控制函数处置;
效劳层处置函数根据orderNo查询数据库订单表,判断订单是否存在,再判断订单状态是否为已支付,假设是则更新状态为SHIPPED,并同时更新发货时间,更新到数据库中,返回“发货胜利”

回复

举报 使用道具

相关帖子
全部回复
暂无回帖,快来参与回复吧
本版积分规则 高级模式
B Color Image Link Quote Code Smilies

VVeraVV
注册会员
主题 22
回复 22
粉丝 0
|网站地图
快速回复 返回顶部 返回列表