AdminOrderController.java 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package space.anyi.controller.admin;
  2. import space.anyi.entity.*;
  3. import space.anyi.service.*;
  4. import space.anyi.util.Converter;
  5. import space.anyi.entity.vo.OrderVO;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.stereotype.Controller;
  8. import org.springframework.web.bind.annotation.*;
  9. import org.springframework.web.servlet.ModelAndView;
  10. import org.springframework.web.servlet.mvc.support.RedirectAttributes;
  11. import javax.servlet.http.HttpSession;
  12. import space.anyi.entity.dto.OrderSearchCriteria;
  13. import java.util.List;
  14. @Controller
  15. @RequestMapping("/admin")
  16. public class AdminOrderController {
  17. @Autowired private OrderService orderService;
  18. @Autowired private OrderItemService orderItemService;
  19. @Autowired private OrderTrackingService orderTrackingService;
  20. @Autowired private UserService userService;
  21. @GetMapping("/order")
  22. public ModelAndView list(@RequestParam(required = false) String status,
  23. @RequestParam(defaultValue = "1") Integer page) {
  24. ModelAndView mv = new ModelAndView("admin/order");
  25. OrderSearchCriteria criteria = new OrderSearchCriteria();
  26. criteria.setStatus(status);
  27. List<OrderVO> orderVOs = Converter.toOrderVOList(orderService.findAll(criteria, page, 10));
  28. for (OrderVO vo : orderVOs) {
  29. if (vo.getUserId() != null) {
  30. User user = userService.findById(vo.getUserId());
  31. if (user != null) {
  32. vo.setUsername(user.getUsername());
  33. }
  34. }
  35. List<OrderItem> items = orderItemService.findByOrderId(vo.getId());
  36. vo.setItemCount(items != null ? items.size() : 0);
  37. }
  38. mv.addObject("orders", orderVOs);
  39. mv.addObject("status", status);
  40. mv.addObject("page", page);
  41. return mv;
  42. }
  43. @GetMapping("/order/{id}")
  44. public ModelAndView detail(@PathVariable Integer id) {
  45. ModelAndView mv = new ModelAndView("admin/orderDetail");
  46. Orders order = orderService.findById(id);
  47. OrderVO orderVO = Converter.toOrderVO(order);
  48. if (order.getUserId() != null) {
  49. User user = userService.findById(order.getUserId());
  50. if (user != null) {
  51. orderVO.setUsername(user.getUsername());
  52. }
  53. }
  54. mv.addObject("order", orderVO);
  55. mv.addObject("items", Converter.toOrderItemVOList(orderItemService.findByOrderId(order.getId())));
  56. mv.addObject("tracking", Converter.toOrderTrackingVOList(orderTrackingService.findByOrderId(order.getId())));
  57. return mv;
  58. }
  59. @PostMapping("/order/updateStatus")
  60. public String updateStatus(@RequestParam Integer id, @RequestParam String status,
  61. @RequestParam(required = false) String remark,
  62. HttpSession session, RedirectAttributes attr) {
  63. Admin admin = (Admin) session.getAttribute("admin");
  64. String operator = admin != null ? admin.getUsername() : "系统";
  65. orderService.updateStatus(id, status, operator, remark);
  66. attr.addFlashAttribute("success", "状态已更新");
  67. return "redirect:/admin/order/" + id;
  68. }
  69. }