package jnpf.dmsController; import jnpf.base.ActionResult; import jnpf.dmsService.DmsQianpiyeCatalogService; import jnpf.dmsService.DmsQianpiyeTicketService; import lombok.RequiredArgsConstructor; import org.springframework.http.*; import org.springframework.web.bind.annotation.*; import java.util.Map; @RestController @RequiredArgsConstructor @RequestMapping("/biz/wenjian/qianpiye") public class DmsQianpiyeController { private final DmsQianpiyeCatalogService catalog; private final DmsQianpiyeTicketService ticketService; @GetMapping("/steps") public ResponseEntity>> steps( @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authorization, @RequestParam(value = "refresh", defaultValue = "false") boolean refresh) { try { if (authorization == null || !authorization.startsWith("Ticket ")) throw new DmsQianpiyeTicketService.InvalidQianpiyeTicketException(); String ticket = authorization.substring(7); if (ticket.isBlank() || !ticket.equals(ticket.trim())) throw new DmsQianpiyeTicketService.InvalidQianpiyeTicketException(); DmsQianpiyeTicketService.TicketContext context = ticketService.validate(ticket); return ResponseEntity.ok(ActionResult.success(catalog.loadForDocument( context.getFileType(), context.getFileId(), refresh))); } catch (DmsQianpiyeTicketService.InvalidQianpiyeTicketException e) { return ResponseEntity.status(HttpStatus.UNAUTHORIZED) .body(ActionResult.fail(HttpStatus.UNAUTHORIZED.value(), "签批页标注 Ticket 无效")); } } }