Commit 7f2c7f50 authored by zhangc's avatar zhangc

修改api制作,组织创建相关接口

parent 78fd3f92
...@@ -4,25 +4,21 @@ CREATE TABLE `t_api_interface` ( ...@@ -4,25 +4,21 @@ CREATE TABLE `t_api_interface` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'api 信息表自增ID', `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'api 信息表自增ID',
`api_key` varchar(200) NOT NULL COMMENT 'api唯一标识', `api_key` varchar(200) NOT NULL COMMENT 'api唯一标识',
`api_name` varchar(100) DEFAULT NULL COMMENT 'api名称', `api_name` varchar(100) DEFAULT NULL COMMENT 'api名称',
`api_desc` varchar(300) DEFAULT NULL COMMENT 'api描述',
`api_protocl` varchar(32) DEFAULT NULL COMMENT 'api请求协议:http,https', `api_protocl` varchar(32) DEFAULT NULL COMMENT 'api请求协议:http,https',
`api_path` varchar(100) DEFAULT NULL COMMENT '请求地址',
`target_url` varchar(100) DEFAULT NULL COMMENT '目标url', `target_url` varchar(100) DEFAULT NULL COMMENT '目标url',
`api_type` varchar(50) NULL DEFAULT '' COMMENT 'api类型:1 数据银行制作大数据表 2 数据银行制作数据包,3,数据银行制作自定义API 4 API实时接入 6 标签查询 9自定义', `api_type` varchar(50) NULL DEFAULT '' COMMENT 'api类型:1 数据银行制作大数据表 2 数据银行制作数据包,3,数据银行制作自定义API 4 API实时接入 6 标签查询 9自定义',
`req_method` varchar(20) NULL DEFAULT NULL COMMENT '请求方式: GET, POST', `req_method` varchar(20) NULL DEFAULT NULL COMMENT '请求方式: GET, POST',
`api_function` varchar(200) DEFAULT NULL COMMENT '接口功能', `api_function` varchar(200) DEFAULT NULL COMMENT '接口功能',
`join_type` varchar(50) NULL DEFAULT NULL COMMENT '接入类型:字典表对应key值', `join_type` varchar(50) NULL DEFAULT NULL COMMENT '接入类型:字典表对应key值',
`test_example` varchar(255) NULL DEFAULT NULL COMMENT '测试实例',
`status` varchar(50) NOT NULL COMMENT '状态(DRAFT-草稿 ISSUE-发布 OUTMODED-过时 4FREEZE-冻结 EXPIRY-失效)', `status` varchar(50) NOT NULL COMMENT '状态(DRAFT-草稿 ISSUE-发布 OUTMODED-过时 4FREEZE-冻结 EXPIRY-失效)',
`output_type` varchar(50) NULL DEFAULT 'JSON' COMMENT '输出类型:flow 流形式输出, json格式输出', `output_type` varchar(50) NULL DEFAULT 'JSON' COMMENT '输出类型:flow 流形式输出, json格式输出',
`page` tinyint(2) NULL DEFAULT '0' COMMENT '是否分页:0 false ,1 true',
`version` varchar(20) DEFAULT 'v1.0' COMMENT '版本号', `version` varchar(20) DEFAULT 'v1.0' COMMENT '版本号',
`sign_type` varchar(50) DEFAULT NULL COMMENT '加密方式: MD5 RSA', `sign_type` varchar(50) DEFAULT NULL COMMENT '加密方式: MD5 RSA',
`timeout` varchar(50) DEFAULT NULL COMMENT '超时时间', `timeout` varchar(50) DEFAULT NULL COMMENT '超时时间',
`file_id` bigint(20) NOT NULL COMMENT '文件夹id', `file_id` bigint(20) NOT NULL COMMENT '文件夹id',
`req_type` varchar(20) DEFAULT NULL COMMENT '限流类型:DAY 按天,MONTH 按月, YEAR 按年', `req_type` varchar(20) DEFAULT NULL COMMENT '限流类型:DAY 按天,MONTH 按月, YEAR 按年',
`req_frequency` bigint(20) DEFAULT '100' COMMENT '限制次数', `req_frequency` bigint(20) DEFAULT '100' COMMENT '限制次数',
`is_test` tinyint(2) NOT NULL DEFAULT '0' COMMENT '是否测试数据:0 否,1 是', `api_custom_id` bigint(20) NULL COMMENT 'API扩展表id'
`remark` varchar(500) DEFAULT NULL COMMENT '备注', `remark` varchar(500) DEFAULT NULL COMMENT '备注',
`create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`create_user` varchar(100) DEFAULT NULL COMMENT '创建人', `create_user` varchar(100) DEFAULT NULL COMMENT '创建人',
...@@ -38,20 +34,18 @@ DROP TABLE IF EXISTS `t_api_interface_custom`; ...@@ -38,20 +34,18 @@ DROP TABLE IF EXISTS `t_api_interface_custom`;
CREATE TABLE `t_api_interface_custom` ( CREATE TABLE `t_api_interface_custom` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'api 信息表自增ID', `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'api 信息表自增ID',
`api_key` varchar(200) NOT NULL COMMENT 'api唯一标识', `api_key` varchar(200) NOT NULL COMMENT 'api唯一标识',
`api_interface_id` bigint(20) NOT NULL COMMENT 'api表自增id',
`api_type` varchar(50) DEFAULT '' COMMENT 'api类型:1 数据银行制作大数据表 2 数据银行制作数据包,3,数据银行制作自定义API 4 API实时接入 5 DMP标签查询 6.DMP大数据表查询 7 DMP自定义', `api_type` varchar(50) DEFAULT '' COMMENT 'api类型:1 数据银行制作大数据表 2 数据银行制作数据包,3,数据银行制作自定义API 4 API实时接入 5 DMP标签查询 6.DMP大数据表查询 7 DMP自定义',
`es_data_source` varchar(100) DEFAULT NULL COMMENT '数据源id', `es_data_source` varchar(100) DEFAULT NULL COMMENT '数据源id',
`es_data_base` varchar(100) DEFAULT NULL COMMENT '源数据库名称', `es_data_base` varchar(100) DEFAULT NULL COMMENT '源数据库名称',
`es_table` varchar(100) DEFAULT NULL COMMENT '源数据表名称', `es_table` varchar(100) DEFAULT NULL COMMENT '源数据表名称',
`handle_type` varchar(50) DEFAULT NULL COMMENT '处理类型',
`request_param` varchar(300) DEFAULT NULL COMMENT '请求参数', `request_param` varchar(300) DEFAULT NULL COMMENT '请求参数',
`response_param` varchar(300) DEFAULT NULL COMMENT '响应参数', `response_param` varchar(300) DEFAULT NULL COMMENT '响应参数',
`req_headers` varchar(300) DEFAULT NULL COMMENT '请求头', `req_headers` varchar(300) DEFAULT NULL COMMENT '请求头',
`resp_code` varchar(300) DEFAULT NULL COMMENT '响应状态码', `resp_code` varchar(300) DEFAULT NULL COMMENT '响应状态码',
`api_example` varchar(300) DEFAULT NULL COMMENT 'api返回样例', `api_example` varchar(300) DEFAULT NULL COMMENT 'api返回样例',
`inbox_param` varchar(300) NULL DEFAULT NULL COMMENT '固定参数', `inbox_param` varchar(300) NULL DEFAULT NULL COMMENT '固定参数',
`page_num` int(10) NULL DEFAULT '1' COMMENT '当前页', `page_num` int(10) NULL DEFAULT 1000000 COMMENT '最大行数',
`page_size` int(10) NULL DEFAULT '100' COMMENT '当前页显示数' `page_size` int(10) NULL DEFAULT 1000 COMMENT '每页返回行数',
`remark` varchar(500) DEFAULT NULL COMMENT '备注', `remark` varchar(500) DEFAULT NULL COMMENT '备注',
`create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`create_user` varchar(100) DEFAULT NULL COMMENT '创建人', `create_user` varchar(100) DEFAULT NULL COMMENT '创建人',
...@@ -67,7 +61,7 @@ DROP TABLE IF EXISTS `t_api_interface_file`; ...@@ -67,7 +61,7 @@ DROP TABLE IF EXISTS `t_api_interface_file`;
CREATE TABLE `t_api_interface_file` ( CREATE TABLE `t_api_interface_file` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'api文件表自增ID', `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'api文件表自增ID',
`project_id` bigint(20) NOT NULL COMMENT '项目编号', `project_id` bigint(20) NOT NULL COMMENT '项目编号',
`file_source` varchar(50) DEFAULT NULL COMMENT '文件来源:,1 dmp, 2 数据银行', `file_source` varchar(50) DEFAULT NULL COMMENT '文件来源:,1 API制做,2 组织创建',
`file_name` varchar(50) DEFAULT NULL COMMENT '文件名称', `file_name` varchar(50) DEFAULT NULL COMMENT '文件名称',
`file_en_name` varchar(50) DEFAULT NULL COMMENT '文件英文名称', `file_en_name` varchar(50) DEFAULT NULL COMMENT '文件英文名称',
`parent_id` bigint(20) DEFAULT NULL COMMENT '父类id', `parent_id` bigint(20) DEFAULT NULL COMMENT '父类id',
...@@ -94,6 +88,7 @@ CREATE TABLE `t_api_org` ( ...@@ -94,6 +88,7 @@ CREATE TABLE `t_api_org` (
`org_type` varchar(20) NULL DEFAULT NULL COMMENT '组织类型:OUT 外部组织, IN 内部组织', `org_type` varchar(20) NULL DEFAULT NULL COMMENT '组织类型:OUT 外部组织, IN 内部组织',
`status` tinyint(2) DEFAULT '1' COMMENT '状态: 0- 注销 1- 正常', `status` tinyint(2) DEFAULT '1' COMMENT '状态: 0- 注销 1- 正常',
`org_mail` varchar(100) DEFAULT NULL COMMENT '组织邮箱', `org_mail` varchar(100) DEFAULT NULL COMMENT '组织邮箱',
`org_folder_id` bigint(20) DEFAULT NULL COMMENT '组织所在文件夹id',
`org_sort` int(10) DEFAULT '999' COMMENT '组织排序', `org_sort` int(10) DEFAULT '999' COMMENT '组织排序',
`parent_id` varchar(100) DEFAULT NULL COMMENT '父类组织编码', `parent_id` varchar(100) DEFAULT NULL COMMENT '父类组织编码',
`remark` varchar(500) DEFAULT NULL COMMENT '备注', `remark` varchar(500) DEFAULT NULL COMMENT '备注',
......
...@@ -30,4 +30,10 @@ public class TagConstants { ...@@ -30,4 +30,10 @@ public class TagConstants {
//redis限流相关 //redis限流相关
public static final String OPEN_API_REDIS_LIMIT_KEY = "jz:openapi:redis:limit:"; public static final String OPEN_API_REDIS_LIMIT_KEY = "jz:openapi:redis:limit:";
//API缓存Key
public static final String OPEN_API_CACHE_KEY = "jz:openapi:cache:";
} }
...@@ -62,16 +62,6 @@ public class OrganizationManageController { ...@@ -62,16 +62,6 @@ public class OrganizationManageController {
public Mono<Result> add(@RequestBody @Valid OrganizationManageAddReq req) { public Mono<Result> add(@RequestBody @Valid OrganizationManageAddReq req) {
return Mono.fromSupplier(() -> organizationManageService.add(req)); return Mono.fromSupplier(() -> organizationManageService.add(req));
} }
/**
* @Description:更新组织信息
* @Author: Mr.zhang
* @Date: 2020-12-24
*/
/* @ApiOperation("更新组织信息")
@PostMapping(value = "/update")
public Mono<Result> update(@RequestBody @Valid OrganizationManageUpdateReq req) {
return Mono.fromSupplier(() -> organizationManageService.update(req));
}*/
/** /**
* @Description:注销组织 * @Description:注销组织
* @Author: Mr.zhang * @Author: Mr.zhang
......
package com.jz.dm.controller; package com.jz.dm.controller;
import com.jz.common.utils.Result; import com.jz.common.utils.Result;
import com.jz.dm.models.req.make.*; import com.jz.dm.models.req.CreateFolderReq;
import com.jz.dm.models.req.make.ApiInterfaceReq;
import com.jz.dm.service.ProducerService; import com.jz.dm.service.ProducerService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -46,115 +47,125 @@ public class ProducerController { ...@@ -46,115 +47,125 @@ public class ProducerController {
*/ */
@ApiOperation("创建项目文件夹") @ApiOperation("创建项目文件夹")
@PostMapping(value = "/createProjectFolder") @PostMapping(value = "/createProjectFolder")
public Mono<Result> createProjectFolder(@RequestParam(name = "projectId")Long projectId, public Mono<Result> createProjectFolder(@RequestBody @Valid CreateFolderReq req) {
@RequestParam(name = "parentId")Long parentId, return Mono.fromSupplier(() -> producerService.createProjectFolder(req));
@RequestParam(name = "currentUser") String currentUser ) {
return Mono.fromSupplier(() -> producerService.createProjectFolder(projectId,parentId,currentUser));
} }
/** /**
* @Description:Api制作(自定义DMP) * @Description:获取APIID
* @Author: Mr.zhang * @Author: Mr.zhang
* @Date: 2020-12-26 * @Date: 2020-12-26
*/ */
@ApiOperation("Api制作(自定义DMP)") @ApiOperation("Api制作(获取ApiId)")
@PostMapping(value = "/getCustomApiId")
public Mono<Result> getCustomApiId() {
return Mono.fromSupplier(() -> Result.of_success(producerService.getCustomApiId()));
}
/**
* @Description:Api制作(第三方)
* @Author: Mr.zhang
* @Date: 2020-12-26
*/
@ApiOperation("Api制作(第三方)")
@PostMapping(value = "/addCustomApi") @PostMapping(value = "/addCustomApi")
public Mono<Result> makeCustomApi(@RequestBody @Valid ApiInterfaceReq req) { public Mono<Result> makeCustomApi(@RequestBody @Valid ApiInterfaceReq req) {
return Mono.fromSupplier(() -> Result.of_success(producerService.addCustomApi(req))); return Mono.fromSupplier(() -> Result.of_success(producerService.saveInterfaceAPi(req)));
} }
/**
* @Description:Api制作(数据查询/标签查询)
* @Author: Mr.zhang
* @Date: 2020-12-26
*/
@ApiOperation("Api制作(数据查询/标签查询)")
@PostMapping(value = "/addDataTableSelect")
public Mono<Result> bigDataMakeApi(@RequestBody @Valid ApiInterfaceReq req) {
return Mono.fromSupplier(() -> producerService.addBigDataMakeApi(req));
}
/** /**
* @Description:Api制作(数据银行) * @Description:Api制作(大数据查询/标签查询)保存修改的api信息
* @return: (自定义更新同时使用)
* @Author: Mr.zhang * @Author: Mr.zhang
* @Date: 2020-12-26 * @Date: 2020-12-26
*/ */
/* @ApiOperation("保存修改的api信息")
@PostMapping(value = "/saveUpdate")
public Mono<Result> saveUpdateAPiInfo(@RequestBody @Valid ApiInterfaceReq req) {
return Mono.fromSupplier(() -> producerService.saveUpdateAPiInfo(req));
}*/
/* *//**
* @Description:Api制作(数据银行)
* @Author: Mr.zhang
* @Date: 2020-12-26
*//*
@ApiOperation("Api制作(数据银行)") @ApiOperation("Api制作(数据银行)")
@PostMapping(value = "/addDataBankApiInfo") @PostMapping(value = "/addDataBankApiInfo")
public Mono<Result> addDataBankApiInfo(@RequestBody @Valid MakeDataBankApiReq req) { public Mono<Result> addDataBankApiInfo(@RequestBody @Valid MakeDataBankApiReq req) {
return Mono.fromSupplier(() -> producerService.addDataBankApiInfo(req)); return Mono.fromSupplier(() -> producerService.addDataBankApiInfo(req));
} }
/** *//**
* @Description:Api制作(实时接入) * @Description:Api制作(实时接入)
* @Author: Mr.zhang * @Author: Mr.zhang
* @Date: 2020-12-26 * @Date: 2020-12-26
*/ *//*
@ApiOperation("Api制作(实时接入)") @ApiOperation("Api制作(实时接入)")
@PostMapping(value = "/realMakeApi") @PostMapping(value = "/realMakeApi")
public Mono<Result> realCustomApi(@RequestBody @Valid MakeRealCustomApiReq req) { public Mono<Result> realCustomApi(@RequestBody @Valid MakeRealCustomApiReq req) {
return Mono.fromSupplier(() -> Result.of_success(producerService.addRealCustomApi(req))); return Mono.fromSupplier(() -> Result.of_success(producerService.addRealCustomApi(req)));
} }*/
/**
* @Description:Api制作(大数据查询/标签查询)
* @return:
* @Author: Mr.zhang
* @Date: 2020-12-26
*/
@ApiOperation("Api制作(大数据查询/标签查询)")
@PostMapping(value = "/makeBigDataApi")
public Mono<Result> bigDataMakeApi(@RequestBody @Valid MakeBigDataApiReq req) {
return Mono.fromSupplier(() -> producerService.addBigDataMakeApi(req));
}
/** /**
* @Description:保存API基本信息/自定义API * @Description:保存API基本信息/自定义API
* @return: (保存API基本信息) * @return: (保存API基本信息)
* @Author: Mr.zhang * @Author: Mr.zhang
* @Date: 2020-12-26 * @Date: 2020-12-26
*/ *//*
@ApiOperation("保存API基本信息") @ApiOperation("保存API基本信息")
@PostMapping(value = "/saveInterface") @PostMapping(value = "/saveInterface")
public Mono<Result> saveInsetInterface(@RequestBody @Valid ApiInterfaceReq req) { public Mono<Result> saveInsetInterface(@RequestBody @Valid ApiInterfaceReq req) {
return Mono.fromSupplier(() -> producerService.saveInterfaceAPi(req)); return Mono.fromSupplier(() -> producerService.saveInterfaceAPi(req));
} }*/
/**
* @Description:Api制作(大数据查询/标签查询)保存修改的api信息
* @return: (自定义更新同时使用)
* @Author: Mr.zhang
* @Date: 2020-12-26
*/
@ApiOperation("保存修改的api信息")
@PostMapping(value = "/saveUpdate")
public Mono<Result> saveUpdateAPiInfo(@RequestBody @Valid ApiInterfaceReq req) {
return Mono.fromSupplier(() -> producerService.saveUpdateAPiInfo(req));
}
/** /*
*//**
* @Description:获取数据源配置 * @Description:获取数据源配置
* @Author: Mr.zhang * @Author: Mr.zhang
* @Date: 2020-12-26 * @Date: 2020-12-26
*/ *//*
@ApiOperation("获取数据源配置") @ApiOperation("获取数据源配置")
@PostMapping(value = "/getSourceConfig") @PostMapping(value = "/getSourceConfig")
public Mono<Result> getSourceConfig(@RequestBody @Valid SourceConfigReq req) { public Mono<Result> getSourceConfig(@RequestBody @Valid SourceConfigReq req) {
return Mono.fromSupplier(() -> producerService.getSourceConfig(req)); return Mono.fromSupplier(() -> producerService.getSourceConfig(req));
} }
/** *//**
* @Description:获取索引 * @Description:获取索引
* @Author: Mr.zhang * @Author: Mr.zhang
* @Date: 2020-12-26 * @Date: 2020-12-26
*/ *//*
@ApiOperation("获取索引") @ApiOperation("获取索引")
@GetMapping(value = "/getIndicess") @GetMapping(value = "/getIndicess")
public Mono<Result> getSourceWarehouseList(@RequestParam(name = "id") Long id) { public Mono<Result> getSourceWarehouseList(@RequestParam(name = "id") Long id) {
return Mono.fromSupplier(() -> producerService.getSourceWarehouseList(id)); return Mono.fromSupplier(() -> producerService.getSourceWarehouseList(id));
} }
/** *//**
* @Description:获取某个索引下的type * @Description:获取某个索引下的type
* @Author: Mr.zhang * @Author: Mr.zhang
* @Date: 2020-12-26 * @Date: 2020-12-26
*/ *//*
@ApiOperation("获取某个索引下的type") @ApiOperation("获取某个索引下的type")
@GetMapping(value = "/getIndicesTypes") @GetMapping(value = "/getIndicesTypes")
public Mono<Result> getIndicesTypes(@RequestParam(name = "indices") String indices, public Mono<Result> getIndicesTypes(@RequestParam(name = "indices") String indices,
@RequestParam(name = "id") Long id) { @RequestParam(name = "id") Long id) {
return Mono.fromSupplier(() -> producerService.getIndicesTypes(indices,id)); return Mono.fromSupplier(() -> producerService.getIndicesTypes(indices,id));
} }
/** *//**
* @Description:获取某个索引 type的fields * @Description:获取某个索引 type的fields
* @Author: Mr.zhang * @Author: Mr.zhang
* @Date: 2020-12-26 * @Date: 2020-12-26
*/ *//*
@ApiOperation("获取某个索引 type的fields") @ApiOperation("获取某个索引 type的fields")
@GetMapping(value = "/getIndicesTypesFields") @GetMapping(value = "/getIndicesTypesFields")
public Mono<Result> getIndicesTypesFields(@RequestParam(name = "indices") String indices, public Mono<Result> getIndicesTypesFields(@RequestParam(name = "indices") String indices,
...@@ -174,5 +185,5 @@ public class ProducerController { ...@@ -174,5 +185,5 @@ public class ProducerController {
@GetMapping(value = "/getRedisObj") @GetMapping(value = "/getRedisObj")
public Result getObjOnRedis() { public Result getObjOnRedis() {
return producerService.getObjOnRedis(); return producerService.getObjOnRedis();
} }*/
} }
...@@ -38,12 +38,6 @@ public class ApiInterface extends BaseObject implements Serializable { ...@@ -38,12 +38,6 @@ public class ApiInterface extends BaseObject implements Serializable {
@JsonIgnore @JsonIgnore
private String apiName; private String apiName;
/**
* api描述
*/
@TableField("api_desc")
private String apiDesc;
/** /**
* api请求协议:http,https * api请求协议:http,https
*/ */
...@@ -51,16 +45,11 @@ public class ApiInterface extends BaseObject implements Serializable { ...@@ -51,16 +45,11 @@ public class ApiInterface extends BaseObject implements Serializable {
private String apiProtocl; private String apiProtocl;
/** /**
* api类型:1 数据银行制作大数据表 2 数据银行制作数据包,3,数据银行制作自定义API 4 API实时接入 5 DMP标签查询 6.DMP大数据表查询 7 DMP自定义' * api类型: 1 API实时接入 2 DMP标签查询 3 数据表查询 4 三方查询'
*/ */
@TableField("api_type") @TableField("api_type")
private String apiType; private String apiType;
/**
* 请求地址
*/
@TableField("api_path")
private String apiPath;
/** /**
* 目标url * 目标url
*/ */
...@@ -76,21 +65,13 @@ public class ApiInterface extends BaseObject implements Serializable { ...@@ -76,21 +65,13 @@ public class ApiInterface extends BaseObject implements Serializable {
*/ */
@TableField("join_type") @TableField("join_type")
private String joinType; private String joinType;
/**
* 测试实例
*/
@TableField("test_example")
private String testExample;
/** /**
* '输出类型:flow 流形式输出, json格式输出', * '输出类型:flow 流形式输出, json格式输出',
*/ */
@TableField("output_type") @TableField("output_type")
private String outputType; private String outputType;
/**
* 是否分页:0 false ,1 true
*/
@TableField("page")
private Boolean page;
/** /**
* 状态(1-草稿 2-发布 3-过时 4-冻结 5-失效) * 状态(1-草稿 2-发布 3-过时 4-冻结 5-失效)
...@@ -132,17 +113,18 @@ public class ApiInterface extends BaseObject implements Serializable { ...@@ -132,17 +113,18 @@ public class ApiInterface extends BaseObject implements Serializable {
@TableField("timeout") @TableField("timeout")
private String timeout; private String timeout;
/**
* 是否测试数据:0 否,1 是
*/
@TableField("is_test")
private Integer isTest;
/** /**
* 文件夹id * 文件夹id
*/ */
@TableField("file_id") @TableField("file_id")
private Long fileId; private Long fileId;
/**
* API扩展表id
*/
@TableField("api_custom_id")
private Long apiCustomId;
/*-----------------------------------保存数据库时忽略字段--------------------------------*/ /*-----------------------------------保存数据库时忽略字段--------------------------------*/
/** /**
* 请求总次数 * 请求总次数
......
...@@ -33,8 +33,8 @@ public class ApiInterfaceCustom extends BaseObject implements Serializable { ...@@ -33,8 +33,8 @@ public class ApiInterfaceCustom extends BaseObject implements Serializable {
/** /**
* apiInterfaceId * apiInterfaceId
*/ */
@TableField("api_interface_id") /* @TableField("api_interface_id")
private Long apiInterfaceId; private Long apiInterfaceId;*/
/** /**
...@@ -94,14 +94,15 @@ public class ApiInterfaceCustom extends BaseObject implements Serializable { ...@@ -94,14 +94,15 @@ public class ApiInterfaceCustom extends BaseObject implements Serializable {
@TableField("inbox_param") @TableField("inbox_param")
private String inboxParam; private String inboxParam;
/** /**
* 当前页 * 最大行数
*/ */
@TableField("page_num") @TableField("max_row")
private Integer pageNum; private Long maxRow;
/** /**
* 当前页显示数据 * 每页返回行数
*/ */
@TableField("page_size") @TableField("page_row")
private Integer pageSize; private Long pageRow;
} }
...@@ -31,17 +31,11 @@ public class ApiInterfaceFile extends BaseObject implements Serializable { ...@@ -31,17 +31,11 @@ public class ApiInterfaceFile extends BaseObject implements Serializable {
private Long projectId; private Long projectId;
/** /**
* 文件来源:1 DMP 2 数据银行 * 文件来源:,1 API制做,2 组织创建
*/ */
@TableField("file_source") @TableField("file_source")
private String fileSource; private String fileSource;
///**
//* 文件类型:1 文件夹 ,2 文件
//*/
//@TableField("file_type")
//private String fileType;
/** /**
* 文件名称 * 文件名称
*/ */
......
...@@ -55,6 +55,13 @@ public class ApiOrg extends BaseObject implements Serializable { ...@@ -55,6 +55,13 @@ public class ApiOrg extends BaseObject implements Serializable {
*/ */
@TableField("linkman") @TableField("linkman")
private String linkman; private String linkman;
/**
* 组织目录文件夹
*/
@TableField("org_folder_id")
private Long orgFolderId;
/** /**
* 组织类型 OUT 外部组织 IN 内部组织 * 组织类型 OUT 外部组织 IN 内部组织
*/ */
......
...@@ -20,27 +20,28 @@ import java.io.Serializable; ...@@ -20,27 +20,28 @@ import java.io.Serializable;
@ApiModel(value = "api基本信息") @ApiModel(value = "api基本信息")
public class ApiInterfaceReq implements Serializable { public class ApiInterfaceReq implements Serializable {
@ApiModelProperty(value = "接口描述",required = false)
public String apiDesc;
@ApiModelProperty(value = "传输方式:http https",required = true) @ApiModelProperty(value = "传输方式:http https",required = true)
@NotNull(message = "传输方式不能为空") @NotNull(message = "传输方式不能为空")
public String transMode; public String apiProtocl;
@ApiModelProperty(value = "加密方式0 无,1:MD5 2:RSA",required = true) @ApiModelProperty(value = "加密方式0 无,1:MD5 2:RSA",required = true)
@NotNull(message = "加密方式不能为空") @NotNull(message = "加密方式不能为空")
public String signType; public String signType;
@ApiModelProperty(value = "接入类型:对应字典表key",required = true) @ApiModelProperty(value = "Api类型:对应字典表key",required = true)
@NotNull(message = "接入类型不能为空") @NotNull(message = "Api类型不能为空")
public String joinType; public String joinType;
@ApiModelProperty(value = "apiKey",required = true)
@NotNull(message = "apiKey不能为空")
public String apiKey;
@ApiModelProperty(value = "目标地址",required = true) @ApiModelProperty(value = "目标地址",required = true)
@NotNull(message="目标地址不能为空") @NotNull(message="目标地址不能为空")
public String targetUrl; public String targetUrl;
@ApiModelProperty(value = "请求方式:GET POST",required = false) @ApiModelProperty(value = "请求方式:GET POST",required = true)
@NotNull(message="请求方式不能为空")
public String reqMethod; public String reqMethod;
@ApiModelProperty(value = "超时时间",required = true) @ApiModelProperty(value = "超时时间",required = true)
...@@ -51,22 +52,49 @@ public class ApiInterfaceReq implements Serializable { ...@@ -51,22 +52,49 @@ public class ApiInterfaceReq implements Serializable {
@NotNull(message = "限流类型不能为空") @NotNull(message = "限流类型不能为空")
public String reqType; public String reqType;
@ApiModelProperty(value = "API名称",required = false)
public String apiName;
@ApiModelProperty(value = "限制次数",required = false) @ApiModelProperty(value = "限制次数",required = false)
public Long reqFrequency; public Long reqFrequency;
@ApiModelProperty(value = "api描述",required = false) @ApiModelProperty(value = "api描述",required = false)
public String apiFunction; public String apiFunction;
/* @ApiModelProperty(value = "父类文件id,一级文件夹传入0",required = false) @ApiModelProperty(value = "文件夹Id",required = true)
public Long parentId; @NotNull(message="文件夹Id不能为空")
public Long folderId;
@ApiModelProperty(value = "项目编号",required = true)
@NotNull(message="项目编号不能为空")
public Long projectId;
@ApiModelProperty(value = "输出类型:JSON 文件流形式",required = false)
public String outType;
@ApiModelProperty(value = "文件id",required = false) @ApiModelProperty(value = "最大行数:",required = false)
public Long fileId; public Long maxRow;
@ApiModelProperty(value = "项目id",required = true) @ApiModelProperty(value = "每页返回数据数:",required = false)
@NotNull(message="项目id不能为空") public Long pageRow;
public Long projectId;*/
@ApiModelProperty(value = "请求参数:",required = false)
public String requestParam;
@ApiModelProperty(value = "响应参数:",required = false)
public String responseParam;
@ApiModelProperty(value = "参数字段:",required = false)
public String tableFields;
@ApiModelProperty(value = "数据源id",required = false)
public String esDataSource;
@ApiModelProperty(value = "数据库名称",required = false)
public String esDataBase;
@ApiModelProperty(value = "数据表名称",required = false)
public String esTable;
@ApiModelProperty(value = "状态",required = false) @ApiModelProperty(value = "状态",required = false)
public String status; public String status;
...@@ -75,6 +103,8 @@ public class ApiInterfaceReq implements Serializable { ...@@ -75,6 +103,8 @@ public class ApiInterfaceReq implements Serializable {
public Long id; public Long id;
@ApiModelProperty(value = "创建用户",hidden = true) @ApiModelProperty(value = "创建用户",hidden = true)
public String createUser; public String createUser;
@ApiModelProperty(value = "创建用户",hidden = true)
public String updateUser;
@ApiModelProperty(value = "api类型:1.数据银行制作大数据表 " + @ApiModelProperty(value = "api类型:1.数据银行制作大数据表 " +
"2 数据银行制作数据包,3,数据银行制作自定义API " + "2 数据银行制作数据包,3,数据银行制作自定义API " +
......
...@@ -20,14 +20,10 @@ import java.io.Serializable; ...@@ -20,14 +20,10 @@ import java.io.Serializable;
@ApiModel("组织管理详情请求体") @ApiModel("组织管理详情请求体")
public class OrganizationManageAddReq implements Serializable { public class OrganizationManageAddReq implements Serializable {
@ApiModelProperty(value = "组织类型:INT 内部组织 OUT 外部组织",required = true) /*@ApiModelProperty(value = "组织类型:INT 内部组织 OUT 外部组织",required = true)
@NotNull(message = "组织类型不能为空!") @NotNull(message = "组织类型不能为空!")
private String orgType; private String orgType;
@ApiModelProperty(value = "组织名称",required = true)
@NotNull(message = "组织名称不能为空")
private String orgName;
@ApiModelProperty(value = "组织描述",required = false) @ApiModelProperty(value = "组织描述",required = false)
private String orgDesc; private String orgDesc;
...@@ -35,21 +31,31 @@ public class OrganizationManageAddReq implements Serializable { ...@@ -35,21 +31,31 @@ public class OrganizationManageAddReq implements Serializable {
private String orgCnName; private String orgCnName;
@ApiModelProperty(value = "组织邮箱",required = false) @ApiModelProperty(value = "组织邮箱",required = false)
private String orgMail; private String orgMail;*/
@ApiModelProperty(value = "组织名称",required = true)
@NotNull(message = "组织名称不能为空")
private String orgName;
@ApiModelProperty(value = "组织电话",required = false) @ApiModelProperty(value = "组织电话",required = true)
@NotNull(message="组织电话不能为空")
private String orgPhone; private String orgPhone;
@ApiModelProperty(value = "组织联系人",required = false) @ApiModelProperty(value = "组织联系人",required = true)
@NotNull(message="组织联系人不能为空")
private String linkman; private String linkman;
@ApiModelProperty(value = "文件夹Id",required = true)
@NotNull(message="文件夹Id不能为空")
private Long orgFolderId;
@ApiModelProperty(value = "备注",required = false) @ApiModelProperty(value = "备注",required = false)
private String remark; private String remark;
@ApiModelProperty(value = "创建用户",required = false) @ApiModelProperty(value = "创建用户",required = false)
private String createUser; private String createUser;
@ApiModelProperty(value = "创建用户",required = false) @ApiModelProperty(value = "更新用户",required = false)
private String updateUser; private String updateUser;
@ApiModelProperty(value = "id ----更新时必传",required = false) @ApiModelProperty(value = "id ----更新时必传",required = false)
......
...@@ -38,12 +38,6 @@ public interface OrganizationManageService { ...@@ -38,12 +38,6 @@ public interface OrganizationManageService {
*/ */
Result add(OrganizationManageAddReq req); Result add(OrganizationManageAddReq req);
/**
* 更新组织信息
* @param req
* @return
*/
//Result update(OrganizationManageUpdateReq req);
/** /**
* 根据id注销组织 * 根据id注销组织
......
package com.jz.dm.service; package com.jz.dm.service;
import com.jz.common.utils.Result; import com.jz.common.utils.Result;
import com.jz.dm.models.req.make.*; import com.jz.dm.models.req.CreateFolderReq;
import com.jz.dm.models.req.make.ApiInterfaceReq;
/** /**
* @author ZC * @author ZC
...@@ -13,40 +14,34 @@ import com.jz.dm.models.req.make.*; ...@@ -13,40 +14,34 @@ import com.jz.dm.models.req.make.*;
* @Description: * @Description:
**/ **/
public interface ProducerService { public interface ProducerService {
/**
* 制作自定义APi
* @param req
* @return
*/
Result addCustomApi(ApiInterfaceReq req);
/** /**
* Api制作(实时接入) * Api制作(实时接入)
* @param req * @param req
* @return * @return
*/ */
Result addRealCustomApi(MakeRealCustomApiReq req); // Result addRealCustomApi(MakeRealCustomApiReq req);
/** /**
* Api制作(数据查询/标签查询) * Api制作(数据查询/标签查询)
* @param req * @param req
* @return * @return
*/ */
Result addBigDataMakeApi(MakeBigDataApiReq req); Result addBigDataMakeApi(ApiInterfaceReq req);
/** /**
* 获取数据源配置 * 获取数据源配置
* @param req * @param req
* @return * @return
*/ */
Result getSourceConfig(SourceConfigReq req); // Result getSourceConfig(SourceConfigReq req);
/** /**
* 获取数据库列表 * 获取数据库列表
* @param id * @param id
* @return * @return
*/ */
Result getSourceWarehouseList(Long id); // Result getSourceWarehouseList(Long id);
/** /**
* 获取某个索引下的type * 获取某个索引下的type
...@@ -54,7 +49,7 @@ public interface ProducerService { ...@@ -54,7 +49,7 @@ public interface ProducerService {
* @param id * @param id
* @return * @return
*/ */
Result getIndicesTypes(String indices, Long id); // Result getIndicesTypes(String indices, Long id);
/** /**
* 获取某个索引 type的fields * 获取某个索引 type的fields
...@@ -63,22 +58,22 @@ public interface ProducerService { ...@@ -63,22 +58,22 @@ public interface ProducerService {
* @param id * @param id
* @return * @return
*/ */
Result getIndicesTypesFields(String indices, String type, Long id); // Result getIndicesTypesFields(String indices, String type, Long id);
/** /**
* 保存修改的api信息 * 数据银行制作API/数据包
* @param req * @param req
* @return * @return
*/ */
Result saveUpdateAPiInfo(ApiInterfaceReq req); // Result addDataBankApiInfo(MakeDataBankApiReq req);
/** /**
* 数据银行制作API/数据包 * 保存修改的api信息
* @param req * @param req
* @return * @return
*/ */
Result addDataBankApiInfo(MakeDataBankApiReq req); //Result saveUpdateAPiInfo(ApiInterfaceReq req);
/** /**
* 保存 API基本信息 * 保存 API基本信息
...@@ -96,15 +91,21 @@ public interface ProducerService { ...@@ -96,15 +91,21 @@ public interface ProducerService {
/** /**
* 创建文件夹 * 创建文件夹
* @param projectId * @param req
* @param parentId
* @param currentUser
* @return * @return
*/ */
Result createProjectFolder(Long projectId, Long parentId,String currentUser); Result createProjectFolder(CreateFolderReq req);
/**
* 获取生成后的APIId
* @return
*/
Result getCustomApiId();
//Result saveObjOnRedis();
//Result getObjOnRedis();
Result saveObjOnRedis();
Result getObjOnRedis();
} }
...@@ -6,10 +6,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -6,10 +6,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jz.common.constant.ResultMsg; import com.jz.common.constant.ResultMsg;
import com.jz.common.utils.Result; import com.jz.common.utils.Result;
import com.jz.dm.common.constant.Constants; import com.jz.dm.mapper.ApiInterfaceFileMapper;
import com.jz.dm.common.enums.org.OrgStatusEnum;
import com.jz.dm.common.util.RandomUtil;
import com.jz.dm.mapper.ApiOrgMapper; import com.jz.dm.mapper.ApiOrgMapper;
import com.jz.dm.models.domian.ApiInterfaceFile;
import com.jz.dm.models.domian.ApiOrg; import com.jz.dm.models.domian.ApiOrg;
import com.jz.dm.models.req.organizationManage.OrganizationManageAddReq; import com.jz.dm.models.req.organizationManage.OrganizationManageAddReq;
import com.jz.dm.models.req.organizationManage.OrganizationManageDetailQueryReq; import com.jz.dm.models.req.organizationManage.OrganizationManageDetailQueryReq;
...@@ -23,8 +22,6 @@ import org.springframework.stereotype.Service; ...@@ -23,8 +22,6 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Date; import java.util.Date;
import static com.jz.dm.common.enums.org.OrgTypeEnum.fromOrgTypeEnumName;
/** /**
* @author ZC * @author ZC
* @PACKAGE_NAME: com.jz.dm.service.impl * @PACKAGE_NAME: com.jz.dm.service.impl
...@@ -40,6 +37,8 @@ public class OrganizationManageImpl implements OrganizationManageService { ...@@ -40,6 +37,8 @@ public class OrganizationManageImpl implements OrganizationManageService {
@Resource @Resource
private ApiOrgMapper apiOrgMapper; private ApiOrgMapper apiOrgMapper;
@Resource
private ApiInterfaceFileMapper apiInterfaceFileMapper;
/** /**
* 组织列表信息查询 * 组织列表信息查询
...@@ -52,14 +51,14 @@ public class OrganizationManageImpl implements OrganizationManageService { ...@@ -52,14 +51,14 @@ public class OrganizationManageImpl implements OrganizationManageService {
IPage<ApiOrg> page = new Page<>(req.getPageNum(), req.getPageSize()); IPage<ApiOrg> page = new Page<>(req.getPageNum(), req.getPageSize());
QueryWrapper<ApiOrg> query = new QueryWrapper<>(); QueryWrapper<ApiOrg> query = new QueryWrapper<>();
if (StringUtils.isNotBlank(req.getOrgName())){ if (StringUtils.isNotBlank(req.getOrgName())) {
query.like("org_name",req.getOrgName()); query.like("org_name", req.getOrgName());
} }
if (StringUtils.isNotBlank(req.getLinkman())){ if (StringUtils.isNotBlank(req.getLinkman())) {
query.like("linkman",req.getLinkman()); query.like("linkman", req.getLinkman());
} }
if (StringUtils.isNotBlank(req.getOrgCode())){ if (StringUtils.isNotBlank(req.getOrgCode())) {
query.eq("org_code",req.getOrgCode()); query.eq("org_code", req.getOrgCode());
} }
query.eq("is_deleted", 0); query.eq("is_deleted", 0);
query.orderByDesc("create_date"); query.orderByDesc("create_date");
...@@ -89,18 +88,34 @@ public class OrganizationManageImpl implements OrganizationManageService { ...@@ -89,18 +88,34 @@ public class OrganizationManageImpl implements OrganizationManageService {
*/ */
@Override @Override
public Result add(OrganizationManageAddReq req) { public Result add(OrganizationManageAddReq req) {
ApiOrg apiOrg = new ApiOrg(); //更新组织
BeanUtils.copyProperties(req, apiOrg); if (null != req.getId()) {
if (null != req.getId()){//更新
ApiOrg org = apiOrgMapper.selectById(req.getId()); ApiOrg org = apiOrgMapper.selectById(req.getId());
if (null == org){ if (null == org) {
return Result.of_error(ResultMsg.DATA_NOT_EXIST); return Result.of_error(ResultMsg.DATA_NOT_EXIST);
} }
if (StringUtils.isNotBlank(req.getOrgName()) && !req.getOrgName().equals(org.getOrgName())) {
if (checkOrgName(req.getOrgName())) {
return Result.of_error("组织名称已存在!");
}
}
if (null != req.getOrgFolderId() && !req.getOrgFolderId().equals(org.getOrgFolderId())) {
if (checkOrgFolderIsExist(req.getOrgFolderId())) {
return Result.of_error("目标文件夹不存在!");
}
}
org.setUpdateDate(new Date()); org.setUpdateDate(new Date());
if ( apiOrgMapper.updateById(apiOrg) > 0){ org.setOrgName(req.getOrgName());
org.setLinkman(req.getLinkman());
org.setOrgPhone(req.getOrgPhone());
org.setOrgFolderId(req.getOrgFolderId());
if (apiOrgMapper.updateById(org) > 0) {
return Result.of_success(ResultMsg.UPDATE_SUCCESS); return Result.of_success(ResultMsg.UPDATE_SUCCESS);
} }
}else {//添加 //添加组织
} else {
ApiOrg apiOrg = new ApiOrg();
BeanUtils.copyProperties(req, apiOrg);
Result result = addOrg(req, apiOrg); Result result = addOrg(req, apiOrg);
if (result != null) return result; if (result != null) return result;
} }
...@@ -108,88 +123,89 @@ public class OrganizationManageImpl implements OrganizationManageService { ...@@ -108,88 +123,89 @@ public class OrganizationManageImpl implements OrganizationManageService {
} }
/** /**
* 添加组织 * 校验组织名称是否存在
* @param req *
* @param apiOrg * @param newName
* @return * @return
*/ */
private Result addOrg(OrganizationManageAddReq req, ApiOrg apiOrg) { private boolean checkOrgName(String newName) {
String coding = ""; if (StringUtils.isBlank(newName)) {
if (StringUtils.isNotBlank(req.getOrgName())) { return true;
ApiOrg orgNameInfo = getOrgNameInfo(req.getOrgName());
if (null != orgNameInfo) {
return Result.of_error("组织名称已存在!");
}
}
if (StringUtils.isNotBlank(req.getOrgType())) {
if (null == fromOrgTypeEnumName(req.getOrgType())){
return Result.of_error("组织类型不存在!");
} }
QueryWrapper<ApiOrg> query = new QueryWrapper<>();
query.eq("org_name", newName);
query.eq("status", 1);
query.eq("is_deleted", 0);
ApiOrg apiOrg = apiOrgMapper.selectOne(query);
if (null != apiOrg) {
return true;
} }
if (StringUtils.isNotBlank(req.getOrgType()) //内部组织 return false;
&& Constants.AUTH_INT.equals(req.getOrgType())) {
coding = generateCode(req.getOrgName(), Constants.AUTH_INT);
} else {
coding = generateCode(req.getOrgName(), Constants.AUTH_OUT);
}
if (StringUtils.isBlank(coding)) {
return Result.of_error("生成组织编码异常!");
}
apiOrg.setOrgCode(coding);//组织编码
if (apiOrgMapper.insert(apiOrg) > 0) {
return Result.of_success(ResultMsg.INSERT_SUCCESS);
}
return null;
} }
/** /**
* 获取组织编码(去重) * 校验组织文件夹是否存在
* *
* @param orgName 组织名称 * @param folderId
* @param type 生成类型
* @return * @return
*/ */
private String generateCode(String orgName, String type) { private boolean checkOrgFolderIsExist(Long folderId) {
String coding = ""; if (null == folderId) {
coding = RandomUtil.generateOrgCoding(orgName, type); return true;
QueryWrapper<ApiOrg> query = new QueryWrapper<>(); }
query.eq("org_code", coding); QueryWrapper<ApiInterfaceFile> query = new QueryWrapper<>();
ApiOrg org = apiOrgMapper.selectOne(query); query.eq("id", folderId);
if (null != org) { query.eq("file_source", 2);
coding = RandomUtil.generateOrgCoding(orgName, type); query.eq("is_deleted", 0);
ApiInterfaceFile apiInterfaceFile = apiInterfaceFileMapper.selectOne(query);
if (null != apiInterfaceFile) {
return true;
} }
return coding; return false;
} }
/** /**
* 更新组织 * 添加组织
* *
* @param req * @param req
* @param apiOrg
* @return * @return
*/ */
/* @Override private Result addOrg(OrganizationManageAddReq req, ApiOrg apiOrg) {
public Result update(OrganizationManageUpdateReq req) { if (StringUtils.isNotBlank(req.getOrgName())) {
ApiOrg apiOrg = apiOrgMapper.selectById(req.getId()); if (checkOrgName(req.getOrgName())) {
if (null == apiOrg) { return Result.of_error("组织名称已存在!");
return Result.of_error("组织信息不存在!");
} }
if (StringUtils.isNotBlank(req.getStatus())) {
if (null == fromTypeName(req.getStatus())) {
return Result.of_error("更新组织状态不存在!");
} }
//生成组织编码
String orgCode = generateCode(6);
if (StringUtils.isBlank(orgCode)) {
return Result.of_error("生成组织编码异常!");
} }
//原状态为注销状态不可复原 apiOrg.setOrgCode(orgCode);//组织编码
if (OrgStatusEnum.CANCEL.equals(apiOrg.getStatus())){ if (apiOrgMapper.insert(apiOrg) > 0) {
return Result.of_error("注销状态不可修改"); return Result.of_success(ResultMsg.INSERT_SUCCESS);
} }
ApiOrg apiOrgUpdate = new ApiOrg(); return null;
BeanUtils.copyProperties(req, apiOrgUpdate); }
apiOrgUpdate.setUpdateDate(new Date());
if (apiOrgMapper.updateById(apiOrgUpdate) > 0) { /**
return Result.of_success(ResultMsg.UPDATE_SUCCESS); * 生成组织编码
* @param num 生成位数
* @return
*/
private String generateCode(int num) {
QueryWrapper<ApiOrg> queryWra = new QueryWrapper<>();
queryWra.select("org_code");
queryWra.last("where id IN (SELECT MAX(id) FROM t_api_org)");
ApiOrg apiOrg = apiOrgMapper.selectOne(queryWra);
String orgCode = null;
if (null != apiOrg) {
Integer maxOrgCode = Integer.valueOf(apiOrg.getOrgCode());
orgCode = String.format("%0" + num + "d",maxOrgCode+1);
}
return orgCode;
} }
return Result.of_success(ResultMsg.UPDATE_FAIL);
}*/
/** /**
* 注销组织 * 注销组织
...@@ -205,7 +221,7 @@ public class OrganizationManageImpl implements OrganizationManageService { ...@@ -205,7 +221,7 @@ public class OrganizationManageImpl implements OrganizationManageService {
} }
UpdateWrapper<ApiOrg> delete = new UpdateWrapper<>(); UpdateWrapper<ApiOrg> delete = new UpdateWrapper<>();
delete.set("is_deleted", 1); delete.set("is_deleted", 1);
delete.set("status",0); delete.set("status", 0);
delete.eq("id", id); delete.eq("id", id);
if (apiOrgMapper.update(null, delete) > 0) { if (apiOrgMapper.update(null, delete) > 0) {
return Result.of_success(ResultMsg.UPDATE_SUCCESS); return Result.of_success(ResultMsg.UPDATE_SUCCESS);
...@@ -223,26 +239,9 @@ public class OrganizationManageImpl implements OrganizationManageService { ...@@ -223,26 +239,9 @@ public class OrganizationManageImpl implements OrganizationManageService {
public ApiOrg getAuthOrganization(Long apiOrgId) { public ApiOrg getAuthOrganization(Long apiOrgId) {
QueryWrapper<ApiOrg> query = new QueryWrapper<>(); QueryWrapper<ApiOrg> query = new QueryWrapper<>();
query.eq("id", apiOrgId); query.eq("id", apiOrgId);
query.eq("status",1); query.eq("status", 1);
query.eq("is_deleted", 0); query.eq("is_deleted", 0);
return apiOrgMapper.selectOne(query); return apiOrgMapper.selectOne(query);
} }
/**
* 根据名称获取组织信息
*
* @param orgName 组织名称
* @return
*/
private ApiOrg getOrgNameInfo(String orgName) {
QueryWrapper<ApiOrg> query = new QueryWrapper<>();
query.eq("org_name", orgName);
query.eq("is_deleted", 0);
query.eq("status", OrgStatusEnum.NORMAL);
ApiOrg apiOrg = apiOrgMapper.selectOne(query);
if (null != apiOrg) {
return apiOrg;
}
return null;
}
} }
...@@ -3,21 +3,23 @@ package com.jz.dm.service.impl; ...@@ -3,21 +3,23 @@ package com.jz.dm.service.impl;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jz.common.constant.ResultCode;
import com.jz.common.constant.ResultMsg; import com.jz.common.constant.ResultMsg;
import com.jz.common.exception.ResponseException; import com.jz.common.exception.ResponseException;
import com.jz.common.utils.HttpsUtils; import com.jz.common.utils.HttpsUtils;
import com.jz.common.utils.Md5;
import com.jz.common.utils.RedisUtils; import com.jz.common.utils.RedisUtils;
import com.jz.common.utils.Result; import com.jz.common.utils.Result;
import com.jz.dm.common.constant.TagConstants;
import com.jz.dm.common.enums.GeneralStatusTypeEnum; import com.jz.dm.common.enums.GeneralStatusTypeEnum;
import com.jz.dm.common.enums.apiInterface.ApiInfoOutTypeEnum; import com.jz.dm.common.enums.apiInterface.ApiInfoOutTypeEnum;
import com.jz.dm.common.enums.apiInterface.ApiStatusEnum; import com.jz.dm.common.enums.apiInterface.ApiStatusEnum;
import com.jz.dm.common.enums.produce.ProducerStatusTypeEnum;
import com.jz.dm.common.util.RandomUtil; import com.jz.dm.common.util.RandomUtil;
import com.jz.dm.mapper.*; import com.jz.dm.mapper.*;
import com.jz.dm.models.domian.*; import com.jz.dm.models.domian.ApiInterface;
import com.jz.dm.models.req.make.*; import com.jz.dm.models.domian.ApiInterfaceCustom;
import com.jz.dm.models.domian.ApiInterfaceFile;
import com.jz.dm.models.domian.ApiOpenApiEsFields;
import com.jz.dm.models.req.CreateFolderReq;
import com.jz.dm.models.req.make.ApiInterfaceReq;
import com.jz.dm.service.ApiInterfaceService; import com.jz.dm.service.ApiInterfaceService;
import com.jz.dm.service.ProducerService; import com.jz.dm.service.ProducerService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -33,7 +35,6 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -33,7 +35,6 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.*; import java.util.*;
import static com.jz.dm.common.enums.apiInterface.ApiStatusEnum.fromApiStatusName;
import static com.jz.dm.common.enums.auth.AuthReqTypeEnum.fromAuthReqTypeEnum; import static com.jz.dm.common.enums.auth.AuthReqTypeEnum.fromAuthReqTypeEnum;
/** /**
...@@ -72,16 +73,18 @@ public class ProducerServiceImpl implements ProducerService { ...@@ -72,16 +73,18 @@ public class ProducerServiceImpl implements ProducerService {
private int maxTimeout; private int maxTimeout;
@Value("${dmp.openapi.timeout.default}") @Value("${dmp.openapi.timeout.default}")
private int defaultTimeout; private int defaultTimeout;
//@Value("${dmp.openapi.env.open:false}")
//private boolean envOpen = false;
@Value("${dmp.ignoreRedis}")
private boolean ignoreRedis;
/**
* 数据表查询链接JSON
*/
@Value("${data.select.jsonUrl}")
private String jsonUrl;
/** /**
* dataBank签名token * 数据表查询链接flow流
*/ */
@Value("${token.dataBank}") @Value("${data.select.flowUrl}")
private String dataBankToken; private String flowUrl;
/** /**
* 获取文件列表 * 获取文件列表
...@@ -98,178 +101,114 @@ public class ProducerServiceImpl implements ProducerService { ...@@ -98,178 +101,114 @@ public class ProducerServiceImpl implements ProducerService {
/** /**
* 创建文件夹 * 创建文件夹
* *
* @param projectId * @param req
* @param parentId
* @param currentUser
* @return * @return
*/ */
@Override @Override
public Result createProjectFolder(Long projectId, Long parentId, String currentUser) { public Result createProjectFolder(CreateFolderReq req) {
QueryWrapper<ApiInterfaceFile> query = new QueryWrapper<>(); if (null != req.getParentId()) {
query.eq("id", parentId); if (null == apiInterfaceFileMapper.selectById(req.getParentId())) {
query.eq("is_deleted", 0);
ApiInterfaceFile apiInterfaceFile = apiInterfaceFileMapper.selectOne(query);
if (null == apiInterfaceFile) {
return Result.of_error("父级文件夹不存在!"); return Result.of_error("父级文件夹不存在!");
} }
ApiInterfaceFile instanceFile = new ApiInterfaceFile(); }
instanceFile.setProjectId(projectId); if (StringUtils.isNotBlank(req.getFileSource()) &&
instanceFile.setFileSource("1");//文件来源:1 DMP 2 数据银行 "1".equals(req.getFileSource())) { //api制作创建文件夹
instanceFile.setParentId(parentId); if (null == req.getProjectId()) {
instanceFile.setStatus(GeneralStatusTypeEnum.VALID.name()); return Result.of_error("项目id不存在!");
instanceFile.setCreateUser(currentUser); }
instanceFile.setRemark("DMP创建层级文件夹"); if (addFolder(req)){
if (apiInterfaceFileMapper.insert(instanceFile) > 0) { return Result.of_error(ResultMsg.INSERT_FAIL);
return Result.of_error(ResultMsg.INSERT_SUCCESS); }
} else if (StringUtils.isNotBlank(req.getFileSource()) &&
"2".equals(req.getFileSource())) { //组织创建文件夹
if (addFolder(req)){
return Result.of_error(ResultMsg.INSERT_FAIL);
}
} }
return Result.of_error(ResultMsg.INSERT_FAIL); return Result.of_error(ResultMsg.INSERT_FAIL);
} }
/**
* 添加文件夹
* @param req
* @return
*/
private boolean addFolder(CreateFolderReq req) {
ApiInterfaceFile interfaceFile = new ApiInterfaceFile();
BeanUtils.copyProperties(req, interfaceFile);
interfaceFile.setStatus(GeneralStatusTypeEnum.VALID.name());
if (apiInterfaceFileMapper.insert(interfaceFile) == 0) {
return true;
}
return false;
}
/** /**
* DMP制作自定义Api * 获取APIID
* *
* @param req
* @return * @return
*/ */
@Override @Override
public Result addCustomApi(ApiInterfaceReq req) { public Result getCustomApiId() {
return saveInterfaceAPi(req); return Result.of_success(getApiKey());
} }
/** /**
* 数据银行制作API/数据包/自定义 * 数据查询/标签查询
* *
* @param req * @param req
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
public Result addDataBankApiInfo(MakeDataBankApiReq req) { public Result addBigDataMakeApi(ApiInterfaceReq req) {
/* QueryWrapper<ApiInterfaceFile> query = new QueryWrapper<>(); if ("10002".equals(req.getJoinType())) {//数据查询
query.eq("file_source", "2"); if (StringUtils.isBlank(req.getEsDataSource()) ||
query.eq("is_deleted", 0); StringUtils.isBlank(req.getEsDataBase()) ||
List<ApiInterfaceFile> fileSource = apiInterfaceFileMapper.selectList(query); StringUtils.isBlank(req.getEsTable())) {
if (fileSource.size() == 0 || fileSource.size() >= 2) { return Result.of_error("数据源信息不存在!");
return Result.of_error("文件夹信息异常!");
}*/
if (StringUtils.isNotBlank(req.getOutputType())) {
if (!req.getOutputType().contains(ApiInfoOutTypeEnum.JSON.name()) ||
!req.getOutputType().contains(ApiInfoOutTypeEnum.FLOW.name())) {
return Result.of_error("输出类型不存在!");
} }
} }
if (StringUtils.isNotBlank(req.getReqType())) { if (null != req.getReqFrequency()) {
if (null == fromAuthReqTypeEnum(req.getReqType())) { if (req.getReqFrequency() <= 0) {
return Result.of_error("限流类型不存在!"); return Result.of_error("限流次数不能小于或者等于零");
} }
} }
String signStr = dataBankToken + req.getJoinType(); if (StringUtils.isBlank(req.getSignType()) || "0".equals(req.getSignType())) {
String signResult = Md5.encrypt(signStr, ""); return Result.of_error("加密类型错误!");
if (!signResult.equals(req.getSign())) {
return Result.of_error("签名错误!");
}
String apiKey = getApiKey();
switch (req.getJoinType()) {
case "10006"://数据银行三方上传
saveDataBanker(req, apiKey, "3");
break;
case "10007"://数据银行数据包上传
if(StringUtils.isNotBlank(req.getFileLocation()))return Result.of_error("文件地址不存在!");
saveDataBanker(req, apiKey, "2");
break;
case "10008"://数据银行制作大数据表
saveDataBanker(req, apiKey, "1");
break;
default:
return Result.of_error("接入类型不存在!");
} }
return Result.of_success(ResultMsg.INSERT_SUCCESS, apiKey); if (StringUtils.isNotBlank(req.getReqType())) {
if (null == fromAuthReqTypeEnum(req.getReqType())) {
return Result.of_error("限流类型不存在!");
} }
/**
* 保存数据银行api信息并缓存
*
* @param req 请求参数
* @param apiKey apiKey
* @param apiType api类型
*/
private void saveDataBanker(MakeDataBankApiReq req, String apiKey, String apiType) {
ApiInterface apiInterface = saveApiInterFace(req, apiKey, apiType);
saveApiInterFaceCustom(req, apiKey, apiInterface.getId());
JSONObject object = new JSONObject();
object.put("targetUrl", req.getTargetUrl());
object.put("outputType", req.getOutputType());
object.put("reqMethod",req.getReqMethod());
saveObjOnRedis(apiInterface.getApiKey(), object);
} }
//校验文件夹信息
/** if (checkFileifExist(req.getFolderId(), req.getProjectId())) {
* 保存api基本信息 return Result.of_error("目标文件夹不存在!");
*
* @param req
* @param apiKey
* @param apiType
* @return
*/
private ApiInterface saveApiInterFace(MakeDataBankApiReq req,
String apiKey, String apiType) {
ApiInterface anInterface = new ApiInterface();
anInterface.setApiType(apiType);//数据银行制作大数据表
anInterface.setStatus(ProducerStatusTypeEnum.ISSUE.name());//发布
anInterface.setApiKey(apiKey);//apiKey
BeanUtils.copyProperties(req, anInterface);
if (apiInterfaceMapper.insert(anInterface) == 0) {
throw ResponseException.of(ResultCode.FAILURE, "保存api基本信息异常!");
} }
return anInterface; //保存表字段信息
saveTableField(req);
if (null != req.getId()) {//更新
if (saveUpdateAPiBaseData(req) || saveUpdateApiExtendData(req)) {
throw ResponseException.of_error(ResultMsg.UPDATE_FAIL);
} }
} else { //保存
/** if (saveApiExtendData(req) || saveApiBaseData(req)) {
* 保存APi扩展信息 throw ResponseException.of_error(ResultMsg.INSERT_FAIL);
*
* @param req
* @param apiKey
* @param interFaceId
* @return
*/
private ApiInterfaceCustom saveApiInterFaceCustom(MakeDataBankApiReq req, String apiKey,
Long interFaceId) {
ApiInterfaceCustom interfaceCustom = new ApiInterfaceCustom();
interfaceCustom.setApiKey(apiKey);
interfaceCustom.setApiInterfaceId(interFaceId);
BeanUtils.copyProperties(req, interfaceCustom);
if (apiInterfaceCustomMapper.insert(interfaceCustom) == 0) {
throw ResponseException.of(ResultCode.FAILURE, "保存api扩展信息异常!");
} }
return interfaceCustom;
} }
//保存缓存信息
/** saveObjOnRedis(req);
* Api制作(实时接入) return Result.of_success(ResultMsg.INSERT_SUCCESS);
*
* @param req
* @return
*/
@Override
public Result addRealCustomApi(MakeRealCustomApiReq req) {
return null;
} }
/** /**
* DMP大数据查询/标签查询 * 数据表查询 && 保存表字段信息
* *
* @param req * @param req
* @return
*/ */
@Override private void saveTableField(ApiInterfaceReq req) {
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
public Result addBigDataMakeApi(MakeBigDataApiReq req) {
ApiInterface apiInterface = apiInterfaceService.getApiInfo(req.getApiKey());
if (null == apiInterface) {
return Result.of_error("API基本信息为空!");
}
QueryWrapper<ApiOpenApiEsFields> queryOpenApi = new QueryWrapper<>(); QueryWrapper<ApiOpenApiEsFields> queryOpenApi = new QueryWrapper<>();
queryOpenApi.eq("es_database", req.getEsDataBase()); queryOpenApi.eq("es_database", req.getEsDataBase());
queryOpenApi.eq("es_table", req.getEsTable()); queryOpenApi.eq("es_table", req.getEsTable());
...@@ -300,29 +239,6 @@ public class ProducerServiceImpl implements ProducerService { ...@@ -300,29 +239,6 @@ public class ProducerServiceImpl implements ProducerService {
if (CollectionUtils.isNotEmpty(listApiEsFields)) { if (CollectionUtils.isNotEmpty(listApiEsFields)) {
apiOpenApiEsFieldsMapper.insetBatch(listApiEsFields); apiOpenApiEsFieldsMapper.insetBatch(listApiEsFields);
} }
/* //调用dmp接口获取数据库连接信息
ApiSyncingDatasource dataSource = apiSyncingDatasourceMapper.selectById(req.getEsDataSource());
if (null != dataSource) {
//esjdbc 连接地址 用于接口中调用获取es数据
redisUtils.set(TagConstants.OPEN_API_ESTAG_JDBC_INFO_NAMESPACE + apiInterface.getApiKey(), dataSource.getJdbcUrl());
}*/
int result = 0;
ApiInterfaceCustom interfaceCustom = new ApiInterfaceCustom();
if (null != req.getId() && !"".equals(req.getId())) {//更新
BeanUtils.copyProperties(req, interfaceCustom);
interfaceCustom.setUpdateDate(new Date());
interfaceCustom.setUpdateUser(req.getCreateUser());
result = apiInterfaceCustomMapper.updateById(interfaceCustom);
} else { //保存
BeanUtils.copyProperties(req, interfaceCustom);
interfaceCustom.setCreateUser(req.getCreateUser());
interfaceCustom.setApiInterfaceId(apiInterface.getId());
result = apiInterfaceCustomMapper.insert(interfaceCustom);
}
if (result <= 0) {
return Result.of_error(ResultMsg.FAILURE);
}
return Result.of_success(ResultMsg.SUCCESS, req.getId());
} }
/** /**
...@@ -339,176 +255,176 @@ public class ProducerServiceImpl implements ProducerService { ...@@ -339,176 +255,176 @@ public class ProducerServiceImpl implements ProducerService {
return Result.of_error("限流类型不存在!"); return Result.of_error("限流类型不存在!");
} }
} }
//生成ApiKey if (StringUtils.isBlank(req.getSignType()) || "0".equals(req.getSignType())) {
String apiKey = getApiKey(); return Result.of_error("加密类型错误!");
ApiInterface apiInterface = new ApiInterface();
/* if (null == req.getFileId()) {//创建下级文件夹
Long fileId = checkFileExist(req.getProjectId(), req.getParentId(), req.getCreateUser());
req.setFileId(fileId);
}*/
BeanUtils.copyProperties(req, apiInterface);
apiInterface.setApiKey(apiKey);
apiInterface.setApiProtocl(req.getTransMode());//传输方式 https http
apiInterface.setStatus(ApiStatusEnum.ISSUE.name());//发布
if ("10004".equals(req.getJoinType())) {//dmp自定义
apiInterface.setApiType("7");
} else if ("10002".equals(req.getJoinType())) {//大数据表查询
apiInterface.setApiType("6");
} }
Long timeout = Long.parseLong(req.getTimeout()); if (null != req.getReqFrequency()) {
if (timeout == null || timeout == 0) { if (req.getReqFrequency() <= 0) {
apiInterface.setTimeout(String.valueOf(defaultTimeout)); return Result.of_error("限流次数不能小于或者等于零");
} else if (timeout < 0) {
return Result.of_error("接口超时时间最小0ms");
} else if (timeout > maxTimeout) {
return Result.of_success("接口超时时间最大5000ms");
} }
if (apiInterfaceMapper.insert(apiInterface) == 0) {
throw ResponseException.of_error("保存Api信息失败!");
} }
JSONObject object = new JSONObject(); //校验文件夹信息
object.put("targetUrl", req.getTargetUrl()); if (checkFileifExist(req.getFolderId(), req.getProjectId())) {
object.put("outputType", ApiInfoOutTypeEnum.JSON.name()); return Result.of_error("目标文件夹不存在!");
saveObjOnRedis(apiInterface.getApiKey(), object); }
return Result.of_success(ResultMsg.INSERT_SUCCESS, apiKey); if (saveApiBaseData(req)) {
throw ResponseException.of_error("保存Api基本信息失败!");
}
if (saveApiExtendData(req)) {
throw ResponseException.of_error("保存Api扩展信息失败!");
}
//缓存API信息
saveObjOnRedis(req);
return Result.of_success(ResultMsg.INSERT_SUCCESS);
} }
/** /**
* 缓存数据 * 保存APi扩展信息
* *
* @param apiKey * @param req
* @param params * @return
*/ */
private void saveObjOnRedis(String apiKey, JSONObject params) { private boolean saveApiExtendData(ApiInterfaceReq req) {
if (StringUtils.isBlank(apiKey) || null == params) { ApiInterfaceCustom custom = new ApiInterfaceCustom();
log.info("--------------缓存数据为空"); BeanUtils.copyProperties(req, custom);
return; if (apiInterfaceCustomMapper.insert(custom) == 0) {
} return true;
try {
String paramKey = redisUtils.get(apiKey);
if (null != paramKey) {
redisUtils.del(apiKey);
}
redisUtils.set(apiKey, params.toString());
} catch (Exception ex) {
log.error("缓存api制作数据异常:{}", ex.getMessage());
ex.printStackTrace();
} }
return false;
} }
/** /**
* 校验文件夹信息 * 保存ApiInterfance基本信息
* *
* @param projectId * @param req
* @param parentId
* @param userName
* @return * @return
*/ */
private Long checkFileExist(Long projectId, Long parentId, String userName) { private boolean saveApiBaseData(ApiInterfaceReq req) {
if (null == parentId) { ApiInterface apiInterface = new ApiInterface();
throw ResponseException.of_error("父文件id不能为空"); BeanUtils.copyProperties(req, apiInterface);
apiInterface.setStatus(ApiStatusEnum.DRAFT.name());//草稿状态
apiInterface.setOutputType(ApiInfoOutTypeEnum.JSON.name());//输出类型默认为Json
Long timeout = Long.parseLong(req.getTimeout());
if (timeout == null || timeout == 0) {
apiInterface.setTimeout(String.valueOf(defaultTimeout));
} else if (timeout < 0) {
throw ResponseException.of_error("接口超时时间最小0ms");
} else if (timeout > maxTimeout) {
throw ResponseException.of_error("接口超时时间最大5000ms");
} }
if (null == projectId) { apiInterface.setTimeout(req.getTimeout());
throw ResponseException.of_error("项目id不能为空"); if ("10002".equals(req.getJoinType())) {//数据表查询时添加
if (ApiInfoOutTypeEnum.JSON.name().equals(req.getOutType())) {
apiInterface.setTargetUrl(jsonUrl);
} else if (ApiInfoOutTypeEnum.FLOW.name().equals(req.getOutType())) {
apiInterface.setTargetUrl(flowUrl);
} }
QueryWrapper<ApiInterfaceFile> query = new QueryWrapper<>();
query.eq("project_id", projectId);
query.eq("parent_id", parentId);
ApiInterfaceFile file = apiInterfaceFileMapper.selectOne(query);
if (null == file && 0 != parentId) {
throw ResponseException.of(ResultCode.FAILURE, "父类文件夹不存在!");
} }
if (null == file) { if (apiInterfaceMapper.insert(apiInterface) == 0) {
//查询父类是否存在 return true;
ApiInterfaceFile apiInterfaceFile =
apiInterfaceFileMapper.selectOne(new QueryWrapper<ApiInterfaceFile>().eq("parent_id", parentId));
if (null == apiInterfaceFile && 0 == parentId) {
file = new ApiInterfaceFile();
file.setProjectId(projectId);
file.setFileSource("1");//dmp
file.setParentId(0L);
file.setStatus(GeneralStatusTypeEnum.VALID.name());
file.setCreateUser(userName);
file.setRemark("创建文件夹");
if (apiInterfaceFileMapper.insert(file) == 0) {
throw ResponseException.of_error("创建文件夹失败!");
} }
} else { return false;
throw ResponseException.of(ResultCode.FAILURE, "父类文件信息不存在!"); }
/**
* 校验文件夹是否存在
*
* @param folderId
* @param projectId
*/
private Boolean checkFileifExist(Long folderId, Long projectId) {
if (null == folderId) {
return true;
} }
QueryWrapper<ApiInterfaceFile> queryWra = new QueryWrapper<>();
queryWra.eq("file_source", 1);//Api制作
queryWra.eq("project_id", projectId);
queryWra.eq("id", folderId);
queryWra.eq("is_deleted", 0);
ApiInterfaceFile apiInterfaceFile = apiInterfaceFileMapper.selectOne(queryWra);
if (null == apiInterfaceFile) {
return true;
} }
return file.getId(); return false;
} }
/** /**
* 保存修改的api信息 * 保存修改的api基本信息
* *
* @param req * @param req
* @return * @return
*/ */
@Override private Boolean saveUpdateAPiBaseData(ApiInterfaceReq req) {
public Result saveUpdateAPiInfo(ApiInterfaceReq req) {
ApiInterface apiInterface = apiInterfaceMapper.selectById(req.getId()); ApiInterface apiInterface = apiInterfaceMapper.selectById(req.getId());
if (null == apiInterface) { if (null == apiInterface) {
return Result.of_error(ResultMsg.DATA_NOT_FOUND); throw ResponseException.of_error(ResultMsg.DATA_NOT_FOUND);
}
if (StringUtils.isBlank(req.getSignType()) || "0".equals(req.getSignType())) {
return Result.of_error("加密类型错误!");
}
if (StringUtils.isNotBlank(req.getReqType())) {
if (null == fromAuthReqTypeEnum(req.getReqType())) {
return Result.of_error("限流类型不存在!");
}
}
if (StringUtils.isNotBlank(req.getStatus())) {
if (null == fromApiStatusName(req.getStatus())) {
return Result.of_error("更新状态不存在!");
}
} }
if (StringUtils.isNotBlank(req.getStatus())) { if (StringUtils.isNotBlank(req.getStatus())) {
if (!canChange(apiInterface.getStatus(), req.getStatus())) { if (!canChange(apiInterface.getStatus(), req.getStatus())) {
String errorMsg = String.format("api当前状态为%s不可变更为%s", String errorMsg = String.format("api当前状态为%s不可变更为%s",
ApiStatusEnum.valueOf(apiInterface.getStatus()).getText(), ApiStatusEnum.valueOf(apiInterface.getStatus()).getText(),
ApiStatusEnum.valueOf(req.getStatus()).getText()); ApiStatusEnum.valueOf(req.getStatus()).getText());
return Result.of_error(errorMsg); throw ResponseException.of_error(errorMsg);
}
}
if (null != req.getReqFrequency()) {
if (req.getReqFrequency() <= 0) {
return Result.of_error("限流次数不能小于或者等于零");
} }
} }
apiInterface.setApiType(req.getApiType()); apiInterface.setApiType(req.getApiType());
apiInterface.setApiDesc(req.getApiDesc());
apiInterface.setReqType(req.getReqType());
apiInterface.setReqFrequency(req.getReqFrequency()); apiInterface.setReqFrequency(req.getReqFrequency());
apiInterface.setVersion(RandomUtil.generateVersion(apiInterface.getVersion()));//版本自动累加 apiInterface.setVersion(RandomUtil.generateVersion(apiInterface.getVersion()));//版本自动累加
apiInterface.setSignType(req.getSignType()); apiInterface.setSignType(req.getSignType());
apiInterface.setApiFunction(req.getApiFunction()); apiInterface.setApiFunction(req.getApiFunction());
apiInterface.setStatus(req.getStatus()); apiInterface.setStatus(req.getStatus());
apiInterface.setApiProtocl(req.getTransMode());//传输方式 https http apiInterface.setApiProtocl(req.getApiProtocl());//传输方式 https http
apiInterface.setUpdateDate(new Date()); apiInterface.setUpdateDate(new Date());
apiInterface.setUpdateUser(req.getCreateUser()); apiInterface.setUpdateUser(req.getCreateUser());
if (StringUtils.isNotBlank(req.getTargetUrl())) {
apiInterface.setTargetUrl(req.getTargetUrl()); apiInterface.setTargetUrl(req.getTargetUrl());
}
Long timeout = Long.parseLong(req.getTimeout()); Long timeout = Long.parseLong(req.getTimeout());
if (timeout == null || timeout == 0) { if (timeout == null || timeout == 0) {
apiInterface.setTimeout(String.valueOf(defaultTimeout)); apiInterface.setTimeout(String.valueOf(defaultTimeout));
} else if (timeout < 0) { } else if (timeout < 0) {
return Result.of_error("接口超时时间最小0ms"); throw ResponseException.of_error("接口超时时间最小0ms");
} else if (timeout > maxTimeout) { } else if (timeout > maxTimeout) {
return Result.of_success("接口超时时间最大5000ms"); throw ResponseException.of_error("接口超时时间最大5000ms");
} }
apiInterface.setTimeout(req.getTimeout()); apiInterface.setTimeout(req.getTimeout());
if (apiInterfaceMapper.updateById(apiInterface) > 0) { if (apiInterfaceMapper.updateById(apiInterface) == 0) {
return Result.of_success(ResultMsg.UPDATE_SUCCESS); return true;
} }
JSONObject object = new JSONObject(); return false;
object.put("targetUrl", req.getTargetUrl()); }
object.put("outputType", ApiInfoOutTypeEnum.JSON.name());
saveObjOnRedis(apiInterface.getApiKey(), object); /**
return Result.of_success(ResultMsg.UPDATE_FAIL); * 保存更新数据扩展信息
*
* @param req
* @return
*/
private Boolean saveUpdateApiExtendData(ApiInterfaceReq req) {
ApiInterface apiInterface = apiInterfaceMapper.selectById(req.getId());
ApiInterfaceCustom interfaceCustom = null;
if (null != apiInterface) {
interfaceCustom = apiInterfaceCustomMapper.selectById(apiInterface.getApiCustomId());
}
if (null == interfaceCustom) {
throw ResponseException.of_error("更新API扩展信息不存在!");
}
interfaceCustom.setMaxRow(req.getMaxRow());
interfaceCustom.setPageRow(req.getPageRow());
interfaceCustom.setUpdateUser(req.getUpdateUser());
interfaceCustom.setRequestParam(req.getRequestParam());
interfaceCustom.setResponseParam(req.getResponseParam());
if (StringUtils.isNotBlank(req.getEsDataSource())) {
interfaceCustom.setEsDataSource(req.getEsDataSource());
}
if (StringUtils.isNotBlank(req.getEsDataBase())) {
interfaceCustom.setEsDataBase(req.getEsDataBase());
}
if (StringUtils.isNotBlank(req.getEsTable())) {
interfaceCustom.setEsTable(req.getEsTable());
}
if (apiInterfaceCustomMapper.updateById(interfaceCustom) == 0) {
return true;
}
return false;
} }
/** /**
...@@ -539,11 +455,221 @@ public class ProducerServiceImpl implements ProducerService { ...@@ -539,11 +455,221 @@ public class ProducerServiceImpl implements ProducerService {
/** /**
* 获取不重复的apiKey
*
* @return
*/
private String getApiKey() {
String random = RandomUtil.getStringRandom(16);
QueryWrapper<ApiInterface> query = new QueryWrapper<>();
query.eq("api_key", random);
query.eq("is_deleted", 0);
ApiInterface apiInterface = apiInterfaceMapper.selectOne(query);
if (null != apiInterface) {
random = RandomUtil.getStringRandom(16);
}
return random;
}
/**
* 缓存数据
*
* @param req
*/
private void saveObjOnRedis(ApiInterfaceReq req) {
if (StringUtils.isBlank(req.getApiKey()) ||
StringUtils.isBlank(req.getOutType()) ||
StringUtils.isBlank(req.getTargetUrl()) ||
StringUtils.isBlank(req.getReqMethod())) {
log.info("--------------缓存数据为空");
return;
}
try {
JSONObject object = new JSONObject();
object.put("targetUrl", req.getTargetUrl());
object.put("outputType", ApiInfoOutTypeEnum.JSON.name());
object.put("reqMethod", req.getReqMethod());
String apiKey = TagConstants.OPEN_API_CACHE_KEY + req.getApiKey();
String paramKey = redisUtils.get(apiKey);
if (null != paramKey) {
redisUtils.del(apiKey);
}
redisUtils.set(apiKey, object.toString());
} catch (Exception ex) {
log.error("缓存api制作数据异常:{}", ex.getMessage());
ex.printStackTrace();
}
}
/* *//**
* 数据银行制作API/数据包/自定义
*
* @param req
* @return
*//*
@Override
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
public Result addDataBankApiInfo(MakeDataBankApiReq req) {
*//* QueryWrapper<ApiInterfaceFile> query = new QueryWrapper<>();
query.eq("file_source", "2");
query.eq("is_deleted", 0);
List<ApiInterfaceFile> fileSource = apiInterfaceFileMapper.selectList(query);
if (fileSource.size() == 0 || fileSource.size() >= 2) {
return Result.of_error("文件夹信息异常!");
}*//*
if (StringUtils.isNotBlank(req.getOutputType())) {
if (!req.getOutputType().contains(ApiInfoOutTypeEnum.JSON.name()) ||
!req.getOutputType().contains(ApiInfoOutTypeEnum.FLOW.name())) {
return Result.of_error("输出类型不存在!");
}
}
if (StringUtils.isNotBlank(req.getReqType())) {
if (null == fromAuthReqTypeEnum(req.getReqType())) {
return Result.of_error("限流类型不存在!");
}
}
String signStr = dataBankToken + req.getJoinType();
String signResult = Md5.encrypt(signStr, "");
if (!signResult.equals(req.getSign())) {
return Result.of_error("签名错误!");
}
String apiKey = getApiKey();
switch (req.getJoinType()) {
case "10006"://数据银行三方上传
saveDataBanker(req, apiKey, "3");
break;
case "10007"://数据银行数据包上传
if (StringUtils.isNotBlank(req.getFileLocation())) return Result.of_error("文件地址不存在!");
saveDataBanker(req, apiKey, "2");
break;
case "10008"://数据银行制作大数据表
saveDataBanker(req, apiKey, "1");
break;
default:
return Result.of_error("接入类型不存在!");
}
return Result.of_success(ResultMsg.INSERT_SUCCESS, apiKey);
}*/
/* *//**
* 保存数据银行api信息并缓存
*
* @param req 请求参数
* @param apiKey apiKey
* @param apiType api类型
*//*
private void saveDataBanker(MakeDataBankApiReq req, String apiKey, String apiType) {
ApiInterface apiInterface = saveApiInterFace(req, apiKey, apiType);
saveApiInterFaceCustom(req, apiKey, apiInterface.getId());
JSONObject object = new JSONObject();
object.put("targetUrl", req.getTargetUrl());
object.put("outputType", req.getOutputType());
object.put("reqMethod", req.getReqMethod());
saveObjOnRedis(apiInterface.getApiKey(), object);
}*/
/* *//**
* 保存api基本信息
*
* @param req
* @param apiKey
* @param apiType
* @return
*//*
private ApiInterface saveApiInterFace(MakeDataBankApiReq req,
String apiKey, String apiType) {
ApiInterface anInterface = new ApiInterface();
anInterface.setApiType(apiType);//数据银行制作大数据表
anInterface.setStatus(ProducerStatusTypeEnum.ISSUE.name());//发布
anInterface.setApiKey(apiKey);//apiKey
BeanUtils.copyProperties(req, anInterface);
if (apiInterfaceMapper.insert(anInterface) == 0) {
throw ResponseException.of(ResultCode.FAILURE, "保存api基本信息异常!");
}
return anInterface;
}*/
/* *//**
* 保存APi扩展信息
*
* @param req
* @param apiKey
* @param interFaceId
* @return
*//*
private ApiInterfaceCustom saveApiInterFaceCustom(MakeDataBankApiReq req, String apiKey,
Long interFaceId) {
ApiInterfaceCustom interfaceCustom = new ApiInterfaceCustom();
interfaceCustom.setApiKey(apiKey);
interfaceCustom.setApiInterfaceId(interFaceId);
BeanUtils.copyProperties(req, interfaceCustom);
if (apiInterfaceCustomMapper.insert(interfaceCustom) == 0) {
throw ResponseException.of(ResultCode.FAILURE, "保存api扩展信息异常!");
}
return interfaceCustom;
}*/
/* *//**
* Api制作(实时接入)
*
* @param req
* @return
*//*
@Override
public Result addRealCustomApi(MakeRealCustomApiReq req) {
return null;
}*/
/* *//**
* 校验文件夹信息
*
* @param projectId
* @param parentId
* @param userName
* @return
*//*
private Long checkFileExist(Long projectId, Long parentId, String userName) {
if (null == parentId) {
throw ResponseException.of_error("父文件id不能为空");
}
if (null == projectId) {
throw ResponseException.of_error("项目id不能为空");
}
QueryWrapper<ApiInterfaceFile> query = new QueryWrapper<>();
query.eq("project_id", projectId);
query.eq("parent_id", parentId);
ApiInterfaceFile file = apiInterfaceFileMapper.selectOne(query);
if (null == file && 0 != parentId) {
throw ResponseException.of(ResultCode.FAILURE, "父类文件夹不存在!");
}
if (null == file) {
//查询父类是否存在
ApiInterfaceFile apiInterfaceFile =
apiInterfaceFileMapper.selectOne(new QueryWrapper<ApiInterfaceFile>().eq("parent_id", parentId));
if (null == apiInterfaceFile && 0 == parentId) {
file = new ApiInterfaceFile();
file.setProjectId(projectId);
file.setFileSource("1");//dmp
file.setParentId(0L);
file.setStatus(GeneralStatusTypeEnum.VALID.name());
file.setCreateUser(userName);
file.setRemark("创建文件夹");
if (apiInterfaceFileMapper.insert(file) == 0) {
throw ResponseException.of_error("创建文件夹失败!");
}
} else {
throw ResponseException.of(ResultCode.FAILURE, "父类文件信息不存在!");
}
}
return file.getId();
}
*/
/* *//**
* 获取数据源配置 * 获取数据源配置
* *
* @param req * @param req
* @return * @return
*/ *//*
@Override @Override
public Result getSourceConfig(SourceConfigReq req) { public Result getSourceConfig(SourceConfigReq req) {
if (StringUtils.isBlank(req.getApiKey())) { if (StringUtils.isBlank(req.getApiKey())) {
...@@ -566,12 +692,12 @@ public class ProducerServiceImpl implements ProducerService { ...@@ -566,12 +692,12 @@ public class ProducerServiceImpl implements ProducerService {
return Result.of_success(ResultMsg.SUCCESS); return Result.of_success(ResultMsg.SUCCESS);
} }
/** *//**
* 获取数据源库配置 * 获取数据源库配置
* *
* @param id * @param id
* @return * @return
*/ *//*
@Override @Override
public Result getSourceWarehouseList(Long id) { public Result getSourceWarehouseList(Long id) {
ApiSyncingDatasource datasource = apiSyncingDatasourceMapper.selectById(id); ApiSyncingDatasource datasource = apiSyncingDatasourceMapper.selectById(id);
...@@ -597,13 +723,13 @@ public class ProducerServiceImpl implements ProducerService { ...@@ -597,13 +723,13 @@ public class ProducerServiceImpl implements ProducerService {
return Result.of_success(result); return Result.of_success(result);
} }
/** *//**
* 获取某个索引下的type * 获取某个索引下的type
* *
* @param indices * @param indices
* @param id * @param id
* @return * @return
*/ *//*
@Override @Override
public Result getIndicesTypes(String indices, Long id) { public Result getIndicesTypes(String indices, Long id) {
ApiSyncingDatasource datasource = apiSyncingDatasourceMapper.selectById(id); ApiSyncingDatasource datasource = apiSyncingDatasourceMapper.selectById(id);
...@@ -619,14 +745,14 @@ public class ProducerServiceImpl implements ProducerService { ...@@ -619,14 +745,14 @@ public class ProducerServiceImpl implements ProducerService {
return Result.of_success(resp); return Result.of_success(resp);
} }
/** *//**
* 获取某个索引 type的fields * 获取某个索引 type的fields
* *
* @param indices * @param indices
* @param type * @param type
* @param id * @param id
* @return * @return
*/ *//*
@Override @Override
public Result getIndicesTypesFields(String indices, String type, Long id) { public Result getIndicesTypesFields(String indices, String type, Long id) {
ApiSyncingDatasource datasource = apiSyncingDatasourceMapper.selectById(id); ApiSyncingDatasource datasource = apiSyncingDatasourceMapper.selectById(id);
...@@ -648,31 +774,15 @@ public class ProducerServiceImpl implements ProducerService { ...@@ -648,31 +774,15 @@ public class ProducerServiceImpl implements ProducerService {
e.printStackTrace(); e.printStackTrace();
} }
return Result.of_success(resp); return Result.of_success(resp);
} }*/
/**
* 获取不重复的apiKey
*
* @return
*/
private String getApiKey() {
String random = RandomUtil.getStringRandom(16);
QueryWrapper<ApiInterface> query = new QueryWrapper<>();
query.eq("api_key", random);
query.eq("is_deleted", 0);
ApiInterface apiInterface = apiInterfaceMapper.selectOne(query);
if (null != apiInterface) {
random = RandomUtil.getStringRandom(16);
}
return random;
}
@Override /* @Override
public Result saveObjOnRedis() { public Result saveObjOnRedis() {
MakeDataBankApiReq bankApiReq = new MakeDataBankApiReq(); MakeDataBankApiReq bankApiReq = new MakeDataBankApiReq();
/* bankApiReq.setTransMode("HTTPS"); *//* bankApiReq.setTransMode("HTTPS");
bankApiReq.setSignType("MD5"); bankApiReq.setSignType("MD5");
bankApiReq.setJoinType("10004"); bankApiReq.setJoinType("10004");
bankApiReq.setOutputType("JSON"); bankApiReq.setOutputType("JSON");
...@@ -685,7 +795,7 @@ public class ProducerServiceImpl implements ProducerService { ...@@ -685,7 +795,7 @@ public class ProducerServiceImpl implements ProducerService {
bankApiReq.setApiDesc("4444"); bankApiReq.setApiDesc("4444");
bankApiReq.setTimeout("5000"); bankApiReq.setTimeout("5000");
net.sf.json.JSONObject jsonObject = net.sf.json.JSONObject.fromObject(bankApiReq); net.sf.json.JSONObject jsonObject = net.sf.json.JSONObject.fromObject(bankApiReq);
redisUtils.set("apiKeyTest", jsonObject, 300);*/ redisUtils.set("apiKeyTest", jsonObject, 300);*//*
JSONObject object = new JSONObject(); JSONObject object = new JSONObject();
object.put("targetUrl", "www.baidu.common"); object.put("targetUrl", "www.baidu.common");
object.put("outputType", ApiInfoOutTypeEnum.JSON.name()); object.put("outputType", ApiInfoOutTypeEnum.JSON.name());
...@@ -700,5 +810,5 @@ public class ProducerServiceImpl implements ProducerService { ...@@ -700,5 +810,5 @@ public class ProducerServiceImpl implements ProducerService {
JSONObject jsonObject = JSONObject.parseObject(apiKeyTest002); JSONObject jsonObject = JSONObject.parseObject(apiKeyTest002);
System.out.println(jsonObject); System.out.println(jsonObject);
return Result.ok(); return Result.ok();
} }*/
} }
...@@ -77,9 +77,16 @@ dmp: ...@@ -77,9 +77,16 @@ dmp:
ignoreRedis: true ignoreRedis: true
openapi: openapi:
timeout: timeout:
default: 5000 default: 10000
max: 5000 max: 10000
#logback日志配置
logging:
config: classpath:logback-dev.xml
level:
com:
zhl:
springbootlogback: off
#流处理配置 #流处理配置
windows: #文件流输出地址设置 windows: #文件流输出地址设置
name: stream name: stream
...@@ -95,17 +102,16 @@ sentinel: #sentinel每秒中最大的请求个数 ...@@ -95,17 +102,16 @@ sentinel: #sentinel每秒中最大的请求个数
data: data:
bank: bank:
balanceUrl: http://192.168.1.139:8081 #余额信息url #扣款信通知url balanceUrl: http://192.168.1.139:8081 #余额信息url #扣款信通知url
select: #大数据查询请求链接
jsonUrl: http://192.168.1.140:8082/api/data/query/json
flowUrl: http://192.168.1.140:8082/api/data/query/streaming
#token: #dataBank 制作验签
# dataBank: dataBank123
token: #dataBank 制作验签
dataBank: dataBank123
#logback日志配置
logging:
config: classpath:logback-dev.xml
level:
com:
zhl:
springbootlogback: off
......
...@@ -2,10 +2,8 @@ package com.jz.dm.gateway.org; ...@@ -2,10 +2,8 @@ package com.jz.dm.gateway.org;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jz.common.utils.Result; import com.jz.common.utils.Result;
import com.jz.dm.common.enums.auth.AuthTypeEnum;
import com.jz.dm.gateway.SpringTestCase; import com.jz.dm.gateway.SpringTestCase;
import com.jz.dm.models.domian.ApiOrg; import com.jz.dm.models.domian.ApiOrg;
import com.jz.dm.models.req.organizationManage.OrganizationManageAddReq;
import com.jz.dm.models.req.organizationManage.OrganizationManageDetailQueryReq; import com.jz.dm.models.req.organizationManage.OrganizationManageDetailQueryReq;
import com.jz.dm.models.req.organizationManage.OrganizationManageListQueryReq; import com.jz.dm.models.req.organizationManage.OrganizationManageListQueryReq;
import com.jz.dm.service.OrganizationManageService; import com.jz.dm.service.OrganizationManageService;
...@@ -53,7 +51,7 @@ public class TestOrganizationManage extends SpringTestCase { ...@@ -53,7 +51,7 @@ public class TestOrganizationManage extends SpringTestCase {
*/ */
@Test @Test
public void addOrg(){ public void addOrg(){
OrganizationManageAddReq req = new OrganizationManageAddReq(); /* OrganizationManageAddReq req = new OrganizationManageAddReq();
req.setOrgName("数据银行"); req.setOrgName("数据银行");
req.setOrgDesc("粗这次"); req.setOrgDesc("粗这次");
req.setOrgCnName("databank"); req.setOrgCnName("databank");
...@@ -62,7 +60,7 @@ public class TestOrganizationManage extends SpringTestCase { ...@@ -62,7 +60,7 @@ public class TestOrganizationManage extends SpringTestCase {
req.setOrgPhone("18279668524"); req.setOrgPhone("18279668524");
req.setOrgType(AuthTypeEnum.DATA_BANK_AUTH.name()); req.setOrgType(AuthTypeEnum.DATA_BANK_AUTH.name());
Result result = organizationManageService.add(req); Result result = organizationManageService.add(req);
System.out.println(result.getMessage()); System.out.println(result.getMessage());*/
} }
/** /**
......
...@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject; ...@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Random;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -15,16 +16,24 @@ import java.util.stream.Collectors; ...@@ -15,16 +16,24 @@ import java.util.stream.Collectors;
*/ */
public class TestStr { public class TestStr {
public static void main(String[] args) { public static void main(String[] args) {
Random ran = new Random();
int num = ran.nextInt(999999);
String str = String.format("%06d", num);
System.out.println(str);
String stereo = "000101";
Integer valueOf = Integer.valueOf(stereo);
System.out.println(valueOf);
}
public void resolveParameter(){
String str ="[{\"name\":\"flelds1\",\"bindName\":\"flelds1\",\"type\":\"BIGINT\",\"sampleValue\":\"1\",\"defaultValue\":\"1\",\"required\":true,\"desc\":\"\"},{\"name\":\"flelds2\",\"bindName\":\"flelds2\",\"type\":\"BIGINT\",\"sampleValue\":\"1\",\"defaultValue\":\"1\",\"required\":true,\"desc\":\"\"}]"; String str ="[{\"name\":\"flelds1\",\"bindName\":\"flelds1\",\"type\":\"BIGINT\",\"sampleValue\":\"1\",\"defaultValue\":\"1\",\"required\":true,\"desc\":\"\"},{\"name\":\"flelds2\",\"bindName\":\"flelds2\",\"type\":\"BIGINT\",\"sampleValue\":\"1\",\"defaultValue\":\"1\",\"required\":true,\"desc\":\"\"}]";
String str2="[{\"name\":\"field1\",\"bindName\":\"field1\",\"type\":\"STRING\",\"sampleValue\":\"1\",\"desc\":\"\"},{\"name\":\"field2\",\"bindName\":\"field2\",\"type\":\"BIGINT\",\"sampleValue\":\"1\",\"desc\":\"\"},{\"name\":\"field3\",\"bindName\":\"field3\",\"type\":\"BIGINT\",\"sampleValue\":\"1\",\"desc\":\"\"},{\"name\":\"field4\",\"bindName\":\"field4\",\"type\":\"STRING\",\"sampleValue\":\"1\",\"desc\":\"\"}]"; String str2="[{\"name\":\"field1\",\"bindName\":\"field1\",\"type\":\"STRING\",\"sampleValue\":\"1\",\"desc\":\"\"},{\"name\":\"field2\",\"bindName\":\"field2\",\"type\":\"BIGINT\",\"sampleValue\":\"1\",\"desc\":\"\"},{\"name\":\"field3\",\"bindName\":\"field3\",\"type\":\"BIGINT\",\"sampleValue\":\"1\",\"desc\":\"\"},{\"name\":\"field4\",\"bindName\":\"field4\",\"type\":\"STRING\",\"sampleValue\":\"1\",\"desc\":\"\"}]";
List<Map> maps = JSONObject.parseArray(str2, Map.class); List<Map> maps = JSONObject.parseArray(str2, Map.class);
for (Map map : maps) { for (Map map : maps) {
System.out.println("map:"+map); System.out.println("map:"+map);
} }
}
}
/** /**
* 获取集合信息 * 获取集合信息
*/ */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment