package space.anyi.controller.admin; import space.anyi.entity.*; import space.anyi.service.*; import space.anyi.util.Converter; import space.anyi.entity.vo.OrderVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import javax.servlet.http.HttpSession; import space.anyi.entity.dto.OrderSearchCriteria; import java.util.List; @Controller @RequestMapping("/admin") public class AdminOrderController { @Autowired private OrderService orderService; @Autowired private OrderItemService orderItemService; @Autowired private OrderTrackingService orderTrackingService; @Autowired private UserService userService; @GetMapping("/order") public ModelAndView list(@RequestParam(required = false) String status, @RequestParam(defaultValue = "1") Integer page) { ModelAndView mv = new ModelAndView("admin/order"); OrderSearchCriteria criteria = new OrderSearchCriteria(); criteria.setStatus(status); List orderVOs = Converter.toOrderVOList(orderService.findAll(criteria, page, 10)); for (OrderVO vo : orderVOs) { if (vo.getUserId() != null) { User user = userService.findById(vo.getUserId()); if (user != null) { vo.setUsername(user.getUsername()); } } List items = orderItemService.findByOrderId(vo.getId()); vo.setItemCount(items != null ? items.size() : 0); } mv.addObject("orders", orderVOs); mv.addObject("status", status); mv.addObject("page", page); return mv; } @GetMapping("/order/{id}") public ModelAndView detail(@PathVariable Integer id) { ModelAndView mv = new ModelAndView("admin/orderDetail"); Orders order = orderService.findById(id); OrderVO orderVO = Converter.toOrderVO(order); if (order.getUserId() != null) { User user = userService.findById(order.getUserId()); if (user != null) { orderVO.setUsername(user.getUsername()); } } mv.addObject("order", orderVO); mv.addObject("items", Converter.toOrderItemVOList(orderItemService.findByOrderId(order.getId()))); mv.addObject("tracking", Converter.toOrderTrackingVOList(orderTrackingService.findByOrderId(order.getId()))); return mv; } @PostMapping("/order/updateStatus") public String updateStatus(@RequestParam Integer id, @RequestParam String status, @RequestParam(required = false) String remark, HttpSession session, RedirectAttributes attr) { Admin admin = (Admin) session.getAttribute("admin"); String operator = admin != null ? admin.getUsername() : "系统"; orderService.updateStatus(id, status, operator, remark); attr.addFlashAttribute("success", "状态已更新"); return "redirect:/admin/order/" + id; } }