Ejemplo n.º 1
0
        /// <summary>
        /// 获取系统的所有storages
        /// </summary>
        /// <returns></returns>
        private static List <StorageDAO> GetStorages()
        {
            var cacheFilter = new CacheFilter(_storageCacheKey);
            var cacheClient = new RedisClientCache();

            List <StorageDAO> storages = cacheClient.Query <List <StorageDAO> >(cacheFilter);

            if (storages == null || storages.Count == 0)
            {
                string sql = "select * from t_sys_storage where misdelete=0 order by mitemid";

                string connectionString = ConfigurationManager.AppSetting("ConnectionString");

                IORM _orm = new SugarORM(connectionString);

                var client = _orm.GetSqlClient <SqlSugarClient>();

                storages = client.SqlQueryable <StorageDAO>(sql).ToList();

                CacheModel storageCache = new CacheModel()
                {
                    Key  = _storageCacheKey,
                    Data = storages
                };

                if (cacheClient.IsExistCacheKey(cacheFilter))
                {
                    cacheClient.Delete(cacheFilter);
                }


                cacheClient.Add(storageCache);
            }
            return(storages);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 设置组织的数据库
        /// </summary>
        /// <param name="organizationId"></param>
        public static void SetOrganizationStorageRelation(string organizationId)
        {
            var storageMaxOrganiztonCount = ConfigurationManager.AppSetting("StorageMaxOrganiztonCount");

            if (string.IsNullOrWhiteSpace(storageMaxOrganiztonCount))
            {
                throw new Exception("没有找到配置项StorageMaxOrganiztonCount");
            }

            int maxConfiguration = 0;

            if (!int.TryParse(storageMaxOrganiztonCount, out maxConfiguration))
            {
                throw new Exception("配置项StorageMaxOrganiztonCount只能是整形数字");
            }

            var storages = GetStorages();

            if (storages == null || storages.Count == 0)
            {
                throw new Exception("没有找到任何的storeage");
            }

            var storage = storages.FirstOrDefault(x => x.MOrgCount < maxConfiguration);

            if (storage == null)
            {
                throw new Exception("没有找到合适的数据库,请确认数据库是否已满");
            }

            OrganizaitonStoreRelationDAO organizaitonStore = new OrganizaitonStoreRelationDAO()
            {
                MItemID    = GuidUtility.GetGuid(),
                MOrgID     = organizationId,
                MStorageID = storage.MItemID,
                MIsActive  = true,
                MIsDelete  = false
            };

            string connectionString = ConfigurationManager.AppSetting("ConnectionString");

            IORM _orm = new SugarORM(connectionString);

            var client = _orm.GetSqlClient <SqlSugarClient>();

            client.Insertable <OrganizaitonStoreRelationDAO>(organizaitonStore).ExecuteCommand();
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 根据组织获取连接字符串
        /// </summary>
        /// <param name="organizationId"></param>
        /// <returns></returns>
        public static string GetConnectionString(string organizationId)
        {
            string connectionString = ConfigurationManager.AppSetting("ConnectionString");

            IORM _orm = new SugarORM(connectionString);

            var client = _orm.GetSqlClient <SqlSugarClient>();

            string sql = GetQuerySql(organizationId);

            OrganizaitonStoreRelationDAO dbStore = client.SqlQueryable <OrganizaitonStoreRelationDAO>(sql).First();

            if (dbStore == null)
            {
                throw new Exception($"找不到组织{organizationId}对应的业务数据库");
            }

            return(GetConnectionString(dbStore));
        }