From f68ed79b7faf51e6ade8089fe67ab84d73435db7 Mon Sep 17 00:00:00 2001 From: slhaf Date: Sat, 28 Dec 2024 20:36:18 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AB=AF:=20=20=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=8E=86=E5=8F=B2=E8=AE=A2=E5=8D=95=20=20=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E8=AE=A2=E5=8D=95=E8=AF=A6=E6=83=85=20=20=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E8=AE=A2=E5=8D=95=20=20=E5=86=8D=E6=9D=A5=E4=B8=80?= =?UTF-8?q?=E5=8D=95=20=E7=AE=A1=E7=90=86=E7=AB=AF:=20=20=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E6=9D=A1=E4=BB=B6=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sky-server/pom.xml | 5 ++ .../sky/controller/admin/OrderController.java | 28 ++++++ .../sky/controller/user/OrderController.java | 31 +++++++ .../com/sky/mapper/OrderDetailMapper.java | 2 + .../main/java/com/sky/mapper/OrderMapper.java | 8 ++ .../com/sky/mapper/ShoppingCartMapper.java | 6 ++ .../java/com/sky/service/OrderService.java | 39 ++++++++ .../sky/service/impl/OrderServiceImpl.java | 90 ++++++++++++++++++- .../resources/mapper/OrderDetailMapper.xml | 3 + .../src/main/resources/mapper/OrderMapper.xml | 25 ++++++ .../resources/mapper/ShoppingCartMapper.xml | 7 ++ 11 files changed, 241 insertions(+), 3 deletions(-) create mode 100644 sky-server/src/main/java/com/sky/controller/admin/OrderController.java diff --git a/sky-server/pom.xml b/sky-server/pom.xml index a5cccf0..b3c03d3 100644 --- a/sky-server/pom.xml +++ b/sky-server/pom.xml @@ -115,6 +115,11 @@ org.apache.poi poi-ooxml + + com.github.pagehelper + pagehelper + 6.1.0 + org.projectlombok lombok diff --git a/sky-server/src/main/java/com/sky/controller/admin/OrderController.java b/sky-server/src/main/java/com/sky/controller/admin/OrderController.java new file mode 100644 index 0000000..d1c52c8 --- /dev/null +++ b/sky-server/src/main/java/com/sky/controller/admin/OrderController.java @@ -0,0 +1,28 @@ +package com.sky.controller.admin; + +import com.sky.dto.OrdersPageQueryDTO; +import com.sky.result.PageResult; +import com.sky.result.Result; +import com.sky.service.OrderService; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/admin/order") +@Api(tags = "Order-Controller") +@Slf4j +public class OrderController { + @Autowired + private OrderService orderService; + + @GetMapping("/conditionSearch") + public Result conditionSearch(OrdersPageQueryDTO ordersPageQueryDTO) { + PageResult pageResult = orderService.pageQuery(ordersPageQueryDTO); + return Result.success(pageResult); + } +} diff --git a/sky-server/src/main/java/com/sky/controller/user/OrderController.java b/sky-server/src/main/java/com/sky/controller/user/OrderController.java index 9286c5b..f35c1e2 100644 --- a/sky-server/src/main/java/com/sky/controller/user/OrderController.java +++ b/sky-server/src/main/java/com/sky/controller/user/OrderController.java @@ -1,11 +1,14 @@ package com.sky.controller.user; +import com.sky.dto.OrdersDTO; import com.sky.dto.OrdersPaymentDTO; import com.sky.dto.OrdersSubmitDTO; +import com.sky.result.PageResult; import com.sky.result.Result; import com.sky.service.OrderService; import com.sky.vo.OrderPaymentVO; import com.sky.vo.OrderSubmitVO; +import com.sky.vo.OrderVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -42,4 +45,32 @@ public class OrderController { log.info("生成预支付交易单:{}", orderPaymentVO); return Result.success(orderPaymentVO); } + + @GetMapping("/historyOrders") + public Result historyOrders(Integer page, Integer pageSize, Integer status) { + log.info("查询历史订单"); + PageResult pageResult = orderService.getHistoryOrders(page, pageSize, status); + return Result.success(pageResult); + } + + @GetMapping("/orderDetail/{id}") + public Result orderDetail(@PathVariable Long id) { + log.info("check order detail: {}", id); + OrderVO orderVO = orderService.getOrderDetailById(id); + return Result.success(orderVO); + } + + @PutMapping("/cancel/{id}") + public Result cancel(@PathVariable Long id) { + log.info("cancel order: {}", id); + orderService.cancel(id); + return Result.success(); + } + + @PostMapping("/repetition/{id}") + public Result repetition(@PathVariable Long id) { + log.info("repetition order: {}", id); + orderService.repetition(id); + return Result.success(); + } } diff --git a/sky-server/src/main/java/com/sky/mapper/OrderDetailMapper.java b/sky-server/src/main/java/com/sky/mapper/OrderDetailMapper.java index 3c7c6aa..69a23d0 100644 --- a/sky-server/src/main/java/com/sky/mapper/OrderDetailMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/OrderDetailMapper.java @@ -13,4 +13,6 @@ public interface OrderDetailMapper { * @param orderDetails */ void insertBatch(List orderDetails); + + List getByOrderId(Long orderId); } diff --git a/sky-server/src/main/java/com/sky/mapper/OrderMapper.java b/sky-server/src/main/java/com/sky/mapper/OrderMapper.java index 67628b1..29ed05f 100644 --- a/sky-server/src/main/java/com/sky/mapper/OrderMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/OrderMapper.java @@ -1,11 +1,14 @@ package com.sky.mapper; +import com.github.pagehelper.Page; +import com.sky.dto.OrdersPageQueryDTO; import com.sky.entity.Orders; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import java.time.LocalDateTime; +import java.util.List; @Mapper public interface OrderMapper { @@ -29,4 +32,9 @@ public interface OrderMapper { @Update("update orders set status = #{orderStatus},pay_status = #{orderPaidStatus} ,checkout_time = #{check_out_time} where id = #{id}") void updateStatus(Integer orderStatus, Integer orderPaidStatus, LocalDateTime check_out_time, Long id); + + Page pageQuery(OrdersPageQueryDTO ordersPageQueryDTO); + + @Select("select * from orders where id = #{id}") + Orders getById(Long id); } diff --git a/sky-server/src/main/java/com/sky/mapper/ShoppingCartMapper.java b/sky-server/src/main/java/com/sky/mapper/ShoppingCartMapper.java index 52c5e4e..3205acb 100644 --- a/sky-server/src/main/java/com/sky/mapper/ShoppingCartMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/ShoppingCartMapper.java @@ -58,4 +58,10 @@ public interface ShoppingCartMapper { */ @Delete("delete from sky_take_out.shopping_cart where user_id = #{userId}") void deleteByUserId(Long userId); + + /** + * insert all the shopping cart data + * @param shoppingCartList + */ + void insertBatch(List shoppingCartList); } diff --git a/sky-server/src/main/java/com/sky/service/OrderService.java b/sky-server/src/main/java/com/sky/service/OrderService.java index 84cc043..81b93b8 100644 --- a/sky-server/src/main/java/com/sky/service/OrderService.java +++ b/sky-server/src/main/java/com/sky/service/OrderService.java @@ -1,9 +1,13 @@ package com.sky.service; +import com.sky.dto.OrdersDTO; +import com.sky.dto.OrdersPageQueryDTO; import com.sky.dto.OrdersPaymentDTO; import com.sky.dto.OrdersSubmitDTO; +import com.sky.result.PageResult; import com.sky.vo.OrderPaymentVO; import com.sky.vo.OrderSubmitVO; +import com.sky.vo.OrderVO; import org.springframework.stereotype.Service; @Service @@ -29,4 +33,39 @@ public interface OrderService { */ void paySuccess(String outTradeNo); + /** + * 获取历史订单 + * (page query for user) + * @param page + * @param pageSize + * @param status + * @return + */ + PageResult getHistoryOrders(Integer page, Integer pageSize, Integer status); + + /** + * get order detail by order id + * @param id + * @return + */ + OrderVO getOrderDetailById(Long id); + + /** + * cancel order + * @param id + */ + void cancel(Long id); + + /** + * repeat order by order id + * @param id + */ + void repetition(Long id); + + /** + * page query for admin + * @param ordersPageQueryDTO + * @return + */ + PageResult pageQuery(OrdersPageQueryDTO ordersPageQueryDTO); } diff --git a/sky-server/src/main/java/com/sky/service/impl/OrderServiceImpl.java b/sky-server/src/main/java/com/sky/service/impl/OrderServiceImpl.java index 93498f0..175c9f8 100644 --- a/sky-server/src/main/java/com/sky/service/impl/OrderServiceImpl.java +++ b/sky-server/src/main/java/com/sky/service/impl/OrderServiceImpl.java @@ -1,28 +1,32 @@ package com.sky.service.impl; import com.alibaba.fastjson.JSONObject; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; import com.sky.constant.MessageConstant; import com.sky.context.BaseContext; +import com.sky.dto.OrdersPageQueryDTO; import com.sky.dto.OrdersPaymentDTO; import com.sky.dto.OrdersSubmitDTO; import com.sky.entity.*; import com.sky.exception.AddressBookBusinessException; -import com.sky.exception.OrderBusinessException; import com.sky.exception.ShoppingCartBusinessException; import com.sky.mapper.*; +import com.sky.result.PageResult; import com.sky.service.OrderService; import com.sky.utils.WeChatPayUtil; import com.sky.vo.OrderPaymentVO; import com.sky.vo.OrderSubmitVO; +import com.sky.vo.OrderVO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; @Service @@ -69,6 +73,7 @@ public class OrderServiceImpl implements OrderService { orders.setNumber(userId + "-" + System.currentTimeMillis()); orders.setPhone(addressBook.getPhone()); orders.setUserName(addressBook.getConsignee()); + orders.setConsignee(addressBook.getConsignee()); orders.setAddress(addressBook.getDetail()); orderMapper.insert(orders); @@ -120,7 +125,7 @@ public class OrderServiceImpl implements OrderService { }*/ JSONObject jsonObject = new JSONObject(); - jsonObject.put("code","ORDERPAID"); + jsonObject.put("code", "ORDERPAID"); OrderPaymentVO vo = jsonObject.toJavaObject(OrderPaymentVO.class); vo.setPackageStr(jsonObject.getString("package")); @@ -164,4 +169,83 @@ public class OrderServiceImpl implements OrderService { orderMapper.update(orders); } + @Override + public PageResult getHistoryOrders(Integer page, Integer pageSize, Integer status) { + Long userId = BaseContext.getCurrentId(); + PageHelper.startPage(page,pageSize); + OrdersPageQueryDTO ordersPageQueryDTO = new OrdersPageQueryDTO(); + ordersPageQueryDTO.setUserId(userId); + ordersPageQueryDTO.setStatus(status); + + Page ordersPage = orderMapper.pageQuery(ordersPageQueryDTO); + List list = new ArrayList<>(); + if (ordersPage != null && ordersPage.getTotal() > 0) { + for (Orders order : ordersPage) { + List orderDetails = orderDetailMapper.getByOrderId(order.getId()); + OrderVO orderVO = new OrderVO(); + orderVO.setOrderDetailList(orderDetails); + BeanUtils.copyProperties(order, orderVO); + list.add(orderVO); + } + } + return new PageResult(list.size(),list); + } + + @Override + public OrderVO getOrderDetailById(Long id) { + OrderVO orderVO = new OrderVO(); + Orders orders = orderMapper.getById(id); + BeanUtils.copyProperties(orders, orderVO); + orderVO.setOrderDetailList(orderDetailMapper.getByOrderId(orderVO.getId())); + return orderVO; + } + + @Override + public void cancel(Long id) { + Orders orders = new Orders(); + orders.setId(id); + orders.setStatus(Orders.CANCELLED); + orders.setCancelTime(LocalDateTime.now()); + orderMapper.update(orders); + } + + @Override + public void repetition(Long id) { + //get information of order detail + List orderDetailList = orderDetailMapper.getByOrderId(id); + //construct shopping cart + List shoppingCartList = new ArrayList<>(); + for (OrderDetail orderDetail : orderDetailList) { + ShoppingCart shoppingCart = new ShoppingCart(); + shoppingCart.setName(orderDetail.getName()); + shoppingCart.setImage(orderDetail.getImage()); + shoppingCart.setUserId(BaseContext.getCurrentId()); + shoppingCart.setDishId(orderDetail.getDishId()); + shoppingCart.setSetmealId(orderDetail.getSetmealId()); + shoppingCart.setDishFlavor(orderDetail.getDishFlavor()); + shoppingCart.setNumber(orderDetail.getNumber()); + shoppingCart.setAmount(orderDetail.getAmount()); + shoppingCart.setCreateTime(LocalDateTime.now()); + shoppingCartList.add(shoppingCart); + } + shoppingCartMapper.insertBatch(shoppingCartList); + } + + @Override + public PageResult pageQuery(OrdersPageQueryDTO ordersPageQueryDTO) { + PageHelper.startPage(ordersPageQueryDTO.getPage(),ordersPageQueryDTO.getPageSize()); + Page ordersPage = orderMapper.pageQuery(ordersPageQueryDTO); + List list = new ArrayList<>(); + for (Orders orders : ordersPage) { + OrderVO orderVO = new OrderVO(); + BeanUtils.copyProperties(orders, orderVO); + List orderDetailList = orderDetailMapper.getByOrderId(orders.getId()); + String orderDishes = Arrays.toString(orderDetailList.toArray()); + orderDishes = orderDishes.substring(1, orderDishes.length() - 1); + orderVO.setOrderDishes(orderDishes); + list.add(orderVO); + } + return new PageResult(list.size(),list); + } + } diff --git a/sky-server/src/main/resources/mapper/OrderDetailMapper.xml b/sky-server/src/main/resources/mapper/OrderDetailMapper.xml index 5cbf45d..f47320e 100644 --- a/sky-server/src/main/resources/mapper/OrderDetailMapper.xml +++ b/sky-server/src/main/resources/mapper/OrderDetailMapper.xml @@ -11,4 +11,7 @@ (#{orderDetail.name},#{orderDetail.image},#{orderDetail.orderId},#{orderDetail.dishId},#{orderDetail.setmealId},#{orderDetail.dishFlavor},#{orderDetail.number},#{orderDetail.amount}) + \ No newline at end of file diff --git a/sky-server/src/main/resources/mapper/OrderMapper.xml b/sky-server/src/main/resources/mapper/OrderMapper.xml index 7e43d99..7d3020f 100644 --- a/sky-server/src/main/resources/mapper/OrderMapper.xml +++ b/sky-server/src/main/resources/mapper/OrderMapper.xml @@ -44,4 +44,29 @@ where id = #{id} + + \ No newline at end of file diff --git a/sky-server/src/main/resources/mapper/ShoppingCartMapper.xml b/sky-server/src/main/resources/mapper/ShoppingCartMapper.xml index b63d361..8212fab 100644 --- a/sky-server/src/main/resources/mapper/ShoppingCartMapper.xml +++ b/sky-server/src/main/resources/mapper/ShoppingCartMapper.xml @@ -3,6 +3,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + insert into sky_take_out.shopping_cart (name, image, user_id, dish_id, setmeal_id, dish_flavor, number, + amount, create_time) values + + (#{s.name},#{s.image},#{s.userId},#{s.dishId},#{s.setmealId},#{s.dishFlavor},#{s.number},#{s.amount},#{s.createTime}) + + delete from sky_take_out.shopping_cart