protected DataTable GetUser(string organizeId = null, bool containSelf = true) { DataTable dtUser = null; var manager = new PiUserManager(this.RDIFrameworkDbProvider, this.UserInfo); string sqlQuery = string.Empty; sqlQuery = " SELECT * " + " FROM " + PiUserTable.TableName + " WHERE (" + PiUserTable.FieldDeleteMark + " = 0 " + " AND " + PiUserTable.FieldEnabled + " = 1 " + " AND " + PiUserTable.FieldIsVisible + " = 1 "; if (!string.IsNullOrEmpty(organizeId)) { sqlQuery += " AND " + PiUserTable.FieldDepartmentId + " = '" + organizeId + "' "; } sqlQuery += " ) "; if (containSelf) { sqlQuery += " OR ( " + PiUserTable.FieldId + "='" + this.UserInfo.Id + "')"; } sqlQuery += " ORDER BY " + PiUserTable.FieldSortCode; dtUser = manager.Fill(sqlQuery); dtUser.TableName = PiUserTable.TableName; return(dtUser); }
/// <summary> /// 按条件分页查询 /// </summary> /// <param name="userId">查看用户</param> /// <param name="auditStatus">审核状态</param> /// <param name="searchValue">查询字段</param> /// <param name="recordCount">记录数</param> /// <param name="pageIndex">当前页</param> /// <param name="pageSize">每页显示</param> /// <param name="sortExpression">排序字段</param> /// <param name="sortDire">排序方向</param> /// <returns>数据表</returns> public DataTable GetDataTableByPage(string userId, string searchValue, out int recordCount, int pageIndex = 1, int pageSize = 20, string sortExpression = "CreateOn", string sortDire = "DESC") { string whereConditional = CustomerTable.FieldDeleteMark + " = 0 "; // 可以看自己公司的数据 // whereConditional += " AND " + CustomerEntity.FieldCompanyId + " = '" + this.UserInfo.CompanyId + "'"; // 用户在某个部门 PiUserManager userManager = new PiUserManager(this.UserInfo); if (userManager.IsInOrganize(this.UserInfo.Id, "技术组") || userManager.IsInOrganize(this.UserInfo.Id, "管理组")) { // 可以看全部 } else if (!string.IsNullOrEmpty(userId)) { // 只能看自己的 whereConditional += " AND (" + CustomerTable.FieldCreateUserId + " = '" + userId + "')"; } else { // 可以看自己部门的数据 // whereConditional += " AND " + CustomerEntity.FieldDepartmentId + " = '" + this.UserInfo.DepartmentId + "'"; } //auditStatus = auditStatus.Trim(); //if (!string.IsNullOrEmpty(auditStatus)) //{ // auditStatus = this.DBProvider.SqlSafe(auditStatus); // whereConditional += " AND (" + CustomerTable.FieldAuditStatus + " = '" + auditStatus + "')"; //} searchValue = searchValue.Trim(); if (!string.IsNullOrEmpty(searchValue)) { searchValue = this.DBProvider.SqlSafe(searchValue); if (searchValue.IndexOf("%") < 0) { searchValue = "'%" + searchValue + "%'"; } whereConditional += " AND (" + CustomerTable.FieldCreateBy + " LIKE " + searchValue; whereConditional += " OR " + CustomerTable.FieldFullName + " LIKE " + searchValue; whereConditional += " OR " + CustomerTable.FieldShortName + " LIKE " + searchValue; whereConditional += " OR " + CustomerTable.FieldCompanyName + " LIKE " + searchValue; whereConditional += " OR " + CustomerTable.FieldCompanyAddress + " LIKE " + searchValue; whereConditional += " OR " + CustomerTable.FieldPostalCode + " LIKE " + searchValue; whereConditional += " OR " + CustomerTable.FieldCompanyPhone + " LIKE " + searchValue; whereConditional += " OR " + CustomerTable.FieldCompanyFax + " LIKE " + searchValue; whereConditional += " OR " + CustomerTable.FieldWebAddress + " LIKE " + searchValue; whereConditional += " OR " + CustomerTable.FieldLicenceNo + " LIKE " + searchValue; whereConditional += " OR " + CustomerTable.FieldChieftain + " LIKE " + searchValue; whereConditional += " OR " + CustomerTable.FieldBank + " LIKE " + searchValue; whereConditional += " OR " + CustomerTable.FieldBankAccount + " LIKE " + searchValue; whereConditional += " OR " + CustomerTable.FieldLocalTaxNo + " LIKE " + searchValue; whereConditional += " OR " + CustomerTable.FieldNationalTaxNo + " LIKE " + searchValue; whereConditional += " OR " + CustomerTable.FieldDescription + " LIKE " + searchValue; whereConditional += " OR " + CustomerTable.FieldModifiedBy + " LIKE " + searchValue + ")"; } return(GetDTByPage(out recordCount, pageIndex, pageSize, sortExpression, sortDire, this.CurrentTableName, whereConditional, "*")); }
/// <summary> /// 用户忘记密码,发送密码 /// </summary> /// <param name="userName">用户名</param> /// <param name="returnStatusCode">状态码</param> /// <param name="returnStatusMessage">状态信息</param> /// <returns>成功发送密码</returns> public static bool SendPassword(string userName, out string returnStatusCode, out string returnStatusMessage) { bool returnValue = false; // 1.用户是否找到?默认是未找到用户状态 returnStatusCode = StatusCode.UserNotFound.ToString(); returnStatusMessage = "用户未找到,请重新输入用户名。"; // 用户数据库进行差找用户操作 IDbProvider dbProvider = new SqlProvider(RDIFrameworkDbConection); dbProvider.Open(); PiUserManager userManager = new PiUserManager(dbProvider); // 2.用户是否已被删除? var parameters = new List <KeyValuePair <string, object> >(); parameters.Add(new KeyValuePair <string, object>(PiUserTable.FieldUserName, userName)); parameters.Add(new KeyValuePair <string, object>(PiUserTable.FieldDeleteMark, 0)); var userEntity = BaseEntity.Create <PiUserEntity>(userManager.GetDT(parameters, 0, string.Empty)); dbProvider.Close(); // 是否已找到了此用户 if (userEntity != null && !string.IsNullOrEmpty(userEntity.Id.ToString())) { // 3.用户是否有效的? if (userEntity.Enabled == 1) { if (!string.IsNullOrEmpty(userEntity.Email)) { // 5.重新产生随机密码? // 6.发送邮件给用户? // 7.重新设置用户密码? returnValue = SendPassword(userEntity); returnStatusCode = StatusCode.OK.ToString(); returnStatusMessage = "新密码已发送到您的注册邮箱" + userEntity.Email + "。"; } else { // 4.用户是否有邮件账户? returnStatusCode = StatusCode.UserNotEmail.ToString(); returnStatusMessage = "用户没有电子邮件地址,无法从新设置密码,请您及时联系系统管理员。"; } } else { if (userEntity.Enabled == 0) { returnStatusCode = StatusCode.UserLocked.ToString(); returnStatusMessage = "用户被锁定,不允许设置密码。"; } else { returnStatusCode = StatusCode.UserNotActive.ToString(); returnStatusMessage = "用户还未被激活,不允许设置密码。"; } } } return(returnValue); }
/// <summary> /// 发送密码给指定的邮箱 /// </summary> /// <param name="userEntity">用户实体</param> /// <returns>成功发送邮件</returns> private static bool SendPassword(PiUserEntity userEntity) { bool returnValue = false; IDbProvider dbProvider = new SqlProvider(RDIFrameworkDbConection); UserInfo userInfo = null; try { string password = RandomHelper.GetRandom(100000, 999999).ToString(); using (var mailMessage = new System.Net.Mail.MailMessage()) { // 接收人邮箱地址 mailMessage.To.Add(new System.Net.Mail.MailAddress(userEntity.Email)); mailMessage.Body = GetSendPasswordBody(userEntity, password); mailMessage.From = new System.Net.Mail.MailAddress("*****@*****.**", ".NET快速开发、整合框架"); mailMessage.BodyEncoding = Encoding.GetEncoding("GB2312"); mailMessage.Subject = ".NET快速开发、整合框架 新密码。"; mailMessage.IsBodyHtml = true; var smtpclient = new System.Net.Mail.SmtpClient("SMTP.126.COM", 25); smtpclient.Credentials = new System.Net.NetworkCredential("*****@*****.**", "abcd"); smtpclient.EnableSsl = false; smtpclient.Send(mailMessage); returnValue = true; // 修改用户的密码 // 用户数据库进行差找用户操作 dbProvider.Open(); PiUserManager userManager = new PiUserManager(dbProvider); userInfo = userManager.ConvertToUserInfo(userEntity); userManager.SetParameter(userInfo); // 密码进行加密,读取网站的密钥 password = userManager.EncryptUserPassword(password); userManager.SetPassword(userEntity.Id.ToString(), password); } } catch (System.Exception exception) { // 若有异常,应该需要保存异常信息 CiExceptionManager.LogException(dbProvider, userInfo, exception); returnValue = false; } finally { dbProvider.Close(); } return(returnValue); }
/// <summary> /// 获取用户列表 /// </summary> /// <param name="ddlUser">用户选项</param> /// <param name="organizeId">部门主键</param> /// <param name="insertBlank">插入空行</param> protected void GetUserByPermissionScope(DropDownList ddlUser, string organizeId = null, bool insertBlank = false, string permissionItemCode = "Resource.ManagePermission") { var manager = new PiUserManager(this.RDIFrameworkDbProvider, this.UserInfo); DataTable dtUser = null; if (string.IsNullOrEmpty(organizeId)) { if (this.UserInfo.IsAdministrator) { dtUser = manager.GetDT(); } else { dtUser = RDIFrameworkService.Instance.PermissionService.GetUserDTByPermissionScope(userInfo, userInfo.Id, permissionItemCode); if (!string.IsNullOrEmpty(organizeId)) { BusinessLogic.SetFilter(dtUser, PiUserTable.FieldDepartmentId, organizeId); } // 至少要把自己显示出来,否则难控制权限了 if (dtUser == null || dtUser.Rows.Count == 0) { var userManager = new PiUserManager(userInfo); dtUser = userManager.GetDTById(this.UserInfo.Id); } } } else { dtUser = manager.GetDataTableByOrganizes(new string[] { organizeId }); } ddlUser.SelectedValue = null; ddlUser.DataValueField = PiUserTable.FieldId; ddlUser.DataTextField = PiUserTable.FieldRealName; ddlUser.DataSource = dtUser; ddlUser.DataBind(); if (this.UserInfo.IsAdministrator || insertBlank) { ddlUser.Items.Insert(0, new ListItem()); } }
// // 五 用用户名密码登录部分 // #region public static UserInfo LogOn(string userName, string password, bool checkUserPassword = true) /// <summary> /// 验证用户 /// </summary> /// <param name="userName">用户名</param> /// <param name="password">密码</param> /// <param name="checkUserPassword">是否要检查用户密码</param> public static UserInfo LogOn(string userName, string password, bool checkUserPassword) { var userManager = new PiUserManager(Utils.GetUserInfo()); return(userManager.LogOn(userName, password, string.Empty, false, HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"], string.Empty, checkUserPassword)); }
/// <summary> /// 按条件分页查询 /// </summary> /// <param name="userId">查看用户</param> /// <param name="searchValue">查询字段</param> /// <param name="recordCount">记录数</param> /// <param name="pageIndex">当前页</param> /// <param name="pageSize">每页显示</param> /// <param name="sortExpression">排序字段</param> /// <param name="sortDire">排序方向</param> /// <returns>数据表</returns> public DataTable GetDataTableByPage(string userId, string searchValue, out int recordCount, int pageIndex = 1, int pageSize = 20, string sortExpression = "CreateOn", string sortDire = "DESC") { string whereConditional = LinkManTable.FieldDeleteMark + " = 0 "; // 可以看自己公司的数据 // whereConditional += " AND " + LinkManTable.FieldCompanyId + " = '" + this.UserInfo.CompanyId + "'"; // 用户在某个部门 PiUserManager userManager = new PiUserManager(this.UserInfo); if (userManager.IsInOrganize(this.UserInfo.Id, "技术组") || userManager.IsInOrganize(this.UserInfo.Id, "管理组")) { // 可以看全部 } else if (!string.IsNullOrEmpty(userId)) { // 只能看自己的 whereConditional += " AND (" + LinkManTable.FieldCreateUserId + " = '" + userId + "')"; } else { // 可以看自己部门的数据 // whereConditional += " AND " + LinkManEntity.FieldDepartmentId + " = '" + this.UserInfo.DepartmentId + "'"; } //auditStatus = auditStatus.Trim(); //if (!string.IsNullOrEmpty(auditStatus)) //{ // auditStatus = this.DBProvider.SqlSafe(auditStatus); // whereConditional += " AND (" + LinkManTable.FieldAuditStatus + " = '" + auditStatus + "')"; //} searchValue = searchValue.Trim(); if (!string.IsNullOrEmpty(searchValue)) { searchValue = this.DBProvider.SqlSafe(searchValue); if (searchValue.IndexOf("%") < 0) { searchValue = "'%" + searchValue + "%'"; } whereConditional += " AND (" + LinkManTable.FieldCreateBy + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldName + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldSex + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldPostion + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldDepartment + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldMobilePhone + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldTelephone + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldShortNumber + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldIDCard + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldOfficeAddress + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldOfficeFax + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldHomePhone + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldEducation + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldSchool + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldDegree + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldHomeZipCode + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldHomeAddress + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldHomeFax + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldNativePlace + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldParty + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldNation + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldNationality + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldMajor + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldEducationalBackground + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldBloodType + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldQQ + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldEmail + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldInterest + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldDescription + " LIKE " + searchValue; whereConditional += " OR " + LinkManTable.FieldModifiedBy + " LIKE " + searchValue + ")"; } return(GetDTByPage(out recordCount, pageIndex, pageSize, sortExpression, sortDire, this.CurrentTableName, whereConditional, "*")); }
// 用户是否在某个部门(按编号,按名称的,按简称的) #region public bool UserIsInOrganize(string organizeName) /// <summary> /// 用户是否在某个组织架构里的判断 /// </summary> /// <param name="organizeName">角色编号</param> /// <returns>是否在某个角色里</returns> public bool UserIsInOrganize(string organizeName) { var userManager = new PiUserManager(this.RDIFrameworkDbProvider, userInfo); return(userManager.IsInOrganize(this.UserInfo.Id, organizeName)); }
// 用户是否在某个角色里(按编号,按名称的) #region public bool UserIsInRole(string roleCode) /// <summary> /// 用户是否在某个角色里 /// </summary> /// <param name="roleCode">角色编号</param> /// <returns>是否在某个角色里</returns> public bool UserIsInRole(string roleCode) { var userManager = new PiUserManager(this.RDIFrameworkDbProvider, userInfo); return(userManager.IsInRoleByCode(this.UserInfo.Id, roleCode)); }