TicketController.java 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package com.oms.controller;
  2. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  3. import com.oms.common.ApiResponse;
  4. import com.oms.dto.PageResponse;
  5. import com.oms.dto.TicketDTO;
  6. import com.oms.entity.Ticket;
  7. import com.oms.service.TicketService;
  8. import lombok.RequiredArgsConstructor;
  9. import org.springframework.web.bind.annotation.*;
  10. import java.util.List;
  11. import java.util.Map;
  12. @RestController
  13. @RequestMapping("/crm/tickets")
  14. @RequiredArgsConstructor
  15. public class TicketController {
  16. private final TicketService ticketService;
  17. @GetMapping
  18. public PageResponse<Ticket> getTickets(
  19. @RequestParam(defaultValue = "1") int page,
  20. @RequestParam(defaultValue = "20") int size,
  21. @RequestParam(required = false) String status,
  22. @RequestParam(required = false) String priority) {
  23. Page<Ticket> pageResult = ticketService.getPage(page, size, status, priority);
  24. return PageResponse.of(pageResult.getRecords(), pageResult.getTotal(), (int) pageResult.getCurrent(), (int) pageResult.getSize());
  25. }
  26. @GetMapping("/{id}")
  27. public ApiResponse<Ticket> getTicket(@PathVariable Long id) {
  28. Ticket ticket = ticketService.getTicket(id);
  29. if (ticket == null) {
  30. return ApiResponse.notFound("工单不存在");
  31. }
  32. return ApiResponse.success(ticket);
  33. }
  34. @PostMapping
  35. public ApiResponse<Ticket> createTicket(@RequestBody TicketDTO dto) {
  36. return ApiResponse.success(ticketService.createTicket(dto));
  37. }
  38. @PutMapping("/{id}")
  39. public ApiResponse<Ticket> updateTicket(@PathVariable Long id, @RequestBody TicketDTO dto) {
  40. Ticket ticket = ticketService.updateTicket(id, dto);
  41. if (ticket == null) {
  42. return ApiResponse.notFound("工单不存在");
  43. }
  44. return ApiResponse.success(ticket);
  45. }
  46. @PostMapping("/{id}/assign")
  47. public ApiResponse<Ticket> assignTicket(@PathVariable Long id, @RequestBody Map<String, Object> body) {
  48. Long assignedTo = Long.valueOf(body.get("assignedTo").toString());
  49. String assignedName = body.get("assignedName").toString();
  50. Ticket ticket = ticketService.assignTicket(id, assignedTo, assignedName);
  51. if (ticket == null) {
  52. return ApiResponse.notFound("工单不存在");
  53. }
  54. return ApiResponse.success(ticket);
  55. }
  56. @PostMapping("/{id}/resolve")
  57. public ApiResponse<Ticket> resolveTicket(@PathVariable Long id, @RequestBody Map<String, String> body) {
  58. Ticket ticket = ticketService.resolveTicket(id, body.get("resolution"));
  59. if (ticket == null) {
  60. return ApiResponse.notFound("工单不存在");
  61. }
  62. return ApiResponse.success(ticket);
  63. }
  64. @DeleteMapping("/{id}")
  65. public ApiResponse<Void> deleteTicket(@PathVariable Long id) {
  66. ticketService.deleteTicket(id);
  67. return ApiResponse.success();
  68. }
  69. }