From 9a9387c355984b7c29bcc8baf350d12cae2226f2 Mon Sep 17 00:00:00 2001 From: richie Date: Thu, 22 Sep 2022 10:14:05 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=87=A0=E4=B8=AAAPI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 56 ++++++-- .../server/DatasourceOperation.java | 133 ++++++++++++++++-- .../datasource/server/ServerApplication.java | 7 +- 3 files changed, 174 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 5c27c75..66decba 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # API数据源使用示例 +**注意:** 数据源表的数据更新的时候,会根据实际情况启动使用该数据源表的分析表的更新,最小更新间隔为1个小时。 + ## 调用示例代码 ### 开启API数据源 @@ -13,13 +15,21 @@ operation.open(); 在开启后,可以在企业数据的"数据导入"菜单看到如下图所示的API数据源入口 ![api_datasource](/screenshots/api_datasource.png) +### 创建分组 +```java +Authentication authentication = new Authentication("#key", "#secret"); +DatasourceOperation operation = new DatasourceOperation(authentication); +// 创建表并返回分组Id +String groupId = operation.createGroup("我的分组"); +``` + ### 创建表 ```java Authentication authentication = new Authentication("#key", "#secret"); DatasourceOperation operation = new DatasourceOperation(authentication); -// // 创建表并返回表id -String tableId = operation.createTable("HelloTable"); +// 创建表并返回表id +String tableId = operation.createTable("HelloTable", "#分组Id(可选)"); ``` ### 更新表数据 @@ -42,7 +52,7 @@ operation.markAsFinish(tableId); ![api_datasource_effect](/screenshots/api_datasource_effect.png) -### 删除表(暂未实现) +### 删除表 ```java Authentication authentication = new Authentication("#key", "#secret"); DatasourceOperation operation = new DatasourceOperation(authentication); @@ -50,7 +60,7 @@ String tableId = "#待删除的表id"; operation.deleteTable(tableId); ``` -### 删除所有表(暂未实现) +### 删除所有表 ```java Authentication authentication = new Authentication("#key", "#secret"); DatasourceOperation operation = new DatasourceOperation(authentication); @@ -91,7 +101,7 @@ operation.reset(); ``` ### 分组管理 -#### 创建分组(暂未启用) +#### 创建分组 请求地址:```/api/v1/datasource/group/create``` 请求类型:POST @@ -107,19 +117,37 @@ operation.reset(); } ``` -#### 读取所有分组(暂未启用) +#### 读取所有分组 请求地址:```/api/v1/datasource/group/list``` 请求类型:POST -#### 读取分组下的所有表(暂未启用) +返回值: +```json +{ + "success": true, + "code": "200", + "data": [{"id":"#groupId", "name": "#groupName"}] +} +``` + +#### 读取分组下的所有表 请求地址:```/api/v1/datasource/group/table/list``` 请求类型:POST 请求参数:```{"groupId":"#分组Id"}``` -#### 修改分组名(暂未启用) +返回值: +```json +{ + "success": true, + "code": "200", + "data": [{"id":"#tableId", "name": "#tableName"}] +} +``` + +#### 修改分组名 请求地址:```/api/v1/datasource/group/modify``` 请求类型:POST @@ -174,6 +202,14 @@ operation.reset(); 请求参数:``` {"tableId":"#表Id"} ``` +返回值: +```json +{ + "success": true, + "code": "200" +} +``` + #### 修改数据源表名(暂未启用) 请求地址:```/api/v1/datasource/table/modify``` @@ -189,7 +225,7 @@ operation.reset(); } ``` -#### 删除数据源表(暂未启用) +#### 删除数据源表 请求地址:```/api/v1/datasource/table/delete``` 请求类型:POST @@ -204,7 +240,7 @@ operation.reset(); } ``` -#### 重置整个数据源(暂未启用) +#### 重置整个数据源 请求地址:```/api/v1/datasource/reset``` 请求类型:POST diff --git a/src/main/java/com/fanruan/hihidata/datasource/server/DatasourceOperation.java b/src/main/java/com/fanruan/hihidata/datasource/server/DatasourceOperation.java index a2e7de6..4a96f1a 100644 --- a/src/main/java/com/fanruan/hihidata/datasource/server/DatasourceOperation.java +++ b/src/main/java/com/fanruan/hihidata/datasource/server/DatasourceOperation.java @@ -3,6 +3,7 @@ package com.fanruan.hihidata.datasource.server; import com.fanruan.hihidata.datasource.server.http.HttpKits; import org.apache.http.HttpEntity; import org.apache.http.entity.StringEntity; +import org.json.JSONArray; import org.json.JSONObject; import java.nio.charset.StandardCharsets; @@ -10,6 +11,7 @@ import java.util.HashMap; import java.util.Map; /** + * API数据源所有操作的示例集合,只需要传入授权参数即可 * @author richie * Created by richie on 2022/9/16 */ @@ -21,23 +23,91 @@ public class DatasourceOperation { this.auth = auth; } + /** + * 开启或者关闭API数据源入口 + * @throws Exception 操作失败则抛出此异常 + */ public void open() throws Exception { JSONObject body = new JSONObject(); body.put("status", "1"); HttpEntity entity = new StringEntity(body.toString(), StandardCharsets.UTF_8); + HttpKits.post(String.format("%s/api/v1/datasource/status/modify", ProjectConstants.BASE_URI), headers(), entity); + } + + /** + * 查看当前API数据源的开关状态 + * @return API数据源处于开启状态,则返回"1",否则返回"0" + * @throws Exception 操作失败则抛出此异常 + */ + public String status() throws Exception { + Map params = new HashMap<>(); + String res = HttpKits.post(String.format("%s/api/v1/datasource/status", ProjectConstants.BASE_URI), headers(), params); + JSONObject data = new JSONObject(res); + return data.getString("data"); + } + + /** + * 在API数据源下创建一个分组 + * @param groupName 分组名 + * @return 该分组的Id + * @throws Exception 操作失败则抛出此异常 + */ + public String createGroup(String groupName) throws Exception { + JSONObject body = new JSONObject(); + body.put("groupName", groupName); + HttpEntity entity = new StringEntity(body.toString(), StandardCharsets.UTF_8); + String res = HttpKits.post(String.format("%s/api/v1/datasource/group/create", ProjectConstants.BASE_URI), headers(), entity); + JSONObject data = new JSONObject(res); + return data.getString("data"); + } + + /** + * 修改分组的名字 + * @param groupId 分组Id + * @param newGroupName 新的分组名字 + * @throws Exception 操作失败则抛出此异常 + */ + public void modifyGroup(String groupId, String newGroupName) throws Exception { + JSONObject body = new JSONObject(); + body.put("groupId", groupId); + body.put("groupName", newGroupName); + HttpEntity entity = new StringEntity(body.toString(), StandardCharsets.UTF_8); + HttpKits.post(String.format("%s/api/v1/datasource/group/modify", ProjectConstants.BASE_URI), headers(), entity); + } + + /** + * 列出所有的分组 + * @return 以JSON数组的形式输出所有分组的信息的集合 + * @throws Exception 操作失败则抛出此异常 + */ + public JSONArray listAllGroup() throws Exception { Map params = new HashMap<>(); - params.put("status", "1"); - String r = HttpKits.post(String.format("%s/api/v1/datasource/status/modify", ProjectConstants.BASE_URI), headers(), params); - System.out.println("result=" + r); + String res = HttpKits.post(String.format("%s/api/v1/datasource/group/list", ProjectConstants.BASE_URI), headers(), params); + JSONObject data = new JSONObject(res); + return data.getJSONArray("data"); } - public void createGroup(String groupName) throws Exception { + /** + * 列出指定分组下所有的数据源表 + * @param groupId 分组Id + * @return 分组下的所有数据源表组成的一个JSON数组 + * @throws Exception 操作失败则抛出此异常 + */ + public JSONArray listTablesOfGroup(String groupId) throws Exception { JSONObject body = new JSONObject(); - body.put("name", groupName); + body.put("groupId", groupId); HttpEntity entity = new StringEntity(body.toString(), StandardCharsets.UTF_8); - HttpKits.post(String.format("%s/api/v1/datasource/group/create", ProjectConstants.BASE_URI), headers(), entity); + String res = HttpKits.post(String.format("%s/api/v1/datasource/group/table/list", ProjectConstants.BASE_URI), headers(), entity); + JSONObject data = new JSONObject(res); + return data.getJSONArray("data"); } + /** + * 在默认分组下创建一个数据源表 + * @param tableName 数据源表名 + * @return 数据源表Id + * @throws Exception 操作失败则抛出此异常 + */ public String createTable(String tableName) throws Exception { JSONObject body = new JSONObject(); body.put("tableName", tableName); @@ -47,14 +117,43 @@ public class DatasourceOperation { return data.getString("data"); } - public String createTable(String tableName, String groupName) throws Exception { + /** + * 在指定的分组下创建 一个数据源表 + * @param tableName 数据源表名 + * @param groupId 分组Id + * @return 数据源表Id + * @throws Exception 操作失败则抛出此异常 + */ + public String createTable(String tableName, String groupId) throws Exception { + JSONObject body = new JSONObject(); + body.put("tableName", tableName); + body.put("groupId", groupId); + HttpEntity entity = new StringEntity(body.toString(), StandardCharsets.UTF_8); + String res = HttpKits.post(String.format("%s/api/v1/datasource/table/create", ProjectConstants.BASE_URI), headers(), entity); + JSONObject data = new JSONObject(res); + return data.getString("data"); + } + + /** + * 修改已有的数据源表的名字 + * @param tableId 数据源表Id + * @param newTableName 新的数据源表名字 + * @throws Exception 操作失败则抛出此异常 + */ + public void modifyTable(String tableId, String newTableName) throws Exception { JSONObject body = new JSONObject(); - body.put("name", tableName); - body.put("group", groupName); + body.put("tableId", tableId); + body.put("tableName", newTableName); HttpEntity entity = new StringEntity(body.toString(), StandardCharsets.UTF_8); - return HttpKits.post(String.format("%s/api/v1/datasource/table/create", ProjectConstants.BASE_URI), headers(), entity); + HttpKits.post(String.format("%s/api/v1/datasource/table/modify", ProjectConstants.BASE_URI), headers(), entity); } + /** + * 生成指定的数据源表数据上传的地址 + * @param tableId 数据源表Id + * @return 上传数据的地址 + * @throws Exception 操作失败则抛出此异常 + */ public String requestUploadUrl(String tableId) throws Exception { JSONObject body = new JSONObject(); body.put("tableId", tableId); @@ -64,6 +163,11 @@ public class DatasourceOperation { return data.getString("data"); } + /** + * 标记数据源表的数据上传已完成 + * @param tableId 数据源表Id + * @throws Exception 操作失败则抛出此异常 + */ public void markAsFinish(String tableId) throws Exception { JSONObject body = new JSONObject(); body.put("tableId", tableId); @@ -71,6 +175,11 @@ public class DatasourceOperation { HttpKits.post(String.format("%s/api/v1/datasource/table/upload/finish", ProjectConstants.BASE_URI), headers(), entity); } + /** + * 删除数据源表 + * @param tableId 数据源表Id + * @throws Exception 操作失败则抛出此异常 + */ public void deleteTable(String tableId) throws Exception { JSONObject body = new JSONObject(); body.put("tableId", tableId); @@ -78,6 +187,10 @@ public class DatasourceOperation { HttpKits.post(String.format("%s/api/v1/datasource/table/delete", ProjectConstants.BASE_URI), headers(), entity); } + /** + * 删除API数据源下的所有分组和表 + * @throws Exception 操作失败则抛出此异常 + */ public void reset() throws Exception { Map params = new HashMap<>(); HttpKits.post(String.format("%s/api/v1/datasource/reset", ProjectConstants.BASE_URI), headers(), params); diff --git a/src/main/java/com/fanruan/hihidata/datasource/server/ServerApplication.java b/src/main/java/com/fanruan/hihidata/datasource/server/ServerApplication.java index ce5b9f6..02f48a8 100644 --- a/src/main/java/com/fanruan/hihidata/datasource/server/ServerApplication.java +++ b/src/main/java/com/fanruan/hihidata/datasource/server/ServerApplication.java @@ -18,8 +18,11 @@ public class ServerApplication { authentication = new Authentication("#key", "#secret"); } DatasourceOperation operation = new DatasourceOperation(authentication); - // 创建表并返回表id - String tableId = operation.createTable("地区数据"); + + String groupId = operation.createGroup("我的分组"); + + String tableId = operation.createTable("地区数据", groupId); + // 获取给该表提供数据的文件的上传地址 String fileUploadUrl = operation.requestUploadUrl(tableId); // 将数据文件上传