API数据表更新

This commit is contained in:
2025-08-27 00:01:42 +08:00
parent 98672e9c0f
commit cb1b6f9349
16 changed files with 478 additions and 1 deletions

View File

@@ -0,0 +1,18 @@
package com.mini.capi.biz.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 前端控制器
* </p>
*
* @author gaoxq
* @since 2025-08-26
*/
@RestController
@RequestMapping("/biz/dbConfig")
public class DbConfigController {
}

View File

@@ -0,0 +1,18 @@
package com.mini.capi.biz.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 前端控制器
* </p>
*
* @author gaoxq
* @since 2025-08-26
*/
@RestController
@RequestMapping("/biz/syncTask")
public class SyncTaskController {
}

View File

@@ -0,0 +1,94 @@
package com.mini.capi.biz.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
*
* </p>
*
* @author gaoxq
* @since 2025-08-26
*/
@Getter
@Setter
@TableName("biz_db_config")
public class DbConfig implements Serializable {
private static final long serialVersionUID = 1L;
@TableField("create_time")
private LocalDateTime createTime;
@TableId(value = "db_id", type = IdType.AUTO)
private String dbId;
@TableField("db_type")
private String dbType;
@TableField("db_name")
private String dbName;
@TableField("host")
private String host;
@TableField("port")
private Integer port;
@TableField("username")
private String username;
@TableField("password")
private String password;
@TableField("driver_class")
private String driverClass;
@TableField("url_template")
private String urlTemplate;
@TableField("is_active")
private Boolean isActive;
@TableField("update_time")
private LocalDateTime updateTime;
/**
* 租户id
*/
@TableField("f_tenant_id")
private String fTenantId;
/**
* 流程id
*/
@TableField("f_flow_id")
private String fFlowId;
/**
* 流程任务主键
*/
@TableField("f_flow_task_id")
private String fFlowTaskId;
/**
* 流程任务状态
*/
@TableField("f_flow_state")
private Integer fFlowState;
// 生成数据库连接URL
public String getJdbcUrl() {
return urlTemplate.replace("{host}", host)
.replace("{port}", port.toString())
.replace("{dbName}", dbName);
}
}

View File

@@ -0,0 +1,89 @@
package com.mini.capi.biz.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
*
* </p>
*
* @author gaoxq
* @since 2025-08-26
*/
@Getter
@Setter
@TableName("biz_sync_task")
public class SyncTask implements Serializable {
private static final long serialVersionUID = 1L;
@TableField("create_time")
private LocalDateTime createTime;
@TableId(value = "task_id", type = IdType.AUTO)
private String taskId;
@TableField("task_name")
private String taskName;
@TableField("source_db_id")
private String sourceDbId;
@TableField("target_db_id")
private String targetDbId;
@TableField("source_table")
private String sourceTable;
@TableField("target_table")
private String targetTable;
@TableField("sync_type")
private String syncType;
@TableField("increment_column")
private String incrementColumn;
@TableField("cron_expression")
private String cronExpression;
@TableField("is_active")
private Boolean isActive;
@TableField("last_sync_time")
private LocalDateTime lastSyncTime;
@TableField("update_time")
private LocalDateTime updateTime;
/**
* 租户id
*/
@TableField("f_tenant_id")
private String fTenantId;
/**
* 流程id
*/
@TableField("f_flow_id")
private String fFlowId;
/**
* 流程任务主键
*/
@TableField("f_flow_task_id")
private String fFlowTaskId;
/**
* 流程任务状态
*/
@TableField("f_flow_state")
private Integer fFlowState;
}

View File

@@ -0,0 +1,16 @@
package com.mini.capi.biz.mapper;
import com.mini.capi.biz.domain.DbConfig;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author gaoxq
* @since 2025-08-26
*/
public interface DbConfigMapper extends BaseMapper<DbConfig> {
}

View File

@@ -0,0 +1,16 @@
package com.mini.capi.biz.mapper;
import com.mini.capi.biz.domain.SyncTask;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author gaoxq
* @since 2025-08-26
*/
public interface SyncTaskMapper extends BaseMapper<SyncTask> {
}

View File

@@ -0,0 +1,16 @@
package com.mini.capi.biz.service;
import com.mini.capi.biz.domain.DbConfig;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 服务类
* </p>
*
* @author gaoxq
* @since 2025-08-26
*/
public interface DbConfigService extends IService<DbConfig> {
}

View File

@@ -0,0 +1,16 @@
package com.mini.capi.biz.service;
import com.mini.capi.biz.domain.SyncTask;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 服务类
* </p>
*
* @author gaoxq
* @since 2025-08-26
*/
public interface SyncTaskService extends IService<SyncTask> {
}

View File

@@ -0,0 +1,20 @@
package com.mini.capi.biz.service.impl;
import com.mini.capi.biz.domain.DbConfig;
import com.mini.capi.biz.mapper.DbConfigMapper;
import com.mini.capi.biz.service.DbConfigService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author gaoxq
* @since 2025-08-26
*/
@Service
public class DbConfigServiceImpl extends ServiceImpl<DbConfigMapper, DbConfig> implements DbConfigService {
}

View File

@@ -0,0 +1,20 @@
package com.mini.capi.biz.service.impl;
import com.mini.capi.biz.domain.SyncTask;
import com.mini.capi.biz.mapper.SyncTaskMapper;
import com.mini.capi.biz.service.SyncTaskService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author gaoxq
* @since 2025-08-26
*/
@Service
public class SyncTaskServiceImpl extends ServiceImpl<SyncTaskMapper, SyncTask> implements SyncTaskService {
}

View File

@@ -0,0 +1,23 @@
package com.mini.capi.config;
import com.mini.capi.biz.domain.DbConfig;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import javax.sql.DataSource;
public class DataSourceConfig {
public static DataSource createDataSource(DbConfig dbConfig) {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(dbConfig.getDriverClass());
dataSource.setUrl(dbConfig.getJdbcUrl());
dataSource.setUsername(dbConfig.getUsername());
dataSource.setPassword(dbConfig.getPassword());
return dataSource;
}
public static JdbcTemplate createJdbcTemplate(DbConfig dbConfig) {
return new JdbcTemplate(createDataSource(dbConfig));
}
}

View File

@@ -0,0 +1,64 @@
package com.mini.capi.job;
import com.mini.capi.biz.domain.DbConfig;
import com.mini.capi.biz.domain.SyncTask;
import com.mini.capi.biz.service.DbConfigService;
import com.mini.capi.biz.service.SyncTaskService;
import com.mini.capi.config.DataSourceConfig;
import com.mini.capi.model.ApiResult;
import com.mini.capi.utils.vToken;
import jakarta.annotation.Resource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List;
@RestController
@RequestMapping("/Sys/dbs")
public class taskDbSync {
@Resource
private SyncTaskService syncTaskService;
@Resource
private DbConfigService dbConfigService;
private static final int BATCH_SIZE = 1000;
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");
@GetMapping("/getTaskSyncDbInfo")
public ApiResult<?> jobSyncTask(String token) {
if (vToken.isValidToken(token)) {
String dsValue = LocalDate.now().format(DATE_FORMATTER);
List<SyncTask> syncTasks = syncTaskService.list();
for (SyncTask task : syncTasks) {
DbConfig sourceDbConfig = dbConfigService.getById(task.getSourceDbId());
DbConfig targetDbConfig = dbConfigService.getById(task.getTargetDbId());
JdbcTemplate sourceJdbc = DataSourceConfig.createJdbcTemplate(sourceDbConfig);
JdbcTemplate targetJdbc = DataSourceConfig.createJdbcTemplate(targetDbConfig);
}
return ApiResult.success();
}
return ApiResult.error();
}
}

View File

@@ -29,7 +29,7 @@ public class demo {
.pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "/src/main/resources/mapper"));
})
.strategyConfig(builder -> {
builder.addInclude("biz_municipalities,biz_api_doc,biz_api_param")
builder.addInclude("biz_sync_task,biz_db_config")
.addTablePrefix("biz_")
.entityBuilder()
.enableLombok()

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mini.capi.biz.mapper.DbConfigMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.mini.capi.biz.domain.DbConfig">
<id column="db_id" property="dbId" />
<result column="create_time" property="createTime" />
<result column="db_type" property="dbType" />
<result column="db_name" property="dbName" />
<result column="host" property="host" />
<result column="port" property="port" />
<result column="username" property="username" />
<result column="password" property="password" />
<result column="driver_class" property="driverClass" />
<result column="url_template" property="urlTemplate" />
<result column="is_active" property="isActive" />
<result column="update_time" property="updateTime" />
<result column="f_tenant_id" property="fTenantId" />
<result column="f_flow_id" property="fFlowId" />
<result column="f_flow_task_id" property="fFlowTaskId" />
<result column="f_flow_state" property="fFlowState" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
create_time, db_id, db_type, db_name, host, port, username, password, driver_class, url_template, is_active, update_time, f_tenant_id, f_flow_id, f_flow_task_id, f_flow_state
</sql>
</mapper>

View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mini.capi.biz.mapper.SyncTaskMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.mini.capi.biz.domain.SyncTask">
<id column="task_id" property="taskId" />
<result column="create_time" property="createTime" />
<result column="task_name" property="taskName" />
<result column="source_db_id" property="sourceDbId" />
<result column="target_db_id" property="targetDbId" />
<result column="source_table" property="sourceTable" />
<result column="target_table" property="targetTable" />
<result column="sync_type" property="syncType" />
<result column="increment_column" property="incrementColumn" />
<result column="cron_expression" property="cronExpression" />
<result column="is_active" property="isActive" />
<result column="last_sync_time" property="lastSyncTime" />
<result column="update_time" property="updateTime" />
<result column="f_tenant_id" property="fTenantId" />
<result column="f_flow_id" property="fFlowId" />
<result column="f_flow_task_id" property="fFlowTaskId" />
<result column="f_flow_state" property="fFlowState" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
create_time, task_id, task_name, source_db_id, target_db_id, source_table, target_table, sync_type, increment_column, cron_expression, is_active, last_sync_time, update_time, f_tenant_id, f_flow_id, f_flow_task_id, f_flow_state
</sql>
</mapper>