Commit 81b376804b05143762a8d4ea24b8aeb55720a590

Authored by 杨鸣坤
1 parent a4f07b37

添加数据库链接信息配置

... ... @@ -386,3 +386,115 @@ CREATE TABLE "public"."qg_preserve_detail_status" (
386 386 );
387 387
388 388 COMMENT ON TABLE "public"."qg_preserve_detail_status" IS '保养记录明细状态';
  389 +
  390 +CREATE TABLE "qg_db_connect" (
  391 + "id" varchar(36) PRIMARY KEY,
  392 + "name" varchar(50) NOT NULL,
  393 + "type" varchar(20) NOT NULL,
  394 + "ip" varchar(20) NOT NULL,
  395 + "port" varchar(20) NOT NULL,
  396 + "db_name" varchar(50) NOT NULL,
  397 + "user_name" varchar(50) NOT NULL,
  398 + "password" varchar(50) NOT NULL,
  399 + "url" varchar(200) NOT NULL,
  400 + "open_ssh" bool NOT NULL DEFAULT false,
  401 + "open_ssl" bool NOT NULL DEFAULT false,
  402 + "max_pool_size" int4 DEFAULT 50,
  403 + "min_idle" int4 DEFAULT 0,
  404 + "connect_test_query" varchar(200),
  405 + "connect_timeout" int4 DEFAULT 30000,
  406 + "tenant_id" varchar(36),
  407 + "create_time" timestamp(6),
  408 + "creator" varchar(36) NULL,
  409 + "updater" varchar(36) NULL,
  410 + "update_time" timestamp(6)
  411 +);
  412 +COMMENT ON TABLE qg_db_connect IS '数据库链接信息';
  413 +COMMENT ON COLUMN qg_db_connect.tenant_id IS '租户ID';
  414 +COMMENT ON COLUMN qg_db_connect.name IS '自定义数据库名称';
  415 +COMMENT ON COLUMN qg_db_connect.type IS '数据库类型';
  416 +COMMENT ON COLUMN qg_db_connect.ip IS '主机ip';
  417 +COMMENT ON COLUMN qg_db_connect.port IS '端口号';
  418 +COMMENT ON COLUMN qg_db_connect.db_name IS '数据库名称';
  419 +COMMENT ON COLUMN qg_db_connect.user_name IS '用户名';
  420 +COMMENT ON COLUMN qg_db_connect.password IS '密码';
  421 +COMMENT ON COLUMN qg_db_connect.url IS 'url';
  422 +COMMENT ON COLUMN qg_db_connect.open_ssh IS '是否启用ssh,默认false';
  423 +COMMENT ON COLUMN qg_db_connect.open_ssl IS '是否启用ssl,默认false';
  424 +COMMENT ON COLUMN qg_db_connect.max_pool_size IS '最大活动链接数,默认50';
  425 +COMMENT ON COLUMN qg_db_connect.min_idle IS '最小空闲连接数,默认0';
  426 +COMMENT ON COLUMN qg_db_connect.connect_test_query IS '链接校验语句,默认为:SELECT 1';
  427 +COMMENT ON COLUMN qg_db_connect.connect_timeout IS '最大等待时间(毫秒),默认为:30000毫秒';
  428 +
  429 +CREATE TABLE "qg_db_connect_ssh" (
  430 + "id" varchar(36) PRIMARY KEY,
  431 + "connect_id" varchar(36) NOT NULL,
  432 + "ip" varchar(20) NOT NULL,
  433 + "port" varchar(20) NOT NULL,
  434 + "ssh_name" varchar(50) NOT NULL,
  435 + "ssh_password" varchar(50) NOT NULL,
  436 + "verify_method" varchar(200) NOT NULL,
  437 + "private_key" varchar(200) NOT NULL,
  438 + "tenant_id" varchar(36),
  439 + "create_time" timestamp(6),
  440 + "creator" varchar(36) NULL,
  441 + "updater" varchar(36) NULL,
  442 + "update_time" timestamp(6)
  443 +);
  444 +COMMENT ON TABLE qg_db_connect_ssh IS 'SSH通道配置信息';
  445 +COMMENT ON COLUMN qg_db_connect.tenant_id IS '租户ID';
  446 +COMMENT ON COLUMN qg_db_connect.connect_id IS '数据库链接信息id';
  447 +COMMENT ON COLUMN qg_db_connect_ssh.ip IS 'ssh的ip';
  448 +COMMENT ON COLUMN qg_db_connect_ssh.port IS 'ssh的port';
  449 +COMMENT ON COLUMN qg_db_connect_ssh.ssh_name IS '用户名';
  450 +COMMENT ON COLUMN qg_db_connect_ssh.ssh_password IS '租户ID';
  451 +COMMENT ON COLUMN qg_db_connect_ssh.ssh_password IS '密码/密码短语';
  452 +COMMENT ON COLUMN qg_db_connect_ssh.verify_method IS '验证方式(PASSWORD:密码;PUBLIC_KEY)';
  453 +COMMENT ON COLUMN qg_db_connect_ssh.private_key IS '私钥文件';
  454 +
  455 +CREATE TABLE "qg_db_connect_ssl" (
  456 + "id" varchar(36) PRIMARY KEY,
  457 + "connect_id" varchar(36) NOT NULL,
  458 + "ip" varchar(20) NOT NULL,
  459 + "port" varchar(20) NOT NULL,
  460 + "ssh_name" varchar(50) NOT NULL,
  461 + "ssh_password" varchar(50) NOT NULL,
  462 + "verify_method" varchar(200) NOT NULL,
  463 + "private_key" varchar(200) NOT NULL,
  464 + "tenant_id" varchar(36),
  465 + "create_time" timestamp(6),
  466 + "creator" varchar(36) NULL,
  467 + "updater" varchar(36) NULL,
  468 + "update_time" timestamp(6)
  469 +);
  470 +COMMENT ON TABLE qg_db_connect IS 'SSH通道配置信息';
  471 +COMMENT ON COLUMN qg_db_connect.tenant_id IS '租户ID';
  472 +COMMENT ON COLUMN qg_db_connect.connect_id IS '数据库链接信息id';
  473 +COMMENT ON COLUMN qg_db_connect.ip IS 'ssh的ip';
  474 +COMMENT ON COLUMN qg_db_connect.port IS 'ssh的port';
  475 +COMMENT ON COLUMN qg_db_connect.ssh_name IS '用户名';
  476 +COMMENT ON COLUMN qg_db_connect.ssh_password IS '租户ID';
  477 +COMMENT ON COLUMN qg_db_connect.ssh_password IS '密码/密码短语';
  478 +COMMENT ON COLUMN qg_db_connect.verify_method IS '验证方式(PASSWORD:密码;PUBLIC_KEY)';
  479 +COMMENT ON COLUMN qg_db_connect.private_key IS '私钥文件';
  480 +
  481 +CREATE TABLE "qg_db_connect_ssl" (
  482 + "id" varchar(36) PRIMARY KEY,
  483 + "connect_id" varchar(36) NOT NULL,
  484 + "ca_cert" varchar(50) NOT NULL,
  485 + "verify_ca_cert" bool NOT NULL DEFAULT FALSE,
  486 + "client_key" varchar(50) NOT NULL,
  487 + "client_cert" varchar(50) NOT NULL,
  488 + "tenant_id" varchar(36),
  489 + "create_time" timestamp(6),
  490 + "creator" varchar(36) NULL,
  491 + "updater" varchar(36) NULL,
  492 + "update_time" timestamp(6)
  493 +);
  494 +COMMENT ON TABLE qg_db_connect_ssl IS 'SSL通道配置信息';
  495 +COMMENT ON COLUMN qg_db_connect_ssl.tenant_id IS '租户ID';
  496 +COMMENT ON COLUMN qg_db_connect_ssl.connect_id IS '数据库链接信息id';
  497 +COMMENT ON COLUMN qg_db_connect_ssl.ca_cert IS 'CA证书';
  498 +COMMENT ON COLUMN qg_db_connect_ssl.verify_ca_cert IS '验证CA证书';
  499 +COMMENT ON COLUMN qg_db_connect_ssl.client_key IS '客户端秘钥';
  500 +COMMENT ON COLUMN qg_db_connect_ssl.client_cert IS '客户端证书';
... ...
... ... @@ -1133,4 +1133,57 @@ CREATE TABLE IF NOT EXISTS qg_preserve_detail_status (
1133 1133 "updater" varchar(36),
1134 1134 "update_time" timestamp(6),
1135 1135 CONSTRAINT "qg_preserve_detail_status_pkey" PRIMARY KEY ("id")
  1136 +);
  1137 +
  1138 +CREATE TABLE IF NOT EXISTS qg_db_connect (
  1139 + "id" varchar(36) PRIMARY KEY,
  1140 + "name" varchar(50) NOT NULL,
  1141 + "type" varchar(20) NOT NULL,
  1142 + "ip" varchar(20) NOT NULL,
  1143 + "port" varchar(20) NOT NULL,
  1144 + "db_name" varchar(50) NOT NULL,
  1145 + "user_name" varchar(50) NOT NULL,
  1146 + "password" varchar(50) NOT NULL,
  1147 + "url" varchar(200) NOT NULL,
  1148 + "open_ssh" bool NOT NULL DEFAULT false,
  1149 + "open_ssl" bool NOT NULL DEFAULT false,
  1150 + "max_pool_size" int4 DEFAULT 50,
  1151 + "min_idle" int4 DEFAULT 0,
  1152 + "connect_test_query" varchar(200),
  1153 + "connect_timeout" int4 DEFAULT 30000,
  1154 + "tenant_id" varchar(36),
  1155 + "create_time" timestamp(6),
  1156 + "creator" varchar(36) NULL,
  1157 + "updater" varchar(36) NULL,
  1158 + "update_time" timestamp(6)
  1159 +);
  1160 +
  1161 +CREATE TABLE IF NOT EXISTS qg_db_connect_ssl (
  1162 + "id" varchar(36) PRIMARY KEY,
  1163 + "connect_id" varchar(36) NOT NULL,
  1164 + "ip" varchar(20) NOT NULL,
  1165 + "port" varchar(20) NOT NULL,
  1166 + "ssh_name" varchar(50) NOT NULL,
  1167 + "ssh_password" varchar(50) NOT NULL,
  1168 + "verify_method" varchar(200) NOT NULL,
  1169 + "private_key" varchar(200) NOT NULL,
  1170 + "tenant_id" varchar(36),
  1171 + "create_time" timestamp(6),
  1172 + "creator" varchar(36) NULL,
  1173 + "updater" varchar(36) NULL,
  1174 + "update_time" timestamp(6)
  1175 +);
  1176 +
  1177 +CREATE TABLE IF NOT EXISTS qg_db_connect_ssl (
  1178 + "id" varchar(36) PRIMARY KEY,
  1179 + "connect_id" varchar(36) NOT NULL,
  1180 + "ca_cert" varchar(50) NOT NULL,
  1181 + "verify_ca_cert" bool NOT NULL DEFAULT FALSE,
  1182 + "client_key" varchar(50) NOT NULL,
  1183 + "client_cert" varchar(50) NOT NULL,
  1184 + "tenant_id" varchar(36),
  1185 + "create_time" timestamp(6),
  1186 + "creator" varchar(36) NULL,
  1187 + "updater" varchar(36) NULL,
  1188 + "update_time" timestamp(6)
1136 1189 );
\ No newline at end of file
... ...
  1 +package org.thingsboard.server.controller.yunteng;
  2 +
  3 +import io.swagger.annotations.Api;
  4 +import io.swagger.annotations.ApiOperation;
  5 +import lombok.RequiredArgsConstructor;
  6 +import lombok.extern.slf4j.Slf4j;
  7 +import org.apache.commons.lang3.StringUtils;
  8 +import org.springframework.http.ResponseEntity;
  9 +import org.springframework.security.access.prepost.PreAuthorize;
  10 +import org.springframework.web.bind.annotation.*;
  11 +import org.thingsboard.server.common.data.exception.ThingsboardException;
  12 +import org.thingsboard.server.common.data.yunteng.dto.TkDbConnectDTO;
  13 +import org.thingsboard.server.common.data.yunteng.enums.DbConnectTypeEnum;
  14 +import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
  15 +import org.thingsboard.server.controller.BaseController;
  16 +import org.thingsboard.server.dao.yunteng.service.TkDbConnectService;
  17 +import org.thingsboard.server.queue.util.TbCoreComponent;
  18 +
  19 +import java.util.HashMap;
  20 +import java.util.Map;
  21 +
  22 +import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.PAGE;
  23 +import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.PAGE_SIZE;
  24 +
  25 +
  26 +@RestController
  27 +@TbCoreComponent
  28 +@RequiredArgsConstructor
  29 +@RequestMapping("api/yt/dbConnect")
  30 +@Api(tags = {"数据库链接信息"})
  31 +@Slf4j
  32 +public class TkDbConnectController extends BaseController {
  33 + private final TkDbConnectService tkDbConnectService;
  34 +
  35 + @GetMapping(params = {PAGE_SIZE, PAGE})
  36 + @ApiOperation("分页查询")
  37 + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
  38 + public TkPageData<TkDbConnectDTO> page(
  39 + @RequestParam(PAGE_SIZE) int pageSize,
  40 + @RequestParam(PAGE) int page,
  41 + @RequestParam(value = "name", required = false) String name,
  42 + @RequestParam(value = "type", required = false) DbConnectTypeEnum type
  43 + ) throws ThingsboardException {
  44 + Map<String, Object> queryMap = new HashMap<>();
  45 + queryMap.put(PAGE_SIZE, pageSize);
  46 + queryMap.put(PAGE, page);
  47 + if (StringUtils.isNotBlank(name)) {
  48 + queryMap.put("name", name);
  49 + }
  50 +
  51 + if (type != null) {
  52 + queryMap.put("type", type);
  53 + }
  54 +
  55 + return tkDbConnectService.page(queryMap, getCurrentUser().getCurrentTenantId());
  56 + }
  57 +
  58 + @PostMapping("/save")
  59 + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
  60 + public ResponseEntity<TkDbConnectDTO> save(@RequestBody TkDbConnectDTO tkDbConnectDTO) throws ThingsboardException {
  61 + tkDbConnectDTO.setTenantId(getCurrentUser().getCurrentTenantId());
  62 + TkDbConnectDTO dto = tkDbConnectService.save(tkDbConnectDTO);
  63 + return ResponseEntity.ok(dto);
  64 + }
  65 +
  66 + @GetMapping("/delete")
  67 + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
  68 + public ResponseEntity<Boolean> delete(@RequestParam("id") String id) throws ThingsboardException {
  69 + return ResponseEntity.ok(tkDbConnectService.delete(id));
  70 + }
  71 +
  72 + @GetMapping("/get")
  73 + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
  74 + public ResponseEntity<TkDbConnectDTO> get(@RequestParam("id") String id) throws ThingsboardException {
  75 + return ResponseEntity.ok(tkDbConnectService.get(id));
  76 + }
  77 +}
... ...
  1 +package org.thingsboard.server.common.data.yunteng.dto;
  2 +
  3 +import io.swagger.annotations.ApiModelProperty;
  4 +import lombok.Data;
  5 +import lombok.EqualsAndHashCode;
  6 +import org.thingsboard.server.common.data.yunteng.enums.DbConnectTypeEnum;
  7 +
  8 +/**
  9 + * 数据库链接信息
  10 + */
  11 +@EqualsAndHashCode(callSuper = true)
  12 +@Data
  13 +public class TkDbConnectDTO extends TenantDTO {
  14 +
  15 + @ApiModelProperty("自定义数据库名称")
  16 + private String name;
  17 +
  18 + @ApiModelProperty("数据库类型")
  19 + private DbConnectTypeEnum type;
  20 +
  21 + @ApiModelProperty("主机ip")
  22 + private String ip;
  23 +
  24 + @ApiModelProperty("端口号")
  25 + private String port;
  26 +
  27 + @ApiModelProperty("数据库名称")
  28 + private String dbName;
  29 +
  30 + @ApiModelProperty("用户名")
  31 + private String userName;
  32 +
  33 + @ApiModelProperty("密码")
  34 + private String password;
  35 +
  36 + @ApiModelProperty("url")
  37 + private String url;
  38 +
  39 + @ApiModelProperty("是否启用ssh")
  40 + private boolean openSsh;
  41 +
  42 + @ApiModelProperty("是否启用ssl")
  43 + private boolean openSsl;
  44 +
  45 + @ApiModelProperty("最大活动链接数")
  46 + private int maxPoolSize;
  47 +
  48 + @ApiModelProperty("最小空闲连接数")
  49 + private int minIdle;
  50 +
  51 + @ApiModelProperty("链接校验语句")
  52 + private String connectTestQuery;
  53 +
  54 + @ApiModelProperty("最大等待时间(毫秒)")
  55 + private int connectTimeout;
  56 +}
... ...
  1 +package org.thingsboard.server.common.data.yunteng.enums;
  2 +
  3 +public enum DbConnectTypeEnum {
  4 + MySql,
  5 + Postgresql,
  6 + Oracle,
  7 + SQLServer
  8 +}
... ...
... ... @@ -695,6 +695,8 @@ public class ModelConstants {
695 695 public static final String TKINSPECTIONRECORD_TABLE_NAME= "qg_inspection_record"; // 巡检记录
696 696 public static final String TKINSPECTIONDETAILS_TABLE_NAME= "qg_inspection_details"; // 巡检记录明细
697 697
  698 + public static final String TKDBCONNECT_TABLE_NAME= "qg_db_connect"; // 数据库链接信息
  699 +
698 700 protected static final String[] NONE_AGGREGATION_COLUMNS = new String[]{LONG_VALUE_COLUMN, DOUBLE_VALUE_COLUMN, BOOLEAN_VALUE_COLUMN, STRING_VALUE_COLUMN, JSON_VALUE_COLUMN, KEY_COLUMN, TS_COLUMN};
699 701
700 702 protected static final String[] COUNT_AGGREGATION_COLUMNS = new String[]{count(LONG_VALUE_COLUMN), count(DOUBLE_VALUE_COLUMN), count(BOOLEAN_VALUE_COLUMN), count(STRING_VALUE_COLUMN), count(JSON_VALUE_COLUMN), max(TS_COLUMN)};
... ...
  1 +package org.thingsboard.server.dao.yunteng.entities;
  2 +
  3 +import com.baomidou.mybatisplus.annotation.TableName;
  4 +import lombok.Data;
  5 +import lombok.EqualsAndHashCode;
  6 +import org.thingsboard.server.common.data.yunteng.enums.DbConnectTypeEnum;
  7 +import org.thingsboard.server.dao.model.ModelConstants;
  8 +
  9 +/**
  10 + * 数据库链接信息
  11 + */
  12 +@Data
  13 +@EqualsAndHashCode(callSuper = true)
  14 +@TableName(value = ModelConstants.TKDBCONNECT_TABLE_NAME, autoResultMap = true)
  15 +public class TkDbConnectEntity extends TenantBaseEntity {
  16 +
  17 + private String name;
  18 +
  19 + private DbConnectTypeEnum type;
  20 +
  21 + private String ip;
  22 +
  23 + private String port;
  24 +
  25 + private String dbName;
  26 +
  27 + private String userName;
  28 +
  29 + private String password;
  30 +
  31 + private String url;
  32 +
  33 + private boolean openSsh;
  34 +
  35 + private boolean openSsl;
  36 +
  37 + private int maxPoolSize;
  38 +
  39 + private int minIdle;
  40 +
  41 + private String connectTestQuery;
  42 +
  43 + private int connectTimeout;
  44 +}
... ...
  1 +package org.thingsboard.server.dao.yunteng.impl;
  2 +
  3 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4 +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5 +import com.baomidou.mybatisplus.core.metadata.IPage;
  6 +import lombok.RequiredArgsConstructor;
  7 +import lombok.extern.slf4j.Slf4j;
  8 +import org.apache.commons.lang3.StringUtils;
  9 +import org.springframework.stereotype.Service;
  10 +import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException;
  11 +import org.thingsboard.server.common.data.yunteng.dto.TkDbConnectDTO;
  12 +import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
  13 +import org.thingsboard.server.dao.yunteng.entities.TkDbConnectEntity;
  14 +import org.thingsboard.server.dao.yunteng.mapper.TkDbConnectMapper;
  15 +import org.thingsboard.server.dao.yunteng.service.AbstractBaseService;
  16 +import org.thingsboard.server.dao.yunteng.service.TkDbConnectService;
  17 +
  18 +import java.util.Map;
  19 +
  20 +@Service
  21 +@RequiredArgsConstructor
  22 +@Slf4j
  23 +public class TkDbConnectServiceImpl extends AbstractBaseService<TkDbConnectMapper, TkDbConnectEntity>
  24 + implements TkDbConnectService {
  25 +
  26 + @Override
  27 + public TkPageData<TkDbConnectDTO> page(Map<String, Object> queryMap, String tenantId) {
  28 + QueryWrapper<TkDbConnectEntity> wrapper = new QueryWrapper<>();
  29 + LambdaQueryWrapper<TkDbConnectEntity> lambda = wrapper.lambda();
  30 + lambda.eq(TkDbConnectEntity::getTenantId, tenantId);
  31 + if (queryMap != null && queryMap.get("name") != null) {
  32 + lambda.like(TkDbConnectEntity::getName, queryMap.get("name").toString());
  33 + }
  34 +
  35 + if (queryMap != null && queryMap.get("type") != null) {
  36 + lambda.eq(TkDbConnectEntity::getType, queryMap.get("type").toString());
  37 + }
  38 +
  39 + IPage<TkDbConnectEntity> page = baseMapper.selectPage(getPage(queryMap, "create_time", false),
  40 + wrapper);
  41 +
  42 + return getPageData(page, TkDbConnectDTO.class);
  43 + }
  44 +
  45 + @Override
  46 + public TkDbConnectDTO save(TkDbConnectDTO tkDbConnectDTO) {
  47 + checkDto(tkDbConnectDTO);
  48 + TkDbConnectEntity entity = new TkDbConnectEntity();
  49 + if (StringUtils.isBlank(tkDbConnectDTO.getId())) {
  50 + tkDbConnectDTO.copyToEntity(entity);
  51 + baseMapper.insert(entity);
  52 + } else {
  53 + LambdaQueryWrapper<TkDbConnectEntity> filter = new QueryWrapper<TkDbConnectEntity>().lambda()
  54 + .eq(TkDbConnectEntity::getId, tkDbConnectDTO.getId());
  55 + entity = tkDbConnectDTO.getEntity(TkDbConnectEntity.class);
  56 + baseMapper.update(entity, filter);
  57 + }
  58 +
  59 + entity.copyToDTO(tkDbConnectDTO);
  60 + return tkDbConnectDTO;
  61 + }
  62 +
  63 + private void checkDto(TkDbConnectDTO dto) {
  64 + if (StringUtils.isBlank(dto.getTenantId())) {
  65 + throw new TkDataValidationException("租户id为空!");
  66 + }
  67 + }
  68 +
  69 + @Override
  70 + public boolean delete(String id) {
  71 + int count = baseMapper.deleteById(id);
  72 + return count > 0;
  73 + }
  74 +
  75 + @Override
  76 + public TkDbConnectDTO get(String id) {
  77 + if (StringUtils.isBlank(id)) {
  78 + return new TkDbConnectDTO();
  79 + }
  80 +
  81 + TkDbConnectEntity entity = baseMapper.selectById(id);
  82 + TkDbConnectDTO tkDbConnectDTO = new TkDbConnectDTO();
  83 + entity.copyToDTO(tkDbConnectDTO);
  84 + return tkDbConnectDTO;
  85 + }
  86 +}
... ...
  1 +package org.thingsboard.server.dao.yunteng.mapper;
  2 +
  3 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  4 +import org.apache.ibatis.annotations.Mapper;
  5 +import org.thingsboard.server.dao.yunteng.entities.TkDbConnectEntity;
  6 +
  7 +@Mapper
  8 +public interface TkDbConnectMapper extends BaseMapper<TkDbConnectEntity> {
  9 +}
... ...
  1 +package org.thingsboard.server.dao.yunteng.service;
  2 +
  3 +import org.thingsboard.server.common.data.yunteng.dto.TkDbConnectDTO;
  4 +import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
  5 +import org.thingsboard.server.dao.yunteng.entities.TkDbConnectEntity;
  6 +
  7 +import java.util.Map;
  8 +
  9 +public interface TkDbConnectService extends BaseService<TkDbConnectEntity> {
  10 +
  11 + TkPageData<TkDbConnectDTO> page(Map<String, Object> queryMap, String tenantId);
  12 +
  13 + TkDbConnectDTO save(TkDbConnectDTO tkDbConnectDTO);
  14 +
  15 + boolean delete(String id);
  16 +
  17 + TkDbConnectDTO get(String id);
  18 +}
... ...