326 lines
11 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|