public void ReturnsSwitchTableCommand()
            {
                // Arrange
                var connection = new SqlConnection();
                var viewName   = "myViewName";
                var tableName  = "myTableName";
                var columns    = new[]
                {
                    "key_part_1",
                    "key_part_2",
                    "nullable_text",
                    "nullable_number",
                    "nullable_datetimeoffset",
                    "nullable_money",
                    "nullable_varbinary",
                    "nullable_image",
                };

                // Act
                var command = SqlConnectionExtensions.GetSwitchTableCommand(connection, viewName, tableName, columns);

                // Assert
                Assert.Equal(@"ALTER VIEW [myViewName]
AS

SELECT [key_part_1], [key_part_2], [nullable_text], [nullable_number], [nullable_datetimeoffset], [nullable_money], [nullable_varbinary], [nullable_image]
FROM [myTableName];", command.CommandText, ignoreLineEndingDifferences: true);
            }
Пример #2
0
        /// <summary>
        ///     初始化部分值
        /// </summary>
        private void Init()
        {
            using (SqlConnection connection = SqlConnectionExtensions.GetConnection())
            {
                string        sql    = "select CityName from dbo.[KC.Fengniaowu.Talos.Cities] where Enabled = 1";
                List <string> cities = connection.Query <string>(sql).ToList();
                if (cities.Count > 0)
                {
                    cmb_CityName.DataSource = cities;
                }

                string sql2      = "select top 1 Cellphone from dbo.[KC.Fengniaowu.Talos.Accounts] where Enabled = 1 and Cellphone like '%10500000%' order by Cellphone desc";
                string cellphone = connection.QueryFirst <string>(sql2);

                string numberString = cellphone.Substring(8, 3);
                int    number       = Convert.ToInt32(numberString);
                number++;

                string newCellphone = cellphone.Substring(0, 8);
                if (number < 100)
                {
                    newCellphone += $"0{number}";
                }
                else if (number >= 100 && number < 1000)
                {
                    newCellphone += number;
                }
                else
                {
                    MessageBox.Show("手机号已超过999个");
                }

                txb_Cellphone.Text = newCellphone;
            }
        }
            public void ReturnsTruncateTableCommand()
            {
                // Arrange
                var connection = new SqlConnection();
                var tableName  = "myTableName";

                // Act
                var command = SqlConnectionExtensions.GetTruncateTableCommand(connection, tableName);

                // Assert
                Assert.Equal("TRUNCATE TABLE [myTableName];", command.CommandText);
            }
Пример #4
0
        public static List <PenaltySetting> GetPenaltySettings()
        {
            string sql = "select PenaltyConfig from dbo.[KC.Fengniaowu.Talos.Schedules] where Enabled = 1 and ScheduleId = '5337DCC80FEE45D39EAB76ACD2BF20A8'";

            using (SqlConnection connection = SqlConnectionExtensions.GetConnection())
            {
                connection.Open();

                string result = connection.QueryFirstOrDefault <string>(sql);
                return(JsonConvert.DeserializeObject <List <PenaltySetting> >(result));
            }
        }
Пример #5
0
        public static List <SimpleApartment> GetApartmentsByTenancyId(string tenancyId)
        {
            string sql = $"select ApartmentId, ApartmentName from dbo.[KC.Fengniaowu.Talos.Apartments] where Enabled = 1 and AssetTenancyId = '{tenancyId}'";

            using (SqlConnection connection = SqlConnectionExtensions.GetConnection())
            {
                connection.Open();

                List <SimpleApartment> result = connection.Query <SimpleApartment>(sql).ToList();
                return(result);
            }
        }
Пример #6
0
        public static List <SimpleTenancy> GetTenancies()
        {
            string sql = "select TenancyId, TenancyName from dbo.[KC.Fengniaowu.Talos.Tenancies] where Enabled = 1";

            using (SqlConnection connection = SqlConnectionExtensions.GetConnection())
            {
                connection.Open();

                List <SimpleTenancy> result = connection.Query <SimpleTenancy>(sql).ToList();
                return(result);
            }
        }
Пример #7
0
        private async Task AddPermissionsAsync(dynamic users, List <string> permissionIds)
        {
            List <string> failedUsers = new List <string>();

            using (SqlConnection connection = SqlConnectionExtensions.GetConnection())
            {
                connection.Open();

                foreach (dynamic user in users)
                {
                    // 若已有该权限,跳过
                    string addPermissionIds = null;
                    foreach (string permissionId in permissionIds)
                    {
                        if (!user.Permissions.Contains(permissionId))
                        {
                            addPermissionIds += "\"" + permissionId + "\",";
                        }
                    }

                    if (addPermissionIds == null)
                    {
                        continue;
                    }

                    addPermissionIds = addPermissionIds.Remove(addPermissionIds.Length - 1, 1);

                    string permissions    = user.Permissions;
                    string newPermissions = permissions.Remove(permissions.Length - 1, 1) + "," + addPermissionIds + "]";
                    user.Permissions = newPermissions;

                    string sql4 = $"update dbo.[KC.Fengniaowu.Talos.Users] set Permissions = '{newPermissions}' where UserId = '{user.UserId}'";

                    int row = connection.Execute(sql4);
                    if (row < 0)
                    {
                        failedUsers.Add(user.UserId);
                        AppendMessage($"{user.UserId},更新数据库失败。");
                    }
                    else
                    {
                        // 刷新用户缓存
                        await ClearCacheOfUserAsync(user, failedUsers);
                    }
                }
            }

            AppendMessage($"执行结束,失败数量:{failedUsers.Count}。");
        }
            public void ReturnsSelectIntoTemporaryTableCommand()
            {
                // Arrange
                var connection    = new SqlConnection();
                var baseTableName = "myTableName";
                var tempTableName = "#myTableName";

                // Act
                var comnand = SqlConnectionExtensions.GetSelectIntoTemporaryTableCommand(connection, baseTableName, tempTableName);

                // Assert
                Assert.Equal(@"SELECT TOP 0 *
INTO [#myTableName]
FROM [myTableName];", comnand.CommandText, ignoreLineEndingDifferences: true);
            }
Пример #9
0
        private async Task DeletePermissionsAsync(dynamic users, List <string> permissionIds)
        {
            List <string> failedUsers = new List <string>();

            using (SqlConnection connection = SqlConnectionExtensions.GetConnection())
            {
                connection.Open();

                foreach (dynamic user in users)
                {
                    List <string> permissions = JsonConvert.DeserializeObject <List <string> >(user.Permissions);
                    int           oldCount    = permissions.Count;

                    foreach (string permissionId in permissionIds)
                    {
                        if (permissions.Contains(permissionId))
                        {
                            permissions.Remove(permissionId);
                        }
                    }

                    // user 权限没有任何变化时,跳过
                    if (oldCount == permissions.Count)
                    {
                        continue;
                    }

                    string newPermissions = JsonConvert.SerializeObject(permissions);
                    user.Permissions = newPermissions;

                    string sql4 = $"update dbo.[KC.Fengniaowu.Talos.Users] set Permissions = '{newPermissions}' where UserId = '{user.UserId}'";

                    int row = connection.Execute(sql4);
                    if (row < 0)
                    {
                        failedUsers.Add(user.UserId);
                        AppendMessage($"{user.UserId},更新数据库失败。");
                    }
                    else
                    {
                        // 刷新用户缓存
                        await ClearCacheOfUserAsync(user, failedUsers);
                    }
                }
            }

            AppendMessage($"执行结束,失败数量:{failedUsers.Count}。");
        }
            public void UpdateWhenMatchedIsTrue_ReturnsMergeCommandWithUpdateWhenMatched()
            {
                // Arrange
                var connection  = new SqlConnection();
                var targetTable = "myTableName";
                var tableSource = "myTableSource";
                var columns     = new[]
                {
                    "key_part_1",
                    "key_part_2",
                    "nullable_text",
                    "nullable_number",
                    "nullable_datetimeoffset",
                    "nullable_money",
                    "nullable_varbinary",
                    "nullable_image",
                };
                var primaryKeyColumns = new[]
                {
                    "key_part_1",
                    "key_part_2",
                };
                var updateWhenMatched = true;

                // Act
                var command = SqlConnectionExtensions.GetMergeCommand(connection, targetTable, tableSource, columns, primaryKeyColumns, updateWhenMatched);

                // Assert
                Assert.Equal(@"MERGE INTO [myTableName] AS [Target]
USING [myTableSource] AS [Source]
    ON ([Target].[key_part_1] = [Source].[key_part_1] AND [Target].[key_part_2] = [Source].[key_part_2])
WHEN MATCHED
    THEN
        UPDATE
        SET [Target].[nullable_text] = [Source].[nullable_text],
            [Target].[nullable_number] = [Source].[nullable_number],
            [Target].[nullable_datetimeoffset] = [Source].[nullable_datetimeoffset],
            [Target].[nullable_money] = [Source].[nullable_money],
            [Target].[nullable_varbinary] = [Source].[nullable_varbinary],
            [Target].[nullable_image] = [Source].[nullable_image]
WHEN NOT MATCHED
    THEN
        INSERT ([key_part_1], [key_part_2], [nullable_text], [nullable_number], [nullable_datetimeoffset], [nullable_money], [nullable_varbinary], [nullable_image])
        VALUES ([key_part_1], [key_part_2], [nullable_text], [nullable_number], [nullable_datetimeoffset], [nullable_money], [nullable_varbinary], [nullable_image]);
", command.CommandText, ignoreLineEndingDifferences: true);
            }
Пример #11
0
        private static void SavePenaltyConfig(string penaltyConfigString)
        {
            string sql = $"update dbo.[KC.Fengniaowu.Talos.Schedules] set PenaltyConfig = '{penaltyConfigString}' where ScheduleId = '5337DCC80FEE45D39EAB76ACD2BF20A8'";

            using (SqlConnection connection = SqlConnectionExtensions.GetConnection())
            {
                connection.Open();

                int row = connection.Execute(sql);
                if (row > 0)
                {
                    MessageBox.Show("成功");
                }
                else
                {
                    MessageBox.Show("失败");
                }
            }
        }
            public void ReturnsAlterNonclusteredIndexesCommand()
            {
                // Arrange
                var connection = new SqlConnection();
                var tableName  = "myTableName";
                var action     = "DISABLE";

                // Act
                var command = SqlConnectionExtensions.GetAlterNonclusteredIndexesCommand(connection, tableName, action);

                // Assert
                Assert.Equal(@"DECLARE @sql AS nvarchar(max) = '';

SELECT @sql = @sql + 'ALTER INDEX ' + QUOTENAME(sys.indexes.name) + ' ON ' + QUOTENAME(sys.objects.name) + ' ' + @action + ';' + CHAR(13) + CHAR(10)
FROM sys.indexes
JOIN sys.objects ON sys.indexes.object_id = sys.objects.object_id
WHERE sys.indexes.type_desc = 'NONCLUSTERED'
  AND sys.objects.type_desc = 'USER_TABLE'
  AND sys.objects.name = @tableName;

EXEC(@sql);", command.CommandText, ignoreLineEndingDifferences: true);
                Assert.True(command.Parameters.Contains("@tableName"));
            }
Пример #13
0
        private async Task MegrateAsync(string apartmentId, string tenancyId, string cellphone)
        {
            DateTimeOffset time = Time.Now;

            using (SqlConnection connection = SqlConnectionExtensions.GetConnection())
            {
                await connection.OpenAsync();

                // 查询公寓和商户是否有效
                string sql1   = "select count(ApartmentId) from dbo.[KC.Fengniaowu.Talos.Apartments] where ApartmentId = @apartmentId and Enabled = 1";
                long   count1 = await connection.QueryFirstAsync <long>(sql1, new { ApartmentId = apartmentId });

                if (count1 == 0)
                {
                    MessageBox.Show($"公寓Id({apartmentId})不存在");
                    return;
                }

                string sql2   = "select count(TenancyId) from dbo.[KC.Fengniaowu.Talos.Tenancies] where TenancyId = @tenancyId and Enabled = 1";
                long   count2 = await connection.QueryFirstAsync <long>(sql2, new { TenancyId = tenancyId });

                if (count2 == 0)
                {
                    MessageBox.Show($"商户Id({tenancyId})不存在");
                    return;
                }

                string  sql3      = $"select * from dbo.[KC.Fengniaowu.Talos.Apartments] where ApartmentId = '{apartmentId}' and Enabled = 1";
                dynamic apartment = await connection.QueryFirstAsync <dynamic>(sql3);

                if (apartment.AssetTenancyId == tenancyId)
                {
                    MessageBox.Show("该公寓不需要迁移");
                    return;
                }

                string  sql4     = $"select * from dbo.[KC.Fengniaowu.Talos.Districts] where DistrictId = '{apartment.DistrictId}'";
                dynamic district = await connection.QueryFirstAsync <dynamic>(sql4);

                string  sql5    = $"select * from dbo.[KC.Fengniaowu.Talos.Accounts] where Enabled = 1 and TenancyId = '{tenancyId}' and Cellphone = '{cellphone}'";
                dynamic account = await connection.QueryFirstAsync <dynamic>(sql5);

                string sql6 = $"select VillageId from dbo.[KC.Fengniaowu.Ladon.Villages] where Enabled = 1 and TenancyId = '{tenancyId}' and (ApartmentId = '{apartmentId}' or RelationIds = '{apartmentId}')";
                IEnumerable <string> villageIds = await connection.QueryAsync <string>(sql6);

                // 修改公寓表商户Id
                string s1 = $"update dbo.[KC.Fengniaowu.Talos.Apartments] set AssetTenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}'";

                // 修改公寓DistrictId
                Guid   districtGuid = ID.NewSequentialGuid();
                string s2           = $@"if not exists(
select * from dbo.[KC.Fengniaowu.Talos.Districts] where 
TenancyId = '{tenancyId}'
and CityName = '{district.CityName}'
and DistrictName = '{district.DistrictName}'
)
INSERT INTO [dbo].[KC.Fengniaowu.Talos.Districts]([ActorId], [DistrictId], [TenancyId], [CityName], [DistrictName], [Enabled], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{districtGuid}', '{districtGuid.ToGuidString()}', '{tenancyId}', N'{district.CityName}', N'{district.DistrictName}', '1', '{time}', '{time}', N'{{}}')";
                string s3           = $@"update dbo.[KC.Fengniaowu.Talos.Apartments] set DistrictId = 
(select DistrictId from dbo.[KC.Fengniaowu.Talos.Districts] where TenancyId = '{tenancyId}' and CityName = '{district.CityName}' and DistrictName = '{district.DistrictName}') 
where ApartmentId = '{apartmentId}'";

                // 修改房间表商户Id
                string s4 = $"update dbo.[KC.Fengniaowu.Talos.Rooms] set AssetTenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 修改合同表商户Id
                string s5 = $"update dbo.[KC.Fengniaowu.Talos.Contracts] set AssetTenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 修改账单表商户Id
                string s6 = $"update dbo.[KC.Fengniaowu.Talos.Orders] set AssetTenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 修改流水表商户Id
                string s7 = $"update dbo.[KC.Fengniaowu.Talos.Transactions] set AssetTenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 修改流水明细表商户Id
                string s8 = $"update dbo.[KC.Fengniaowu.Talos.TransactionDetails] set AssetTenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 修改Cleaning表商户Id
                string s9 = $"update dbo.[KC.Fengniaowu.Talos.Cleanings] set AssetTenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 修改ComplaintSuggestions表商户Id
                string s10 = $"update dbo.[KC.Fengniaowu.Talos.ComplaintSuggestions] set AssetTenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 修改ContractCheckoutInfos表商户Id
                string s11 = $"update dbo.[KC.Fengniaowu.Talos.ContractCheckoutInfos] set TenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 修改DomesticServiceConfig表商户Id
                string s12 = $"update dbo.[KC.Fengniaowu.Talos.DomesticServiceConfigs] set AssetTenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 修改IntelligentDeviceConfigs表商户Id
                string s13 = $"update dbo.[KC.Fengniaowu.Talos.IntelligentDeviceConfigs] set TenancyId = '{tenancyId}' where EntityType = 'Apartment' and EntityId = '{apartmentId}' and Enabled = 1";

                // 修改LoanRecords表商户Id
                string s14 = $"update dbo.[KC.Fengniaowu.Talos.LoanRecords] set AssetTenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 修改PromotionRecords表商户Id
                string s15 = $"update dbo.[KC.Fengniaowu.Talos.PromotionRecords] set TenancyId = '{tenancyId}', Content = json_modify(Content,'$.AssetTenancyId','{tenancyId}') where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 修改Repairs表商户Id
                string s16 = $"update dbo.[KC.Fengniaowu.Talos.Repairs] set AssetTenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 修改RoomMessages表商户Id
                string s17 = $"update dbo.[KC.Fengniaowu.Talos.RoomMessages] set AssetTenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 修改RoomReservations表商户Id
                string s18 = $"update dbo.[KC.Fengniaowu.Talos.RoomReservations] set AssetTenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 修改RoomSourceConfigs表商户Id
                string s19 = $"update dbo.[KC.Fengniaowu.Talos.RoomSourceConfigs] set AssetTenancyId = '{tenancyId}' where EntityType = 'Room' and EntityId in (select RoomId from dbo.[KC.Fengniaowu.Talos.Rooms] where ApartmentId = '{apartmentId}') and Enabled = 1";

                // 修改RoomSourceReservations表商户Id
                string s20 = $"update dbo.[KC.Fengniaowu.Talos.RoomSourceReservations] set AssetTenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 修改RoomTypes表商户Id
                string s21 = $"update dbo.[KC.Fengniaowu.Talos.RoomTypes] set AssetTenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 修改StageOrders表商户Id
                string s22 = $"update dbo.[KC.Fengniaowu.Talos.StageOrders] set AssetTenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 修改StageOrdersFee表商户Id
                //string s23 = $"update dbo.[KC.Fengniaowu.Talos.StageOrdersFee] set AssetTenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 修改UtilityExpenses表商户Id
                string s24 = $"update dbo.[KC.Fengniaowu.Talos.UtilityExpenses] set AssetTenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 删除AccountApartments表记录
                string s25 = $"update dbo.[KC.Fengniaowu.Talos.AccountApartments] set Enabled = 0 where ApartmentId = '{apartmentId}'";

                // 修改ApplyMonthlyPayConfigs表商户Id
                string s26 = $"update dbo.[KC.Fengniaowu.Talos.ApplyMonthPayConfigs] set TenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 修改DeviceConsumptionInfos表商户Id
                string s27 = $"update dbo.[KC.Fengniaowu.Hebe.DeviceConsumptionInfos] set TenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 修改DeviceRechargeRecords表商户Id
                string s28 = $"update dbo.[KC.Fengniaowu.Hebe.DeviceRechargeRecords] set TenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 修改Devices表商户Id
                string s29 = $"update dbo.[KC.Fengniaowu.Hebe.Devices] set AssetTenancyId = '{tenancyId}' where ApartmentId = '{apartmentId}' and Enabled = 1";

                // 给新商户管理添加公寓
                Guid   accountApartmentActorId = ID.NewSequentialGuid();
                string s30 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.AccountApartments]([ActorId], [AccountApartmentId], [AccountId], [TenancyId], [ApartmentId], [Enabled], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{accountApartmentActorId}', '{accountApartmentActorId.ToGuidString()}', '{account.AccountId}', '{tenancyId}', '{apartmentId}', '1', '{time}', '{time}', N'{{}}')";

                // 修改房源表商户Id
                string s31 = $"update dbo.[KC.Fengniaowu.Ladon.Villages] set TenancyId = '{tenancyId}' where Enabled = 1 and ApartmentId = '{apartmentId}' or RelationIds = '{apartmentId}'";

                // 修改VillageOrders表商户Id
                // 修改VillageContracts表商户Id
                string villageidsString = string.Empty;
                foreach (string villageId in villageIds)
                {
                    villageidsString += $"'{villageId}',";
                }

                string s32 = string.Empty;
                string s33 = string.Empty;
                if (villageidsString.Length > 0)
                {
                    villageidsString.Remove(villageidsString.Length - 1);
                    s32 = $"update dbo.[KC.Fengniaowu.Ladon.LandlordOrders] set TenancyId = '{tenancyId}' where Enabled = 1 and VillageId in ({villageidsString})";
                    s33 = $"update dbo.[KC.Fengniaowu.Ladon.LandlordContracts] set TenancyId = '{tenancyId}' where Enabled = 1 and VillageId in ({villageidsString})";
                }

                List <string> sqls = new List <string>
                {
                    s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, s21, s22, s24, s25, s26, s27, s28, s29,
                    s30, s31, s32, s33
                };

                // 执行SQL语句
                SqlTransaction tran = connection.BeginTransaction();
                try
                {
                    foreach (string sql in sqls)
                    {
                        if (string.IsNullOrEmpty(sql))
                        {
                            continue;
                        }

                        int rows = await connection.ExecuteAsync(sql, null, tran);

                        //if (rows <= 0)
                        //{
                        //    tran.Rollback();
                        //    return;
                        //}
                    }
                }
                catch (Exception e)
                {
                    tran.Rollback();
                    MessageBox.Show($"公寓迁移失败,SQL执行异常。异常:{e.ToString()}");
                    return;
                }

                tran.Commit();
            }


            //MessageBox.Show("公寓迁移成功");

            /* 清除缓存 */

            HttpClient httpClient = new HttpClient {
                BaseAddress = new Uri(Config.TalosBaseAddress)
            };

            string sessionId = SessionIdHelper.SessionId;

            if (string.IsNullOrEmpty(sessionId))
            {
                return;
            }

            httpClient.DefaultRequestHeaders.Add("X-KC-SID", sessionId);

            // 清除公寓表缓存
            await ClearCacheAsync(httpClient, "api/Apartment/ClearCache", new { ApartmentId = apartmentId });

            // 清除房间表缓存
            using (SqlConnection connection = SqlConnectionExtensions.GetConnection())
            {
                await connection.OpenAsync();

                string ss1 = $"select RoomId from dbo.[KC.Fengniaowu.Talos.Rooms] where AssetTenancyId = '{tenancyId}' and Enabled = 1";
                IEnumerable <string> roomIds = await connection.QueryAsync <string>(ss1);

                foreach (string roomId in roomIds)
                {
                    await ClearCacheAsync(httpClient, "api/Room/ClearRoomCache", new { RoomId = roomId });
                }
            }


            // 清除合同表缓存
            using (SqlConnection connection = SqlConnectionExtensions.GetConnection())
            {
                await connection.OpenAsync();

                string ss2 = $"select ContractId from dbo.[KC.Fengniaowu.Talos.Contracts] where AssetTenancyId = '{tenancyId}' and Enabled = 1";
                IEnumerable <string> contractIds = await connection.QueryAsync <string>(ss2);

                foreach (string contractId in contractIds)
                {
                    await ClearCacheAsync(httpClient, "api/Contract/ClearCache", new { ContractId = contractId });
                }
            }

            // 清除账单表缓存
            using (SqlConnection connection = SqlConnectionExtensions.GetConnection())
            {
                await connection.OpenAsync();

                string ss3 = $"select OrderId from dbo.[KC.Fengniaowu.Talos.Orders] where AssetTenancyId = '{tenancyId}' and Enabled = 1";
                IEnumerable <string> orderIds = await connection.QueryAsync <string>(ss3);

                List <object> contents = new List <object>();
                foreach (string orderId in orderIds)
                {
                    contents.Add(new { OrderId = orderId });
                    //await ClearCacheAsync(httpClient, "api/Order/ClearCache", new { OrderId = orderId });
                }

                await ClearCachesAsync(httpClient, "api/Order/ClearCache", contents);
            }

            // 清除流水表缓存
            using (SqlConnection connection = SqlConnectionExtensions.GetConnection())
            {
                await connection.OpenAsync();

                string ss4 = $"select TransactionId from dbo.[KC.Fengniaowu.Talos.Transactions] where AssetTenancyId = '{tenancyId}' and Enabled = 1";
                IEnumerable <string> transactionIds = await connection.QueryAsync <string>(ss4);

                foreach (string transactionId in transactionIds)
                {
                    await ClearCacheAsync(httpClient, $"api/Transaction/ClearCache?transactionId={transactionId}", null, "Get");
                }
            }

            // 清除RoomReservations表缓存
            using (SqlConnection connection = SqlConnectionExtensions.GetConnection())
            {
                await connection.OpenAsync();

                string ss5 = $"select RoomReservationId from dbo.[KC.Fengniaowu.Talos.RoomReservations] where AssetTenancyId = '{tenancyId}' and Enabled = 1";
                IEnumerable <string> roomReservationIds = await connection.QueryAsync <string>(ss5);

                foreach (string roomReservationId in roomReservationIds)
                {
                    await ClearCacheAsync(httpClient, "api/RoomReservation/ClearReservationCache", new { RoomReservationId = roomReservationId });
                }
            }

            // 清除RoomSourceReservations表缓存
            using (SqlConnection connection = SqlConnectionExtensions.GetConnection())
            {
                await connection.OpenAsync();

                string ss6 = $"select RoomSourceReservationId from dbo.[KC.Fengniaowu.Talos.RoomSourceReservations] where AssetTenancyId = '{tenancyId}' and Enabled = 1";
                IEnumerable <string> roomSourceReservationIds = await connection.QueryAsync <string>(ss6);

                foreach (string roomSourceReservationId in roomSourceReservationIds)
                {
                    await ClearCacheAsync(httpClient, "api/RoomSource/ClearReservationCache", new { RoomSourceReservationId = roomSourceReservationId });
                }
            }

            // 清除UtilityExpenses表缓存
            using (SqlConnection connection = SqlConnectionExtensions.GetConnection())
            {
                await connection.OpenAsync();

                string ss7 = $"select UtilityExpenseId from dbo.[KC.Fengniaowu.Talos.UtilityExpenses] where AssetTenancyId = '{tenancyId}' and Enabled = 1";
                IEnumerable <string> utilityExpenseIds = await connection.QueryAsync <string>(ss7);

                foreach (string utilityExpenseId in utilityExpenseIds)
                {
                    await ClearCacheAsync(httpClient, $"api/UtilityExpense/ClearUtilityExpenseCache?utilityExpenseId={utilityExpenseId}", null, "Get");
                }
            }

            // 清除StageOrders表缓存
            using (SqlConnection connection = SqlConnectionExtensions.GetConnection())
            {
                await connection.OpenAsync();

                string ss8 = $"select StageOrderId from dbo.[KC.Fengniaowu.Talos.StageOrders] where AssetTenancyId = '{tenancyId}' and Enabled = 1";
                IEnumerable <string> stageOrderIds = await connection.QueryAsync <string>(ss8);

                foreach (string stageOrderId in stageOrderIds)
                {
                    await ClearCacheAsync(httpClient, "api/StageOrder/ClearCache", new { StageOrderId = stageOrderId });
                }
            }

            // 清除Devices表缓存
            using (SqlConnection connection = SqlConnectionExtensions.GetConnection())
            {
                await connection.OpenAsync();

                string ss9 = $"select DeviceId from dbo.[KC.Fengniaowu.Hebe.Devices] where AssetTenancyId = '{tenancyId}' and Enabled = 1";
                IEnumerable <string> deviceIds = await connection.QueryAsync <string>(ss9);

                foreach (string deviceId in deviceIds)
                {
                    await ClearCacheAsync(httpClient, "api/IntelligentDevice/ClearDeviceCache", new { DeviceId = deviceId });
                }
            }

            if (s_errorList.Count == 0)
            {
                MessageBox.Show("迁移成功");
            }
            else
            {
                MessageBox.Show($"迁移失败,失败内容:{JsonConvert.SerializeObject(s_errorList)}");
            }
        }
Пример #14
0
        private async void btn_AddToAll_Click(object sender, EventArgs e)
        {
            string permissionIdString = rtb_PermissionIds.Text.Trim();

            if (string.IsNullOrEmpty(permissionIdString))
            {
                this.Show("权限Id不能为空");
                return;
            }

            List <string> permissionIds = permissionIdString.Split(',').ToList();

            if (permissionIds.Count == 0)
            {
                this.Show("权限Id不能为空");
                return;
            }

            DialogResult dialogResult = this.Show("确定添加到所有用户吗", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);

            if (dialogResult == DialogResult.Cancel)
            {
                return;
            }

            using (SqlConnection connection = SqlConnectionExtensions.GetConnection())
            {
                connection.Open();

                foreach (string permissionId in permissionIds)
                {
                    string sql1 = $"select * from dbo.[KC.Fengniaowu.Talos.Permissions] where Enabled = 1 and PermissionId = '{permissionId}'";

                    dynamic result = connection.QueryFirstOrDefault <dynamic>(sql1);
                    if (result == null)
                    {
                        this.Show($"权限Id({permissionId})不存在");
                        return;
                    }
                }
            }

            // 查询所有用户
            string sql2 = "select * from dbo.[KC.Fengniaowu.Talos.Users] where Enabled = 1 and Permissions like (select '%'+PermissionId+'%' from dbo.[KC.Fengniaowu.Talos.Permissions] where PermissionCode = '*****@*****.**')";

            dynamic users;

            using (SqlConnection connection = SqlConnectionExtensions.GetConnection())
            {
                connection.Open();

                users = connection.Query <dynamic>(sql2);
            }

            if (users == null)
            {
                this.Show("未找到用户");
                return;
            }

            await AddPermissionsAsync(users, permissionIds);
        }
Пример #15
0
        private async void btn_Unlock_Click(object sender, EventArgs e)
        {
            string cellphone = txb_Cellphone.Text.Trim();

            if (string.IsNullOrEmpty(cellphone))
            {
                MessageBox.Show("手机号不能为空");
                return;
            }

            if (cellphone == "10100000000")
            {
                MessageBox.Show("该手机号无法解锁");
                return;
            }

            // 通过手机号查询UserId
            string userId;

            using (SqlConnection connection = SqlConnectionExtensions.GetConnection())
            {
                string sql = $"select UserId from dbo.[KC.Fengniaowu.Talos.Accounts] where Cellphone = '{cellphone}' and Enabled = 1";
                userId = connection.QueryFirstOrDefault <string>(sql);
            }

            if (userId == null)
            {
                MessageBox.Show("解锁失败,手机号不存在");
                return;
            }

            HttpClient httpClient = new HttpClient {
                BaseAddress = new Uri(Config.TalosBaseAddress)
            };

            httpClient.DefaultRequestHeaders.Add("X-KC-SID", SessionIdHelper.SessionId);

            var content = new
            {
                UserId = userId
            };
            HttpResponseMessage response = httpClient.PostAsJsonAsync("api/Password/Unlock", content).Result;

            if (!response.IsSuccessStatusCode)
            {
                MessageBox.Show($"解锁失败,解锁接口调用失败,HttpStatusCode:{response.StatusCode}");
                return;
            }

            string responseString1 = await response.Content.ReadAsStringAsync();

            JObject obj = JObject.Parse(responseString1);

            if ((bool)obj["succeeded"])
            {
                MessageBox.Show("解锁成功");
                return;
            }


            MessageBox.Show($"解锁失败,code:{obj["code"]},message:{obj["message"]}");
        }
Пример #16
0
        private void btn_Register_Click(object sender, EventArgs e)
        {
            DialogResult dialogResult = MessageBox.Show("您确定要注册商户吗", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);

            if (dialogResult == DialogResult.Cancel)
            {
                return;
            }

            string cellphone   = txb_Cellphone.Text.Trim();
            string license     = txb_License.Text.Trim();
            string domain      = txb_Domain.Text.Trim();
            string tenancyType = txb_TenancyType.Text.Trim();
            string tenancyName = txb_TenancyName.Text.Trim();
            string companyName = txb_CompanyName.Text.Trim();
            string cityName    = cmb_CityName.SelectedValue == null?cmb_CityName.Text.Trim() : cmb_CityName.SelectedValue.ToString();

            string districtName   = txb_DistrictName.Text.Trim();
            string cuscc          = txb_Cuscc.Text.Trim();
            string accountName    = txb_AccountName.Text.Trim();
            string realName       = txb_RealName.Text.Trim();
            string credentialType = txb_CredentialType.Text.Trim();
            string credentialNo   = txb_CredentialNo.Text.Trim();
            string userName       = domain.Split('.').Last() + "Administrator";
            string passwordHash   = "AQAAAAEAACcQAAAAEMfdU3dK+R1uC7YkQ2exN/hJ7g6WJ+PN2Nvbr76BdVIVr69uVp85NgY1fVdNZ9dJXA=="; //默认密码111111

            if (string.IsNullOrEmpty(cellphone))
            {
                MessageBox.Show("Cellphone can not be null or empty.");
                return;
            }
            if (string.IsNullOrEmpty(license))
            {
                MessageBox.Show("License can not be null or empty.");
                return;
            }
            if (license == "@xxx.com")
            {
                MessageBox.Show("请修改 License.");
                return;
            }
            if (string.IsNullOrEmpty(domain))
            {
                MessageBox.Show("Domain can not be null or empty.");
                return;
            }
            if (domain == "@fengniaowu.tenancy.asset.xxx")
            {
                MessageBox.Show("请修改 Domain.");
                return;
            }
            if (string.IsNullOrEmpty(tenancyType))
            {
                MessageBox.Show("TenancyType can not be null or empty.");
                return;
            }
            if (string.IsNullOrEmpty(tenancyName))
            {
                MessageBox.Show("TenancyName can not be null or empty.");
                return;
            }
            if (string.IsNullOrEmpty(companyName))
            {
                MessageBox.Show("CompanyName can not be null or empty.");
                return;
            }
            if (string.IsNullOrEmpty(cityName))
            {
                MessageBox.Show("CityName can not be null or empty.");
                return;
            }
            if (string.IsNullOrEmpty(districtName))
            {
                MessageBox.Show("DistrictName can not be null or empty.");
                return;
            }
            if (string.IsNullOrEmpty(cuscc))
            {
                MessageBox.Show("Cuscc can not be null or empty.");
                return;
            }
            if (string.IsNullOrEmpty(accountName))
            {
                MessageBox.Show("AccountName can not be null or empty.");
                return;
            }
            if (string.IsNullOrEmpty(realName))
            {
                MessageBox.Show("RealName can not be null or empty.");
                return;
            }
            if (string.IsNullOrEmpty(credentialType))
            {
                MessageBox.Show("CredentialType can not be null or empty.");
                return;
            }
            if (string.IsNullOrEmpty(credentialNo))
            {
                MessageBox.Show("CredentialNo can not be null or empty.");
                return;
            }
            if (string.IsNullOrEmpty(userName))
            {
                MessageBox.Show("UserName can not be null or empty.");
                return;
            }

            using (SqlConnection connection = SqlConnectionExtensions.GetConnection())
            {
                connection.Open();

                string sql1       = $"select Cellphone from dbo.[KC.Fengniaowu.Talos.Accounts] where Cellphone = '{cellphone}'";
                string cellphone1 = connection.QueryFirstOrDefault <string>(sql1);
                if (!string.IsNullOrEmpty(cellphone1))
                {
                    MessageBox.Show($"Cellphone {cellphone} is exist.");
                    return;
                }

                string sql2       = $"select TenancyId from dbo.[KC.Fengniaowu.Talos.Tenancies] where Enabled = 1 and (Domain = '{domain}' or License = '{license}')";
                string tenancyId2 = connection.QueryFirstOrDefault <string>(sql2);
                if (!string.IsNullOrEmpty(tenancyId2))
                {
                    MessageBox.Show($"Domain {domain} or License {license} is exist.");
                    return;
                }

                string sql3        = $"select CityId from dbo.[KC.Fengniaowu.Talos.Cities] where Enabled = 1 and CityName = '{cityName}'";
                string existCityId = connection.QueryFirstOrDefault <string>(sql3);

                string sql5 = "select '\"' + PermissionId + '\"' as PermissionId, PermissionCode from dbo.[KC.Fengniaowu.Talos.Permissions] " +
                              "where Enabled = 1";
                List <Permission> permissions    = connection.Query <Permission>(sql5).ToList();
                List <string>     permissionIds1 = permissions.FindAll(t => _permissionCodeCaiwu.Contains(t.PermissionCode))
                                                   .Select(t => t.PermissionId).ToList();
                List <string> permissionIds2 = permissions.FindAll(t => t.PermissionCode != "AlphaAdministrator@fengniaowu" &&
                                                                   t.PermissionCode != "*****@*****.**" &&
                                                                   t.PermissionCode != "*****@*****.**")
                                               .Select(t => t.PermissionId).ToList();
                List <string> permissionIds3 = permissions.FindAll(t => t.PermissionCode != "AlphaAdministrator@fengniaowu" &&
                                                                   t.PermissionCode != "*****@*****.**")
                                               .Select(t => t.PermissionId).ToList();


                DateTimeOffset time          = Time.Now;
                string         cityId        = ID.NewSequentialGuid().ToGuidString();
                string         tenancyId     = ID.NewSequentialGuid().ToGuidString();
                string         linkAddress   = "http://www.fengniaowu.com/mobile/housessource.html?houselistId=" + tenancyId;
                string         districtId    = ID.NewSequentialGuid().ToGuidString();
                string         departmentId1 = ID.NewSequentialGuid().ToGuidString();
                string         departmentId2 = ID.NewSequentialGuid().ToGuidString();
                string         departmentId3 = ID.NewSequentialGuid().ToGuidString();
                string         departmentId4 = ID.NewSequentialGuid().ToGuidString();
                string         positionId1   = ID.NewSequentialGuid().ToGuidString();
                string         positionId2   = ID.NewSequentialGuid().ToGuidString();
                string         positionId3   = ID.NewSequentialGuid().ToGuidString();
                string         positionId4   = ID.NewSequentialGuid().ToGuidString();
                string         positionId5   = ID.NewSequentialGuid().ToGuidString();
                string         positionId6   = ID.NewSequentialGuid().ToGuidString();
                string         positionId7   = ID.NewSequentialGuid().ToGuidString();
                string         roleId1       = ID.NewSequentialGuid().ToGuidString();
                string         roleId2       = ID.NewSequentialGuid().ToGuidString();
                string         roleId3       = ID.NewSequentialGuid().ToGuidString();
                string         roleId4       = ID.NewSequentialGuid().ToGuidString();
                List <string>  roleIds       = new List <string> {
                    "\"" + roleId1 + "\"", "\"" + roleId2 + "\"", "\"" + roleId3 + "\"", "\"" + roleId4 + "\""
                };
                string userId          = ID.NewSequentialGuid().ToGuidString();
                string loginInfoId     = ID.NewSequentialGuid().ToGuidString();
                string accountId       = ID.NewSequentialGuid().ToGuidString();
                string digitalId1      = ID.NewSequentialGuid().ToGuidString();
                string digitalId2      = ID.NewSequentialGuid().ToGuidString();
                string digitalConfigId = ID.NewSequentialGuid().ToGuidString();


                SqlTransaction tran = connection.BeginTransaction();

                string s0 = null;
                if (string.IsNullOrEmpty(existCityId))
                {
                    s0 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.Cities]([ActorId], [CityId], [CityName], [Enabled], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{cityId.ToGuid()}', '{cityId}', '{cityName}', '1', '{time}', '{time}', N'{{}}')";
                }

                string s1 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.Tenancies]([ActorId], [TenancyId], [TenancyName], [Domain], [TenancyType], [CompanyName], [CredentialNo], [Enabled], [CreateTime], [UpdateTime], [Data], [License], [RoomSourcePromotionLinkAddress]) 
VALUES('{tenancyId.ToGuid()}', '{tenancyId}', '{tenancyName}', '{domain}', '{tenancyType}', '{companyName}', NULL, '1', '{time}', '{time}', N'{{}}', '{license}', '{linkAddress}')";

                string s2 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.Districts]([ActorId], [DistrictId], [TenancyId], [CityName], [DistrictName], [Enabled], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{districtId.ToGuid()}',  '{districtId}', '{tenancyId}', '{cityName}', '{districtName}', '1', '{time}', '{time}', N'{{}}')";

                string s3 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.Departments]([ActorId], [DepartmentId], [TenancyId], [DepartmentName], [Enabled], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{departmentId1.ToGuid()}', '{departmentId1}', '{tenancyId}', N'IT', '1', '{time}', '{time}', N'{{}}')";

                string s4 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.Departments]([ActorId], [DepartmentId], [TenancyId], [DepartmentName], [Enabled], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{departmentId2.ToGuid()}', '{departmentId2}', '{tenancyId}', N'总经办', '1', '{time}', '{time}', N'{{}}')";

                string s5 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.Departments]([ActorId], [DepartmentId], [TenancyId], [DepartmentName], [Enabled], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{departmentId3.ToGuid()}', '{departmentId3}', '{tenancyId}', N'运营部', '1', '{time}', '{time}', N'{{}}')";

                string s6 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.Departments]([ActorId], [DepartmentId], [TenancyId], [DepartmentName], [Enabled], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{departmentId4.ToGuid()}', '{departmentId4}', '{tenancyId}', N'财务部', '1', '{time}', '{time}', N'{{}}')";

                string s7 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.Positions]([ActorId], [PositionId], [TenancyId], [PositionName], [Enabled], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{positionId1.ToGuid()}', '{positionId1}', '{tenancyId}', N'系统管理员', '1', '{time}', '{time}', N'{{}}')";

                string s8 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.Positions]([ActorId], [PositionId], [TenancyId], [PositionName], [Enabled], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{positionId2.ToGuid()}', '{positionId2}', '{tenancyId}', N'董事长', '1', '{time}', '{time}', N'{{}}')";

                string s9 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.Positions]([ActorId], [PositionId], [TenancyId], [PositionName], [Enabled], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{positionId3.ToGuid()}', '{positionId3}', '{tenancyId}', N'总经理', '1', '{time}', '{time}', N'{{}}')";

                string s10 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.Positions]([ActorId], [PositionId], [TenancyId], [PositionName], [Enabled], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{positionId4.ToGuid()}', '{positionId4}', '{tenancyId}', N'财务', '1', '{time}', '{time}', N'{{}}')";

                string s11 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.Positions]([ActorId], [PositionId], [TenancyId], [PositionName], [Enabled], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{positionId5.ToGuid()}', '{positionId5}', '{tenancyId}', N'店长管家', '1', '{time}', '{time}', N'{{}}')";

                string s12 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.Positions]([ActorId], [PositionId], [TenancyId], [PositionName], [Enabled], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{positionId6.ToGuid()}', '{positionId6}', '{tenancyId}', N'运营经理', '1', '{time}', '{time}', N'{{}}')";

                string s13 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.Positions]([ActorId], [PositionId], [TenancyId], [PositionName], [Enabled], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{positionId7.ToGuid()}', '{positionId7}', '{tenancyId}', N'其他', '1', '{time}', '{time}', N'{{}}')";

                string s14 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.Roles]([ActorId], [RoleId], [RoleName], [Description], [Enabled], [Permissions], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{roleId1.ToGuid()}', '{roleId1}', N'财务' + '{domain}', N'财务日常操作,财务包含数据导出权限', '1', N'[{string.Join(",", permissionIds1)}]', '{time}', '{time}', N'{{}}')";

                string s15 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.Roles]([ActorId], [RoleId], [RoleName], [Description], [Enabled], [Permissions], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{roleId2.ToGuid()}', '{roleId2}', N'店长' + '{domain}', N'管家日常管理,包括签约、续租、退租、账单', '1', N'[{string.Join(",", permissionIds2)}]', '{time}', '{time}', N'{{}}')";

                string s16 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.Roles]([ActorId], [RoleId], [RoleName], [Description], [Enabled], [Permissions], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{roleId3.ToGuid()}', '{roleId3}', N'管理层' + '{domain}', N'方便管理层数据监控、可以浏览所有权限', '1', N'[{string.Join(",", permissionIds2)}]', '{time}', '{time}', N'{{}}')";

                string s17 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.Roles]([ActorId], [RoleId], [RoleName], [Description], [Enabled], [Permissions], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{roleId4.ToGuid()}', '{roleId4}', N'IT管理' + '{domain}', N'负责平时系统管理,拥有大部分权限', '1', N'[{string.Join(",", permissionIds2)}]', '{time}', '{time}', N'{{}}')";

                string s18 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.Users] ([ActorId], [UserId], [UserName], [Description], [Enabled], [Roles], [Permissions], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{userId.ToGuid()}', '{userId}', '{userName}', N'Administrator', '1', N'[{string.Join(",", roleIds)}]', N'[{string.Join(",", permissionIds3)}]', '{time}', '{time}', N'{{}}')";

                string s19 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.LoginInfos] ([LoginInfoId], [LoginInfoAccount], [LoginInfoType], [UserId], [Enabled], [CreateTime]) 
VALUES ('{loginInfoId.ToGuid()}', '{cellphone}', 'Cellphone', '{userId}', '1', '{time}')";

                string s20 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.Accounts]([ActorId], [UserId], [AccountId], [TenancyId], [Cellphone], [AccountName], [AccountState], [AccountPhotoUrl], [CredentialType], [CredentialNo], [RealName], [Email], [DistrictId], [DepartmentId], [PositionId], [Enabled], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{accountId.ToGuid()}', '{userId}', '{accountId}', '{tenancyId}', '{cellphone}', '{accountName}', N'Normal', N'https://kolibrestore.blob.core.chinacloudapi.cn/fengniaowu/talos/default_avatars/1.png', '{credentialType}', '{credentialNo}', '{realName}', NULL, '{districtId}', '{departmentId1}', '{positionId1}', '1', '{time}', '{time}', N'{{}}')";

                string s21 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.PasswordLoginProviders] ([ActorId], [UserId], [PasswordHash], [LockoutEnd], [LockoutEnabled], [AccessFailedCount], [Enabled], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{userId.ToGuid()}', '{userId}', '{passwordHash}', NULL, '1', '0', '1', '{time}', '{time}', N'{{}}')";

                string temp22 = "{\"tenancyName\":\"" + companyName + "\",\"tenancyOrganizationNumber\":\"" + cuscc + "\"}";
                string s22    = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.DigitalContractConfigs]([DigitalContractConfigId], [Name], [TemplateType], [Description], [RequestParameters], [HtmlContentUrl], [Enabled], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{digitalId1}', N'居住房屋租赁合同', N'TongYongZuFang', N'', '{temp22}', N'https://kolibrestore.blob.core.chinacloudapi.cn/public/uploads/apartment/digitalcontract/templates/tongyongzufang_20180505.html', '1', '{time}', '{time}', N'{{}}')";

                string s23 = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.DigitalContractConfigs]([DigitalContractConfigId], [Name], [TemplateType], [Description], [RequestParameters], [HtmlContentUrl], [Enabled], [CreateTime], [UpdateTime], [Data]) 
VALUES ('{digitalId2}', N'补充协议', N'RentSupplementaryAgreement', N'', '{temp22}', N'https://kolibrestore.blob.core.chinacloudapi.cn/public/uploads/apartment/digitalcontract/templates/buchong.html', '1', '{time}', '{time}', N'{{}}')";

                string temp24 = "[[\"" + digitalId1 + "\"],[\"" + digitalId2 + "\"]]";
                string s24    = $@"INSERT INTO [dbo].[KC.Fengniaowu.Talos.DigitalContractRelationConfigs]([DigitalContractRelationConfigId], [EntityType], [EntityId], [ConfigContent], [Enabled], [CreateTime], [UpdateTime], [Data], [ContractProcess]) 
VALUES ('{digitalConfigId}', N'Tenancy', '{tenancyId}', '{temp24}', '1', '{time}', '{time}', N'{{}}', N'Sign')";

                Dictionary <string, string> tempDic = new Dictionary <string, string>
                {
                    { "s0", s0 }, { "s1", s1 }, { "s2", s2 }, { "s3", s3 }, { "s4", s4 }, { "s5", s5 }, { "s6", s6 }, { "s7", s7 }, { "s8", s8 }, { "s9", s9 }, { "s10", s10 }, { "s11", s11 }, { "s12", s12 }, { "s13", s13 }, { "s14", s14 }, { "s15", s15 }, { "s16", s16 }, { "s17", s17 }, { "s18", s18 }, { "s19", s19 }, { "s20", s20 }, { "s21", s21 }, { "s22", s22 }, { "s23", s23 }, { "s24", s24 }
                };

                // 执行SQL语句

                try
                {
                    foreach (KeyValuePair <string, string> kv in tempDic)
                    {
                        if (string.IsNullOrEmpty(kv.Value))
                        {
                            continue;
                        }

                        int rows = connection.Execute(kv.Value, null, tran);
                        if (rows <= 0)
                        {
                            tran.Rollback();
                            ShowRegisterErrorMsg(kv.Key);
                            return;
                        }
                    }
                }
                catch (Exception)
                {
                    tran.Rollback();
                    MessageBox.Show("注册商户失败,SQL执行异常");
                    return;
                }

                tran.Commit();

                MessageBox.Show("注册成功");
            }
        }