刘光辉
3 小时以前 06f314545ac3514d7ce28939920866ae8188d31c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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<ActionResult<Map<String, Object>>> 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 无效"));
        }
    }
}