mirror of
https://github.com/dataease/dataease.git
synced 2025-02-24 19:42:56 +08:00
Merge remote-tracking branch 'origin/dev' into dev
# Conflicts: # backend/src/main/resources/db/migration/V32__1.8.sql
This commit is contained in:
commit
734aa62a31
@ -1,11 +1,15 @@
|
|||||||
package io.dataease.config;
|
package io.dataease.config;
|
||||||
|
|
||||||
import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver;
|
import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver;
|
||||||
|
import com.google.common.base.Function;
|
||||||
|
import com.google.common.base.Optional;
|
||||||
|
import com.google.common.base.Predicate;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.beans.factory.config.BeanPostProcessor;
|
import org.springframework.beans.factory.config.BeanPostProcessor;
|
||||||
import org.springframework.context.annotation.*;
|
import org.springframework.context.annotation.*;
|
||||||
import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
|
import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
|
||||||
|
import springfox.documentation.RequestHandler;
|
||||||
import springfox.documentation.builders.*;
|
import springfox.documentation.builders.*;
|
||||||
import springfox.documentation.oas.annotations.EnableOpenApi;
|
import springfox.documentation.oas.annotations.EnableOpenApi;
|
||||||
import springfox.documentation.service.*;
|
import springfox.documentation.service.*;
|
||||||
@ -15,11 +19,14 @@ import springfox.documentation.spring.web.plugins.Docket;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
@EnableOpenApi
|
@EnableOpenApi
|
||||||
@Configuration
|
@Configuration
|
||||||
@Import(BeanValidatorPluginsConfiguration.class)
|
@Import(BeanValidatorPluginsConfiguration.class)
|
||||||
public class Knife4jConfiguration implements BeanPostProcessor{
|
public class Knife4jConfiguration implements BeanPostProcessor{
|
||||||
|
|
||||||
|
private static final String splitor = ",";
|
||||||
|
|
||||||
private final OpenApiExtensionResolver openApiExtensionResolver;
|
private final OpenApiExtensionResolver openApiExtensionResolver;
|
||||||
|
|
||||||
@Value("${version}")
|
@Value("${version}")
|
||||||
@ -54,12 +61,12 @@ public class Knife4jConfiguration implements BeanPostProcessor{
|
|||||||
|
|
||||||
@Bean(value = "datasourceApi")
|
@Bean(value = "datasourceApi")
|
||||||
public Docket datasourceApi() {
|
public Docket datasourceApi() {
|
||||||
return defaultApi("数据源管理", "io.dataease.datasource");
|
return defaultApi("数据源管理", "io.dataease.controller.datasource");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean(value = "sysApi")
|
@Bean(value = "sysApi")
|
||||||
public Docket sysApi() {
|
public Docket sysApi() {
|
||||||
return defaultApi("系统管理", "io.dataease.controller.sys");
|
return defaultApi("系统管理", "io.dataease.controller.sys,io.dataease.plugins.server");
|
||||||
}
|
}
|
||||||
|
|
||||||
private ApiInfo apiInfo(){
|
private ApiInfo apiInfo(){
|
||||||
@ -79,12 +86,12 @@ public class Knife4jConfiguration implements BeanPostProcessor{
|
|||||||
|
|
||||||
List<SecurityContext> securityContexts = new ArrayList<>();
|
List<SecurityContext> securityContexts = new ArrayList<>();
|
||||||
securityContexts.add(securityContext());
|
securityContexts.add(securityContext());
|
||||||
|
|
||||||
Docket docket=new Docket(DocumentationType.OAS_30)
|
Docket docket=new Docket(DocumentationType.OAS_30)
|
||||||
.apiInfo(apiInfo())
|
.apiInfo(apiInfo())
|
||||||
.groupName(groupName)
|
.groupName(groupName)
|
||||||
.select()
|
.select()
|
||||||
.apis(RequestHandlerSelectors.basePackage(packageName))
|
/*.apis(RequestHandlerSelectors.basePackage(packageName))*/
|
||||||
|
.apis(basePackage(packageName))
|
||||||
.paths(PathSelectors.any())
|
.paths(PathSelectors.any())
|
||||||
.build()
|
.build()
|
||||||
.securityContexts(securityContexts).securitySchemes(securitySchemes)
|
.securityContexts(securityContexts).securitySchemes(securitySchemes)
|
||||||
@ -120,4 +127,25 @@ public class Knife4jConfiguration implements BeanPostProcessor{
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Predicate<RequestHandler> basePackage(final String basePackage) {
|
||||||
|
return input -> declaringClass(input).transform(handlerPackage(basePackage)).or(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Function<Class<?>, Boolean> handlerPackage(final String basePackage) {
|
||||||
|
return input -> {
|
||||||
|
// 循环判断匹配
|
||||||
|
for (String strPackage : basePackage.split(splitor)) {
|
||||||
|
boolean isMatch = input.getPackage().getName().startsWith(strPackage);
|
||||||
|
if (isMatch) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Optional<? extends Class<?>> declaringClass(RequestHandler input) {
|
||||||
|
return Optional.fromNullable(input.declaringClass());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,8 @@ public class IndexController {
|
|||||||
case valid:
|
case valid:
|
||||||
return "doc.html";
|
return "doc.html";
|
||||||
default:
|
default:
|
||||||
return "nolic.html";
|
// return "nolic.html";
|
||||||
|
return "doc.html";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,9 +3,12 @@ package io.dataease.controller.dataset;
|
|||||||
import com.auth0.jwt.JWT;
|
import com.auth0.jwt.JWT;
|
||||||
import com.auth0.jwt.interfaces.DecodedJWT;
|
import com.auth0.jwt.interfaces.DecodedJWT;
|
||||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||||
|
import io.dataease.auth.annotation.DePermission;
|
||||||
import io.dataease.auth.filter.F2CLinkFilter;
|
import io.dataease.auth.filter.F2CLinkFilter;
|
||||||
import io.dataease.base.domain.DatasetTable;
|
import io.dataease.base.domain.DatasetTable;
|
||||||
import io.dataease.base.domain.DatasetTableField;
|
import io.dataease.base.domain.DatasetTableField;
|
||||||
|
import io.dataease.commons.constants.DePermissionType;
|
||||||
|
import io.dataease.commons.constants.ResourceAuthLevel;
|
||||||
import io.dataease.commons.exception.DEException;
|
import io.dataease.commons.exception.DEException;
|
||||||
import io.dataease.controller.request.dataset.DataSetTableRequest;
|
import io.dataease.controller.request.dataset.DataSetTableRequest;
|
||||||
import io.dataease.controller.request.dataset.MultFieldValuesRequest;
|
import io.dataease.controller.request.dataset.MultFieldValuesRequest;
|
||||||
@ -106,6 +109,7 @@ public class DataSetTableFieldController {
|
|||||||
dataSetTableFieldsService.batchEdit(list);
|
dataSetTableFieldsService.batchEdit(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DePermission(type = DePermissionType.DATASET, value = "tableId", level = ResourceAuthLevel.DATASET_LEVEL_MANAGE)
|
||||||
@ApiOperation("保存")
|
@ApiOperation("保存")
|
||||||
@PostMapping("save")
|
@PostMapping("save")
|
||||||
public DatasetTableField save(@RequestBody DatasetTableField datasetTableField) {
|
public DatasetTableField save(@RequestBody DatasetTableField datasetTableField) {
|
||||||
|
@ -3,7 +3,10 @@ package io.dataease.controller.dataset;
|
|||||||
import com.github.pagehelper.Page;
|
import com.github.pagehelper.Page;
|
||||||
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageHelper;
|
||||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||||
|
import io.dataease.auth.annotation.DePermission;
|
||||||
import io.dataease.base.domain.DatasetTableTask;
|
import io.dataease.base.domain.DatasetTableTask;
|
||||||
|
import io.dataease.commons.constants.DePermissionType;
|
||||||
|
import io.dataease.commons.constants.ResourceAuthLevel;
|
||||||
import io.dataease.commons.utils.PageUtils;
|
import io.dataease.commons.utils.PageUtils;
|
||||||
import io.dataease.commons.utils.Pager;
|
import io.dataease.commons.utils.Pager;
|
||||||
import io.dataease.controller.request.dataset.DataSetTaskRequest;
|
import io.dataease.controller.request.dataset.DataSetTaskRequest;
|
||||||
@ -32,6 +35,7 @@ public class DataSetTableTaskController {
|
|||||||
@Resource
|
@Resource
|
||||||
private DataSetTableTaskLogService dataSetTableTaskLogService;
|
private DataSetTableTaskLogService dataSetTableTaskLogService;
|
||||||
|
|
||||||
|
@DePermission(type = DePermissionType.DATASET, value = "datasetTableTask.tableId", level = ResourceAuthLevel.DATASET_LEVEL_MANAGE)
|
||||||
@ApiOperation("保存")
|
@ApiOperation("保存")
|
||||||
@PostMapping("save")
|
@PostMapping("save")
|
||||||
public DatasetTableTask save(@RequestBody DataSetTaskRequest dataSetTaskRequest) throws Exception {
|
public DatasetTableTask save(@RequestBody DataSetTaskRequest dataSetTaskRequest) throws Exception {
|
||||||
@ -70,6 +74,7 @@ public class DataSetTableTaskController {
|
|||||||
dataSetTableTaskService.updateDatasetTableTaskStatus(datasetTableTask);
|
dataSetTableTaskService.updateDatasetTableTaskStatus(datasetTableTask);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DePermission(type = DePermissionType.DATASET, value = "tableId", level = ResourceAuthLevel.DATASET_LEVEL_MANAGE)
|
||||||
@ApiOperation("执行任务")
|
@ApiOperation("执行任务")
|
||||||
@PostMapping("/execTask")
|
@PostMapping("/execTask")
|
||||||
public void execTask(@RequestBody DatasetTableTask datasetTableTask) throws Exception{
|
public void execTask(@RequestBody DatasetTableTask datasetTableTask) throws Exception{
|
||||||
|
@ -3,7 +3,10 @@ package io.dataease.controller.dataset;
|
|||||||
import com.github.pagehelper.Page;
|
import com.github.pagehelper.Page;
|
||||||
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageHelper;
|
||||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||||
|
import io.dataease.auth.annotation.DePermission;
|
||||||
import io.dataease.base.domain.DatasetTableTaskLog;
|
import io.dataease.base.domain.DatasetTableTaskLog;
|
||||||
|
import io.dataease.commons.constants.DePermissionType;
|
||||||
|
import io.dataease.commons.constants.ResourceAuthLevel;
|
||||||
import io.dataease.commons.utils.PageUtils;
|
import io.dataease.commons.utils.PageUtils;
|
||||||
import io.dataease.commons.utils.Pager;
|
import io.dataease.commons.utils.Pager;
|
||||||
import io.dataease.controller.sys.base.BaseGridRequest;
|
import io.dataease.controller.sys.base.BaseGridRequest;
|
||||||
@ -28,6 +31,7 @@ public class DataSetTableTaskLogController {
|
|||||||
@Resource
|
@Resource
|
||||||
private DataSetTableTaskLogService dataSetTableTaskLogService;
|
private DataSetTableTaskLogService dataSetTableTaskLogService;
|
||||||
|
|
||||||
|
@DePermission(type = DePermissionType.DATASET, value = "tableId", level = ResourceAuthLevel.DATASET_LEVEL_MANAGE)
|
||||||
@ApiOperation("保存")
|
@ApiOperation("保存")
|
||||||
@PostMapping("save")
|
@PostMapping("save")
|
||||||
public DatasetTableTaskLog save(@RequestBody DatasetTableTaskLog datasetTableTaskLog) {
|
public DatasetTableTaskLog save(@RequestBody DatasetTableTaskLog datasetTableTaskLog) {
|
||||||
|
@ -50,7 +50,7 @@ public class DatasourceController {
|
|||||||
@DePermission(type = DePermissionType.DATASOURCE, value = "id")
|
@DePermission(type = DePermissionType.DATASOURCE, value = "id")
|
||||||
@ApiOperation("验证数据源")
|
@ApiOperation("验证数据源")
|
||||||
@PostMapping("/validate")
|
@PostMapping("/validate")
|
||||||
public ResultHolder validate(@RequestBody Datasource datasource) throws Exception {
|
public ResultHolder validate(@RequestBody DatasourceDTO datasource) throws Exception {
|
||||||
return datasourceService.validate(datasource);
|
return datasourceService.validate(datasource);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,5 +16,6 @@ public class ApiDefinition {
|
|||||||
private List<DatasetTableField> fields;
|
private List<DatasetTableField> fields;
|
||||||
private String request;
|
private String request;
|
||||||
private String dataPath;
|
private String dataPath;
|
||||||
|
private String status;
|
||||||
private List<JSONObject> datas = new ArrayList<>();
|
private List<JSONObject> datas = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
@ -18,10 +18,11 @@ import io.swagger.annotations.ApiOperation;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ApiIgnore
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("plugin/dataset/columnPermissions")
|
@RequestMapping("plugin/dataset/columnPermissions")
|
||||||
public class ColumnPermissionsController {
|
public class ColumnPermissionsController {
|
||||||
|
@ -15,10 +15,11 @@ import io.swagger.annotations.ApiOperation;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ApiIgnore
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("plugin/dataset/rowPermissions")
|
@RequestMapping("plugin/dataset/rowPermissions")
|
||||||
public class RowPermissionsController {
|
public class RowPermissionsController {
|
||||||
|
@ -30,7 +30,9 @@ import io.dataease.plugins.xpack.oidc.dto.SSOToken;
|
|||||||
import io.dataease.plugins.xpack.oidc.dto.SSOUserInfo;
|
import io.dataease.plugins.xpack.oidc.dto.SSOUserInfo;
|
||||||
import io.dataease.plugins.xpack.oidc.service.OidcXpackService;
|
import io.dataease.plugins.xpack.oidc.service.OidcXpackService;
|
||||||
import io.dataease.service.sys.SysUserService;
|
import io.dataease.service.sys.SysUserService;
|
||||||
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
|
|
||||||
|
@ApiIgnore
|
||||||
@RequestMapping("/sso")
|
@RequestMapping("/sso")
|
||||||
@Controller
|
@Controller
|
||||||
public class SSOServer {
|
public class SSOServer {
|
||||||
|
@ -19,7 +19,9 @@ import io.dataease.plugins.xpack.theme.dto.ThemeDto;
|
|||||||
import io.dataease.plugins.xpack.theme.dto.ThemeItem;
|
import io.dataease.plugins.xpack.theme.dto.ThemeItem;
|
||||||
import io.dataease.plugins.xpack.theme.dto.ThemeRequest;
|
import io.dataease.plugins.xpack.theme.dto.ThemeRequest;
|
||||||
import io.dataease.plugins.xpack.theme.service.ThemeXpackService;
|
import io.dataease.plugins.xpack.theme.service.ThemeXpackService;
|
||||||
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
|
|
||||||
|
@ApiIgnore
|
||||||
@RequestMapping("/plugin/theme")
|
@RequestMapping("/plugin/theme")
|
||||||
@RestController
|
@RestController
|
||||||
public class ThemeServer {
|
public class ThemeServer {
|
||||||
|
@ -17,9 +17,10 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import io.dataease.plugins.xpack.auth.service.AuthXpackService;
|
import io.dataease.plugins.xpack.auth.service.AuthXpackService;
|
||||||
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
@ApiIgnore
|
||||||
@RequestMapping("/plugin/auth")
|
@RequestMapping("/plugin/auth")
|
||||||
@RestController
|
@RestController
|
||||||
public class XAuthServer {
|
public class XAuthServer {
|
||||||
|
@ -95,15 +95,15 @@ public class XDeptServer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@RequiresPermissions("dept:del")
|
|
||||||
@ApiIgnore
|
@ApiIgnore
|
||||||
@ApiOperation("删除")
|
|
||||||
@PostMapping("/nodesByDeptId/{deptId}")
|
@PostMapping("/nodesByDeptId/{deptId}")
|
||||||
public List<XpackDeptTreeNode> nodesByDeptId(@PathVariable("deptId") Long deptId){
|
public List<XpackDeptTreeNode> nodesByDeptId(@PathVariable("deptId") Long deptId){
|
||||||
DeptXpackService deptService = SpringContextUtil.getBean(DeptXpackService.class);
|
DeptXpackService deptService = SpringContextUtil.getBean(DeptXpackService.class);
|
||||||
return deptService.searchTree(deptId);
|
return deptService.searchTree(deptId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("dept:edit")
|
||||||
@ApiOperation("移动")
|
@ApiOperation("移动")
|
||||||
@PostMapping("/move")
|
@PostMapping("/move")
|
||||||
public void move(@RequestBody XpackMoveDept xpackMoveDept){
|
public void move(@RequestBody XpackMoveDept xpackMoveDept){
|
||||||
|
@ -7,9 +7,11 @@ import io.dataease.plugins.xpack.display.service.DisplayXpackService;
|
|||||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ApiIgnore
|
||||||
@RequestMapping("/api/display")
|
@RequestMapping("/api/display")
|
||||||
@RestController
|
@RestController
|
||||||
public class XDisplayServer {
|
public class XDisplayServer {
|
||||||
|
@ -23,13 +23,14 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.Future;
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
@ApiIgnore
|
||||||
@RequestMapping("/plugin/task")
|
@RequestMapping("/plugin/task")
|
||||||
@RestController
|
@RestController
|
||||||
public class XEmailTaskServer {
|
public class XEmailTaskServer {
|
||||||
|
@ -8,9 +8,10 @@ import io.dataease.plugins.xpack.ldap.dto.response.LdapInfo;
|
|||||||
import io.dataease.plugins.xpack.ldap.service.LdapXpackService;
|
import io.dataease.plugins.xpack.ldap.service.LdapXpackService;
|
||||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ApiIgnore
|
||||||
@RequestMapping("/plugin/ldap")
|
@RequestMapping("/plugin/ldap")
|
||||||
@RestController
|
@RestController
|
||||||
public class XLdapServer {
|
public class XLdapServer {
|
||||||
|
@ -7,10 +7,12 @@ import io.dataease.plugins.xpack.oidc.service.OidcXpackService;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ApiIgnore
|
||||||
@RequestMapping("/plugin/oidc")
|
@RequestMapping("/plugin/oidc")
|
||||||
@RestController
|
@RestController
|
||||||
public class XOidcServer {
|
public class XOidcServer {
|
||||||
|
@ -5,10 +5,12 @@ import io.dataease.plugins.config.SpringContextUtil;
|
|||||||
import io.dataease.plugins.xpack.ukey.dto.request.XpackUkeyDto;
|
import io.dataease.plugins.xpack.ukey.dto.request.XpackUkeyDto;
|
||||||
import io.dataease.plugins.xpack.ukey.service.UkeyXpackService;
|
import io.dataease.plugins.xpack.ukey.service.UkeyXpackService;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
|
|
||||||
import javax.servlet.ServletRequest;
|
import javax.servlet.ServletRequest;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ApiIgnore
|
||||||
@RequestMapping("/plugin/ukey")
|
@RequestMapping("/plugin/ukey")
|
||||||
@RestController
|
@RestController
|
||||||
public class XUserKeysServer {
|
public class XUserKeysServer {
|
||||||
|
@ -12,7 +12,9 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
import io.dataease.plugins.config.SpringContextUtil;
|
import io.dataease.plugins.config.SpringContextUtil;
|
||||||
import io.dataease.plugins.view.entity.PluginViewType;
|
import io.dataease.plugins.view.entity.PluginViewType;
|
||||||
import io.dataease.plugins.view.service.ViewPluginService;
|
import io.dataease.plugins.view.service.ViewPluginService;
|
||||||
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
|
|
||||||
|
@ApiIgnore
|
||||||
@RequestMapping("/plugin/view")
|
@RequestMapping("/plugin/view")
|
||||||
@RestController
|
@RestController
|
||||||
public class PluginViewServer {
|
public class PluginViewServer {
|
||||||
|
@ -12,15 +12,13 @@ import io.dataease.controller.request.datasource.ApiDefinitionRequest;
|
|||||||
import io.dataease.controller.request.datasource.DatasourceRequest;
|
import io.dataease.controller.request.datasource.DatasourceRequest;
|
||||||
import io.dataease.dto.datasource.TableDesc;
|
import io.dataease.dto.datasource.TableDesc;
|
||||||
import io.dataease.dto.datasource.TableField;
|
import io.dataease.dto.datasource.TableField;
|
||||||
import io.dataease.exception.DataEaseException;
|
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.http.HttpHeaders;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.sql.Connection;
|
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.sql.Statement;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -102,22 +100,18 @@ public class ApiProvider extends DatasourceProvider{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String checkStatus(DatasourceRequest datasourceRequest) throws Exception {
|
public String checkStatus(DatasourceRequest datasourceRequest) throws Exception {
|
||||||
List<ApiDefinition> apiDefinitionList = JSONObject.parseArray(datasourceRequest.getDatasource().getConfiguration(), ApiDefinition.class).stream().filter(item -> item.getName().equalsIgnoreCase(datasourceRequest.getTable())).collect(Collectors.toList());
|
List<ApiDefinition> apiDefinitionList = JSONObject.parseArray(datasourceRequest.getDatasource().getConfiguration(), ApiDefinition.class);
|
||||||
int success = 0;
|
JSONObject apiItemStatuses = new JSONObject();
|
||||||
for (ApiDefinition apiDefinition : apiDefinitionList) {
|
for (ApiDefinition apiDefinition : apiDefinitionList) {
|
||||||
datasourceRequest.setTable(apiDefinition.getName());
|
datasourceRequest.setTable(apiDefinition.getName());
|
||||||
try {
|
try {
|
||||||
getData(datasourceRequest);
|
getData(datasourceRequest);
|
||||||
success++;
|
apiItemStatuses.put(apiDefinition.getName(), "Success");
|
||||||
}catch (Exception ignore){}
|
}catch (Exception ignore){
|
||||||
|
apiItemStatuses.put(apiDefinition.getName(), "Error");
|
||||||
}
|
}
|
||||||
if(success == apiDefinitionList.size()){
|
|
||||||
return "Success";
|
|
||||||
}
|
}
|
||||||
if(success > 0 && success < apiDefinitionList.size() ){
|
return JSONObject.toJSONString(apiItemStatuses);
|
||||||
return "Warning";
|
|
||||||
}
|
|
||||||
return "Error";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static public String execHttpRequest(ApiDefinition apiDefinition) throws Exception{
|
static public String execHttpRequest(ApiDefinition apiDefinition) throws Exception{
|
||||||
|
@ -405,7 +405,7 @@ public class DataSetTableService {
|
|||||||
|
|
||||||
public DataSetTableDTO getWithPermission(String id, Long user) {
|
public DataSetTableDTO getWithPermission(String id, Long user) {
|
||||||
CurrentUserDto currentUserDto = AuthUtils.getUser();
|
CurrentUserDto currentUserDto = AuthUtils.getUser();
|
||||||
Long userId = user != null ? currentUserDto.getUserId() : user;
|
Long userId = currentUserDto != null ? currentUserDto.getUserId() : user;
|
||||||
|
|
||||||
DataSetTableRequest dataSetTableRequest = new DataSetTableRequest();
|
DataSetTableRequest dataSetTableRequest = new DataSetTableRequest();
|
||||||
dataSetTableRequest.setId(id);
|
dataSetTableRequest.setId(id);
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package io.dataease.service.datasource;
|
package io.dataease.service.datasource;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.jayway.jsonpath.JsonPath;
|
import com.jayway.jsonpath.JsonPath;
|
||||||
@ -110,12 +111,38 @@ public class DatasourceService {
|
|||||||
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), CHConfiguration.class)) );
|
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), CHConfiguration.class)) );
|
||||||
break;
|
break;
|
||||||
case api:
|
case api:
|
||||||
datasourceDTO.setApiConfiguration(JSONObject.parseArray(datasourceDTO.getConfiguration()));
|
JSONArray apiDefinitionList = JSONObject.parseArray(datasourceDTO.getConfiguration());
|
||||||
|
JSONArray apiDefinitionListWithStatus = new JSONArray();
|
||||||
|
int success = 0;
|
||||||
|
if(StringUtils.isNotEmpty(datasourceDTO.getStatus())){
|
||||||
|
JSONObject apiItemStatuses = JSONObject.parseObject(datasourceDTO.getStatus());
|
||||||
|
for (Object apiDefinition : apiDefinitionList) {
|
||||||
|
String status = apiItemStatuses.getString(JSONObject.parseObject(apiDefinition.toString()).getString("name") );
|
||||||
|
JSONObject object = JSONObject.parseObject(apiDefinition.toString());
|
||||||
|
object.put("status", status);
|
||||||
|
apiDefinitionListWithStatus.add(object);
|
||||||
|
if(StringUtils.isNotEmpty(status) && status.equalsIgnoreCase("Success")){
|
||||||
|
success ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
datasourceDTO.setApiConfiguration(apiDefinitionListWithStatus);
|
||||||
|
if(success == apiDefinitionList.size()){
|
||||||
|
datasourceDTO.setStatus("Success");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(success > 0 && success < apiDefinitionList.size() ){
|
||||||
|
datasourceDTO.setStatus("Warning");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
datasourceDTO.setStatus("Error");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}catch (Exception ignore){}
|
}catch (Exception ignore){
|
||||||
|
ignore.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
return datasourceDTOS;
|
return datasourceDTOS;
|
||||||
@ -135,6 +162,7 @@ public class DatasourceService {
|
|||||||
return extDataSourceMapper.query(gridExample);
|
return extDataSourceMapper.query(gridExample);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DeCleaner(DePermissionType.DATASOURCE)
|
||||||
public void deleteDatasource(String datasourceId) throws Exception {
|
public void deleteDatasource(String datasourceId) throws Exception {
|
||||||
DatasetTableExample example = new DatasetTableExample();
|
DatasetTableExample example = new DatasetTableExample();
|
||||||
example.createCriteria().andDataSourceIdEqualTo(datasourceId);
|
example.createCriteria().andDataSourceIdEqualTo(datasourceId);
|
||||||
@ -156,22 +184,39 @@ public class DatasourceService {
|
|||||||
handleConnectionPool(datasource, "edit");
|
handleConnectionPool(datasource, "edit");
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResultHolder validate(Datasource datasource) throws Exception {
|
public ResultHolder validate(DatasourceDTO datasource) throws Exception {
|
||||||
try {
|
try {
|
||||||
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
|
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
|
||||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||||
datasourceRequest.setDatasource(datasource);
|
datasourceRequest.setDatasource(datasource);
|
||||||
String status = datasourceProvider.checkStatus(datasourceRequest);
|
String datasourceStatus = datasourceProvider.checkStatus(datasourceRequest);
|
||||||
if (status.equalsIgnoreCase("Success")) {
|
if(datasource.getType().equalsIgnoreCase("api")){
|
||||||
return ResultHolder.success("Success");
|
int success = 0;
|
||||||
|
JSONArray apiDefinitionList = JSONObject.parseArray(datasource.getConfiguration());
|
||||||
|
JSONArray apiDefinitionListWithStatus = new JSONArray();
|
||||||
|
if(StringUtils.isNotEmpty(datasourceStatus)){
|
||||||
|
JSONObject apiItemStatuses = JSONObject.parseObject(datasourceStatus);
|
||||||
|
for (Object apiDefinition : apiDefinitionList) {
|
||||||
|
String status = apiItemStatuses.getString(JSONObject.parseObject(apiDefinition.toString()).getString("name") );
|
||||||
|
JSONObject object = JSONObject.parseObject(apiDefinition.toString());
|
||||||
|
object.put("status", status);
|
||||||
|
apiDefinitionListWithStatus.add(object);
|
||||||
|
if(StringUtils.isNotEmpty(status) && status.equalsIgnoreCase("Success")){
|
||||||
|
success ++;
|
||||||
}
|
}
|
||||||
if (status.equalsIgnoreCase("Warning")) {
|
|
||||||
return ResultHolder.error("Datasource has invalid items");
|
|
||||||
}
|
}
|
||||||
if (status.equalsIgnoreCase("Error")) {
|
|
||||||
return ResultHolder.error("Datasource is invalid");
|
|
||||||
}
|
}
|
||||||
return ResultHolder.success("Success");
|
|
||||||
|
datasource.setApiConfiguration(apiDefinitionListWithStatus);
|
||||||
|
if(success == apiDefinitionList.size()){
|
||||||
|
return ResultHolder.success(datasource);
|
||||||
|
}
|
||||||
|
if(success > 0 && success < apiDefinitionList.size() ){
|
||||||
|
return ResultHolder.error("Datasource has invalid tables", datasource);
|
||||||
|
}
|
||||||
|
return ResultHolder.error("Datasource is invalid.", datasource);
|
||||||
|
}
|
||||||
|
return ResultHolder.success(datasource);
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
return ResultHolder.error("Datasource is invalid: " + e.getMessage());
|
return ResultHolder.error("Datasource is invalid: " + e.getMessage());
|
||||||
}
|
}
|
||||||
@ -187,17 +232,29 @@ public class DatasourceService {
|
|||||||
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
|
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
|
||||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||||
datasourceRequest.setDatasource(datasource);
|
datasourceRequest.setDatasource(datasource);
|
||||||
String status = datasourceProvider.checkStatus(datasourceRequest);
|
String datasourceStatus = datasourceProvider.checkStatus(datasourceRequest);
|
||||||
datasource.setStatus(status);
|
datasource.setStatus(datasourceStatus);
|
||||||
|
|
||||||
|
if(datasource.getType().equalsIgnoreCase("api")){
|
||||||
|
List<ApiDefinition> apiDefinitionList = JSONObject.parseArray(datasource.getConfiguration(), ApiDefinition.class);
|
||||||
|
JSONObject apiItemStatuses = JSONObject.parseObject(datasourceStatus);
|
||||||
|
int success = 0;
|
||||||
|
for (ApiDefinition apiDefinition : apiDefinitionList) {
|
||||||
|
String status = apiItemStatuses.getString(apiDefinition.getName());
|
||||||
|
apiDefinition.setStatus(status);
|
||||||
if(status.equalsIgnoreCase("Success")){
|
if(status.equalsIgnoreCase("Success")){
|
||||||
return ResultHolder.success("Success");
|
success ++;
|
||||||
}
|
}
|
||||||
if (status.equalsIgnoreCase("Warning")) {
|
|
||||||
return ResultHolder.error("Datasource has invalid items");
|
|
||||||
}
|
}
|
||||||
if (status.equalsIgnoreCase("Error")) {
|
if(success == apiDefinitionList.size()){
|
||||||
return ResultHolder.error("Datasource is invalid");
|
return ResultHolder.success(datasource);
|
||||||
}
|
}
|
||||||
|
if(success > 0 && success < apiDefinitionList.size() ){
|
||||||
|
return ResultHolder.error("Datasource has invalid tables", datasource);
|
||||||
|
}
|
||||||
|
return ResultHolder.error("Datasource is invalid.", datasource);
|
||||||
|
}
|
||||||
|
|
||||||
return ResultHolder.success("Success");
|
return ResultHolder.success("Success");
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
datasource.setStatus("Error");
|
datasource.setStatus("Error");
|
||||||
@ -219,12 +276,14 @@ public class DatasourceService {
|
|||||||
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(ds.getType());
|
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(ds.getType());
|
||||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||||
datasourceRequest.setDatasource(ds);
|
datasourceRequest.setDatasource(ds);
|
||||||
|
if(!datasource.getType().equalsIgnoreCase("api")){
|
||||||
datasourceProvider.checkStatus(datasourceRequest);
|
datasourceProvider.checkStatus(datasourceRequest);
|
||||||
|
}
|
||||||
|
|
||||||
List<TableDesc> tables = datasourceProvider.getTables(datasourceRequest);
|
List<TableDesc> tables = datasourceProvider.getTables(datasourceRequest);
|
||||||
|
|
||||||
// 获取当前数据源下的db类型数据集
|
// 获取当前数据源下的db、api类型数据集
|
||||||
DatasetTableExample datasetTableExample = new DatasetTableExample();
|
DatasetTableExample datasetTableExample = new DatasetTableExample();
|
||||||
|
|
||||||
datasetTableExample.createCriteria().andTypeIn(Arrays.asList("db","api")).andDataSourceIdEqualTo(datasource.getId());
|
datasetTableExample.createCriteria().andTypeIn(Arrays.asList("db","api")).andDataSourceIdEqualTo(datasource.getId());
|
||||||
List<DatasetTable> datasetTables = datasetTableMapper.selectByExampleWithBLOBs(datasetTableExample);
|
List<DatasetTable> datasetTables = datasetTableMapper.selectByExampleWithBLOBs(datasetTableExample);
|
||||||
List<DBTableDTO> list = new ArrayList<>();
|
List<DBTableDTO> list = new ArrayList<>();
|
||||||
|
@ -354,6 +354,9 @@ SET FOREIGN_KEY_CHECKS = 1;
|
|||||||
ALTER TABLE `panel_view`
|
ALTER TABLE `panel_view`
|
||||||
ADD COLUMN `position` varchar(255) NULL DEFAULT 'panel' COMMENT '视图位置 panel 仪表板中,tab Tab页中' AFTER `update_time`;
|
ADD COLUMN `position` varchar(255) NULL DEFAULT 'panel' COMMENT '视图位置 panel 仪表板中,tab Tab页中' AFTER `update_time`;
|
||||||
|
|
||||||
|
ALTER TABLE `datasource`
|
||||||
|
CHANGE COLUMN `status` `status` LONGTEXT NULL DEFAULT NULL COMMENT '状态' ;
|
||||||
|
|
||||||
ALTER TABLE `panel_view`
|
ALTER TABLE `panel_view`
|
||||||
ADD COLUMN `copy_from_panel` varchar(255) NULL AFTER `position`,
|
ADD COLUMN `copy_from_panel` varchar(255) NULL AFTER `position`,
|
||||||
ADD COLUMN `copy_from_view` varchar(255) NULL AFTER `copy_from_panel`,
|
ADD COLUMN `copy_from_view` varchar(255) NULL AFTER `copy_from_panel`,
|
||||||
|
@ -1337,7 +1337,11 @@ export default {
|
|||||||
auth_config_info: 'Permission verification is required for the request',
|
auth_config_info: 'Permission verification is required for the request',
|
||||||
verified: 'Verified',
|
verified: 'Verified',
|
||||||
verification_method: 'Verification Method',
|
verification_method: 'Verification Method',
|
||||||
username: 'Username'
|
username: 'Username',
|
||||||
|
api_table_not_empty: 'API data table cannot be empty',
|
||||||
|
has_repeat_name: 'Duplicate API data table name',
|
||||||
|
valid: 'Valid',
|
||||||
|
invalid: 'Invalid'
|
||||||
},
|
},
|
||||||
pblink: {
|
pblink: {
|
||||||
key_pwd: 'Please enter the password to open the link',
|
key_pwd: 'Please enter the password to open the link',
|
||||||
|
@ -1338,7 +1338,11 @@ export default {
|
|||||||
auth_config_info: '請求需要進行權限校驗',
|
auth_config_info: '請求需要進行權限校驗',
|
||||||
verified: '認證',
|
verified: '認證',
|
||||||
verification_method: '認證方式',
|
verification_method: '認證方式',
|
||||||
username: '用戶名'
|
username: '用戶名',
|
||||||
|
api_table_not_empty: 'API 數據表不能為空',
|
||||||
|
has_repeat_name: 'API 數據表名稱重複',
|
||||||
|
valid: '有效',
|
||||||
|
invalid: '無效'
|
||||||
},
|
},
|
||||||
pblink: {
|
pblink: {
|
||||||
key_pwd: '請輸入密碼打開鏈接',
|
key_pwd: '請輸入密碼打開鏈接',
|
||||||
|
@ -1346,7 +1346,11 @@ export default {
|
|||||||
auth_config_info: '请求需要进行权限校验',
|
auth_config_info: '请求需要进行权限校验',
|
||||||
verified: '认证',
|
verified: '认证',
|
||||||
verification_method: '认证方式',
|
verification_method: '认证方式',
|
||||||
username: '用户名'
|
username: '用户名',
|
||||||
|
api_table_not_empty: 'API 数据表不能为空',
|
||||||
|
has_repeat_name: 'API 数据表名称重复',
|
||||||
|
valid: '有效',
|
||||||
|
invalid: '无效'
|
||||||
},
|
},
|
||||||
pblink: {
|
pblink: {
|
||||||
key_pwd: '请输入密码打开链接',
|
key_pwd: '请输入密码打开链接',
|
||||||
|
@ -622,7 +622,7 @@
|
|||||||
/>
|
/>
|
||||||
</el-collapse-item>
|
</el-collapse-item>
|
||||||
<el-collapse-item
|
<el-collapse-item
|
||||||
v-show="view.render && view.render === 'antv' && chart.type !== 'map' && chart.type !== 'waterfall' && chart.type !== 'word-cloud' && chart.type !== 'treemap'"
|
v-show="view.render && view.render === 'antv' && chart.type !== 'map' && chart.type !== 'waterfall' && chart.type !== 'word-cloud' && chart.type !== 'treemap' && chart.type !== 'funnel'"
|
||||||
name="size"
|
name="size"
|
||||||
:title="(chart.type && chart.type.includes('table')) ? $t('chart.table_config') : $t('chart.size')"
|
:title="(chart.type && chart.type.includes('table')) ? $t('chart.table_config') : $t('chart.size')"
|
||||||
>
|
>
|
||||||
|
@ -48,6 +48,18 @@
|
|||||||
<el-table-column prop="name" :label="$t('datasource.data_table_name')" width="150" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="name" :label="$t('datasource.data_table_name')" width="150" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column prop="method" :label="$t('datasource.method')" width="150" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="method" :label="$t('datasource.method')" width="150" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column prop="url" :label="$t('datasource.url')" width="150" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="url" :label="$t('datasource.url')" width="150" show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column prop="status" :label="$t('commons.status')" width="150">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span v-if="scope.row.status === 'Success'" style="color: green">
|
||||||
|
{{ $t('datasource.valid') }}
|
||||||
|
</span>
|
||||||
|
<span v-if="scope.row.status === 'Error'" style="color: red">
|
||||||
|
{{ $t('datasource.invalid') }}
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
|
||||||
<el-table-column :label="$t('dataset.operate')">
|
<el-table-column :label="$t('dataset.operate')">
|
||||||
<template slot-scope="scope" style="float: right">
|
<template slot-scope="scope" style="float: right">
|
||||||
<el-button size="mini" type="primary" icon="el-icon-edit" circle @click="addApiItem(scope.row)"/>
|
<el-button size="mini" type="primary" icon="el-icon-edit" circle @click="addApiItem(scope.row)"/>
|
||||||
@ -409,7 +421,7 @@ export default {
|
|||||||
canEdit: false,
|
canEdit: false,
|
||||||
originConfiguration: {},
|
originConfiguration: {},
|
||||||
edit_api_item: false,
|
edit_api_item: false,
|
||||||
add_api_item: false,
|
add_api_item: true,
|
||||||
active: 0,
|
active: 0,
|
||||||
defaultApiItem: {
|
defaultApiItem: {
|
||||||
name: '',
|
name: '',
|
||||||
@ -426,6 +438,7 @@ export default {
|
|||||||
fields: []
|
fields: []
|
||||||
},
|
},
|
||||||
apiItem: {
|
apiItem: {
|
||||||
|
status: '',
|
||||||
name: '',
|
name: '',
|
||||||
url: '',
|
url: '',
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
@ -571,6 +584,10 @@ export default {
|
|||||||
const method = this.formType === 'add' ? addDs : editDs
|
const method = this.formType === 'add' ? addDs : editDs
|
||||||
const form = JSON.parse(JSON.stringify(this.form))
|
const form = JSON.parse(JSON.stringify(this.form))
|
||||||
if(form.type === 'api'){
|
if(form.type === 'api'){
|
||||||
|
if(this.form.apiConfiguration.length < 1){
|
||||||
|
this.$message.error(i18n.t('datasource.api_table_not_empty'))
|
||||||
|
return
|
||||||
|
}
|
||||||
form.configuration = JSON.stringify(form.apiConfiguration)
|
form.configuration = JSON.stringify(form.apiConfiguration)
|
||||||
}else {
|
}else {
|
||||||
form.configuration = JSON.stringify(form.configuration)
|
form.configuration = JSON.stringify(form.configuration)
|
||||||
@ -655,6 +672,9 @@ export default {
|
|||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.$success(i18n.t('datasource.validate_success'))
|
this.$success(i18n.t('datasource.validate_success'))
|
||||||
} else {
|
} else {
|
||||||
|
if(data.type === 'api') {
|
||||||
|
this.form.apiConfiguration = res.data.apiConfiguration
|
||||||
|
}
|
||||||
if (res.message.length < 2500) {
|
if (res.message.length < 2500) {
|
||||||
this.$error(res.message)
|
this.$error(res.message)
|
||||||
} else {
|
} else {
|
||||||
@ -686,6 +706,25 @@ export default {
|
|||||||
},
|
},
|
||||||
next() {
|
next() {
|
||||||
if(this.active === 1){
|
if(this.active === 1){
|
||||||
|
let hasRepeatName = false
|
||||||
|
if(this.add_api_item){
|
||||||
|
this.form.apiConfiguration.forEach(item => {
|
||||||
|
if(item.name === this.apiItem.name){
|
||||||
|
hasRepeatName = true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}else {
|
||||||
|
let index = this.form.apiConfiguration.indexOf(this.apiItem)
|
||||||
|
for(let i=0; i < this.form.apiConfiguration.length;i++ ){
|
||||||
|
if(i !== index && this.form.apiConfiguration[i].name === this.apiItem.name){
|
||||||
|
hasRepeatName = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(hasRepeatName){
|
||||||
|
this.$message.error(i18n.t('datasource.has_repeat_name'))
|
||||||
|
return
|
||||||
|
}
|
||||||
this.$refs.apiItem.validate(valid => {
|
this.$refs.apiItem.validate(valid => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
const data = JSON.parse(JSON.stringify(this.apiItem))
|
const data = JSON.parse(JSON.stringify(this.apiItem))
|
||||||
@ -693,6 +732,7 @@ export default {
|
|||||||
this.loading = true
|
this.loading = true
|
||||||
checkApiDatasource(data).then(res => {
|
checkApiDatasource(data).then(res => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
|
this.apiItem.status = 'Success'
|
||||||
this.$success(i18n.t('commons.success'))
|
this.$success(i18n.t('commons.success'))
|
||||||
this.active++
|
this.active++
|
||||||
this.apiItem.fields = res.data.fields
|
this.apiItem.fields = res.data.fields
|
||||||
@ -718,17 +758,17 @@ export default {
|
|||||||
saveItem() {
|
saveItem() {
|
||||||
this.active = 0
|
this.active = 0
|
||||||
this.edit_api_item = false
|
this.edit_api_item = false
|
||||||
if(!this.add_api_item){
|
if(this.add_api_item){
|
||||||
this.form.apiConfiguration.push(this.apiItem)
|
this.form.apiConfiguration.push(this.apiItem)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
addApiItem(item) {
|
addApiItem(item) {
|
||||||
if (item) {
|
if (item) {
|
||||||
this.add_api_item = true
|
this.add_api_item = false
|
||||||
this.api_table_title = this.$t('datasource.edit_api_table')
|
this.api_table_title = this.$t('datasource.edit_api_table')
|
||||||
this.apiItem = item
|
this.apiItem = item
|
||||||
}else {
|
}else {
|
||||||
this.add_api_item = false
|
this.add_api_item = true
|
||||||
this.apiItem = JSON.parse(JSON.stringify(this.defaultApiItem))
|
this.apiItem = JSON.parse(JSON.stringify(this.defaultApiItem))
|
||||||
this.api_table_title = this.$t('datasource.add_api_table')
|
this.api_table_title = this.$t('datasource.add_api_table')
|
||||||
}
|
}
|
||||||
@ -738,21 +778,6 @@ export default {
|
|||||||
deleteItem(item) {
|
deleteItem(item) {
|
||||||
this.form.apiConfiguration.splice(this.form.apiConfiguration.indexOf(item), 1)
|
this.form.apiConfiguration.splice(this.form.apiConfiguration.indexOf(item), 1)
|
||||||
},
|
},
|
||||||
runDebug() {
|
|
||||||
this.$refs['debugForm'].validate((valid) => {
|
|
||||||
if (valid) {
|
|
||||||
this.loading = true;
|
|
||||||
this.isStop = true;
|
|
||||||
this.request.url = this.debugForm.url;
|
|
||||||
this.request.method = this.debugForm.method;
|
|
||||||
this.request.name = getUUID().substring(0, 8);
|
|
||||||
this.runData = [];
|
|
||||||
this.runData.push(this.request);
|
|
||||||
/*触发执行操作*/
|
|
||||||
this.reportId = getUUID().substring(0, 8);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
validateApi(item) {
|
validateApi(item) {
|
||||||
if(undefined){
|
if(undefined){
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user