/// <summary>
        /// 根据字典编码、主键获取实体
        /// </summary>
        /// <param name="dictionaryCode">字典编码</param>
        /// <param name="itemKey">字典项主键</param>
        /// <param name="itemValue">字典项值</param>
        /// <returns></returns>
        public BaseDictionaryItemEntity GetEntity(string dictionaryCode, string itemKey, string itemValue = null)
        {
            BaseDictionaryItemEntity entity = null;

            if (!string.IsNullOrEmpty(dictionaryCode) && !string.IsNullOrEmpty(itemKey))
            {
                var entityBaseDictionary = new BaseDictionaryManager(UserInfo).GetEntityByCode(dictionaryCode);
                if (entityBaseDictionary != null)
                {
                    var parameters = new List <KeyValuePair <string, object> >
                    {
                        new KeyValuePair <string, object>(BaseDictionaryItemEntity.FieldDictionaryId, entityBaseDictionary.Id),
                        new KeyValuePair <string, object>(BaseDictionaryItemEntity.FieldItemKey, itemKey),
                        new KeyValuePair <string, object>(BaseDictionaryItemEntity.FieldDeleted, 0),
                        new KeyValuePair <string, object>(BaseDictionaryItemEntity.FieldEnabled, 1)
                    };
                    if (!string.IsNullOrEmpty(itemValue))
                    {
                        parameters.Add(new KeyValuePair <string, object>(BaseDictionaryItemEntity.FieldItemValue, itemValue));
                    }
                    var cacheKey  = CurrentTableName + ".Entity." + dictionaryCode + "." + itemKey;
                    var cacheTime = TimeSpan.FromMilliseconds(86400000);
                    entity = CacheUtil.Cache <BaseDictionaryItemEntity>(cacheKey, () => BaseEntity.Create <BaseDictionaryItemEntity>(GetDataTable(parameters)), true, false, cacheTime);
                }
            }
            return(entity);
        }
        /// <summary>
        /// 获取列表
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <returns>数据表</returns>
        public DataTable GetDataTable(BaseUserInfo userInfo)
        {
            var dt = new DataTable(BaseDictionaryEntity.CurrentTableName);

            var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod());

            ServiceUtil.ProcessUserCenterReadDb(userInfo, parameter, (dbHelper) =>
            {
                var tableName = BaseDictionaryEntity.CurrentTableName;
                if (userInfo != null && !string.IsNullOrEmpty(userInfo.SystemCode))
                {
                    tableName = userInfo.SystemCode + "Items";
                }
                var itemsManager = new BaseDictionaryManager(dbHelper, userInfo, tableName);
                // 若是系统管理员,那就返回全部数据
                if (BaseUserManager.IsAdministrator(userInfo.Id))
                {
                    var parameters = new List <KeyValuePair <string, object> >
                    {
                        new KeyValuePair <string, object>(BaseDictionaryItemEntity.FieldDeleted, 0)
                    };
                    dt = itemsManager.GetDataTable(parameters, BaseDictionaryItemEntity.FieldSortCode);
                }
                else
                {
                    // 按数据权限来过滤数据
                    var permissionScopeManager = new BasePermissionScopeManager(dbHelper, userInfo);
                    var ids = permissionScopeManager.GetResourceScopeIds(userInfo.SystemCode, userInfo.Id, tableName, "Resource.ManagePermission");
                    dt      = itemsManager.GetDataTable(ids);
                    BaseUtil.SetFilter(dt, BaseDictionaryItemEntity.FieldDeleted, "0");
                }
                dt.TableName = tableName;
            });
            return(dt);
        }
        /// <summary>
        /// 添加实体
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="entity">实体</param>
        /// <param name="status">状态</param>
        /// <param name="statusMessage">返回状态信息</param>
        /// <returns>数据表</returns>
        public string Add(BaseUserInfo userInfo, BaseDictionaryEntity entity, out Status status, out string statusMessage)
        {
            var result = string.Empty;

            var returnCode    = Status.Ok;
            var returnMessage = string.Empty;

            var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod());

            ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) =>
            {
                var tableName = BaseDictionaryEntity.CurrentTableName;
                if (userInfo != null && !string.IsNullOrEmpty(userInfo.SystemCode))
                {
                    tableName = userInfo.SystemCode + "Items";
                }
                var itemsManager = new BaseDictionaryManager(dbHelper, userInfo, tableName);
                // 调用方法,并且返回运行结果
                result        = itemsManager.Add(entity);
                returnMessage = itemsManager.GetStateMessage(returnCode);
            });
            status        = returnCode;
            statusMessage = returnMessage;
            return(result);
        }
        /// <summary>
        /// 批量删除实体
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="tableName">目标表</param>
        /// <param name="ids">主键数组</param>
        /// <returns>影响行数</returns>
        public int BatchDelete(BaseUserInfo userInfo, string tableName, string[] ids)
        {
            var result = 0;

            var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod());

            ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) =>
            {
                var itemsManager = new BaseDictionaryManager(dbHelper, userInfo, tableName);
                result           = itemsManager.Delete(ids);
            });
            return(result);
        }
        /// <summary>
        /// 获取列表
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <returns>数据表</returns>
        public List <BaseDictionaryEntity> GetList(BaseUserInfo userInfo)
        {
            List <BaseDictionaryEntity> result = null;

            var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod());

            ServiceUtil.ProcessUserCenterReadDb(userInfo, parameter, (dbHelper) =>
            {
                var tableName = BaseDictionaryEntity.CurrentTableName;
                if (userInfo != null && !string.IsNullOrEmpty(userInfo.SystemCode))
                {
                    tableName = userInfo.SystemCode + "Items";
                }
                var itemsManager = new BaseDictionaryManager(dbHelper, userInfo, tableName);
                result           = itemsManager.GetList <BaseDictionaryEntity>();
            });
            return(result);
        }
        /// <summary>
        /// 批量保存数据
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="dt">数据表</param>
        /// <returns>影响行数</returns>
        public int BatchSave(BaseUserInfo userInfo, DataTable dt)
        {
            var result = 0;

            var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod());

            ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) =>
            {
                var tableName = BaseDictionaryEntity.CurrentTableName;
                if (userInfo != null && !string.IsNullOrEmpty(userInfo.SystemCode))
                {
                    tableName = userInfo.SystemCode + "Items";
                }
                var itemsManager = new BaseDictionaryManager(dbHelper, userInfo, tableName);
                result           = itemsManager.BatchSave(dt);
            });
            return(result);
        }
        /// <summary>
        /// 按父节点获取列表
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="parentId">父级主键</param>
        /// <returns>数据表</returns>
        public DataTable GetDataTableByParent(BaseUserInfo userInfo, string parentId)
        {
            var dt = new DataTable(BaseDictionaryEntity.CurrentTableName);

            var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod());

            ServiceUtil.ProcessUserCenterReadDb(userInfo, parameter, (dbHelper) =>
            {
                var tableName = BaseDictionaryEntity.CurrentTableName;
                if (userInfo != null && !string.IsNullOrEmpty(userInfo.SystemCode))
                {
                    tableName = userInfo.SystemCode + "Items";
                }
                var itemsManager = new BaseDictionaryManager(dbHelper, userInfo, tableName);
                dt           = itemsManager.GetDataTableByParent(parentId);
                dt.TableName = tableName;
            });
            return(dt);
        }
예제 #8
0
        /// <summary>
        /// GetListByCode
        /// </summary>
        /// <param name="dbHelper"></param>
        /// <param name="userInfo"></param>
        /// <param name="code"></param>
        /// <returns></returns>
        public List <BaseDictionaryItemEntity> GetListByCode(IDbHelper dbHelper, BaseUserInfo userInfo, string code)
        {
            List <BaseDictionaryItemEntity> result = null;
            // 检查有其他目标数据库表存储了数据
            var itemsManager = new BaseDictionaryManager(dbHelper, userInfo);
            var itemsEntity  = BaseEntity.Create <BaseDictionaryEntity>(itemsManager.GetDataTable(new KeyValuePair <string, object>(BaseDictionaryEntity.FieldCode, code)));

            if (itemsEntity != null)
            {
                var itemDetailsManager = new BaseDictionaryItemManager(dbHelper, userInfo);
                // 这里只要有效的,没被删除的
                var parameters = new List <KeyValuePair <string, object> >
                {
                    // 管理的时候无效的也需要被管理
                    new KeyValuePair <string, object>(BaseDictionaryItemEntity.FieldDictionaryId, itemsEntity.Id),
                    new KeyValuePair <string, object>(BaseDictionaryItemEntity.FieldEnabled, 1),
                    new KeyValuePair <string, object>(BaseDictionaryItemEntity.FieldDeleted, 0)
                };
                result = itemDetailsManager.GetList <BaseDictionaryItemEntity>(parameters, BaseDictionaryItemEntity.FieldSortCode);
            }
            return(result);
        }
        /// <summary>
        /// 根据字典编码获取数据表
        /// </summary>
        /// <param name="dictionaryCode">字典编码</param>
        /// <returns>数据表</returns>
        public DataTable GetDataTableByDictionaryCode(string dictionaryCode)
        {
            var dt = new DataTable();

            if (!string.IsNullOrEmpty(dictionaryCode))
            {
                var entity = new BaseDictionaryManager(UserInfo).GetEntityByCode(dictionaryCode);
                if (entity != null)
                {
                    var cacheKey   = "DataTable." + CurrentTableName + "." + dictionaryCode;
                    var cacheTime  = TimeSpan.FromMilliseconds(86400000);
                    var parameters = new List <KeyValuePair <string, object> >
                    {
                        new KeyValuePair <string, object>(BaseDictionaryItemEntity.FieldDictionaryId, entity.Id),
                        new KeyValuePair <string, object>(BaseDictionaryItemEntity.FieldDeleted, 0),
                        new KeyValuePair <string, object>(BaseDictionaryItemEntity.FieldEnabled, 1)
                    };
                    dt = CacheUtil.Cache <DataTable>(cacheKey, () => GetDataTable(parameters), true, false, cacheTime);
                }
            }

            return(dt);
        }