刘光辉
13 小时以前 34981c30a78e8bbd7791131059a9210f9928b62c
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
41
42
43
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<String, String> 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);
    }
}