/// <summary>
        /// 用户是否在某部门
        /// </summary>
        /// <param name="userId">用户主键</param>
        /// <param name="organizationName">部门名称</param>
        /// <returns>存在</returns>
        public bool IsInOrganization(string userId, string organizationName)
        {
            var result = false;
            // 把部门的主键找出来
            var parameters = new List <KeyValuePair <string, object> >
            {
                new KeyValuePair <string, object>(BaseOrganizationEntity.FieldName, organizationName),
                new KeyValuePair <string, object>(BaseOrganizationEntity.FieldEnabled, 1),
                new KeyValuePair <string, object>(BaseOrganizationEntity.FieldDeleted, 0)
            };
            var organizationManager = new BaseOrganizationManager(UserInfo);
            var organizationId      = organizationManager.GetId(parameters);

            if (string.IsNullOrEmpty(organizationId))
            {
                return(result);
            }
            // 用户组织机构关联关系
            var organizationIds = GetAllOrganizationIds(userId);

            if (organizationIds == null || organizationIds.Length == 0)
            {
                return(result);
            }
            // 用户的部门是否存在这些部门里
            result = StringUtil.Exists(organizationIds, organizationId);
            return(result);
        }
        /// <summary>
        /// 获得列表
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="streetId">街道主键</param>
        /// <returns>数据表</returns>
        public DataTable GetDataTableByStreetId(BaseUserInfo userInfo, string streetId)
        {
            var result = new DataTable(BaseOrganizationEntity.CurrentTableName);

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

            ServiceUtil.ProcessUserCenterReadDb(userInfo, parameter, (dbHelper) =>
            {
                // 这里可以缓存起来,提高效率
                var manager = new BaseOrganizationManager(dbHelper, userInfo);
                // 这里是条件字段
                var parameters = new List <KeyValuePair <string, object> >
                {
                    new KeyValuePair <string, object>(BaseOrganizationEntity.FieldStreetId, streetId),
                    new KeyValuePair <string, object>(BaseOrganizationEntity.FieldEnabled, 1),
                    new KeyValuePair <string, object>(BaseOrganizationEntity.FieldDeleted, 0)
                };
                // 获取列表,指定排序字段
                result = manager.GetDataTable(parameters, BaseOrganizationEntity.FieldSortCode);
                result.DefaultView.Sort = BaseOrganizationEntity.FieldSortCode;
                result.TableName        = BaseOrganizationEntity.CurrentTableName;
            });

            return(result);
        }
        /// <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, BaseOrganizationEntity 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 manager = new BaseOrganizationManager(dbHelper, userInfo);
                result      = manager.UniqueAdd(entity, out returnCode);
                //增加返回状态和信息Troy.Cui 2018-10-03
                returnMessage = manager.StatusMessage;
                //returnMessage = manager.GetStateMessage(returnCode);
                if (returnCode.Equals(Status.OkAdd.ToString()))
                {
                    entity.Id = int.Parse(result);
                    //Troy.Cui 2018-10-18去掉这里的Folder检查
                    //var folderManager = new BaseFolderManager(dbHelper, userInfo);
                    //folderManager.FolderCheck(entity.Id.ToString(), entity.Name);
                }
            });
            status        = returnCode;
            statusMessage = returnMessage;
            return(result);
        }
        /// <summary>
        /// 按某个权限域获取组织列表
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="userId">用户主键</param>
        /// <param name="permissionCode">数据权限编号</param>
        /// <param name="childrens">获取子节点</param>
        /// <returns>数据表</returns>
        public DataTable GetOrganizationDTByPermission(BaseUserInfo userInfo, string userId, string permissionCode = "Resource.ManagePermission", bool childrens = true)
        {
            var dt = new DataTable(BaseOrganizationEntity.CurrentTableName);

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

            ServiceUtil.ProcessUserCenterReadDb(userInfo, parameter, (dbHelper) =>
            {
                // 若权限是空的,直接返回所有数据
                if (string.IsNullOrEmpty(permissionCode))
                {
                    var organizationManager = new BaseOrganizationManager(dbHelper, userInfo);
                    dt = organizationManager.GetDataTable();
                    dt.DefaultView.Sort = BaseOrganizationEntity.FieldSortCode;
                }
                else
                {
                    // 获得组织机构列表
                    var permissionScopeManager = new BasePermissionScopeManager(dbHelper, userInfo);
                    dt = permissionScopeManager.GetOrganizationDt(userInfo.SystemCode, userInfo.Id.ToString(), permissionCode, childrens);
                    dt.DefaultView.Sort = BaseOrganizationEntity.FieldSortCode;
                }
                dt.TableName = BaseOrganizationEntity.CurrentTableName;
            });
            return(dt);
        }
Beispiel #5
0
        /// <summary>
        /// 缓存预热,强制重新缓存
        /// </summary>
        /// <returns>影响行数</returns>
        public static int CachePreheating()
        {
            var result = 0;

            // 把所有的组织机构都缓存起来的代码
            var manager    = new BaseOrganizationManager();
            var dataReader = manager.ExecuteReader();

            if (dataReader != null && !dataReader.IsClosed)
            {
                while (dataReader.Read())
                {
                    var entity = BaseEntity.Create <BaseOrganizationEntity>(dataReader, false);
                    if (entity != null)
                    {
                        SetCache(entity);
                        result++;
                        Console.WriteLine(result + " : " + entity.Name);
                    }
                }

                dataReader.Close();
            }

            return(result);
        }
Beispiel #6
0
        /// <summary>
        /// 设置缓存
        /// 20151007 吉日嘎拉,需要在一个连接上进行大量的操作
        /// 20160128 吉日嘎拉,一些空调间的判断。
        /// </summary>
        /// <param name="entity">用户实体</param>
        public static void SetCache(BaseUserEntity entity)
        {
            var key = string.Empty;

            if (entity != null && entity.Id > 0)
            {
                key = "User:"******"User:ByNickName:" + entity.NickName.ToLower();
                    CacheUtil.Set <string>(key, entity.Id.ToString());
                }

                if (!string.IsNullOrEmpty(entity.Code))
                {
                    key = "User:ByCode:" + entity.Code;
                    CacheUtil.Set <string>(key, entity.Id.ToString());

                    key = "User:ByCompanyId:ByCode" + entity.CompanyId + ":" + entity.Code;
                    CacheUtil.Set <string>(key, entity.Id.ToString());
                }

                var companyCode = BaseOrganizationManager.GetCodeByCache(entity.CompanyId.ToString());
                if (!string.IsNullOrEmpty(companyCode))
                {
                    key = "User:ByCompanyCode:ByCode" + companyCode + ":" + entity.Code;
                    CacheUtil.Set <string>(key, entity.Id.ToString());
                }

                Console.WriteLine(entity.Id + " : " + entity.RealName);
            }
        }
        /// <summary>
        /// 更新组织机构
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="entity">实体</param>
        /// <param name="status">状态</param>
        /// <param name="statusMessage">状态信息</param>
        /// <returns>影响行数</returns>
        public int Update(BaseUserInfo userInfo, BaseOrganizationEntity entity, out Status status, out string statusMessage)
        {
            var result = 0;

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

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

            ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) =>
            {
                // 2015-12-19 吉日嘎拉 网络不稳定,数据获取不完整时,异常时,会引起重大隐患
                var manager = new BaseOrganizationManager(dbHelper, userInfo);
                // result = manager.Update(entity);
                if (manager.StatusCode.Equals(Status.OkUpdate.ToString()))
                {
                    // var folderManager = new BaseFolderManager(dbHelper, userInfo);
                    // result = folderManager.SetProperty(entity.Id.ToString(), new KeyValuePair<string, object>(BaseFolderEntity.FieldFolderName, entity.Name));
                }
                returnCode    = manager.Status;
                returnMessage = manager.StatusMessage;
            });

            status        = returnCode;
            statusMessage = returnMessage;

            return(result);
        }
Beispiel #8
0
        /// <summary>
        /// 根据公司编码和用户编码获取用户实体
        /// </summary>
        /// <param name="companyCode"></param>
        /// <param name="userCode"></param>
        /// <returns></returns>
        public BaseUserEntity GetEntityByCompanyCodeByCode(string companyCode, string userCode)
        {
            BaseUserEntity result             = null;
            var            organizationEntity = BaseOrganizationManager.GetEntityByCodeByCache(companyCode);

            if (organizationEntity == null)
            {
                return(result);
            }

            var parameters = new List <KeyValuePair <string, object> >
            {
                new KeyValuePair <string, object>(BaseUserEntity.FieldCode, userCode),
                new KeyValuePair <string, object>(BaseUserEntity.FieldCompanyId, organizationEntity.Id),
                new KeyValuePair <string, object>(BaseUserEntity.FieldEnabled, 1),
                new KeyValuePair <string, object>(BaseUserEntity.FieldDeleted, 0)
            };
            var dt = GetDataTable(parameters);

            if (dt != null && dt.Rows.Count > 0)
            {
                result = BaseEntity.Create <BaseUserEntity>(dt);
            }
            return(result);
        }
        /// <summary>
        /// 按名称获取实体
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="name">名称</param>
        /// <returns>实体</returns>
        public BaseOrganizationEntity GetEntityByName(BaseUserInfo userInfo, string name)
        {
            BaseOrganizationEntity entity = null;

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

            ServiceUtil.ProcessUserCenterReadDb(userInfo, parameter, (dbHelper) =>
            {
                var manager = new BaseOrganizationManager(dbHelper, userInfo);
                entity      = manager.GetEntityByName(name);
            });
            return(entity);
        }
        /// <summary>
        /// 移动数据
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="id">主键</param>
        /// <param name="parentId">父主键</param>
        /// <returns>影响行数</returns>
        public int MoveTo(BaseUserInfo userInfo, string id, string parentId)
        {
            var result = 0;

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

            ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) =>
            {
                var manager = new BaseOrganizationManager(dbHelper, userInfo);
                result      = manager.MoveTo(id, parentId);
            });
            return(result);
        }
        /// <summary>
        /// 批量重新生成排序码
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="ids">主键数组</param>
        /// <returns>影响行数</returns>
        public int BatchSetSortCode(BaseUserInfo userInfo, string[] ids)
        {
            var result = 0;

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

            ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) =>
            {
                var manager = new BaseOrganizationManager(dbHelper, userInfo);
                result      = manager.BatchSetSortCode(ids);
            });
            return(result);
        }
        /// <summary>
        /// 批量设置删除
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="ids">主键数组</param>
        /// <returns>影响行数</returns>
        public int SetDeleted(BaseUserInfo userInfo, string[] ids)
        {
            var result = 0;

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

            ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) =>
            {
                var manager = new BaseOrganizationManager(dbHelper, userInfo);
                for (var i = 0; i < ids.Length; i++)
                {
                    // 设置部门为删除状态
                    result += manager.SetDeleted(ids[i]);
                    // 相应的用户也需要处理
                    var userManager = new BaseUserManager(dbHelper, userInfo);
                    var parameters  = new List <KeyValuePair <string, object> >
                    {
                        new KeyValuePair <string, object>(BaseUserEntity.FieldCompanyId, null),
                        new KeyValuePair <string, object>(BaseUserEntity.FieldCompanyName, null)
                    };
                    userManager.SetProperty(new KeyValuePair <string, object>(BaseUserEntity.FieldCompanyId, ids[i]), parameters);
                    parameters = new List <KeyValuePair <string, object> >
                    {
                        new KeyValuePair <string, object>(BaseUserEntity.FieldSubCompanyId, null),
                        new KeyValuePair <string, object>(BaseUserEntity.FieldSubCompanyName, null)
                    };
                    userManager.SetProperty(new KeyValuePair <string, object>(BaseUserEntity.FieldSubCompanyId, ids[i]), parameters);
                    parameters = new List <KeyValuePair <string, object> >
                    {
                        new KeyValuePair <string, object>(BaseUserEntity.FieldDepartmentId, null),
                        new KeyValuePair <string, object>(BaseUserEntity.FieldDepartmentName, null)
                    };
                    userManager.SetProperty(new KeyValuePair <string, object>(BaseUserEntity.FieldDepartmentId, ids[i]), parameters);
                    parameters = new List <KeyValuePair <string, object> >
                    {
                        new KeyValuePair <string, object>(BaseUserEntity.FieldWorkgroupId, null),
                        new KeyValuePair <string, object>(BaseUserEntity.FieldWorkgroupName, null)
                    };
                    userManager.SetProperty(new KeyValuePair <string, object>(BaseUserEntity.FieldWorkgroupId, ids[i]), parameters);
                    // 相应的员工也需要处理
                    var staffManager = new BaseStaffManager(dbHelper, userInfo);
                    staffManager.SetProperty(new KeyValuePair <string, object>(BaseStaffEntity.FieldCompanyId, ids[i]), new KeyValuePair <string, object>(BaseStaffEntity.FieldCompanyId, null));
                    staffManager.SetProperty(new KeyValuePair <string, object>(BaseStaffEntity.FieldSubCompanyId, ids[i]), new KeyValuePair <string, object>(BaseStaffEntity.FieldSubCompanyId, null));
                    staffManager.SetProperty(new KeyValuePair <string, object>(BaseStaffEntity.FieldDepartmentId, ids[i]), new KeyValuePair <string, object>(BaseStaffEntity.FieldDepartmentId, null));
                    staffManager.SetProperty(new KeyValuePair <string, object>(BaseStaffEntity.FieldWorkgroupId, ids[i]), new KeyValuePair <string, object>(BaseStaffEntity.FieldWorkgroupId, null));
                }
                //var folderManager = new BaseFolderManager(dbHelper, userInfo);
                //folderManager.SetDeleted(ids);
            });
            return(result);
        }
        /// <summary>
        /// 按主键数组获取列表
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="ids">组织机构主键</param>
        /// <returns>数据表</returns>
        public DataTable GetDataTableByIds(BaseUserInfo userInfo, string[] ids)
        {
            var dt = new DataTable(BaseOrganizationEntity.CurrentTableName);

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

            ServiceUtil.ProcessUserCenterReadDb(userInfo, parameter, (dbHelper) =>
            {
                var manager  = new BaseOrganizationManager(dbHelper, userInfo);
                dt           = manager.GetDataTable(BaseOrganizationEntity.FieldId, ids, BaseOrganizationEntity.FieldSortCode);
                dt.TableName = BaseOrganizationEntity.CurrentTableName;
            });
            return(dt);
        }
Beispiel #14
0
        /// <summary>
        /// 获得角色中的组织机构主键
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="roleId">角色主键</param>
        /// <returns>组织机构主键</returns>
        public string[] GetRoleOrganizationIds(BaseUserInfo userInfo, string roleId)
        {
            string[] result = null;

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

            ServiceUtil.ProcessUserCenterReadDb(userInfo, parameter, (dbHelper) =>
            {
                var manager = new BaseOrganizationManager(dbHelper, userInfo);
                result      = manager.GetIdsInRole(userInfo.SystemCode, roleId);
            });

            return(result);
        }
Beispiel #15
0
        /// <summary>
        /// 清除角色组织机构关联
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="roleId">角色主键</param>
        /// <returns>影响行数</returns>
        public int ClearOrganizationUser(BaseUserInfo userInfo, string roleId)
        {
            var result = 0;

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

            ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) =>
            {
                var manager = new BaseOrganizationManager(dbHelper, userInfo);
                result      = manager.ClearOrganization(userInfo.SystemCode, roleId);
            });

            return(result);
        }
        /// <summary>
        /// 按主键获取列表
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="ids">主键数组</param>
        /// <returns>数据表</returns>
        public List <BaseOrganizationEntity> GetListByIds(BaseUserInfo userInfo, string[] ids)
        {
            var result = new List <BaseOrganizationEntity>();

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

            ServiceUtil.ProcessUserCenterReadDb(userInfo, parameter, (dbHelper) =>
            {
                var userManager = new BaseOrganizationManager(dbHelper, userInfo);
                result          = userManager.GetList <BaseOrganizationEntity>(BaseOrganizationEntity.FieldId, ids, BaseOrganizationEntity.FieldSortCode);
            });

            return(result);
        }
        /// <summary>
        /// 同步数据
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="all">同步所有数据</param>
        /// <returns>影响行数</returns>
        public int Synchronous(BaseUserInfo userInfo, bool all = false)
        {
            var result = 0;

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

            ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) =>
            {
                var manager = new BaseOrganizationManager(dbHelper, userInfo);
                // result = manager.Synchronous(all);
            });

            return(result);
        }
Beispiel #18
0
        /// <summary>
        /// 重新设置缓存(重新强制设置缓存)可以提供外部调用的
        /// </summary>
        /// <param name="id">主键</param>
        /// <returns>用户信息</returns>
        public static BaseOrganizationEntity SetCache(string id)
        {
            BaseOrganizationEntity result = null;

            var manager = new BaseOrganizationManager();

            result = manager.GetEntity(id);

            if (result != null)
            {
                SetCache(result);
            }

            return(result);
        }
        /// <summary>
        /// 批量移动数据
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="organizationIds">主键数组</param>
        /// <param name="parentId">父节点主键</param>
        /// <returns>影响行数</returns>
        public int BatchMoveTo(BaseUserInfo userInfo, string[] organizationIds, string parentId)
        {
            var result = 0;

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

            ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) =>
            {
                var manager = new BaseOrganizationManager(dbHelper, userInfo);
                for (var i = 0; i < organizationIds.Length; i++)
                {
                    result += manager.MoveTo(organizationIds[i], parentId);
                }
            });
            return(result);
        }
        /// <summary>
        /// 获取部门列表
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="parameters">参数</param>
        /// <returns>数据表</returns>
        public DataTable GetDataTable(BaseUserInfo userInfo, List <KeyValuePair <string, object> > parameters)
        {
            var dt = new DataTable(BaseOrganizationEntity.CurrentTableName);

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

            ServiceUtil.ProcessUserCenterReadDb(userInfo, parameter, (dbHelper) =>
            {
                // 获得组织机构列表
                var manager         = new BaseOrganizationManager(dbHelper, userInfo);
                dt                  = manager.GetDataTable(parameters, BaseOrganizationEntity.FieldSortCode);
                dt.DefaultView.Sort = BaseOrganizationEntity.FieldSortCode;
                dt.TableName        = BaseOrganizationEntity.CurrentTableName;
            });
            return(dt);
        }
        /// <summary>
        /// 获得列表
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="parentId">父亲节点主键</param>
        /// <returns>数据表</returns>
        public DataTable GetErrorDataTable(BaseUserInfo userInfo, string parentId)
        {
            var dt = new DataTable(BaseOrganizationEntity.CurrentTableName);

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

            ServiceUtil.ProcessUserCenterReadDb(userInfo, parameter, (dbHelper) =>
            {
                // 这里可以缓存起来,提高效率
                var manager         = new BaseOrganizationManager(dbHelper, userInfo);
                dt                  = manager.GetErrorDataTable(parentId);
                dt.DefaultView.Sort = BaseOrganizationEntity.FieldSortCode;
                dt.TableName        = BaseOrganizationEntity.CurrentTableName;
            });
            return(dt);
        }
        /// <summary>
        /// 批量删除数据
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="ids">主键数组</param>
        /// <returns>影响行数</returns>
        public int BatchDelete(BaseUserInfo userInfo, string[] ids)
        {
            var result = 0;

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

            ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) =>
            {
                var manager = new BaseOrganizationManager(dbHelper, userInfo);
                result      = manager.Delete(ids);
                // 把公司文件夹也删除了
                //var folderManager = new BaseFolderManager(dbHelper, userInfo);
                //result = folderManager.Delete(ids);
            });
            return(result);
        }
        /// <summary>
        /// 查询组织机构
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="organizationId">组织机构</param>
        /// <param name="searchKey">查询</param>
        /// <returns>数据表</returns>
        public DataTable Search(BaseUserInfo userInfo, string organizationId, string searchKey)
        {
            var dt = new DataTable(BaseOrganizationEntity.CurrentTableName);

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

            ServiceUtil.ProcessUserCenterReadDb(userInfo, parameter, (dbHelper) =>
            {
                // 获得组织机构列表
                var manager         = new BaseOrganizationManager(dbHelper, userInfo);
                dt                  = manager.Search(searchKey, organizationId);
                dt.DefaultView.Sort = BaseOrganizationEntity.FieldSortCode;
                dt.TableName        = BaseOrganizationEntity.CurrentTableName;
            });
            return(dt);
        }
        /// <summary>
        /// 按部门获取部门用户,包括子部门的用户
        /// </summary>
        /// <param name="departmentId">部门主键</param>
        /// <param name="searchKey">关键字</param>
        /// <returns>数据表</returns>
        public DataTable SearchByDepartment(string departmentId, string searchKey)
        {
            var sql = "SELECT " + BaseUserEntity.CurrentTableName + ".* "
                      + " FROM " + BaseUserEntity.CurrentTableName;

            sql += " WHERE (" + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldDeleted + " = 0 ";
            sql += " AND " + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldEnabled + " = 1 ) ";
            if (!string.IsNullOrEmpty(departmentId))
            {
                /*
                 * 用非递归调用的建议方法
                 * sql += " AND " + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldDepartmentId
                 + " IN ( SELECT " + BaseOrganizationEntity.FieldId
                 + " FROM " + BaseOrganizationEntity.CurrentTableName
                 + " WHERE " + BaseOrganizationEntity.FieldId + " = " + departmentId + " OR " + BaseOrganizationEntity.FieldParentId + " = " + departmentId + ")";
                 */
                var organizationManager = new BaseOrganizationManager(DbHelper, UserInfo);
                var organizationIds     = organizationManager.GetChildrensId(BaseOrganizationEntity.FieldId, departmentId, BaseOrganizationEntity.FieldParentId);
                if (organizationIds != null && organizationIds.Length > 0)
                {
                    sql += " AND (" + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldCompanyId + " IN (" + StringUtil.ArrayToList(organizationIds) + ")"
                           + " OR " + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldDepartmentId + " IN (" + StringUtil.ArrayToList(organizationIds) + ")"
                           + " OR " + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldWorkgroupId + " IN (" + StringUtil.ArrayToList(organizationIds) + "))";
                }
            }
            var dbParameters = new List <IDbDataParameter>();

            searchKey = searchKey.Trim();
            if (!string.IsNullOrEmpty(searchKey))
            {
                sql += " AND (" + BaseUserEntity.FieldUserName + " LIKE " + DbHelper.GetParameter(BaseUserEntity.FieldUserName);
                sql += " OR " + BaseUserEntity.FieldCode + " LIKE " + DbHelper.GetParameter(BaseUserEntity.FieldCode);
                sql += " OR " + BaseUserEntity.FieldRealName + " LIKE " + DbHelper.GetParameter(BaseUserEntity.FieldRealName);
                sql += " OR " + BaseUserEntity.FieldDepartmentName + " LIKE " + DbHelper.GetParameter(BaseUserEntity.FieldDepartmentName) + ")";
                if (searchKey.IndexOf("%") < 0)
                {
                    searchKey = "%" + searchKey + "%";
                }
                dbParameters.Add(DbHelper.MakeParameter(BaseUserEntity.FieldUserName, searchKey));
                dbParameters.Add(DbHelper.MakeParameter(BaseUserEntity.FieldCode, searchKey));
                dbParameters.Add(DbHelper.MakeParameter(BaseUserEntity.FieldRealName, searchKey));
                dbParameters.Add(DbHelper.MakeParameter(BaseUserEntity.FieldDepartmentName, searchKey));
            }
            sql += " ORDER BY " + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldSortCode;
            return(DbHelper.Fill(sql, dbParameters.ToArray()));
        }
Beispiel #25
0
        /// <summary>
        /// 将组织机构从角色中移除
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="roleId">角色主键</param>
        /// <param name="organizationIds">组织机构主键</param>
        /// <returns>影响行数</returns>
        public int RemoveOrganizationFromRole(BaseUserInfo userInfo, string roleId, string[] organizationIds)
        {
            var result = 0;

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

            ServiceUtil.ProcessUserCenterWriteDbWithTransaction(userInfo, parameter, (dbHelper) =>
            {
                var manager = new BaseOrganizationManager(dbHelper, userInfo);
                if (organizationIds != null)
                {
                    result += manager.RemoveFromRole(userInfo.SystemCode, organizationIds, roleId);
                }
            });

            return(result);
        }
Beispiel #26
0
        /// <summary>
        /// 组织机构添加到角色
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="roleId">角色主键</param>
        /// <param name="organizationIds">组织机构主键</param>
        /// <returns>影响行数</returns>
        public int AddOrganizationToRole(BaseUserInfo userInfo, string roleId, string[] organizationIds)
        {
            var result = 0;

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

            ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) =>
            {
                var manager = new BaseOrganizationManager(dbHelper, userInfo);
                // 小心异常,检查一下参数的有效性
                if (organizationIds != null)
                {
                    result += manager.AddToRole(userInfo.SystemCode, organizationIds, roleId);
                }
            });

            return(result);
        }
        /// <summary>
        /// 获取下级的用户表
        /// </summary>
        /// <param name="organizationId"></param>
        /// <returns></returns>
        public DataTable GetChildrenUserDataTable(string organizationId)
        {
            string[] organizationIds     = null;
            var      organizationManager = new BaseOrganizationManager(DbHelper, UserInfo);

            switch (DbHelper.CurrentDbType)
            {
            case CurrentDbType.Access:
            case CurrentDbType.SqlServer:
                var organizationCode = organizationManager.GetCodeById(organizationId);
                organizationIds = organizationManager.GetChildrensIdByCode(BaseOrganizationEntity.FieldCode, organizationCode);
                break;

            case CurrentDbType.Oracle:
                organizationIds = organizationManager.GetChildrensId(BaseOrganizationEntity.FieldId, organizationId, BaseOrganizationEntity.FieldParentId);
                break;
            }
            return(GetDataTableByOrganizations(organizationIds));
        }
Beispiel #28
0
        /// <summary>
        /// 刷新缓存
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public static int RefreshCache(string userId)
        {
            var result = 0;

            // 刷新用户的缓存
            var userEntity = GetEntityByCache(userId, true);

            if (userEntity != null)
            {
                // 刷新用户的登录限制 用户名的限制

                // 刷新用户的登录限制
                ResetIpAddressByCache(userId);
                ResetMacAddressByCache(userId);
                // 刷新组织机构缓存
                BaseOrganizationManager.GetEntityByCache(userEntity.CompanyId.ToString(), true);
                // 2016-02-18 吉日嘎拉 刷新拒绝权限(把用户的权限放在一起方便直接移除、刷新)
                var key = "User:IsAuthorized:" + userId;
                CacheUtil.Remove(key);

                // 2016-05-24 吉日嘎拉 解除登录限制的方法,防止一天都登录不上的问题发生
                //if (!string.IsNullOrEmpty(userEntity.NickName))
                //{
                //    key = "u:" + userEntity.NickName;
                //    PooledRedisHelper.CallLimitRemove(key);
                //}
                //if (!string.IsNullOrEmpty(userEntity.Code))
                //{
                //    key = "u:" + userEntity.Code;
                //    PooledRedisHelper.CallLimitRemove(key);
                //}

                // 每个子系统都可以循环一次
                var systemCodes = BaseSystemManager.GetSystemCodes();
                foreach (var entity in systemCodes)
                {
                    BasePermissionManager.ResetPermissionByCache(entity.ItemKey, userId, null);
                }
            }

            return(result);
        }
        /// <summary>
        /// 指定用户是否有指定组织编码的兼任
        /// </summary>
        /// <param name="userId">用户编号</param>
        /// <param name="organizationCode">组织编码</param>
        /// <param name="organizationCategoryCode">组织类型</param>
        /// <returns>数据表</returns>
        public bool Exists(string userId, string organizationCode, string organizationCategoryCode = "Company")
        {
            var result = false;

            if (ValidateUtil.IsInt(userId))
            {
                var entity = new BaseOrganizationManager(UserInfo).GetEntityByCode(organizationCode);
                if (entity != null)
                {
                    var parameters = new List <KeyValuePair <string, object> >
                    {
                        new KeyValuePair <string, object>(BaseUserOrganizationEntity.FieldDeleted, 0),
                        new KeyValuePair <string, object>(BaseUserOrganizationEntity.FieldEnabled, 1),
                        new KeyValuePair <string, object>(BaseUserOrganizationEntity.FieldUserId, userId)
                    };
                    if (organizationCategoryCode.Equals("Company", StringComparison.OrdinalIgnoreCase))
                    {
                        parameters.Add(new KeyValuePair <string, object>(BaseUserOrganizationEntity.FieldCompanyId, entity.Id));
                    }
                    else if (organizationCategoryCode.Equals("SubCompany", StringComparison.OrdinalIgnoreCase))
                    {
                        parameters.Add(new KeyValuePair <string, object>(BaseUserOrganizationEntity.FieldSubCompanyId, entity.Id));
                    }
                    else if (organizationCategoryCode.Equals("Department", StringComparison.OrdinalIgnoreCase))
                    {
                        parameters.Add(new KeyValuePair <string, object>(BaseUserOrganizationEntity.FieldDepartmentId, entity.Id));
                    }
                    else if (organizationCategoryCode.Equals("SubDepartment", StringComparison.OrdinalIgnoreCase))
                    {
                        parameters.Add(new KeyValuePair <string, object>(BaseUserOrganizationEntity.FieldSubDepartmentId, entity.Id));
                    }
                    else if (organizationCategoryCode.Equals("Workgroup", StringComparison.OrdinalIgnoreCase))
                    {
                        parameters.Add(new KeyValuePair <string, object>(BaseUserOrganizationEntity.FieldWorkgroupId, entity.Id));
                    }
                    result = Exists(parameters);
                }
            }
            return(result);
        }
        /// <summary>
        /// 分页查询
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="recordCount">记录数</param>
        /// <param name="pageNo">当前页</param>
        /// <param name="pageSize">每页显示</param>
        /// <param name="condition">条件</param>
        /// <param name="dbParameters">参数</param>
        /// <param name="order">排序</param>
        /// <returns>数据表</returns>
        public DataTable GetDataTableByPage(BaseUserInfo userInfo, out int recordCount, int pageNo, int pageSize, string condition, List <KeyValuePair <string, object> > dbParameters, string order = null)
        {
            var myRecordCount = 0;
            var dt            = new DataTable(BaseOrganizationEntity.CurrentTableName);

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

            ServiceUtil.ProcessUserCenterReadDb(userInfo, parameter, (dbHelper) =>
            {
                if (SecretUtil.IsSqlSafe(condition))
                {
                    var organizationManager = new BaseOrganizationManager(dbHelper, userInfo);
                    dt           = organizationManager.GetDataTableByPage(out myRecordCount, pageNo, pageSize, condition, dbHelper.MakeParameters(dbParameters), order);
                    dt.TableName = BaseOrganizationEntity.CurrentTableName;
                }
                else
                {
                    // 记录注入日志
                    LogUtil.WriteLog("userInfo:" + userInfo.Serialize() + " " + condition, "SqlSafe");
                }
            });
            recordCount = myRecordCount;
            return(dt);
        }