package jnpf.bizcommon.onlyoffice.service.impl; import jnpf.base.UserInfo; import jnpf.bizcommon.onlyoffice.entity.OnlyOfficeConfigParam; import jnpf.dmsEntity.qianpiye.DmsQianpiyeOnlyOfficeConstants; 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; /** 为签批页标注插件签发仅能读取流程节点的短期 Ticket。 */ @Component public class DmsQianpiyeTicketIssuer { public static final long TTL_SECONDS = 8L * 60L * 60L; public String issue(OnlyOfficeConfigParam param, UserInfo user, String pluginGuid) { Map payload = new LinkedHashMap<>(); payload.put("scope", DmsQianpiyeOnlyOfficeConstants.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("fileType", param == null || !StringUtils.hasText(param.getFileType()) ? "annex" : param.getFileType()); payload.put("bizModule", param == null ? null : param.getBizModule()); payload.put("bizScene", param == null ? null : param.getBizScene()); payload.put("pluginGuid", pluginGuid); if (!DmsQianpiyeOnlyOfficeConstants.BIZ_MODULE.equals(payload.get("bizModule")) || !DmsQianpiyeOnlyOfficeConstants.BIZ_SCENE.equals(payload.get("bizScene")) || !DmsQianpiyeOnlyOfficeConstants.PLUGIN_GUID.equals(pluginGuid) || payload.values().stream().anyMatch(value -> !StringUtils.hasText(value))) { throw new IllegalArgumentException("签批页标注插件 Ticket 上下文无效"); } return TicketUtil.createTicket(JsonUtil.getObjectToString(payload), TTL_SECONDS); } }