|
|
@@ -8,6 +8,7 @@ using Vo.Admin;
|
|
|
using Dto.Admin;
|
|
|
using Custom;
|
|
|
using Common;
|
|
|
+using Infrastructure;
|
|
|
|
|
|
|
|
|
namespace Services
|
|
|
@@ -18,6 +19,17 @@ namespace Services
|
|
|
[AppService(ServiceType = typeof(IDatabaseInfoService), ServiceLifetime = LifeTime.Transient)]
|
|
|
public class DatabaseInfoService : BaseService<DatabaseInfo>, IDatabaseInfoService
|
|
|
{
|
|
|
+ private readonly IDatabaseTableService _DatabaseTableService;
|
|
|
+ private readonly IDatabaseFieldService _DatabaseFieldService;
|
|
|
+ private readonly IDatabaseFieldTabsService _DatabaseFieldTabsService;
|
|
|
+
|
|
|
+ public DatabaseInfoService(IDatabaseTableService DatabaseTableService, IDatabaseFieldService DatabaseFieldService, IDatabaseFieldTabsService DatabaseFieldTabsService)
|
|
|
+ {
|
|
|
+ _DatabaseTableService = DatabaseTableService;
|
|
|
+ _DatabaseFieldService = DatabaseFieldService;
|
|
|
+ _DatabaseFieldTabsService = DatabaseFieldTabsService;
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 数据库配置-列表
|
|
|
/// </summary>
|
|
|
@@ -88,6 +100,140 @@ namespace Services
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 克隆已有库
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="param">参数请求体</param>
|
|
|
+ /// <returns>克隆已有库</returns>
|
|
|
+ public void copyDatabaseInfo([FromBody] CopyDatabaseInfoDto param)
|
|
|
+ {
|
|
|
+ List<int> dbIdList = param.sourceDatabaseIdList.ToList();
|
|
|
+ var sourceDatabaseInfos = GetList(m => dbIdList.Contains(m.id));
|
|
|
+ if(sourceDatabaseInfos.Count > 0)
|
|
|
+ {
|
|
|
+ foreach(DatabaseInfo sourceDatabaseInfo in sourceDatabaseInfos)
|
|
|
+ {
|
|
|
+ DatabaseInfo newDatabaseInfo = new DatabaseInfo();
|
|
|
+ newDatabaseInfo.createTime = DateTime.Now;
|
|
|
+ newDatabaseInfo.dbTitle = sourceDatabaseInfo.dbTitle;
|
|
|
+ newDatabaseInfo.dbName = sourceDatabaseInfo.dbName;
|
|
|
+ newDatabaseInfo.serverId = param.targetServiceId;
|
|
|
+ newDatabaseInfo.envId = sourceDatabaseInfo.envId;
|
|
|
+ newDatabaseInfo.hostAddress = sourceDatabaseInfo.hostAddress;
|
|
|
+ newDatabaseInfo.port = sourceDatabaseInfo.port;
|
|
|
+ newDatabaseInfo.username = sourceDatabaseInfo.username;
|
|
|
+ newDatabaseInfo.pwd = sourceDatabaseInfo.pwd;
|
|
|
+ // newDatabaseInfo.projectId = param.targetServiceId;
|
|
|
+ newDatabaseInfo.netPort = sourceDatabaseInfo.netPort;
|
|
|
+ newDatabaseInfo.dbType = sourceDatabaseInfo.dbType;
|
|
|
+ int newDatabaseInfoId = InsertReturnIdentity(newDatabaseInfo);
|
|
|
+
|
|
|
+ var sourceTables = _DatabaseTableService.GetList(m => m.databaseId == sourceDatabaseInfo.id).ToList();
|
|
|
+ foreach(DatabaseTable sourceTable in sourceTables)
|
|
|
+ {
|
|
|
+ DatabaseTable newTable = new DatabaseTable();
|
|
|
+ newTable.databaseId = newDatabaseInfoId;
|
|
|
+ newTable.tableName = sourceTable.tableName;
|
|
|
+ newTable.tableTitle = sourceTable.tableTitle;
|
|
|
+ newTable.createTime = DateTime.Now;
|
|
|
+ int newTableId = _DatabaseTableService.InsertReturnIdentity(newTable);
|
|
|
+
|
|
|
+ var sourceFieldTabs = _DatabaseFieldTabsService.GetList(m => m.tableId == sourceTable.id).ToList();
|
|
|
+ if(sourceFieldTabs.Count == 0)
|
|
|
+ {
|
|
|
+ // 如果没有分组,则创建一个默认分组
|
|
|
+ DatabaseFieldTabs defaultTab = new DatabaseFieldTabs();
|
|
|
+ defaultTab.tabName = "基本信息";
|
|
|
+ defaultTab.databaseId = newDatabaseInfoId;
|
|
|
+ defaultTab.tableId = newTableId;
|
|
|
+ defaultTab.createTime = DateTime.Now;
|
|
|
+ int defaultTabId = _DatabaseFieldTabsService.InsertReturnIdentity(defaultTab);
|
|
|
|
|
|
+ var sourceFieldsNoTab = _DatabaseFieldService.GetList(m => m.tableId == sourceTable.id && m.tabId == 0).ToList();
|
|
|
+ foreach(DatabaseField sourceField in sourceFieldsNoTab)
|
|
|
+ {
|
|
|
+ DatabaseField newField = new DatabaseField();
|
|
|
+ newField.databaseId = newDatabaseInfoId;
|
|
|
+ newField.tableId = newTableId;
|
|
|
+ newField.tabId = defaultTabId;
|
|
|
+ newField.fieldTitle = sourceField.fieldTitle;
|
|
|
+ newField.fieldName = sourceField.fieldName;
|
|
|
+ newField.fieldType = sourceField.fieldType;
|
|
|
+ newField.fieldLength = sourceField.fieldLength;
|
|
|
+ newField.fieldDefaultValue = sourceField.fieldDefaultValue;
|
|
|
+ newField.fieldDetail = sourceField.fieldDetail;
|
|
|
+ newField.editType = sourceField.editType;
|
|
|
+ newField.validateAttribute = sourceField.validateAttribute;
|
|
|
+ newField.primaryKey = sourceField.primaryKey;
|
|
|
+ newField.autoIncrement = sourceField.autoIncrement;
|
|
|
+ newField.splitFlag = sourceField.splitFlag;
|
|
|
+ newField.showList = sourceField.showList;
|
|
|
+ newField.showQuery = sourceField.showQuery;
|
|
|
+ newField.showEdit = sourceField.showEdit;
|
|
|
+ newField.checkRepeat = sourceField.checkRepeat;
|
|
|
+ newField.exportFlag = sourceField.exportFlag;
|
|
|
+ newField.importFlag = sourceField.importFlag;
|
|
|
+ newField.listEditFlag = sourceField.listEditFlag;
|
|
|
+ newField.listEditPlaceholder = sourceField.listEditPlaceholder;
|
|
|
+ newField.statCondition = sourceField.statCondition;
|
|
|
+ newField.statData = sourceField.statData;
|
|
|
+ newField.linkTableId = sourceField.linkTableId;
|
|
|
+ newField.linkFieldId = sourceField.linkFieldId;
|
|
|
+ newField.apiId = sourceField.apiId;
|
|
|
+ newField.createTime = DateTime.Now;
|
|
|
+ _DatabaseFieldService.Add(newField);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ foreach(DatabaseFieldTabs sourceFieldTab in sourceFieldTabs)
|
|
|
+ {
|
|
|
+ DatabaseFieldTabs newFieldTab = new DatabaseFieldTabs();
|
|
|
+ newFieldTab.tabName = sourceFieldTab.tabName;
|
|
|
+ newFieldTab.databaseId = newDatabaseInfoId;
|
|
|
+ newFieldTab.tableId = newTableId;
|
|
|
+ newFieldTab.createTime = DateTime.Now;
|
|
|
+ int newFieldTabId = _DatabaseFieldTabsService.InsertReturnIdentity(newFieldTab);
|
|
|
+
|
|
|
+ var sourceFields = _DatabaseFieldService.GetList(m => m.tabId == sourceFieldTab.id).ToList();
|
|
|
+ foreach(DatabaseField sourceField in sourceFields)
|
|
|
+ {
|
|
|
+ DatabaseField newField = new DatabaseField();
|
|
|
+ newField.databaseId = newDatabaseInfoId;
|
|
|
+ newField.tableId = newTableId;
|
|
|
+ newField.tabId = newFieldTabId;
|
|
|
+ newField.fieldTitle = sourceField.fieldTitle;
|
|
|
+ newField.fieldName = sourceField.fieldName;
|
|
|
+ newField.fieldType = sourceField.fieldType;
|
|
|
+ newField.fieldLength = sourceField.fieldLength;
|
|
|
+ newField.fieldDefaultValue = sourceField.fieldDefaultValue;
|
|
|
+ newField.fieldDetail = sourceField.fieldDetail;
|
|
|
+ newField.editType = sourceField.editType;
|
|
|
+ newField.validateAttribute = sourceField.validateAttribute;
|
|
|
+ newField.primaryKey = sourceField.primaryKey;
|
|
|
+ newField.autoIncrement = sourceField.autoIncrement;
|
|
|
+ newField.splitFlag = sourceField.splitFlag;
|
|
|
+ newField.showList = sourceField.showList;
|
|
|
+ newField.showQuery = sourceField.showQuery;
|
|
|
+ newField.showEdit = sourceField.showEdit;
|
|
|
+ newField.checkRepeat = sourceField.checkRepeat;
|
|
|
+ newField.exportFlag = sourceField.exportFlag;
|
|
|
+ newField.importFlag = sourceField.importFlag;
|
|
|
+ newField.listEditFlag = sourceField.listEditFlag;
|
|
|
+ newField.listEditPlaceholder = sourceField.listEditPlaceholder;
|
|
|
+ newField.statCondition = sourceField.statCondition;
|
|
|
+ newField.statData = sourceField.statData;
|
|
|
+ newField.linkTableId = sourceField.linkTableId;
|
|
|
+ newField.linkFieldId = sourceField.linkFieldId;
|
|
|
+ newField.apiId = sourceField.apiId;
|
|
|
+ newField.createTime = DateTime.Now;
|
|
|
+ _DatabaseFieldService.Add(newField);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|