ny
昨天 b6f169fe43a2b13f351aefc152374fc7f0bc8cb7
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
package jnpf.scheduletask.task;
 
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import jnpf.base.DataInterFaceApi;
import jnpf.base.UserInfo;
import jnpf.base.entity.DataInterfaceEntity;
import jnpf.base.model.datainterface.DataInterfaceInvokeModel;
import jnpf.database.util.TenantDataSourceUtil;
import jnpf.emnus.TemplateEnum;
import jnpf.exception.TenantInvalidException;
import jnpf.model.visualJson.TemplateJsonModel;
import jnpf.scheduletask.entity.TimeTaskEntity;
import jnpf.scheduletask.model.ContentNewModel;
import jnpf.scheduletask.model.UpdateTaskModel;
import jnpf.scheduletask.rest.RestScheduleTaskUtil;
import jnpf.util.AuthUtil;
import jnpf.util.JsonUtil;
import jnpf.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
 
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
 
/**
 * Api和数据接口使用
 *
 * @author :JNPF开发平台组
 * @version: V3.1.0
 * @copyright 引迈信息技术有限公司
 * @date :2022/3/23 9:25
 */
@Slf4j
@Component
public class ScheduleTaskHandler {
 
    @Autowired
    private DataInterFaceApi dataInterFaceApi;
 
 
    @XxlJob("defaultHandler")
    public void defaultHandler() {
        long time = System.currentTimeMillis();
        // 获取参数
        String param = XxlJobHelper.getJobParam();
        // 转换成模型
        TimeTaskEntity entity = JsonUtil.getJsonToBean(param, TimeTaskEntity.class);
        ContentNewModel model = JsonUtil.getJsonToBean(param, ContentNewModel.class);
        // 得到数据接口信息
        String tenantId = StringUtil.isNotEmpty(model.getUserInfo().getTenantId()) ? model.getUserInfo().getTenantId() : "";
        String userId = StringUtil.isNotEmpty(model.getUserInfo().getUserId()) ? model.getUserInfo().getUserId() : "";
        String token = AuthUtil.loginTempUser(userId, tenantId, true);
        // 切换租户
        UserInfo userInfo = model.getUserInfo();
        // 切换数据源
        if (userInfo != null && StringUtil.isNotEmpty(userInfo.getTenantId())) {
            try {
                TenantDataSourceUtil.switchTenant(userInfo.getTenantId());
            }catch (TenantInvalidException e){
                // 租户无效 禁用任务
                log.error("ScheduleTaskHandler, 租户无效, 禁用任务:{}", userInfo.getTenantId());
                entity = RestScheduleTaskUtil.getInfo(entity.getId(), model.getUserInfo());
                entity.setEnabledMark(0);
                UpdateTaskModel updateTaskModel = new UpdateTaskModel();
                updateTaskModel.setEntity(entity);
                updateTaskModel.setUserInfo(model.getUserInfo());
                RestScheduleTaskUtil.updateTask(updateTaskModel);
            }
        }
        DataInterfaceEntity dataInterfaceEntity = dataInterFaceApi.getDataInterfaceInfo(model.getInterfaceId(), tenantId);
        // 如果是http
        if (entity != null && "3".equals(String.valueOf(dataInterfaceEntity.getType()))) {
            dataInterfaceEntity.setTenantId(tenantId);
            boolean callHttp = callHttp(model, dataInterfaceEntity, token);
        } else if (entity != null && "1".equals(String.valueOf(dataInterfaceEntity.getType()))) {
            dataInterfaceEntity.setTenantId(tenantId);
            boolean callSql = callSql(model, dataInterfaceEntity, token);
        }
    }
 
    // ---------------START callSQL
 
    /**
     * 调用SQL
     *
     * @param model 系统调度参数
     */
    private boolean callSql(ContentNewModel model, DataInterfaceEntity entity, String token) {
        try {
            if (entity != null) {
                Map<String, String> map = null;
                if (model.getParameter() != null && model.getParameter().size() > 0) {
                    map = new HashMap<>(16);
                    for (TemplateJsonModel parameterModel : model.getParameter()) {
                        String value = Objects.equals(parameterModel.getSourceType(), TemplateEnum.Empty.getCode()) ? "" : parameterModel.getRelationField();
                        map.put(parameterModel.getField(), value);
                    }
                }
                dataInterFaceApi.invokeById(new DataInterfaceInvokeModel(entity.getId(), entity.getTenantId(), map, token));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
 
    // ---------------START callHttp
 
    /**
     * HTTP调用
     *
     * @param model 系统调度参数
     * @return
     */
    private Boolean callHttp(ContentNewModel model, DataInterfaceEntity entity, String token) {
        try {
            if (entity != null) {
                Map<String, String> map = null;
                if (model.getParameter() != null && model.getParameter().size() > 0) {
                    map = new HashMap<>(16);
                    for (TemplateJsonModel parameterModel : model.getParameter()) {
                        String value = Objects.equals(parameterModel.getSourceType(), TemplateEnum.Empty.getCode()) ? "" : parameterModel.getRelationField();
                        map.put(parameterModel.getField(), value);
                    }
                }
                dataInterFaceApi.invokeById(new DataInterfaceInvokeModel(entity.getId(), entity.getTenantId(), map, token));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
 
}