package jnpf.bizcommon.onlyoffice.service.impl;
|
|
import jnpf.base.UserInfo;
|
import jnpf.bizcommon.onlyoffice.entity.OnlyOfficeConfigParam;
|
import jnpf.util.JsonUtil;
|
import jnpf.util.TicketUtil;
|
import org.springframework.stereotype.Component;
|
import org.springframework.util.StringUtils;
|
|
import java.util.LinkedHashMap;
|
import java.util.Map;
|
|
@Component
|
public class OnlyOfficeAnnotateTicketIssuer {
|
|
public static final String SCOPE = "onlyoffice:eln-template-annotate";
|
public static final String BIZ_MODULE = "eln.template";
|
public static final String BIZ_SCENE = "eln.template.annotate";
|
public static final String PLUGIN_CODE = "eln-template-annotator";
|
public static final long TTL_SECONDS = 8L * 60L * 60L;
|
|
public String issue(OnlyOfficeConfigParam param, UserInfo user, String pluginGuid) {
|
return TicketUtil.createTicket(buildPayload(param, user, pluginGuid), TTL_SECONDS);
|
}
|
|
String buildPayload(OnlyOfficeConfigParam param, UserInfo user, String pluginGuid) {
|
Map<String, String> payload = new LinkedHashMap<>();
|
payload.put("scope", SCOPE);
|
payload.put("tenantId", user == null || !StringUtils.hasText(user.getTenantId())
|
? "0" : user.getTenantId());
|
payload.put("userId", user == null ? null : user.getUserId());
|
payload.put("fileId", param == null ? null : param.getFileId());
|
payload.put("bizDataId", param == null ? null : param.getBizDataId());
|
payload.put("bizModule", param == null ? null : param.getBizModule());
|
payload.put("bizScene", param == null ? null : param.getBizScene());
|
payload.put("pluginGuid", pluginGuid);
|
if (!BIZ_MODULE.equals(payload.get("bizModule")) || !BIZ_SCENE.equals(payload.get("bizScene"))
|
|| payload.values().stream().anyMatch(value -> !StringUtils.hasText(value))) {
|
throw new IllegalArgumentException("标注插件 Ticket 上下文无效");
|
}
|
return JsonUtil.getObjectToString(payload);
|
}
|
}
|