From 7906e6d473969346a65af29ae614ac04aea37752 Mon Sep 17 00:00:00 2001 From: lqyan Date: Sun, 4 Feb 2024 18:29:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E6=95=B0=E6=8D=AE=E5=8C=BASD?= =?UTF-8?q?K=E6=8E=A5=E5=8F=A3=E9=9B=86=E6=88=90=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sdk/openapi/api/app/SessionInfo.java | 4 +- .../openapi/api/data/DataPathConstant.java | 42 +++++ .../openapi/api/data/JHDataApiExecution.java | 143 ++++++++++++++++++ .../sdk/openapi/api/data/SpoolerDataInfo.java | 85 +++++++++++ .../sdk/openapi/client/JHApiClient.java | 5 + .../sdk/openapi/test/JHClientConfig.java | 18 +++ .../sdk/openapi/test/app/AppApiTest.java | 9 +- .../sdk/openapi/test/auth/AuthApiTest.java | 5 +- .../sdk/openapi/test/data/DataApiTest.java | 40 +++++ 9 files changed, 339 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/jhinno/sdk/openapi/api/data/DataPathConstant.java create mode 100644 src/main/java/com/jhinno/sdk/openapi/api/data/JHDataApiExecution.java create mode 100644 src/main/java/com/jhinno/sdk/openapi/api/data/SpoolerDataInfo.java create mode 100644 src/test/java/com/jhinno/sdk/openapi/test/JHClientConfig.java create mode 100644 src/test/java/com/jhinno/sdk/openapi/test/data/DataApiTest.java diff --git a/src/main/java/com/jhinno/sdk/openapi/api/app/SessionInfo.java b/src/main/java/com/jhinno/sdk/openapi/api/app/SessionInfo.java index 8f5b0c7..0072bd2 100644 --- a/src/main/java/com/jhinno/sdk/openapi/api/app/SessionInfo.java +++ b/src/main/java/com/jhinno/sdk/openapi/api/app/SessionInfo.java @@ -17,7 +17,7 @@ public class SessionInfo { /** * 最后使用时间 */ - private String lastUseTime; + private Date lastUseTime; /** * 转移操作员权限 */ @@ -67,7 +67,7 @@ public class SessionInfo { /** * 创建时间 */ - private String createDate; + private Date createDate; /** * 密级 */ diff --git a/src/main/java/com/jhinno/sdk/openapi/api/data/DataPathConstant.java b/src/main/java/com/jhinno/sdk/openapi/api/data/DataPathConstant.java new file mode 100644 index 0000000..4462c7f --- /dev/null +++ b/src/main/java/com/jhinno/sdk/openapi/api/data/DataPathConstant.java @@ -0,0 +1,42 @@ +package com.jhinno.sdk.openapi.api.data; + +/** + * 作业数据请求路径 + * + * @author yanlongqi + * @date 2024/2/4 17:02 + */ +public class DataPathConstant { + + /** + * 根据用户scope查询数据目录列表 + */ + public static final String DATA_SPOOLERS_PATH = "/ws/api/spoolers"; + + /** + * 根据作业id查数据目录信息 + */ + public static final String DATA_SPOOLER_JOB_ID_PATH = "/ws/api/spooler/{jobId}"; + + /** + * 根据作业id集合查询数据目录列表 + */ + public static final String DATA_SPOOLERS_LIST_PATH = "/ws/api/spoolers/list"; + + /** + * 根据数据目录名称查询数据目录列表 + */ + public static final String DATA_SPOOLERS_NAME_PATH = "/ws/api/spoolers/name"; + + + /** + * 立即删除数据目录 + */ + public static final String DATA_SPOOLERS_DELETE_ID_PATH = "/ws/api/spooler/del/{id}"; + + + /** + * 设置过期时间删除数据目录 + */ + public static final String DATA_SPOOLERS_PURGE_PATH = "/ws/api/spooler/purge"; +} diff --git a/src/main/java/com/jhinno/sdk/openapi/api/data/JHDataApiExecution.java b/src/main/java/com/jhinno/sdk/openapi/api/data/JHDataApiExecution.java new file mode 100644 index 0000000..dded503 --- /dev/null +++ b/src/main/java/com/jhinno/sdk/openapi/api/data/JHDataApiExecution.java @@ -0,0 +1,143 @@ +package com.jhinno.sdk.openapi.api.data; + +import cn.hutool.core.collection.CollectionUtil; +import com.fasterxml.jackson.core.type.TypeReference; +import com.jhinno.sdk.openapi.ArgsException; +import com.jhinno.sdk.openapi.CommonConstant; +import com.jhinno.sdk.openapi.ServiceException; +import com.jhinno.sdk.openapi.api.JHApiExecution; +import com.jhinno.sdk.openapi.api.ResponseResult; +import com.jhinno.sdk.openapi.client.JHApiClient; +import org.apache.commons.lang3.StringUtils; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author yanlongqi + * @date 2024/2/4 17:09 + */ +public class JHDataApiExecution extends JHApiExecution { + + /** + * 获取一个执行器的实例 + * + * @param jhApiClient 请求的客户端 + */ + public JHDataApiExecution(JHApiClient jhApiClient) { + super(jhApiClient); + } + + /** + * 根据用户scope查询数据目录列表 + * + * @return 用户数据目录列表 + */ + public List getSpoolersData(String username) { + return get(DataPathConstant.DATA_SPOOLERS_PATH, username, new TypeReference>>() { + }); + } + + + /** + * 根据作业id查作业数据目录信息 + * + * @param username 用户名 + * @param jobId 作业id + * @return 作业目录信息 + */ + public SpoolerDataInfo getSpoolersDataById(String username, String jobId) { + if (StringUtils.isBlank(jobId)) { + throw new ArgsException("jobId不能为空!"); + } + String path = DataPathConstant.DATA_SPOOLER_JOB_ID_PATH.replace("{jobId}", jobId); + List list = get(path, username, new TypeReference>>() { + }); + if (CollectionUtil.isEmpty(list)) { + throw new ServiceException(path, 500, "作业数据目录信息为空!"); + } + return list.get(0); + } + + /** + * 根据作业id集合查询数据目录列表 + * + * @param username 用户名 + * @param jobIds 作业id列表 + * @return 用户数据目录列表 + */ + public List getSpoolersDataByIds(String username, List jobIds) { + if (CollectionUtil.isEmpty(jobIds)) { + throw new ArgsException("jobIds不能为空"); + } + Map params = new HashMap<>(1); + params.put("jobIds", String.join(CommonConstant.NORMAL_CHARACTER_COMMA, jobIds)); + String path = JHApiClient.getUrl(DataPathConstant.DATA_SPOOLERS_LIST_PATH, params); + return get(path, username, new TypeReference>>() { + }); + } + + /** + * 根据数据目录名称查询数据目录列表 (产品接口有问题) + * + * @param username 用户名 + * @param dataName 数据目录名称 + * @return 作业目录信息 + */ + public SpoolerDataInfo getSpoolersByName(String username, String dataName) { + if (StringUtils.isBlank(dataName)) { + throw new ArgsException("dataName不能为空!"); + } + Map params = new HashMap<>(1); + params.put("name", dataName); + String path = JHApiClient.getUrl(DataPathConstant.DATA_SPOOLERS_NAME_PATH, params); + List list = get(path, username, new TypeReference>>() { + }); + if (CollectionUtil.isEmpty(list)) { + throw new ServiceException(path, 500, "作业数据目录信息为空!"); + } + return list.get(0); + } + + + /** + * 立即删除作业数据目录 + * + * @param username 用户名 + * @param jobId 作业id + */ + public void deleteSpoolerData(String username, String jobId) { + if (StringUtils.isBlank(jobId)) { + throw new ArgsException("jobId不能为空!"); + } + String path = DataPathConstant.DATA_SPOOLERS_DELETE_ID_PATH.replace("{id}", jobId); + get(path, username, new TypeReference>() { + }); + } + + + /** + * 设置用户数据目录的过期时间,也给以通过设置过期时间来删除用户数据区 + * + * @param username 用户名 + * @param jobId 作业id + * @param expirationTime 过期时间 + */ + public void purgeSpooler(String username, String jobId, Date expirationTime) { + if (StringUtils.isBlank(jobId)) { + throw new ArgsException("jobId不能为空!"); + } + if (expirationTime == null) { + throw new ArgsException("expirationTime不能为空!"); + } + Map params = new HashMap<>(2); + params.put("id", jobId); + params.put("expiration_time", expirationTime); + String path = JHApiClient.getUrl(DataPathConstant.DATA_SPOOLERS_PURGE_PATH, params); + get(path, username, new TypeReference>() { + }); + } + +} diff --git a/src/main/java/com/jhinno/sdk/openapi/api/data/SpoolerDataInfo.java b/src/main/java/com/jhinno/sdk/openapi/api/data/SpoolerDataInfo.java new file mode 100644 index 0000000..4af33c4 --- /dev/null +++ b/src/main/java/com/jhinno/sdk/openapi/api/data/SpoolerDataInfo.java @@ -0,0 +1,85 @@ +package com.jhinno.sdk.openapi.api.data; + +import lombok.Data; + +import java.util.Date; + +/** + * 作业数据信息 + * + * @author yanlongqi + * @date 2024/2/4 17:20 + */ +@Data +public class SpoolerDataInfo { + + /** + * 作业名称 + */ + private String jobName; + + /** + * 作业用户名 + */ + private String jobUser; + + /** + * 提交目录 + */ + private String subCwd; + + /** + * 数据名称 + */ + private String dataName; + + /** + * 作业项目 + */ + private String jobProject; + + /** + * 作业路径 + */ + private String dataPath; + + /** + * 作业id + */ + private String jobId; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 删除时间 + */ + private Date deleteTime; + + /** + * 是否自定义作业 + */ + private Boolean is_custom_spooler; + + /** + * 作业系统类型 + */ + private String job_os_type; + + /** + * 密级中文名 + */ + private String confidentialCn; + + /** + * 密级英文名 + */ + private String confidentialEn; + + /** + * 密级 + */ + private String confidential; +} \ No newline at end of file diff --git a/src/main/java/com/jhinno/sdk/openapi/client/JHApiClient.java b/src/main/java/com/jhinno/sdk/openapi/client/JHApiClient.java index 666c505..cd6788d 100644 --- a/src/main/java/com/jhinno/sdk/openapi/client/JHApiClient.java +++ b/src/main/java/com/jhinno/sdk/openapi/client/JHApiClient.java @@ -32,6 +32,7 @@ import java.security.KeyManagementException; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; +import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.TimeZone; @@ -303,6 +304,10 @@ public class JHApiClient { urlBuilder.append(entry.getKey()).append("="); if (value instanceof String) { urlBuilder.append(URLEncoder.encode((String) value, "utf-8")); + } + if (value instanceof Date) { + SimpleDateFormat format = new SimpleDateFormat(DatePattern.NORM_DATETIME_PATTERN); + urlBuilder.append(URLEncoder.encode(format.format(value), "utf-8")); } else { urlBuilder.append(value); } diff --git a/src/test/java/com/jhinno/sdk/openapi/test/JHClientConfig.java b/src/test/java/com/jhinno/sdk/openapi/test/JHClientConfig.java new file mode 100644 index 0000000..4f7a43a --- /dev/null +++ b/src/test/java/com/jhinno/sdk/openapi/test/JHClientConfig.java @@ -0,0 +1,18 @@ +package com.jhinno.sdk.openapi.test; + +import com.jhinno.sdk.openapi.client.JHApiClient; + +/** + * SDK Client 的配置 + * + * @author yanlongqi + * @date 2024/2/4 17:11 + */ +public class JHClientConfig { + + /** + * 初始化JHApi客户端 + */ + public static final JHApiClient client = JHApiClient.build("https://192.168.0.22/appform"); + +} diff --git a/src/test/java/com/jhinno/sdk/openapi/test/app/AppApiTest.java b/src/test/java/com/jhinno/sdk/openapi/test/app/AppApiTest.java index 5302d2b..433f7b3 100644 --- a/src/test/java/com/jhinno/sdk/openapi/test/app/AppApiTest.java +++ b/src/test/java/com/jhinno/sdk/openapi/test/app/AppApiTest.java @@ -1,7 +1,7 @@ package com.jhinno.sdk.openapi.test.app; import com.jhinno.sdk.openapi.api.app.*; -import com.jhinno.sdk.openapi.client.JHApiClient; +import com.jhinno.sdk.openapi.test.JHClientConfig; import org.junit.Test; import java.util.Arrays; @@ -16,16 +16,11 @@ import java.util.List; public class AppApiTest { - /** - * 初始化JHApi客户端 - */ - public static final JHApiClient client = JHApiClient.build("https://192.168.0.22/appform"); - /** * 获得一个调用应用接口的执行器 */ - public static final JHAppApiExecution jhAppApiExecution = new JHAppApiExecution(client); + public static final JHAppApiExecution jhAppApiExecution = new JHAppApiExecution(JHClientConfig.client); /** * 测测试使用自定义的参数启动jhadmin的Linux桌面 diff --git a/src/test/java/com/jhinno/sdk/openapi/test/auth/AuthApiTest.java b/src/test/java/com/jhinno/sdk/openapi/test/auth/AuthApiTest.java index 5837f2a..7b96859 100644 --- a/src/test/java/com/jhinno/sdk/openapi/test/auth/AuthApiTest.java +++ b/src/test/java/com/jhinno/sdk/openapi/test/auth/AuthApiTest.java @@ -1,7 +1,7 @@ package com.jhinno.sdk.openapi.test.auth; import com.jhinno.sdk.openapi.api.app.JHAppApiExecution; -import com.jhinno.sdk.openapi.client.JHApiClient; +import com.jhinno.sdk.openapi.test.JHClientConfig; import org.junit.Test; /** @@ -12,14 +12,13 @@ import org.junit.Test; */ public class AuthApiTest { - public static final JHApiClient client = JHApiClient.build("https://192.168.87.25/appform"); /** * 测试获取token */ @Test public void testGetToken() { - JHAppApiExecution jhAppApiExecution = new JHAppApiExecution(client); + JHAppApiExecution jhAppApiExecution = new JHAppApiExecution(JHClientConfig.client); String token = jhAppApiExecution.getToken("jhadmin"); System.out.println("token:" + token); } diff --git a/src/test/java/com/jhinno/sdk/openapi/test/data/DataApiTest.java b/src/test/java/com/jhinno/sdk/openapi/test/data/DataApiTest.java new file mode 100644 index 0000000..0da0da0 --- /dev/null +++ b/src/test/java/com/jhinno/sdk/openapi/test/data/DataApiTest.java @@ -0,0 +1,40 @@ +package com.jhinno.sdk.openapi.test.data; + +import com.jhinno.sdk.openapi.api.data.JHDataApiExecution; +import com.jhinno.sdk.openapi.test.JHClientConfig; +import org.junit.Test; + +import java.util.Arrays; + +/** + * @author yanlongqi + * @date 2024/2/4 17:10 + */ +public class DataApiTest { + + public static final JHDataApiExecution execution = new JHDataApiExecution(JHClientConfig.client); + + @Test + public void testGetSpoolers() { + System.out.println(execution.getSpoolersData("jhadmin")); + } + + + @Test + public void testGetSpoolersDataById() { + System.out.println(execution.getSpoolersDataById("jhadmin", "5909")); + } + + + @Test + public void testGetSpoolersDataByIds() { + System.out.println(execution.getSpoolersDataByIds("jhadmin", Arrays.asList("6799", "6686"))); + } + + @Test + public void testGetSpoolersDataByName() { + System.out.println(execution.getSpoolersByName("jhadmin", "fluent__N_2d_t1_fluent-test_20220722172408")); + } + + +}