608 lines
22 KiB
C#
608 lines
22 KiB
C#
namespace BLL
|
|
{
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Web.Security;
|
|
using System.Web.UI.WebControls;
|
|
using Model;
|
|
|
|
public static class Sys_UserService
|
|
{
|
|
public static Model.SGGLDB db = Funs.DB;
|
|
|
|
/// <summary>
|
|
/// 记录数
|
|
/// </summary>
|
|
private static int count
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 定义变量
|
|
/// </summary>
|
|
private static IQueryable<Model.Sys_User> qq = from x in db.Sys_User orderby x.UserCode select x;
|
|
|
|
/// <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, 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();
|
|
page.Session[SessionName.CurrUser] = s;
|
|
if (rememberMe)
|
|
{
|
|
System.Web.HttpCookie u = new System.Web.HttpCookie("UserInfo");
|
|
u["username"] = account;
|
|
//u["password"] = null;
|
|
// Cookies过期时间设置为一年.
|
|
u.Expires = DateTime.Now.AddYears(1);
|
|
page.Response.Cookies.Add(u);
|
|
}
|
|
else
|
|
{
|
|
// 当选择不提交用户名时,Cookies过期时间设置为昨天.
|
|
page.Response.Cookies["UserInfo"].Expires = DateTime.Now.AddDays(-1);
|
|
}
|
|
IsSuccess = true;
|
|
|
|
//page.Application.Lock();
|
|
//page.Application["IsValiad"] = true;
|
|
//page.Application.UnLock();
|
|
}
|
|
}
|
|
|
|
return IsSuccess;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 登陆获取用户信息
|
|
/// </summary>
|
|
/// <param name="account"></param>
|
|
/// <param name="password"></param>
|
|
/// <param name="rememberMe"></param>
|
|
/// <param name="page"></param>
|
|
/// <returns></returns>
|
|
public static bool ADUserLogOn(string account, bool rememberMe, System.Web.UI.Page page)
|
|
{
|
|
bool IsSuccess = false;
|
|
var user = Funs.DB.Sys_User.FirstOrDefault(x => x.Account == account && x.IsPost == true);
|
|
if (user != null)
|
|
{
|
|
FormsAuthentication.SetAuthCookie(account, false);
|
|
page.Session[SessionName.CurrUser] = user;
|
|
if (rememberMe)
|
|
{
|
|
System.Web.HttpCookie u = new System.Web.HttpCookie("UserInfo");
|
|
u["username"] = account;
|
|
// u["password"] = null;
|
|
// Cookies过期时间设置为一年.
|
|
u.Expires = DateTime.Now.AddYears(1);
|
|
page.Response.Cookies.Add(u);
|
|
}
|
|
else
|
|
{
|
|
// 当选择不提交用户名时,Cookies过期时间设置为昨天.
|
|
page.Response.Cookies["UserInfo"].Expires = DateTime.Now.AddDays(-1);
|
|
}
|
|
|
|
IsSuccess = true;
|
|
}
|
|
|
|
return IsSuccess;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 加密密码
|
|
/// </summary>
|
|
/// <param name="password">加密前的密码</param>
|
|
/// <returns>加密后的密码</returns>
|
|
public static string EncryptionPassword(string password)
|
|
{
|
|
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(password, "MD5");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取用户初始密码
|
|
/// </summary>
|
|
/// <param name="unitId">单位id</param>
|
|
/// <param name="phone">手机号码</param>
|
|
/// <returns></returns>
|
|
public static string GetEncryptionPassword(string unitId,string phone)
|
|
{
|
|
string passNo =string.Empty;
|
|
var unit = BLL.Base_UnitService.GetUnit(unitId);
|
|
if (unit != null && !string.IsNullOrEmpty(unit.UnitCode))
|
|
{
|
|
passNo = unit.UnitCode;
|
|
}
|
|
passNo += '.';
|
|
if (!string.IsNullOrEmpty(phone) && phone.Length > 4)
|
|
{
|
|
passNo += phone.Substring(phone.Length - 4);
|
|
}
|
|
else
|
|
{
|
|
passNo += "1234";
|
|
}
|
|
|
|
return EncryptionPassword(passNo);
|
|
}
|
|
|
|
/// <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;
|
|
if (!string.IsNullOrEmpty(userId))
|
|
{
|
|
var user = Funs.DB.Sys_User.FirstOrDefault(x => x.Account == account && x.UserId != userId);
|
|
if (user != null)
|
|
{
|
|
isExist = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var user = Funs.DB.Sys_User.FirstOrDefault(x => x.Account == account);
|
|
if (user != null)
|
|
{
|
|
isExist = true;
|
|
}
|
|
}
|
|
|
|
return isExist;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取同单位用户名称是否存在
|
|
/// </summary>
|
|
/// <param name="userId">用户id</param>
|
|
/// <param name="userName">账号</param>
|
|
/// <param name="unitId">项目ID</param>
|
|
/// <returns>是否存在</returns>
|
|
public static bool IsExistUserName(string userId, string userName,string unitId)
|
|
{
|
|
bool isExist = false;
|
|
var name = Funs.DB.Sys_User.FirstOrDefault(x => x.UserName == userName && x.UnitId == unitId && x.UserId != userId);
|
|
if (name != null)
|
|
{
|
|
isExist = true;
|
|
}
|
|
return isExist;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据部门获取用户信息
|
|
/// </summary>
|
|
/// <param name="departId"></param>
|
|
/// <returns></returns>
|
|
public static List<Model.Sys_User> GetUsersByDep(string departId)
|
|
{
|
|
return (from x in Funs.DB.Sys_User where x.DepartId == departId select x).ToList();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据部门Id筛选用户信息,用户名模糊查询所有用户信息
|
|
/// </summary>
|
|
/// <param name="userName">用户名</param>
|
|
/// <returns></returns>
|
|
public static List<Model.Sys_User> GetUsersByRoleId(string userName, string roleId, string projectId)
|
|
{
|
|
return (from x in Funs.DB.Sys_User where x.UserName.Contains(userName) && x.RoleId == roleId select x).ToList();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据用户名模糊查询所有用户信息
|
|
/// </summary>
|
|
/// <param name="userName">用户名</param>
|
|
/// <returns></returns>
|
|
public static List<Model.Sys_User> GetUsersByUserNameAndProjectId(string userName, string projectId)
|
|
{
|
|
return (from x in Funs.DB.Sys_User where x.UserName.Contains(userName) && x.IsHeadMan == false select x).ToList();
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 根据角色,用户名模糊查询所有用户信息
|
|
/// </summary>
|
|
/// <param name="userName">用户名</param>
|
|
/// <returns></returns>
|
|
public static List<Model.Sys_User> GetUsersByUserName(string userName, string roleId)
|
|
{
|
|
return (from x in Funs.DB.Sys_User where x.UserName.Contains(userName) && x.RoleId == roleId select x).ToList();
|
|
}
|
|
|
|
/// <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.SGGLDB db = Funs.DB;
|
|
Model.Sys_User m = db.Sys_User.FirstOrDefault(e => e.UserId == userId);
|
|
if (m != null)
|
|
{
|
|
m.Password = password;
|
|
db.SubmitChanges();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 增加人员信息
|
|
/// </summary>
|
|
/// <param name="user">人员实体</param>
|
|
public static void AddUser(Model.Sys_User user)
|
|
{
|
|
Model.SGGLDB 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.RoleId = user.RoleId;
|
|
newUser.IsPost = user.IsPost;
|
|
newUser.DepartId = user.DepartId;
|
|
newUser.Email = user.Email;
|
|
newUser.EmailPassword = user.EmailPassword;
|
|
newUser.AllowLoginSystem = user.AllowLoginSystem;
|
|
newUser.Phone = user.Phone;
|
|
newUser.SignatureUrl = user.SignatureUrl;
|
|
|
|
db.Sys_User.InsertOnSubmit(newUser);
|
|
db.SubmitChanges();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 修改人员信息
|
|
/// </summary>
|
|
/// <param name="user">人员实体</param>
|
|
public static void UpdateUser(Model.Sys_User user)
|
|
{
|
|
Model.SGGLDB 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.Password = user.Password;
|
|
newUser.UserName = user.UserName;
|
|
newUser.UnitId = user.UnitId;
|
|
newUser.RoleId = user.RoleId;
|
|
newUser.IsPost = user.IsPost;
|
|
newUser.DepartId = user.DepartId;
|
|
newUser.Email = user.Email;
|
|
if (!String.IsNullOrEmpty(user.EmailPassword))
|
|
{
|
|
newUser.EmailPassword = user.EmailPassword;
|
|
}
|
|
newUser.AllowLoginSystem = user.AllowLoginSystem;
|
|
newUser.Phone = user.Phone;
|
|
newUser.SignatureUrl = user.SignatureUrl;
|
|
|
|
db.SubmitChanges();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据人员Id删除一个人员信息
|
|
/// </summary>
|
|
/// <param name="userId"></param>
|
|
public static void DeleteUser(string userId)
|
|
{
|
|
Model.SGGLDB db = Funs.DB;
|
|
Model.Sys_User user = db.Sys_User.FirstOrDefault(e => e.UserId == userId);
|
|
if (user != null)
|
|
{
|
|
var userButtonPower = from x in db.Project_UserButtonPower where x.UserId == userId select x;
|
|
if (userButtonPower.Count() > 0)
|
|
{
|
|
db.Project_UserButtonPower.DeleteAllOnSubmit(userButtonPower);
|
|
db.SubmitChanges();
|
|
}
|
|
|
|
var project_UserPower = from x in db.Project_UserPower where x.UserId == userId select x;
|
|
if (project_UserPower.Count() > 0)
|
|
{
|
|
db.Project_UserPower.DeleteAllOnSubmit(project_UserPower);
|
|
db.SubmitChanges();
|
|
}
|
|
|
|
db.Sys_User.DeleteOnSubmit(user);
|
|
db.SubmitChanges();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据角色获得用户数
|
|
/// </summary>
|
|
/// <param name="role">角色</param>
|
|
/// <returns></returns>
|
|
public static int GetUserCountByRole(string role)
|
|
{
|
|
var q = (from x in Funs.DB.Sys_User where x.RoleId == role select x).ToList();
|
|
return q.Count();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据部门主键获得用户数
|
|
/// </summary>
|
|
/// <param name="departId">部门主键</param>
|
|
/// <returns>用户数</returns>
|
|
public static int GetUserCountByDepartId(string departId)
|
|
{
|
|
var q = (from x in Funs.DB.Sys_User where x.DepartId == departId select x).ToList();
|
|
return q.Count();
|
|
}
|
|
|
|
/// <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>
|
|
/// <param name="unitId">单位主键</param>
|
|
/// <returns></returns>
|
|
public static List<Model.Sys_User> GetIsPostUsersByUnitId(string unitId, string projectId)
|
|
{
|
|
var q = (from x in Funs.DB.Sys_User
|
|
join y in Funs.DB.Project_User on x.UserId equals y.UserId
|
|
where y.ProjectId == projectId && x.UnitId == unitId && x.IsPost == true
|
|
orderby x.UserName
|
|
select x).ToList();
|
|
return q;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据帐号获取用户信息
|
|
/// </summary>
|
|
/// <param name="account">帐号</param>
|
|
/// <returns>用户信息</returns>
|
|
public static Model.Sys_User GetUserByAccount(string account)
|
|
{
|
|
Model.Sys_User m = Funs.DB.Sys_User.FirstOrDefault(e => e.IsHeadMan == true && e.Account == account);
|
|
return m;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据用户主键判断是否分包商业务管理员角色
|
|
/// </summary>
|
|
/// <param name="userId"></param>
|
|
/// <returns></returns>
|
|
public static bool GetIsGLByUserId(string userId)
|
|
{
|
|
bool isGL = false;
|
|
Model.Sys_User m = Funs.DB.Sys_User.FirstOrDefault(e => e.UserId == userId);
|
|
if (m != null)
|
|
{
|
|
if (m.RoleId == BLL.Const.GL)
|
|
{
|
|
isGL = true;
|
|
}
|
|
}
|
|
|
|
return isGL;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据部门获得所有对应在岗的用户且参与流程
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static ListItem[] GetUserListByDepartId(string departId)
|
|
{
|
|
var q = (from x in Funs.DB.Sys_User
|
|
join y in Funs.DB.Sys_Role on x.RoleId equals y.RoleId
|
|
where x.IsPost == true && y.IsAuditFlow == true && x.DepartId == departId
|
|
orderby x.UserName
|
|
select x).ToList();
|
|
ListItem[] lis = new ListItem[q.Count()];
|
|
for (int i = 0; i < q.Count(); i++)
|
|
{
|
|
lis[i] = new ListItem(q[i].UserName ?? "", q[i].UserId.ToString());
|
|
}
|
|
return lis;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查询所有在岗的用户
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static ListItem[] GetGlUserList()
|
|
{
|
|
var q = (from x in Funs.DB.Sys_User where x.IsPost == true && x.RoleId == BLL.Const.GL orderby x.UserName select x).ToList();
|
|
ListItem[] lis = new ListItem[q.Count()];
|
|
for (int i = 0; i < q.Count(); i++)
|
|
{
|
|
lis[i] = new ListItem(q[i].UserName ?? "", q[i].UserId.ToString());
|
|
}
|
|
return lis;
|
|
}
|
|
|
|
/// <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();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查询所有在岗的用户
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static List<Model.Sys_User> GetUserListByProjectId(string projectId)
|
|
{
|
|
var pUserId = from x in Funs.DB.Project_User where x.ProjectId == projectId select x.UserId;
|
|
var q = (from x in Funs.DB.Sys_User
|
|
where x.IsPost == true && (x.UserId == BLL.Const.GlyId || pUserId.Contains(x.UserId))
|
|
orderby x.UserName
|
|
select x).ToList();
|
|
|
|
return q;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取具有流程审批的用户
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static List<Model.Sys_User> GetUserListHasApprove(string projectId)
|
|
{
|
|
var q = (from x in Funs.DB.Sys_User
|
|
join y in Funs.DB.Project_User on x.UserId equals y.UserId
|
|
join z in Funs.DB.Sys_Role on x.RoleId equals z.RoleId
|
|
join r in Funs.DB.Sys_Role on y.RoleId equals r.RoleId
|
|
where y.ProjectId == projectId
|
|
&& x.IsPost == true && (z.IsAuditFlow == true || r.IsAuditFlow == true)
|
|
orderby x.UserName
|
|
select x).ToList();
|
|
return q;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据角色获得所有对应在岗的用户
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static List<Sys_User> GetUserListByRoleId(string projectId, string roleId)
|
|
{
|
|
var q = (from x in Funs.DB.Sys_User
|
|
join y in Funs.DB.Project_User on x.UserId equals y.UserId
|
|
where y.ProjectId == projectId
|
|
&& (x.RoleId == roleId || y.RoleId == roleId)
|
|
orderby x.UserName
|
|
select x).ToList();
|
|
return q;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据角色获得最大编号的在岗用户
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static Model.Sys_User GetMaxUserByRoleId(string roleId)
|
|
{
|
|
return (from x in Funs.DB.Sys_User where x.IsPost == true && x.RoleId == roleId && (x.UserCode != "" && x.UserCode != null) orderby x.UserCode descending select x).FirstOrDefault();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取检测单位的用户
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static ListItem[] GetUserListByUnitType(string projectId, string unitType)
|
|
{
|
|
var q = (from x in Funs.DB.Sys_User
|
|
join y in Funs.DB.Project_User on x.UserId equals y.UserId
|
|
join z in Funs.DB.Project_Unit on x.UnitId equals z.UnitId
|
|
where (x.IsPost == true && y.ProjectId == projectId && z.UnitType == unitType)
|
|
orderby x.UserName
|
|
select x).ToList();
|
|
ListItem[] lis = new ListItem[q.Count()];
|
|
for (int i = 0; i < q.Count(); i++)
|
|
{
|
|
lis[i] = new ListItem(q[i].UserName ?? "", q[i].UserId.ToString());
|
|
}
|
|
return lis;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static List<Model.Sys_User> GetRecipientList(string projectId)
|
|
{
|
|
return (from x in Funs.DB.Sys_User
|
|
join y in Funs.DB.Project_User on x.UserId equals y.UserId
|
|
where x.Account != BLL.Const.Gly && x.Account != BLL.Const.GlyId && y.ProjectId==projectId orderby x.UserName select x).ToList();
|
|
}
|
|
|
|
public static Model.Sys_User GetUsersByUserName(string userName)
|
|
{
|
|
return Funs.DB.Sys_User.FirstOrDefault(e => e.UserName == userName);
|
|
}
|
|
}
|
|
}
|