package jnpf.bizcommon.onlyoffice.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jnpf.base.ActionResult;
import jnpf.bizcommon.onlyoffice.entity.OnlyOfficeCallbackParam;
import jnpf.bizcommon.onlyoffice.entity.OnlyOfficeConfigParam;
import jnpf.bizcommon.onlyoffice.service.OnlyOfficeService;
import jnpf.exception.DataException;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Collections;
import java.util.Map;
/**
* OnlyOffice 文档编辑。经网关 /api/biz/onlyoffice/**(StripPrefix=2)落到本类。
*
*
⚠️ 本类下的端点鉴权形态不统一,新增端点前先想清楚属于哪一类:
*
* - {@code /config} —— 需登录态。它会下发 securityKey,**不可放进网关白名单**;
* - {@code /callback} —— 在网关白名单内(平台补丁 #9),匿名可达,
* 安全边界是 OnlyOffice 回调 JWT 的验签,见里程碑 2。
*
*/
@Slf4j
@Tag(name = "OnlyOffice 文档编辑", description = "编辑器配置签发与保存回调")
@RestController
@RequestMapping("/onlyoffice")
@RequiredArgsConstructor
public class OnlyOfficeController {
private final OnlyOfficeService onlyOfficeService;
/**
* 签发编辑器配置。前端拿返回值直接喂 {@code new DocsAPI.DocEditor(id, config)}。
*
* 入参里的 mode 只是期望值:格式不可编辑、他人正持锁、上次保存失败三种情况下,
* 后端会降级为只读,以实际返回的 editorConfig.mode 为准。
*/
@Operation(summary = "签发编辑器配置")
@GetMapping("/config")
public ActionResult