SGGL_SHJ/SGGL/BLL/API/APIUserService.cs

495 lines
24 KiB
C#
Raw Normal View History

2022-09-05 16:36:31 +08:00
using EmitMapper;
using System;
using System.Collections.Generic;
using System.Linq;
namespace BLL
{
public static class APIUserService
{
/// <summary>
/// 获取用户登录信息
/// </summary>
/// <param name="userInfo"></param>
/// <returns></returns>
public static Model.UserItem UserLogOn(Model.UserItem userInfo)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
2022-09-25 17:46:49 +08:00
var getUser = db.Person_Persons.FirstOrDefault(x =>( x.Account == userInfo.Account || x.Telephone == userInfo.Telephone || x.PersonName == userInfo.Account)
&& x.Password == Funs.EncryptionPassword(userInfo.Password) && (!x.IsPost.HasValue || x.IsPost == true) && x.RoleIds != null);
2022-09-05 16:36:31 +08:00
if (getUser != null)
{
Model.UserItem newItem = new Model.UserItem();
newItem.PersonId = getUser.PersonId;
newItem.Account = getUser.Account;
newItem.UserCode = getUser.JobNum;
newItem.Password = getUser.Password;
newItem.PersonName = getUser.PersonName;
newItem.RoleId = getUser.RoleIds;
//RoleName= RoleService.getRoleNamesRoleIds(getUser.RoleIds);
newItem.UnitId = getUser.UnitId;
newItem.UnitName = UnitService.GetUnitNameByUnitId(getUser.UnitId);
newItem.LoginProjectId = getUser.LastProjectId;
newItem.IdentityCard = getUser.IdentityCard;
newItem.Telephone = getUser.Telephone;
newItem.IsOffice = getUser.IsOffice;
newItem.SignatureUrl = getUser.SignatureUrl;
if (!string.IsNullOrEmpty(getUser.Account))
{
newItem.UserType = (getUser.PersonId == Const.sedinId ? "2" : "1");
if (string.IsNullOrEmpty(newItem.LoginProjectId))
{
newItem.LoginProjectId = getUser.CurrentProjectId;
}
}
else
{
newItem.UserType = "3";
var getSitePerson = db.SitePerson_Person.FirstOrDefault(x => x.PersonId == getUser.PersonId && x.States == Const.ProjectPersonStates_1);
if (getSitePerson != null)
{
newItem.LoginProjectId = getSitePerson.ProjectId;
}
}
newItem.LoginProjectName = ProjectService.GetProjectNameByProjectId(newItem.LoginProjectId);
return newItem;
}
else
{
return null;
}
}
}
/// <summary>
/// 根据userId获取用户信息
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public static Model.UserItem getUserByUserId(string userId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
Model.UserItem newItem = new Model.UserItem();
var getUser = db.Person_Persons.FirstOrDefault(x => x.PersonId == userId);
if (getUser != null)
{
newItem.PersonId = getUser.PersonId;
newItem.Account = getUser.Account;
newItem.UserCode = getUser.JobNum;
newItem.Password = getUser.Password;
newItem.PersonName = getUser.PersonName;
newItem.RoleId = getUser.RoleIds;
//RoleName= RoleService.getRoleNamesRoleIds(getUser.RoleIds);
newItem.UnitId = getUser.UnitId;
newItem.UnitName = UnitService.GetUnitNameByUnitId(getUser.UnitId);
newItem.LoginProjectId = getUser.LastProjectId;
newItem.IdentityCard = getUser.IdentityCard;
newItem.Telephone = getUser.Telephone;
newItem.IsOffice = getUser.IsOffice;
newItem.SignatureUrl = getUser.SignatureUrl;
newItem.UserType = (getUser.PersonId == Const.sedinId ? "2" : "1");
}
return newItem;
}
}
/// <summary>
/// 根据unitid获取用户信息
/// </summary>
/// <param name="unitid"></param>
/// <returns></returns>
public static List<Model.BaseInfoItem> getUserByUnitId(string unitId, string strParam)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getUser = (from x in db.Person_Persons
join y in db.Sys_Role on x.RoleIds equals y.RoleId
where x.UnitId == unitId && x.IsPost == true && (strParam == null || x.PersonName.Contains(strParam)) && x.RoleIds != null
2022-09-05 16:36:31 +08:00
orderby x.PersonName
select new Model.BaseInfoItem { BaseInfoId = x.PersonId, BaseInfoName = x.PersonName, BaseInfoCode = x.Telephone }).ToList();
return getUser;
}
}
/// <summary>
/// 根据projectId、unitid获取用户信息
/// </summary>
/// <param name="projectId"></param>
/// <param name="unitId"></param>
/// <param name="strParam"></param>
/// <returns></returns>
public static List<Model.UserItem> getUserByProjectIdUnitIdQuery(string projectId, string unitId, string roleIds, string strParam)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
List<Model.UserItem> getDataList = new List<Model.UserItem>();
List<string> roleList = Funs.GetStrListByStr(roleIds, ',');
if (!string.IsNullOrEmpty(projectId))
{
var getDatas = from x in db.Person_Persons
2022-09-05 16:36:31 +08:00
join y in db.SitePerson_Person on x.PersonId equals y.PersonId
where y.ProjectId == projectId && y.States == Const.State_1 && y.RoleIds != null
select new Model.UserItem
2022-09-05 16:36:31 +08:00
{
PersonId = x.PersonId,
Account = x.Account,
UserCode = y.CardNo,
Password = x.Password,
PersonName = x.PersonName,
RoleId = y.RoleIds,
RoleName = RoleService.getRoleNamesRoleIds(y.RoleIds),
UnitId = y.UnitId,
UnitName = db.Base_Unit.First(z => z.UnitId == y.UnitId).UnitName,
LoginProjectId = y.ProjectId,
LoginProjectName = db.Base_Project.First(z => z.ProjectId == y.ProjectId).ProjectName,
IdentityCard = x.IdentityCard,
Email = x.Email,
Telephone = x.Telephone,
IsOffice = x.IsOffice,
SignatureUrl = x.SignatureUrl.Replace('\\', '/'),
};
if (!string.IsNullOrEmpty(unitId))
{
getDatas = getDatas.Where(x => x.UnitId == unitId);
}
if (!string.IsNullOrEmpty(roleIds))
{
getDatas = getDatas.Where(x => roleList.Contains(x.RoleId));
}
if (!string.IsNullOrEmpty(strParam))
{
getDatas = getDatas.Where(x => x.PersonName.Contains(strParam));
}
2022-09-05 16:36:31 +08:00
if (getDatas.Count() > 0)
{
getDataList = getDatas.OrderBy(x => x.UnitName).ThenBy(x => x.PersonName).ToList();
}
2022-09-05 16:36:31 +08:00
}
else
{
var getPersons =from x in db.Person_Persons
where x.IsPost == true && x.RoleIds != null
2022-09-05 16:36:31 +08:00
select new Model.UserItem
{
PersonId = x.PersonId,
Account = x.Account,
UserCode = x.JobNum,
Password = x.Password,
PersonName = x.PersonName,
RoleId = x.RoleIds,
RoleName = db.Sys_Role.First(z => z.RoleId == x.RoleIds).RoleName,
UnitId = x.UnitId,
UnitName = db.Base_Unit.First(z => z.UnitId == x.UnitId).UnitName,
//LoginProjectId = y.ProjectId,
//LoginProjectName = db.Base_Project.First(z => z.ProjectId == y.ProjectId).ProjectName,
IdentityCard = x.IdentityCard,
Email = x.Email,
Telephone = x.Telephone,
IsOffice = x.IsOffice,
SignatureUrl = x.SignatureUrl.Replace('\\', '/'),
};
if (!string.IsNullOrEmpty(unitId))
{
getPersons = getPersons.Where(x => x.UnitId == unitId);
}
if (!string.IsNullOrEmpty(roleIds))
{
getPersons = getPersons.Where(x => roleList.Contains(x.RoleId));
}
if (!string.IsNullOrEmpty(strParam))
{
getPersons = getPersons.Where(x => x.PersonName.Contains(strParam));
}
if (getPersons.Count() > 0)
{
getDataList = getPersons.OrderBy(x => x.UnitName).ThenBy(x => x.PersonName).ToList();
}
2022-09-05 16:36:31 +08:00
}
return getDataList;
2022-09-05 16:36:31 +08:00
}
}
/// <summary>
/// 根据单位类型获取用户信息
/// </summary>
/// <param name="projectId"></param>
/// <param name="unitType"></param>
/// <param name="strParam"></param>
/// <returns></returns>
public static List<Model.UserItem> getUserByProjectIdUnitTypeQuery(string projectId, string unitType, string roleIds, string strParam)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
List<Model.UserItem> getDataLists = new List<Model.UserItem>();
if (string.IsNullOrEmpty(roleIds))
{
getDataLists = (from x in db.Person_Persons
join y in db.SitePerson_Person on x.PersonId equals y.PersonId
join z in db.Project_ProjectUnit on x.UnitId equals z.UnitId
where y.ProjectId == projectId && z.ProjectId == projectId && z.UnitType == unitType && y.States == Const.State_1
&& (strParam == null || x.PersonName.Contains(strParam)) && y.RoleIds != null
2022-09-05 16:36:31 +08:00
select new Model.UserItem
{
PersonId = x.PersonId,
Account = x.Account,
UserCode = x.JobNum,
Password = x.Password,
PersonName = x.PersonName,
RoleId = y.RoleIds,
RoleName = RoleService.getRoleNamesRoleIds(y.RoleIds),
UnitId = y.UnitId,
UnitName = db.Base_Unit.First(z => z.UnitId == y.UnitId).UnitName,
LoginProjectId = y.ProjectId,
LoginProjectName = db.Base_Project.First(z => z.ProjectId == y.ProjectId).ProjectName,
IdentityCard = x.IdentityCard,
Email = x.Email,
Telephone = x.Telephone,
IsOffice = x.IsOffice,
SignatureUrl = x.SignatureUrl.Replace('\\', '/'),
}).ToList();
return getDataLists.OrderBy(x => x.UnitName).ThenBy(x => x.PersonName).ToList();
}
else
{
List<string> roleList = Funs.GetStrListByStr(roleIds, ',');
foreach (var item in roleList)
{
var getDataList = (from x in db.Person_Persons
join y in db.SitePerson_Person on x.PersonId equals y.PersonId
join z in db.Project_ProjectUnit on x.UnitId equals z.UnitId
where y.ProjectId == projectId && z.ProjectId == projectId && z.UnitType == unitType && y.States == Const.State_1
&& (strParam == null || x.PersonName.Contains(strParam)) && y.RoleIds.Contains(item) && y.RoleIds != null
2022-09-05 16:36:31 +08:00
select new Model.UserItem
{
PersonId = x.PersonId,
Account = x.Account,
UserCode = x.JobNum,
Password = x.Password,
PersonName = x.PersonName,
RoleId = y.RoleIds,
RoleName = RoleService.getRoleNamesRoleIds(y.RoleIds),
UnitId = y.UnitId,
UnitName = db.Base_Unit.First(z => z.UnitId == y.UnitId).UnitName,
LoginProjectId = y.ProjectId,
LoginProjectName = db.Base_Project.First(z => z.ProjectId == y.ProjectId).ProjectName,
IdentityCard = x.IdentityCard,
Email = x.Email,
Telephone = x.Telephone,
IsOffice = x.IsOffice,
SignatureUrl = x.SignatureUrl.Replace('\\', '/'),
}).ToList();
if (getDataList.Count() > 0)
{
getDataLists.AddRange(getDataList);
}
}
if (getDataLists.Count() > 0)
{
return getDataLists.OrderBy(x => x.UnitName).ThenBy(x => x.PersonName).ToList();
}
else
{
return getDataLists;
2022-09-05 16:36:31 +08:00
}
}
}
}
/// <summary>
/// 获取所有在岗用户
/// </summary>
/// <returns></returns>
public static List<Model.UserItem> UserLogOn2()
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var user = from x in db.Person_Persons
where x.IsPost == true && x.RoleIds != null
2022-09-05 16:36:31 +08:00
select x;
return ObjectMapperManager.DefaultInstance.GetMapper<List<Model.Person_Persons>, List<Model.UserItem>>().Map(user.ToList());
}
}
/// <summary>
/// 根据personId获取用户信息
/// </summary>
/// <param name="personId"></param>
/// <returns></returns>
public static void getSaveUserTel(string personId, string tel)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getUser = db.Person_Persons.FirstOrDefault(x => x.PersonId == personId);
if (getUser != null)
{
getUser.Telephone = tel;
db.SubmitChanges();
}
}
}
/// <summary>
/// 根据personId获取用户信息
/// </summary>
/// <param name="personId"></param>
/// <returns></returns>
public static void getSaveUserSignatureUrl(string personId, string SignatureUrl)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getUser = db.Person_Persons.FirstOrDefault(x => x.PersonId == personId);
if (getUser != null)
{
getUser.SignatureUrl = SignatureUrl;
db.SubmitChanges();
}
}
}
/// <summary>
/// 获取人员未浏览记录数
/// </summary>
/// <param name="unitid"></param>
/// <returns></returns>
public static int getMenuUnreadCount(string menuId, string projectId, string personId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
int count = 0;
var readCount = db.Sys_UserRead.Where(x => x.MenuId == menuId && x.ProjectId == projectId && x.UserId == personId).Select(x => x.DataId).Distinct().Count();
if (menuId == Const.ProjectNoticeMenuId)
{
var noticeCount = db.InformationProject_Notice.Where(x => x.AccessProjectId.Contains(projectId) && x.IsRelease == true).Count();
count = noticeCount - readCount;
}
count = count < 0 ? 0 : count;
return count;
}
}
/// <summary>
/// 新增待浏览记录
/// </summary>
/// <param name="unitid"></param>
/// <returns></returns>
public static void getAddUserRead(string menuId, string projectId, string personId, string dataId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
Model.Sys_UserRead newRead = new Model.Sys_UserRead
{
UserReadId = SQLHelper.GetNewID(),
UserId = personId,
MenuId = menuId,
ProjectId = projectId,
DataId = dataId,
};
db.Sys_UserRead.InsertOnSubmit(newRead);
db.SubmitChanges();
}
}
/// <summary>
/// 保存浏览记录
/// </summary>
/// <param name="unitid"></param>
/// <returns></returns>
public static void getSaveUserRead(string menuId, string projectId, string personId, string dataId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var userRead = db.Sys_UserRead.FirstOrDefault(x => x.ProjectId == projectId && x.UserId == personId && x.DataId == dataId);
if (userRead == null)
{
Model.Sys_UserRead newRead = new Model.Sys_UserRead
{
UserReadId = SQLHelper.GetNewID(),
UserId = personId,
MenuId = menuId,
ProjectId = projectId,
DataId = dataId,
ReadTime = DateTime.Now,
};
db.Sys_UserRead.InsertOnSubmit(newRead);
db.SubmitChanges();
}
}
}
/// <summary>
/// 根据单位类型获取用户信息
/// </summary>
/// <param name="projectId"></param>
/// <param name="userIds"></param>
/// <param name="strParam"></param>
/// <returns></returns>
public static List<Model.UserItem> getUserByProjectIdUserIdsQuery(string projectId, string userIds, string strParam)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
List<Model.UserItem> getDataList = new List<Model.UserItem>();
List<string> userList = Funs.GetStrListByStr(userIds, ',');
if (userList.Count() > 0)
{
var getDatas = (from x in db.Person_Persons
join y in db.SitePerson_Person on x.PersonId equals y.PersonId
where y.ProjectId == projectId && y.States == Const.State_1 && y.RoleIds != null
select new Model.UserItem
{
PersonId = x.PersonId,
Account = x.Account,
UserCode = x.JobNum,
Password = x.Password,
PersonName = x.PersonName,
RoleId = y.RoleIds,
RoleName = RoleService.getRoleNamesRoleIds(y.RoleIds),
UnitId = y.UnitId,
UnitName = db.Base_Unit.First(z => z.UnitId == y.UnitId).UnitName,
LoginProjectId = y.ProjectId,
LoginProjectName = db.Base_Project.First(z => z.ProjectId == y.ProjectId).ProjectName,
IdentityCard = x.IdentityCard,
Email = x.Email,
Telephone = x.Telephone,
IsOffice = x.IsOffice,
SignatureUrl = x.SignatureUrl.Replace('\\', '/'),
});
2022-09-05 16:36:31 +08:00
if (!string.IsNullOrEmpty(strParam))
{
getDatas = getDatas.Where(x => x.PersonName.Contains(strParam));
2022-09-05 16:36:31 +08:00
}
string unitId = Const.UnitId_SEDIN;
var unitList = (from x in db.Person_Persons where userList.Contains(x.PersonId) select x.UnitId).Distinct().ToList();
if (unitList.Count() == 1)
{
unitId = unitList.FirstOrDefault();
getDatas = getDatas.Where(x => x.UnitId == unitId);
2022-09-05 16:36:31 +08:00
}
else if (!unitList.Contains(unitId))
{
getDatas = getDatas.Where(x => unitList.Contains(x.UnitId));
2022-09-05 16:36:31 +08:00
}
else
{
getDatas = getDatas.Where(x => x.UnitId == unitId);
2022-09-05 16:36:31 +08:00
}
getDataList = getDatas.OrderBy(x => x.UnitName).ThenBy(x => x.PersonName).ToList();
2022-09-05 16:36:31 +08:00
}
return getDataList;
2022-09-05 16:36:31 +08:00
}
}
}
}