/// <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); }
/// <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); }