刘光辉
8 小时以前 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
37
38
39
40
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<String, String> 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);
    }
}