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.ObjectUtils; import java.util.LinkedHashMap; import java.util.Map; @Component public class OnlyOfficeFillTicketIssuer { public static final String SCOPE = "onlyoffice:eln-template-fill"; public static final String BIZ_MODULE = "eln.template"; public static final String BIZ_SCENE = "eln.template.fill"; public static final String PLUGIN_CODE = "eln-template-filler"; public static final String TENANT_ID = "0"; 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 payload = new LinkedHashMap<>(); payload.put("scope", SCOPE); payload.put("tenantId", TENANT_ID); payload.put("userId", user.getUserId()); payload.put("fileId", param.getFileId()); payload.put("bizDataId", param.getBizDataId()); payload.put("bizModule", param.getBizModule()); payload.put("bizScene", param.getBizScene()); payload.put("pluginGuid", pluginGuid); if (!BIZ_MODULE.equals(param.getBizModule()) || !BIZ_SCENE.equals(param.getBizScene()) || payload.values().stream().anyMatch(ObjectUtils::isEmpty)) { throw new IllegalArgumentException("填写插件 Ticket 上下文无效"); } return JsonUtil.getObjectToString(payload); } }