Basf_TCC7/HJGL/BLL/Common/SysManage/Sys_UserService.cs

326 lines
11 KiB
C#

namespace BLL
{
using System;
using System.Collections;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Linq;
using System.Data.Linq;
using System.Web.Security;
using System.Web.UI.WebControls;
using Model;
using BLL;
using System.Collections.Generic;
public static class Sys_UserService
{
public static (string, string) GetSingtrueImageUrl(string userId)
{
var result = (from a in Funs.DB.Sys_User
join
b in Funs.DB.Base_Unit on a.UnitId equals b.UnitId
join c in Funs.DB.Base_UnitType on b.UnitTypeId equals c.UnitTypeId
where a.UserId == userId
select new
{
a.SigntrueImage,
c.UnitTypeName
}).FirstOrDefault();
if (result != null)
{
return (result.SigntrueImage, result.UnitTypeName);
}
return (null, null);
}
/// <summary>
/// 用户登陆方法
/// </summary>
/// <param name="loginname">登陆名</param>
/// <param name="password">未加密密码</param>
/// <param name="rememberMe">记住我开关</param>
/// <param name="page">调用页面</param>
/// <returns>是否登陆成功</returns>
public static bool UserLogOn(string account, string password,string projectArea, bool rememberMe, System.Web.UI.Page page)
{
bool IsSuccess = false;
var q = from y in Funs.DB.Sys_User where y.Account == account select y;
List<Model.Sys_User> x = null;
if (q.Count() > 0)
{
x = (from y in Funs.DB.Sys_User
where y.Account == account && y.IsPost == true
&& y.Password == EncryptionPassword(password)
select y).ToList();
if (x.Any())
{
FormsAuthentication.SetAuthCookie(account, false);
Model.Sys_User s = x.First();
s.LoginProjectArea = projectArea;
page.Session[SessionName.CurrUser] = s;
if (rememberMe)
{
System.Web.HttpCookie u = new System.Web.HttpCookie("UserInfo");
u["username"] = account;
u["projectArea"] = projectArea;
//u["password"] = null;
// Cookies过期时间设置为一年.
u.Expires = DateTime.Now.AddYears(1);
//u.Secure = true;
page.Response.Cookies.Add(u);
}
else
{
// 当选择不提交用户名时,Cookies过期时间设置为昨天.
page.Response.Cookies["UserInfo"].Expires = DateTime.Now.AddDays(-1);
page.Response.Cookies["UserInfo"].Secure = true;
}
IsSuccess = true;
// 如果登陆成功则数次置为0,锁定时间置空
UpdateErrorNum(q.First().UserId, 0);
UpdateLockTime(q.First().UserId, null);
//page.Application.Lock();
//page.Application["IsValiad"] = true;
//page.Application.UnLock();
}
else
{
int errorNum = q.First().ErrorNum != null ? q.First().ErrorNum.Value : 0;
UpdateErrorNum(q.First().UserId, errorNum + 1);
// 如果密码输入错误10次则账户锁定
if (errorNum + 1 == 10)
{
UpdateLockTime(q.First().UserId, DateTime.Now);
}
}
}
return IsSuccess;
}
/// <summary>
/// 修改登陆错误次数
/// </summary>
/// <param name="userId"></param>
/// <param name="errorNum"></param>
public static void UpdateErrorNum(string userId, int errorNum)
{
Model.HJGLDB db = Funs.DB;
Model.Sys_User m = db.Sys_User.FirstOrDefault(e => e.UserId == userId);
m.ErrorNum = errorNum;
db.SubmitChanges();
}
/// <summary>
/// 修改登陆锁定时间
/// </summary>
/// <param name="userId"></param>
/// <param name="lockTime"></param>
public static void UpdateLockTime(string userId, DateTime? lockTime)
{
Model.HJGLDB db = Funs.DB;
Model.Sys_User m = db.Sys_User.FirstOrDefault(e => e.UserId == userId);
m.LockTime = lockTime;
db.SubmitChanges();
}
/// <summary>
/// 加密密码
/// </summary>
/// <param name="password">加密前的密码</param>
/// <returns>加密后的密码</returns>
public static string EncryptionPassword(string password)
{
return FormsAuthentication.HashPasswordForStoringInConfigFile(password, "MD5");
}
/// <summary>
/// 获取用户信息
/// </summary>
/// <param name="userId">用户Id</param>
/// <returns>用户信息</returns>
public static Model.Sys_User GetUsersByUserId(string userId)
{
Model.Sys_User m = Funs.DB.Sys_User.FirstOrDefault(e => e.UserId == userId);
return m;
}
/// <summary>
/// 获取用户账号是否存在
/// </summary>
/// <param name="userId">用户id</param>
/// <param name="account">账号</param>
/// <param name="projectId">项目ID</param>
/// <returns>是否存在</returns>
public static bool IsExistUserAccount(string userId, string account)
{
bool isExist = false;
var user = Funs.DB.Sys_User.FirstOrDefault(x => x.Account == account && x.UserId != userId);
if (user != null)
{
isExist = true;
}
return isExist;
}
/// <summary>
/// 根据用户Id查询所有用户的数量
/// </summary>
/// <param name="userId">用户Id</param>
/// <returns>用户的数量</returns>
public static int GetUserCount(string userId)
{
var q = (from x in Funs.DB.Sys_User where x.UserId == userId select x).ToList();
return q.Count();
}
/// <summary>
/// 根据用户获取密码
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public static string GetPasswordByUserId(string userId)
{
Model.Sys_User m = Funs.DB.Sys_User.FirstOrDefault(e => e.UserId == userId);
return m.Password;
}
/// <summary>
/// 根据用户ID获取名称
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public static string GetUserNameByUserId(string userId)
{
string userName = string.Empty;
Model.Sys_User m = Funs.DB.Sys_User.FirstOrDefault(e => e.UserId == userId);
if (m != null)
{
userName = m.UserName;
}
return userName;
}
/// <summary>
/// 修改密码
/// </summary>
/// <param name="userId"></param>
/// <param name="password"></param>
public static void UpdatePassword(string userId, string password)
{
Model.HJGLDB db = Funs.DB;
Model.Sys_User m = db.Sys_User.FirstOrDefault(e => e.UserId == userId);
m.Password = EncryptionPassword(password);
db.SubmitChanges();
}
/// <summary>
/// 增加人员信息
/// </summary>
/// <param name="user">人员实体</param>
public static void AddUser(Model.Sys_User user)
{
Model.HJGLDB db = Funs.DB;
Model.Sys_User newUser = new Model.Sys_User();
newUser.UserId = user.UserId;
newUser.Account = user.Account;
newUser.UserCode = user.UserCode;
newUser.Password = user.Password;
newUser.UserName = user.UserName;
newUser.UnitId = user.UnitId;
newUser.Depart = user.Depart;
newUser.RoleIds = user.RoleIds;
newUser.SigntrueImage = user.SigntrueImage;
newUser.IsPost = user.IsPost;
newUser.Email = user.Email;
newUser.EmailPassword = user.EmailPassword;
newUser.AllowLoginSystem = user.AllowLoginSystem;
db.Sys_User.InsertOnSubmit(newUser);
db.SubmitChanges();
}
/// <summary>
/// 修改人员信息
/// </summary>
/// <param name="user">人员实体</param>
public static void UpdateUser(Model.Sys_User user)
{
Model.HJGLDB db = Funs.DB;
Model.Sys_User newUser = db.Sys_User.FirstOrDefault(e => e.UserId == user.UserId);
if (newUser != null)
{
newUser.Account = user.Account;
newUser.UserCode = user.UserCode;
newUser.UserName = user.UserName;
newUser.UnitId = user.UnitId;
newUser.Depart = user.Depart;
newUser.RoleIds = user.RoleIds;
newUser.IsPost = user.IsPost;
newUser.SigntrueImage = user.SigntrueImage;
newUser.Email = user.Email;
if (!String.IsNullOrEmpty(user.EmailPassword))
{
newUser.EmailPassword = user.EmailPassword;
}
newUser.AllowLoginSystem = user.AllowLoginSystem;
db.SubmitChanges();
}
}
/// <summary>
/// 根据人员Id删除一个人员信息
/// </summary>
/// <param name="userId"></param>
public static void DeleteUser(string userId)
{
Model.HJGLDB db = Funs.DB;
Model.Sys_User user = db.Sys_User.FirstOrDefault(e => e.UserId == userId);
var log = from x in Funs.DB.Sys_Log where x.UserId == userId select x;
if (user != null)
{
if (log.Count() > 0)
{
db.Sys_Log.DeleteAllOnSubmit(log);
}
db.Sys_User.DeleteOnSubmit(user);
db.SubmitChanges();
}
}
/// <summary>
/// 根据单位主键获得用户
/// </summary>
/// <param name="unitId">单位主键</param>
/// <returns></returns>
public static List<Model.Sys_User> GetUsersByUnitId(string unitId)
{
var q = (from x in Funs.DB.Sys_User where x.UnitId == unitId select x).ToList();
return q;
}
/// <summary>
/// 查询所有在岗的用户
/// </summary>
/// <returns></returns>
public static List<Model.Sys_User> GetUserList()
{
return (from x in Funs.DB.Sys_User where x.IsPost == true orderby x.UserName select x).ToList();
}
public static Model.Sys_User GetUsersByUserName(string userName)
{
return Funs.DB.Sys_User.FirstOrDefault(e => e.UserName == userName);
}
}
}