Ejemplo n.º 1
0
 /// <summary>
 /// 获取有岗位的组织机构主键
 /// </summary>
 /// <param name="userId">用户主键</param>
 /// <param name="dutyName">岗位名称</param>
 /// <returns>主键数组</returns>
 public string[] GetOrganizeIdsByDutyName(string userId = null, string dutyName = "部门主管")
 {
     // 这里需要一个转换的过程,先找到系统角色里这个角色是什么编号
     string dutyCode = "Manager";
     BaseRoleManager roleManager = new BaseRoleManager(this.UserInfo);
     List<KeyValuePair<string, object>> parameters = new List<KeyValuePair<string, object>>();
     parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldRealName, dutyName));
     parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldCategoryCode, "SystemRole"));
     parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldEnabled, 1));
     parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldDeletionStateCode, 0));
     roleManager.GetId(parameters);
     // 这里需要返回公司的主键数组
     return GetOrganizeIdsByDuty(userId, dutyCode);
 }
        /// <summary>
        /// 按某个权限获取角色 主键数组
        /// </summary>
        /// <param name="managerUserId">管理用户主键</param>
        /// <param name="permissionItemCode">权限编号</param>
        /// <returns>主键数组</returns>
        public string[] GetRoleIds(string managerUserId, string permissionItemCode)
        {
            string sqlQuery = this.GetRoleIdsSql(managerUserId, permissionItemCode);
            DataTable dataTable = DbHelper.Fill(sqlQuery);
            string[] ids = BaseBusinessLogic.FieldToArray(dataTable, BaseBusinessLogic.FieldId);
            // 这里列出只是有效地,没被删除的角色主键
            if (ids != null && ids.Length > 0)
            {
                BaseRoleManager roleManager = new BaseRoleManager(this.DbHelper, this.UserInfo);

                List<KeyValuePair<string, object>> parameters = new List<KeyValuePair<string, object>>();
                parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldId, ids));
                parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldEnabled, 1));
                parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldDeletionStateCode, 0));

                ids = roleManager.GetIds(parameters);
            }
            return ids;
        }
        /// <summary>
        /// 按某个权限获取角色 数据表
        /// </summary>
        /// <param name="userId">管理用户主键</param>
        /// <param name="permissionItemCode">权限编号</param>
        /// <returns>数据表</returns>
        public DataTable GetRoleDT(string userId, string permissionItemCode)
        {
            DataTable returnValue = new DataTable(BaseRoleEntity.TableName);
            //string[] names = null;
            //object[] values = null;

            // 这里需要判断,是系统权限?
            bool isRole = false;
            BaseUserManager userManager = new BaseUserManager(this.DbHelper, this.UserInfo);
            // 用户管理员,这里需要判断,是业务权限?
            isRole = userManager.IsInRoleByCode(userId, "UserAdmin") || userManager.IsInRoleByCode(userId, "Admin");
            if (isRole)
            {
                BaseRoleManager manager = new BaseRoleManager(this.DbHelper, this.UserInfo);

                List<KeyValuePair<string, object>> parameters = new List<KeyValuePair<string, object>>();
                parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldIsVisible, 1));
                parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldEnabled, 1));
                parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldDeletionStateCode, 0));

                returnValue = manager.GetDataTable(parameters, BaseModuleEntity.FieldSortCode);
                returnValue.TableName = this.CurrentTableName;
                return returnValue;
            }

            string sqlQuery = string.Empty;
            sqlQuery = " SELECT * "
                      + "  FROM " + BaseRoleEntity.TableName
                      + " WHERE " + BaseRoleEntity.FieldCreateUserId + " = '" + this.UserInfo.Id + "'"
                      + "    OR " + BaseRoleEntity.TableName + "." + BaseRoleEntity.FieldId + " IN ("
                                + this.GetRoleIdsSql(userId, permissionItemCode)
                                + " ) AND (" + BaseRoleEntity.FieldDeletionStateCode + " = 0) "
                                + " AND (" + BaseRoleEntity.FieldIsVisible + " = 1) "
                   + " ORDER BY " + BaseRoleEntity.FieldSortCode;
            return DbHelper.Fill(sqlQuery);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 用户是否在某个角色中
        /// </summary>
        /// <param name="userId">用户主键</param>
        /// <param name="roleCode">角色编号</param>
        /// <returns>存在</returns>
        public bool IsInRoleByCode(string userId, string code)
        {
            bool returnValue = false;
            if (string.IsNullOrEmpty(code))
            {
                return false;
            }

            string tableName = BaseRoleEntity.TableName;
            if (!string.IsNullOrEmpty(BaseSystemInfo.SystemCode))
            {
                tableName = BaseSystemInfo.SystemCode + "Role";
            }
            BaseRoleManager roleManager = new BaseRoleManager(this.DbHelper, this.UserInfo, tableName);
            string roleId = roleManager.GetId(
                new KeyValuePair<string, object>(BaseRoleEntity.FieldDeletionStateCode, 0)
                , new KeyValuePair<string, object>(BaseRoleEntity.FieldCode, code));
            if (string.IsNullOrEmpty(roleId))
            {
                return false;
            }
            string[] roleIds = GetAllRoleIds(userId);
            returnValue = StringUtil.Exists(roleIds, roleId);
            return returnValue;
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 用户添加到角色
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="roleName">角色名</param>
        /// <param name="permissionItemCode">权限编号</param>
        /// <returns>主键</returns>
        public string AddUserToRole(BaseUserInfo userInfo, string userName, string roleName)
        {
            // 加强安全验证防止未授权匿名调用
            #if (!DEBUG)
                LogOnService.UserIsLogOn(userInfo);
            #endif

            string returnValue = string.Empty;
            using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))
            {
                try
                {
                    dbHelper.Open(UserCenterDbConnection);
                    BaseUserManager userManager = new BaseUserManager(dbHelper, userInfo);
                    string userId = userManager.GetId(new KeyValuePair<string, object>(BaseUserEntity.FieldUserName, userName));
                    BaseRoleManager roleManager = new BaseRoleManager(dbHelper, userInfo);
                    string roleId = roleManager.GetId(new KeyValuePair<string, object>(BaseRoleEntity.FieldRealName, roleName));
                    if (!String.IsNullOrEmpty(userId) && !String.IsNullOrEmpty(roleId))
                    {
                        returnValue = userManager.AddToRole(userId, roleId);
                    }
                }
                catch (Exception ex)
                {
                    BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                    throw ex;
                }
                finally
                {
                    dbHelper.Close();
                }
            }

            return returnValue;
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 批量打角色删除标志
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="ids">主键数组</param>
        /// <returns>影响行数</returns>
        public int SetDeleted(BaseUserInfo userInfo, string[] ids)
        {
            // 写入调试信息
            #if (DEBUG)
                int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
            #endif

            // 加强安全验证防止未授权匿名调用
            #if (!DEBUG)
                LogOnService.UserIsLogOn(userInfo);
            #endif

            int returnValue = 0;
            using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))
            {
                try
                {
                    dbHelper.Open(UserCenterDbConnection);
                    string tableName = BaseRoleEntity.TableName;
                    if (!string.IsNullOrEmpty(BaseSystemInfo.SystemCode))
                    {
                        tableName = BaseSystemInfo.SystemCode + "Role";
                    }
                    BaseRoleManager roleManager = new BaseRoleManager(dbHelper, userInfo, tableName);

                    switch (DbHelper.DbType)
                    {
                        case DbTypes.Access:

                            // 考虑主键是数值类型的,支持Access//xtzwd
                            int[] keys = BaseBusinessLogic.GetIntKeys(ids);
                            returnValue = roleManager.SetDeleted(keys, true);
                            break;
                        default:
                            returnValue = roleManager.SetDeleted(ids, true);
                            break;
                    }

                    BaseLogManager.Instance.Add(dbHelper, userInfo, serviceName, AppMessage.RoleService_SetDeleted, MethodBase.GetCurrentMethod());
                }
                catch (Exception ex)
                {
                    BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                    throw ex;
                }
                finally
                {
                    dbHelper.Close();
                }
            }

            // 写入调试信息
            #if (DEBUG)
                BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
            #endif

            return returnValue;
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 获取用户群组列表
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <returns>数据表</returns>
        public DataTable GetUserGroup(BaseUserInfo userInfo)
        {
            // 写入调试信息
            #if (DEBUG)
                int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
            #endif

            // 加强安全验证防止未授权匿名调用
            #if (!DEBUG)
                BaseSystemInfo.IsAuthorized(userInfo);
            #endif

            DataTable dataTable = new DataTable(BaseRoleEntity.TableName);
            using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))
            {
                try
                {
                    dbHelper.Open(UserCenterDbConnection);
                    string tableName = BaseRoleEntity.TableName;
                    if (!string.IsNullOrEmpty(BaseSystemInfo.SystemCode))
                    {
                        tableName = BaseSystemInfo.SystemCode + "Role";
                    }
                    // 获得角色列表
                    BaseRoleManager roleManager = new BaseRoleManager(dbHelper, userInfo, tableName);
                    List<KeyValuePair<string, object>> parameters = new List<KeyValuePair<string, object>>();
                    parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldCategoryCode, "UserGroup"));
                    parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldDeletionStateCode, 0));
                    parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldIsVisible, 1));
                    parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldCreateUserId, userInfo.Id));
                    dataTable = roleManager.GetDataTable(parameters, BaseRoleEntity.FieldSortCode);
                    dataTable.TableName = tableName;
                    BaseLogManager.Instance.Add(dbHelper, userInfo, serviceName, AppMessage.RoleService_GetDataTable, MethodBase.GetCurrentMethod());
                }
                catch (Exception ex)
                {
                    BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                    throw ex;
                }
                finally
                {
                    dbHelper.Close();
                }
            }

            // 写入调试信息
            #if (DEBUG)
                BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
            #endif

            return dataTable;
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 批量移动角色数据
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="ids">主键数组</param>
        /// <param name="targetId">目标主键</param>
        /// <returns>影响行数</returns>
        public int BatchMoveTo(BaseUserInfo userInfo, string[] ids, string targetId)
        {
            // 写入调试信息
            #if (DEBUG)
                int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
            #endif

            // 加强安全验证防止未授权匿名调用
            #if (!DEBUG)
                LogOnService.UserIsLogOn(userInfo);
            #endif

            int returnValue = 0;
            using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))
            {
                try
                {
                    dbHelper.Open(UserCenterDbConnection);
                    string tableName = BaseRoleEntity.TableName;
                    if (!string.IsNullOrEmpty(BaseSystemInfo.SystemCode))
                    {
                        tableName = BaseSystemInfo.SystemCode + "Role";
                    }
                    BaseRoleManager roleManager = new BaseRoleManager(dbHelper, userInfo, tableName);
                    returnValue = roleManager.BatchMoveTo(ids, targetId);
                    BaseLogManager.Instance.Add(dbHelper, userInfo, serviceName, AppMessage.RoleService_BatchMoveTo, MethodBase.GetCurrentMethod());
                }
                catch (Exception ex)
                {
                    BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                    throw ex;
                }
                finally
                {
                    dbHelper.Close();
                }
            }

            // 写入调试信息
            #if (DEBUG)
                BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
            #endif

            return returnValue;
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 用户是否在指定的角色里
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="UserId">用户主键</param>
        /// <param name="roleName">角色名称</param>
        /// <returns>在角色里</returns>
        public bool IsInRole(BaseUserInfo userInfo, string userId, string roleName)
        {
            // 写入调试信息
            #if (DEBUG)
                int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
            #endif

            // 加强安全验证防止未授权匿名调用
            #if (!DEBUG)
                LogOnService.UserIsLogOn(userInfo);
            #endif

            bool returnValue = false;
            using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))
            {
                try
                {
                    dbHelper.Open(UserCenterDbConnection);
                    // 先获得角色主键
                    BaseRoleManager roleManager = new BaseRoleManager(dbHelper, userInfo);
                    string roleCode = roleManager.GetProperty(new KeyValuePair<string, object>(BaseRoleEntity.FieldRealName, roleName), BaseRoleEntity.FieldCode);
                    // 判断用户的默认角色
                    if (!string.IsNullOrEmpty(roleCode))
                    {
                        BaseUserManager userManager = new BaseUserManager(dbHelper, userInfo);
                        returnValue = userManager.IsInRoleByCode(userId, roleCode);
                    }
                    BaseLogManager.Instance.Add(dbHelper, userInfo, this.serviceName, AppMessage.PermissionService_IsInRole, MethodBase.GetCurrentMethod());
                }
                catch (Exception ex)
                {
                    BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                    throw ex;
                }
                finally
                {
                    dbHelper.Close();
                }
            }

            // 写入调试信息
            #if (DEBUG)
                BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
            #endif

            return returnValue;
        }
Ejemplo n.º 10
0
 private string GetRoleId(Button btnRole)
 {
     string returnValue = string.Empty;
     BaseRoleManager roleManager = new BaseRoleManager(this.UserInfo);
     List<KeyValuePair<string, object>> parameters = new List<KeyValuePair<string, object>>();
     parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldOrganizeId, this.EntityId));
     parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldCategoryCode, "Duty"));
     parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldCode, btnRole.Name.Substring(3).Replace("Delete","")));
     parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldEnabled, 1));
     parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldDeletionStateCode, 0));
     returnValue = roleManager.GetProperty(parameters, BaseRoleEntity.FieldId);
     btnRole.Tag = returnValue;
     return returnValue;
 }
Ejemplo n.º 11
0
        private void btnRole_Click(object sender, EventArgs e)
        {
            string txtButton = ((Button)sender).Text;
            Button btnRole = (Button)sender;
            string roldId = GetRoleId(btnRole);
            if (string.IsNullOrEmpty(roldId))
            {
                BaseRoleEntity roleEntity = new BaseRoleEntity();
                roleEntity.OrganizeId = this.EntityId;
                roleEntity.Code = ((Button)sender).Name.Substring(3).Replace("Delete", "");
                roleEntity.RealName = this.txtFullName.Text + "_" + txtButton;
                roleEntity.Description = ((Button)sender).Text;
                roleEntity.CategoryCode = "Duty";
                roleEntity.Enabled = 1;
                roleEntity.DeletionStateCode = 0;
                BaseRoleManager roleManager = new BaseRoleManager(this.UserInfo);
                roldId = roleManager.Add(roleEntity);
                btnRole.Tag = roldId;
            }
            FrmRoleUserAdmin frmRoleUserAdmin = new FrmRoleUserAdmin(roldId);
            frmRoleUserAdmin.ShowDialog(this);

            this.GetRoleUser(btnRole);
        }
Ejemplo n.º 12
0
        /// <summary>
        /// 获取用户的角色列表
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <returns>数据表</returns>
        public DataTable GetRoleDT(BaseUserInfo userInfo)
        {
            // 写入调试信息
            #if (DEBUG)
                int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
            #endif

            // 加强安全验证防止未授权匿名调用
            #if (!DEBUG)
                BaseSystemInfo.IsAuthorized(userInfo);
            #endif

            DataTable dataTable = new DataTable(BaseRoleEntity.TableName);
            using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))
            {
                try
                {
                    dbHelper.Open(UserCenterDbConnection);

                    List<KeyValuePair<string, object>> parameters = new List<KeyValuePair<string, object>>();
                    parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldEnabled, 1));
                    parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldDeletionStateCode, 0));
                    BaseRoleManager roleManager = new BaseRoleManager(dbHelper, userInfo);
                    // 获取有效的,未必删除的数据,按排序码排序
                    dataTable = roleManager.GetDataTable(parameters, BaseRoleEntity.FieldSortCode);
                    // 不是超级管理员,不能添加超级管理员
                    if (!userInfo.IsAdministrator)
                    {
                        foreach (DataRow dataRow in dataTable.Rows)
                        {
                            if (dataRow[BaseRoleEntity.FieldCode].ToString().Equals(DefaultRole.Administrators.ToString()))
                            {
                                dataRow.Delete();
                            }
                        }
                        dataTable.AcceptChanges();
                    }
                    dataTable.TableName = BaseUserEntity.TableName;
                    dataTable.DefaultView.Sort = BaseUserEntity.FieldSortCode;
                    BaseLogManager.Instance.Add(dbHelper, userInfo, this.serviceName, AppMessage.UserService_GetRoleDT, MethodBase.GetCurrentMethod());
                }
                catch (Exception ex)
                {
                    BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                    throw ex;
                }
                finally
                {
                    dbHelper.Close();
                }
            }

            // 写入调试信息
            #if (DEBUG)
                BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
            #endif

            return dataTable;
        }
Ejemplo n.º 13
0
        /// <summary>
        /// 添加角色
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="role">角色</param>
        /// <returns>主键</returns>
        public string AddRole(BaseUserInfo userInfo, string role)
        {
            // 加强安全验证防止未授权匿名调用
            #if (!DEBUG)
                LogOnService.UserIsLogOn(userInfo);
            #endif

            string returnValue = string.Empty;
            using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))
            {
                try
                {
                    dbHelper.Open(UserCenterDbConnection);
                    BaseRoleManager roleManager = new BaseRoleManager(dbHelper, userInfo);
                    string statusCode = string.Empty;
                    BaseRoleEntity roleEntity = new BaseRoleEntity();
                    roleEntity.RealName = role;
                    roleEntity.Enabled = 1;
                    returnValue = roleManager.Add(roleEntity, out statusCode);
                }
                catch (Exception ex)
                {
                    BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                    throw ex;
                }
                finally
                {
                    dbHelper.Close();
                }
            }

            return returnValue;
        }
Ejemplo n.º 14
0
        /// <summary>
        /// 撤销角色权限
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="roleName">角色名</param>
        /// <param name="permissionItemCode">权限编号</param>
        /// <returns>主键</returns>
        public int RevokeRolePermission(BaseUserInfo userInfo, string roleName, string permissionItemCode)
        {
            // 加强安全验证防止未授权匿名调用
            #if (!DEBUG)
                LogOnService.UserIsLogOn(userInfo);
            #endif

            int returnValue = 0;
            using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))
            {
                try
                {
                    dbHelper.Open(UserCenterDbConnection);
                    BaseRoleManager roleManager = new BaseRoleManager(dbHelper, userInfo);
                    string roleId = roleManager.GetId(new KeyValuePair<string, object>(BaseRoleEntity.FieldRealName, roleName));
                    BasePermissionItemManager permissionItemManager = new BasePermissionItemManager(dbHelper, userInfo);
                    string permissionItemId = permissionItemManager.GetId(new KeyValuePair<string, object>(BasePermissionItemEntity.FieldCode, permissionItemCode));
                    if (!String.IsNullOrEmpty(roleId) && !String.IsNullOrEmpty(permissionItemId))
                    {
                        BaseRolePermissionManager rolePermissionManager = new BaseRolePermissionManager(dbHelper, userInfo);
                        returnValue = rolePermissionManager.Revoke(roleId, permissionItemId);
                    }
                }
                catch (Exception ex)
                {
                    BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                    throw ex;
                }
                finally
                {
                    dbHelper.Close();
                }
            }

            return returnValue;
        }
Ejemplo n.º 15
0
        /// <summary>
        /// 删除角色
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="role">角色</param>
        /// <returns>影响行数</returns>
        public int DeleteRole(BaseUserInfo userInfo, string role)
        {
            // 加强安全验证防止未授权匿名调用
            #if (!DEBUG)
                LogOnService.UserIsLogOn(userInfo);
            #endif

            int returnValue = 0;
            using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))
            {
                try
                {
                    dbHelper.Open(UserCenterDbConnection);
                    BaseRoleManager roleManager = new BaseRoleManager(dbHelper, userInfo);
                    string id = roleManager.GetId(new KeyValuePair<string, object>(BaseRoleEntity.FieldRealName, role));
                    if (!String.IsNullOrEmpty(id))
                    {
                        // 在删除时,可能会把相关的其他配置角色会删除掉,所以需要调用这个方法。
                        returnValue = roleManager.Delete(id);
                    }
                }
                catch (Exception ex)
                {
                    BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                    throw ex;
                }
                finally
                {
                    dbHelper.Close();
                }
            }

            return returnValue;
        }
Ejemplo n.º 16
0
 public BaseUserInfo ConvertToUserInfo(BaseUserEntity userEntity, BaseUserInfo userInfo)
 {
     userInfo.OpenId = userEntity.OpenId;
     userInfo.Id = userEntity.Id.ToString();
     userInfo.Code = userEntity.Code;
     userInfo.UserName = userEntity.UserName;
     userInfo.RealName = userEntity.RealName;
     userInfo.RoleId = userEntity.RoleId;
     userInfo.CompanyId = userEntity.CompanyId;
     userInfo.CompanyName = userEntity.CompanyName;
     userInfo.SubCompanyId = userEntity.SubCompanyId;
     userInfo.SubCompanyName = userEntity.SubCompanyName;
     userInfo.DepartmentId = userEntity.DepartmentId;
     userInfo.DepartmentName = userEntity.DepartmentName;
     userInfo.WorkgroupId = userEntity.WorkgroupId;
     userInfo.WorkgroupName = userEntity.WorkgroupName;
     if (userEntity.SecurityLevel == null)
     {
         userEntity.SecurityLevel = 0;
     }
     userInfo.SecurityLevel = (int)userEntity.SecurityLevel;
     if (userEntity.RoleId != null)
     {
         // 获取角色名称
         BaseRoleManager roleManager = new BaseRoleManager(DbHelper, UserInfo);
         BaseRoleEntity roleEntity = roleManager.GetEntity(userEntity.RoleId);
         if (roleEntity.Id > 0)
         {
             userInfo.RoleName = roleEntity.RealName;
         }
     }
     return userInfo;
 }
        /// <summary>
        /// 下个流程发送给谁
        /// </summary>
        /// <param name="id">当前主键</param>
        /// <returns>影响行数</returns>
        private int StepAuditTransmit(string currentId, string workFlowCategory, string sendToId, string auditIdea)
        {
            BaseWorkFlowCurrentEntity workFlowCurrentEntity = this.GetEntity(currentId);

            // 1.记录当前的审核时间、审核人信息
            workFlowCurrentEntity.ToDepartmentId = this.UserInfo.DepartmentId;
            workFlowCurrentEntity.ToDepartmentName = this.UserInfo.DepartmentName;
            workFlowCurrentEntity.ToUserId = this.UserInfo.Id;
            workFlowCurrentEntity.ToUserRealName = this.UserInfo.RealName;
            workFlowCurrentEntity.AuditStatus = AuditStatus.Transmit.ToString();
            workFlowCurrentEntity.AuditStatusName = AuditStatus.Transmit.ToDescription();

            // 2.记录审核日志
            this.AddHistory(workFlowCurrentEntity);

            // 3.上一个审核结束了,新的审核又开始了,更新待审核情况
            workFlowCurrentEntity.AuditUserId = this.UserInfo.Id;
            workFlowCurrentEntity.AuditUserRealName = this.UserInfo.RealName;
            workFlowCurrentEntity.AuditDate = DateTime.Now;
            workFlowCurrentEntity.AuditIdea = auditIdea;

            // 是否提交给部门审批
            if (workFlowCategory.Equals("ByOrganize"))
            {
                BaseOrganizeManager organizeManager = new BaseOrganizeManager(UserInfo);
                BaseOrganizeEntity organizeEntity = organizeManager.GetEntity(sendToId);
                // 设置审批部门主键
                workFlowCurrentEntity.ToDepartmentId = sendToId;
                // 设置审批部门名称
                workFlowCurrentEntity.ToDepartmentName = organizeEntity.FullName;
            }
            // 是否提交给角色审批
            if (workFlowCategory.Equals("ByRole"))
            {
                BaseRoleManager roleManger = new BaseRoleManager(this.UserInfo);
                BaseRoleEntity roleEntity = roleManger.GetEntity(sendToId);
                // 设置审批角色主键
                workFlowCurrentEntity.ToRoleId = sendToId;
                // 设置审批角色名称
                workFlowCurrentEntity.ToRoleRealName = roleEntity.RealName;
            }
            // 是否提交给用户审批
            if (workFlowCategory.Equals("ByUser"))
            {
                BaseUserManager userManager = new BaseUserManager(UserInfo);
                BaseUserEntity userEntity = userManager.GetEntity(sendToId);
                // 设置审批用户主键
                workFlowCurrentEntity.ToUserId = sendToId;
                // 设置审批用户名称
                workFlowCurrentEntity.ToUserRealName = userEntity.RealName;
                // TODO 用户的部门信息需要处理
                if (!string.IsNullOrEmpty(userEntity.DepartmentId))
                {
                    BaseOrganizeManager organizeManager = new BaseOrganizeManager(UserInfo);
                    BaseOrganizeEntity organizeEntity = organizeManager.GetEntity(userEntity.DepartmentId);
                    workFlowCurrentEntity.ToDepartmentId = userEntity.DepartmentId;
                    workFlowCurrentEntity.ToDepartmentName = organizeEntity.FullName;
                }
            }
            workFlowCurrentEntity.AuditStatus = AuditStatus.WaitForAudit.ToString();
            workFlowCurrentEntity.AuditStatusName = AuditStatus.WaitForAudit.ToDescription();
            // 当前审核人的信息写入当前工作流
            workFlowCurrentEntity.Enabled = 0;
            workFlowCurrentEntity.DeletionStateCode = 0;
            return this.UpdateEntity(workFlowCurrentEntity);
        }
Ejemplo n.º 18
0
        public bool IsAdministrator(string userId)
        {
            // 用户是超级管理员
            if (userId.Equals("Administrator"))
            {
                return true;
            }
            BaseUserEntity userEntity = this.GetEntity(userId);
            if (userEntity.Code != null && userEntity.Code.Equals("Administrator"))
            {
                return true;
            }
            if (userEntity.UserName != null && userEntity.UserName.Equals("Administrator"))
            {
                return true;
            }

            string tableName = BaseUserRoleEntity.TableName;
            if (!string.IsNullOrEmpty(BaseSystemInfo.SystemCode))
            {
                tableName = BaseSystemInfo.SystemCode + "Role";
            }
            // 用户的默认角色是超级管理员
            BaseRoleManager roleManager = new BaseRoleManager(this.DbHelper, this.UserInfo, tableName);
            // 用户默认角色是否为超级管理员
            BaseRoleEntity roleEntity = null;
            if (userEntity.RoleId != null)
            {
                roleEntity = roleManager.GetEntity(userEntity.RoleId);
                if (roleEntity.Code != null && roleEntity.Code.Equals(DefaultRole.Administrators.ToString()))
                {
                    return true;
                }
            }

            // 用户在超级管理员群里
            string[] roleIds = this.GetAllRoleIds(userId);
            for (int i = 0; i < roleIds.Length; i++)
            {
                if (roleIds[i].Equals(DefaultRole.Administrators.ToString()))
                {
                    return true;
                }
                roleEntity = roleManager.GetEntity(roleIds[i]);
                if (roleEntity.Code != null && roleEntity.Code.Equals(DefaultRole.Administrators.ToString()))
                {
                    return true;
                }
            }
            return false;
        }
Ejemplo n.º 19
0
        /// <summary>
        /// 添加角色
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="roleEntity">实体</param>
        /// <param name="statusCode">返回状态码</param>
        /// <param name="statusMessage">返回状态信息</param>
        /// <returns>主键</returns>
        public string Add(BaseUserInfo userInfo, BaseRoleEntity roleEntity, out string statusCode, out string statusMessage)
        {
            // 写入调试信息
            #if (DEBUG)
                int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
            #endif

            // 加强安全验证防止未授权匿名调用
            #if (!DEBUG)
                LogOnService.UserIsLogOn(userInfo);
            #endif

            string returnValue = string.Empty;
            using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))
            {
                try
                {
                    dbHelper.Open(UserCenterDbConnection);
                    dbHelper.BeginTransaction();
                    string tableName = BaseRoleEntity.TableName;
                    if (!string.IsNullOrEmpty(BaseSystemInfo.SystemCode))
                    {
                        tableName = BaseSystemInfo.SystemCode + "Role";
                    }
                    BaseRoleManager roleManager = new BaseRoleManager(dbHelper, userInfo, tableName);
                    returnValue = roleManager.Add(roleEntity, out statusCode);
                    statusMessage = roleManager.GetStateMessage(statusCode);
                    BaseLogManager.Instance.Add(dbHelper, userInfo, serviceName, AppMessage.RoleService_Add, MethodBase.GetCurrentMethod());
                    dbHelper.CommitTransaction();
                }
                catch (Exception ex)
                {
                    dbHelper.RollbackTransaction();
                    BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                    throw ex;
                }
                finally
                {
                    dbHelper.Close();
                }
            }

            // 写入调试信息
            #if (DEBUG)
                BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
            #endif

            return returnValue;
        }
Ejemplo n.º 20
0
        /// <summary>
        /// 发送联络单
        /// </summary>
        /// <param name="receiverIds">接收者</param>
        /// <param name="organizeIds">组织机构数组</param>
        /// <param name="roleIds">角色数组</param>
        /// <returns>影响行数</returns>
        public int Send(string contactId, string[] receiverIds, string[] organizeIds, string[] roleIds)
        {
            BaseUserManager userManager = new BaseUserManager(DbHelper, UserInfo);
            receiverIds = userManager.GetUserIds(receiverIds, organizeIds, roleIds);

            // 删除邮件的处理技巧、发送给部门的、发送给角色的。
            // 删除邮件的列表过滤问题解决
            BaseContactDetailsManager contactDetailsManager = new BaseContactDetailsManager(DbHelper, UserInfo);
            BaseContactDetailsEntity contactDetailsEntity = null;

            // 组织机构数组
            if (organizeIds != null)
            {
                BaseOrganizeManager organizeManager = new BaseOrganizeManager(DbHelper, UserInfo);
                for (int i = 0; i < organizeIds.Length; i++)
                {
                    contactDetailsEntity = new BaseContactDetailsEntity();
                    // 这里一定要给个不可猜测的主键,为了提高安全性
                    contactDetailsEntity.Id = BaseBusinessLogic.NewGuid();
                    contactDetailsEntity.ContactId = contactId;
                    contactDetailsEntity.Category = "Organize";
                    contactDetailsEntity.ReceiverId = organizeIds[i];
                    contactDetailsEntity.ReceiverRealName = organizeManager.GetProperty(organizeIds[i], BaseOrganizeEntity.FieldFullName);
                    contactDetailsEntity.IsNew = 1;
                    contactDetailsEntity.Enabled = 1;
                    contactDetailsEntity.NewComment = 0;
                    contactDetailsManager.Add(contactDetailsEntity, false);
                }
            }

            // 角色数组
            if (roleIds != null)
            {
                BaseRoleManager roleManager = new BaseRoleManager(DbHelper, UserInfo);
                for (int i = 0; i < roleIds.Length; i++)
                {
                    contactDetailsEntity = new BaseContactDetailsEntity();
                    // 这里一定要给个不可猜测的主键,为了提高安全性
                    contactDetailsEntity.Id = BaseBusinessLogic.NewGuid();
                    contactDetailsEntity.ContactId = contactId;
                    contactDetailsEntity.Category = "Role";
                    contactDetailsEntity.ReceiverId = roleIds[i];
                    contactDetailsEntity.ReceiverRealName = roleManager.GetProperty(roleIds[i], BaseRoleEntity.FieldRealName);
                    contactDetailsEntity.IsNew = 1;
                    contactDetailsEntity.Enabled = 1;
                    contactDetailsEntity.NewComment = 0;
                    contactDetailsManager.Add(contactDetailsEntity, false);
                }
            }

            return this.Send(contactId, receiverIds);
        }
Ejemplo n.º 21
0
        /// <summary>
        /// 查询角色列表
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="organizeId">组织机构主键</param>
        /// <param name="search">查询字符串</param>
        /// <returns>数据表</returns>
        public DataTable Search(BaseUserInfo userInfo, string organizeId, string searchValue)
        {
            // 写入调试信息
            #if (DEBUG)
                int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
            #endif

            // 加强安全验证防止未授权匿名调用
            #if (!DEBUG)
                LogOnService.UserIsLogOn(userInfo);
            #endif

            DataTable dataTable = new DataTable(BaseRoleEntity.TableName);
            using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))
            {
                try
                {
                    dbHelper.Open(UserCenterDbConnection);
                    string tableName = BaseRoleEntity.TableName;
                    if (!string.IsNullOrEmpty(BaseSystemInfo.SystemCode))
                    {
                        tableName = BaseSystemInfo.SystemCode + "Role";
                    }
                    // 获得角色列表
                    BaseRoleManager roleManager = new BaseRoleManager(dbHelper, userInfo, tableName);
                    dataTable = roleManager.Search(organizeId, searchValue);
                    dataTable.TableName = BaseRoleEntity.TableName;
                    BaseLogManager.Instance.Add(dbHelper, userInfo, serviceName, AppMessage.RoleService_Search, MethodBase.GetCurrentMethod());
                }
                catch (Exception ex)
                {
                    BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                    throw ex;
                }
                finally
                {
                    dbHelper.Close();
                }
            }

            // 写入调试信息
            #if (DEBUG)
                BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
            #endif

            return dataTable;
        }
Ejemplo n.º 22
0
 /// <summary>
 /// 用户是否在某个角色中
 /// </summary>
 /// <param name="userId">用户主键</param>
 /// <param name="realName">角色</param>
 /// <returns>存在</returns>
 public bool IsInRole(string userId, string realName)
 {
     bool returnValue = false;
     if (string.IsNullOrEmpty(realName))
     {
         return false;
     }
     BaseRoleManager roleManager = new BaseRoleManager(this.DbHelper, this.UserInfo);
     string roleId = roleManager.GetId(new KeyValuePair<string, object>(BaseRoleEntity.FieldDeletionStateCode, 0)
         , new KeyValuePair<string, object>(BaseRoleEntity.FieldRealName, realName));
     if (string.IsNullOrEmpty(roleId))
     {
         return false;
     }
     string[] roleIds = GetAllRoleIds(userId);
     returnValue = StringUtil.Exists(roleIds, roleId);
     return returnValue;
 }
Ejemplo n.º 23
0
        /// <summary>
        /// 添加用户
        /// </summary>
        /// <param name="dbHelper">数据库连接</param>
        /// <param name="userInfo">用户信息</param>
        /// <param name="userEntity">用户实体</param>
        /// <param name="statusCode">状态码</param>
        /// <param name="statusMessage">状态信息</param>
        /// <returns>主键</returns>
        public string AddUser(IDbHelper dbHelper, BaseUserInfo userInfo, BaseUserEntity userEntity, out string statusCode, out string statusMessage)
        {
            // 加强安全验证防止未授权匿名调用
            #if (!DEBUG)
                BaseSystemInfo.IsAuthorized(userInfo);
            #endif

            string returnValue = string.Empty;
            BaseUserManager userManager = new BaseUserManager(dbHelper, userInfo);
            // 若是系统需要用加密的密码,这里需要加密密码。
            if (BaseSystemInfo.ServerEncryptPassword)
            {
                userEntity.UserPassword = userManager.EncryptUserPassword(userEntity.UserPassword);
                // 安全通讯密码、交易密码也生成好
                userEntity.CommunicationPassword = userManager.EncryptUserPassword(userEntity.CommunicationPassword);
            }
            returnValue = userManager.Add(userEntity, out statusCode);
            statusMessage = userManager.GetStateMessage(statusCode);
            // 自己不用给自己发提示信息,这个提示信息是为了提高工作效率的,还是需要审核通过的,否则垃圾信息太多了
            if (userEntity.Enabled == 0 && statusCode.Equals(StatusCode.OKAdd.ToString()))
            {
                // 不是系统管理员添加
                if (!userInfo.IsAdministrator)
                {
                    // 给超级管理员群组发信息
                    BaseRoleManager roleManager = new BaseRoleManager(dbHelper, userInfo);
                    string[] roleIds = roleManager.GetIds(new KeyValuePair<string, object>(BaseRoleEntity.FieldCode, "Administrators"));
                    string[] userIds = userManager.GetIds(new KeyValuePair<string, object>(BaseUserEntity.FieldCode, "Administrator"));
                    // 发送请求审核的信息
                    BaseMessageEntity messageEntity = new BaseMessageEntity();
                    messageEntity.FunctionCode = MessageFunction.WaitForAudit.ToString();

                    // Pcsky 2012.05.04 显示申请的用户名
                    messageEntity.Contents = userInfo.RealName + "(" + userInfo.IPAddress + ")" + AppMessage.UserService_Application + userEntity.UserName + AppMessage.UserService_Check;
                    //messageEntity.Contents = userInfo.RealName + "(" + userInfo.IPAddress + ")" + AppMessage.UserService_Application + userEntity.RealName + AppMessage.UserService_Check;

                    BaseMessageManager messageManager = new BaseMessageManager(dbHelper, userInfo);
                    messageManager.BatchSend(userIds, null, roleIds, messageEntity, false);
                }
            }
            return returnValue;
        }
Ejemplo n.º 24
0
        /// <summary>
        /// 按某个权限域获取角色列表
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="userId">用户主键</param>
        /// <param name="permissionItemCode">数据权限编号</param>
        /// <returns>数据表</returns>
        public DataTable GetRoleDTByPermissionScope(BaseUserInfo userInfo, string userId, string permissionItemCode)
        {
            // 写入调试信息
            #if (DEBUG)
                int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
            #endif

            // 加强安全验证防止未授权匿名调用
            #if (!DEBUG)
                LogOnService.UserIsLogOn(userInfo);
            #endif

            DataTable dataTable = new DataTable(BaseRoleEntity.TableName);
            using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))
            {
                try
                {
                    dbHelper.Open(UserCenterDbConnection);
                    // 若权限是空的,直接返回所有数据
                    if (userInfo.IsAdministrator || String.IsNullOrEmpty(permissionItemCode))
                    {
                        // 获得角色列表
                        BaseRoleManager roleManager = new BaseRoleManager(dbHelper, userInfo);
                        List<KeyValuePair<string, object>> parameters = new List<KeyValuePair<string, object>>();
                        parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldIsVisible, 1));
                        parameters.Add(new KeyValuePair<string, object>(BaseRoleEntity.FieldDeletionStateCode, 0));
                        dataTable = roleManager.GetDataTable(parameters, BaseRoleEntity.FieldSortCode);
                    }
                    else
                    {
                        // 获得组织机构列表
                        BasePermissionScopeManager permissionScopeManager = new BasePermissionScopeManager(dbHelper, userInfo);
                        dataTable = permissionScopeManager.GetRoleDT(userInfo.Id, permissionItemCode);
                    }
                    dataTable.TableName = BaseRoleEntity.TableName;
                    BaseLogManager.Instance.Add(dbHelper, userInfo, this.serviceName, AppMessage.PermissionService_GetRoleDTByPermission, MethodBase.GetCurrentMethod());
                }
                catch (Exception ex)
                {
                    BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                    throw ex;
                }
                finally
                {
                    dbHelper.Close();
                }
            }

            // 写入调试信息
            #if (DEBUG)
                BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
            #endif

            return dataTable;
        }