自己做的网站别人查看,成都网站优化指导,科技医疗网站建设,手机如何制作游戏软件文章目录 查询历史订单查询订单详情取消订单再来一单 查询历史订单
分页查询历史订单可以根据订单状态查询展示订单数据时#xff0c;需要展示的数据包括#xff1a;下单时间、订单状态、订单金额、订单明细#xff08;商品名称、图片#xff09;
#OrderController/*** 历… 文章目录 查询历史订单查询订单详情取消订单再来一单 查询历史订单
分页查询历史订单可以根据订单状态查询展示订单数据时需要展示的数据包括下单时间、订单状态、订单金额、订单明细商品名称、图片
#OrderController/*** 历史订单查询** param page* param pageSize* param status 订单状态 1待付款 2待接单 3已接单 4派送中 5已完成 6已取消* return*/
GetMapping(/historyOrders)
ApiOperation(历史订单查询)
public ResultPageResult page(int page, int pageSize, Integer status) {PageResult pageResult orderService.pageQueryUser(page, pageSize, status);return Result.success(pageResult);
}#OrderService
/*** 用户端订单分页查询* param page* param pageSize* param status* return*/PageResult pageQueryUser(int page, int pageSize, Integer status);#OrderServiceImpl/*** 用户端订单分页查询** param pageNum* param pageSize* param status* return*/public PageResult pageQuery4User(int pageNum, int pageSize, Integer status) {// 设置分页PageHelper.startPage(pageNum, pageSize);OrdersPageQueryDTO ordersPageQueryDTO new OrdersPageQueryDTO();ordersPageQueryDTO.setUserId(BaseContext.getCurrentId());ordersPageQueryDTO.setStatus(status);// 分页条件查询PageOrders page orderMapper.pageQuery(ordersPageQueryDTO);ListOrderVO list new ArrayList();// 查询出订单明细并封装入OrderVO进行响应if (page ! null page.getTotal() 0) {for (Orders orders : page) {Long orderId orders.getId();// 订单id// 查询订单明细ListOrderDetail orderDetails orderDetailMapper.getByOrderId(orderId);OrderVO orderVO new OrderVO();BeanUtils.copyProperties(orders, orderVO);orderVO.setOrderDetailList(orderDetails);list.add(orderVO);}}return new PageResult(page.getTotal(), list);
}/**OrderMapper* 分页条件查询并按下单时间排序* param ordersPageQueryDTO*/
PageOrders pageQuery(OrdersPageQueryDTO ordersPageQueryDTO);#OrderMapper.xml
select idpageQuery resultTypeOrdersselect * from orderswhereif testnumber ! null and number!and number like concat(%,#{number},%)/ifif testphone ! null and phone!and phone like concat(%,#{phone},%)/ifif testuserId ! nulland user_id #{userId}/ifif teststatus ! nulland status #{status}/ifif testbeginTime ! nulland order_time gt; #{beginTime}/ifif testendTime ! nulland order_time lt; #{endTime}/if/whereorder by order_time desc
/select/** OrderDetailMapper* 根据订单id查询订单明细* param orderId* return*/
Select(select * from order_detail where order_id #{orderId})
ListOrderDetail getByOrderId(Long orderId);查询订单详情
根据订单id查询订单详情 user/order/orderDetail/:id GET
/*** 查询订单详情* param id* return*/
GetMapping(/orderDetail/{id})
ApiOperation(查询订单详情)
public ResultOrderVO details(PathVariable(id) Long id){OrderVO orderVO orderService.details(id);return Result.success(orderVO);
}/*** 订单详情* param id* return*/
OrderVO details(Long id);/**** 查询订单详情* param id* return*/
Override
public OrderVO details(Long id) {//根据id查询订单Orders orders orderMapper.getById(id);//查询该订单对应得菜品/套餐明显ListOrderDetail orderDetailList orderDetailMapper.getByOrderId(orders.getId());// 将该订单及其详情封装到OrderVO并返回OrderVO orderVO new OrderVO();BeanUtils.copyProperties(orders,orderVO);orderVO.setOrderDetailList(orderDetailList);return orderVO;
}/*** 根据id查询订单* param id* return*/
Select(select * from orders where id #{id})
Orders getById(Long id);取消订单
业务规则
待支付和待接单状态下用户可直接取消订单商家已接单状态下用户取消订单需电话沟通商家派送中状态下用户取消订单需电话沟通商家如果在待接单状态下取消订单需要给用户退款取消订单后需要将订单状态修改为“已取消”
PUT /user/order/cancel/{id}
/*** 用户取消订单* param id* return* throws Exception*/
PutMapping(/cancel/{id})
ApiOperation(取消订单)
public Result cancel(PathVariable(id) Long id) throws Exception{//根据传入的订单id 取消订单orderService.userCancelById(id);return Result.success();
}/*** 用户取消订单* param id* throws Exception*/
void userCancelById(Long id) throws Exception;/*** 取消订单* param id* throws Exception*/
Override
public void userCancelById(Long id) throws Exception {//根据id查询订单Orders ordersDB orderMapper.getById(id);if(ordersDB null){//订单不存在throw new OrderBusinessException(MessageConstant.ORDER_NOT_FOUND);}//订单状态 1待付款 2待接单 3已接单 4派送中 5已完成 6已取消if(ordersDB.getStatus() 2){throw new OrderBusinessException(MessageConstant.ORDER_STATUS_ERROR);}Orders orders new Orders();orders.setId(ordersDB.getId());//订单处于待接单状态下取消 需要进行退款if(ordersDB.getStatus().equals(Orders.TO_BE_CONFIRMED)){//调用微信支付退款接口weChatPayUtil.refund(ordersDB.getNumber(),//商户订单号ordersDB.getNumber(),//商户退款单号new BigDecimal(0.01),//退款金额 单位 元new BigDecimal(0.01)// 原订单金额);//支付状态修改为 已退款orders.setPayStatus(Orders.REFUND);}//更新订单状态 取消原因 取消时间orders.setStatus(Orders.CANCELLED);orders.setCancelReason(用户取消);orders.setCancelTime(LocalDateTime.now());orderMapper.update(orders);
}再来一单
POST /user/order/repetition/{id}
将原订单商品重新加入购物车中
/*** 再来一单* param id* return*/
PostMapping(/repetition/{id})
ApiOperation(再来一单)
public Result repetition(PathVariable Long id){orderService.repetition(id);return Result.success();
}/*** 再来一单* param id*/
void repetition(Long id);/*** 再来一单* param id*/
Transactional
Override
public void repetition(Long id) {//查询当前用户idLong userId BaseContext.getCurrentId();//根据订单id查询当前订单详情ListOrderDetail orderDetailList orderDetailMapper.getByOrderId(id);//将订单详情对象转换为购物车对象ListShoppingCart shoppingCartList orderDetailList.stream().map(x- {ShoppingCart shoppingCart new ShoppingCart();//将原订单详情里面的菜品信息重新复制到购物车对象BeanUtils.copyProperties(x, shoppingCart, id);shoppingCart.setUserId(userId);shoppingCart.setCreateTime(LocalDateTime.now());return shoppingCart;}).collect(Collectors.toList());//将购物车对像批量添加到数据库shoppingCartMapper.insertBatch(shoppingCartList);
}