package com.oms.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.oms.common.ApiResponse; import com.oms.dto.PageResponse; import com.oms.dto.TicketDTO; import com.oms.entity.Ticket; import com.oms.service.TicketService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; @RestController @RequestMapping("/crm/tickets") @RequiredArgsConstructor public class TicketController { private final TicketService ticketService; @GetMapping public PageResponse getTickets( @RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "20") int size, @RequestParam(required = false) String status, @RequestParam(required = false) String priority) { Page pageResult = ticketService.getPage(page, size, status, priority); return PageResponse.of(pageResult.getRecords(), pageResult.getTotal(), (int) pageResult.getCurrent(), (int) pageResult.getSize()); } @GetMapping("/{id}") public ApiResponse getTicket(@PathVariable Long id) { Ticket ticket = ticketService.getTicket(id); if (ticket == null) { return ApiResponse.notFound("工单不存在"); } return ApiResponse.success(ticket); } @PostMapping public ApiResponse createTicket(@RequestBody TicketDTO dto) { return ApiResponse.success(ticketService.createTicket(dto)); } @PutMapping("/{id}") public ApiResponse updateTicket(@PathVariable Long id, @RequestBody TicketDTO dto) { Ticket ticket = ticketService.updateTicket(id, dto); if (ticket == null) { return ApiResponse.notFound("工单不存在"); } return ApiResponse.success(ticket); } @PostMapping("/{id}/assign") public ApiResponse assignTicket(@PathVariable Long id, @RequestBody Map body) { Long assignedTo = Long.valueOf(body.get("assignedTo").toString()); String assignedName = body.get("assignedName").toString(); Ticket ticket = ticketService.assignTicket(id, assignedTo, assignedName); if (ticket == null) { return ApiResponse.notFound("工单不存在"); } return ApiResponse.success(ticket); } @PostMapping("/{id}/resolve") public ApiResponse resolveTicket(@PathVariable Long id, @RequestBody Map body) { Ticket ticket = ticketService.resolveTicket(id, body.get("resolution")); if (ticket == null) { return ApiResponse.notFound("工单不存在"); } return ApiResponse.success(ticket); } @DeleteMapping("/{id}") public ApiResponse deleteTicket(@PathVariable Long id) { ticketService.deleteTicket(id); return ApiResponse.success(); } }