335 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			335 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C#
		
	
	
	
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))
 | 
						|
            {
 | 
						|
                var getUser = db.View_Sys_User.FirstOrDefault(x => (x.Account == userInfo.Account || x.Telephone == userInfo.Telephone) && x.IsPost == true && x.Password == Funs.EncryptionPassword(userInfo.Password));
 | 
						|
                return ObjectMapperManager.DefaultInstance.GetMapper<Model.View_Sys_User, Model.UserItem>().Map(getUser);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <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))
 | 
						|
            {
 | 
						|
                var getUser = db.View_Sys_User.FirstOrDefault(x => x.UserId == userId);
 | 
						|
                return ObjectMapperManager.DefaultInstance.GetMapper<Model.View_Sys_User, Model.UserItem>().Map(getUser);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <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.Sys_User
 | 
						|
                               join y in db.Sys_Role on x.RoleId equals y.RoleId
 | 
						|
                               where x.UnitId == unitId && x.IsPost == true && (strParam == null || x.UserName.Contains(strParam))
 | 
						|
                               orderby x.UserName
 | 
						|
                               select new Model.BaseInfoItem { BaseInfoId = x.UserId, BaseInfoName = x.UserName, 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))
 | 
						|
                {
 | 
						|
                    getDataList = (from x in db.Sys_User
 | 
						|
                                   join y in db.Project_ProjectUser on x.UserId equals y.UserId
 | 
						|
                                   where y.ProjectId == projectId && (x.UnitId == unitId || unitId == null)
 | 
						|
                                      && (roleIds == null || roleList.Contains(y.RoleId)) && (strParam == null || x.UserName.Contains(strParam))
 | 
						|
                                      && y.IsPost ==true
 | 
						|
                                   select new Model.UserItem
 | 
						|
                                   {
 | 
						|
                                       UserId = x.UserId,
 | 
						|
                                       Account = x.Account,
 | 
						|
                                       UserCode = x.UserCode,
 | 
						|
                                       Password = x.Password,
 | 
						|
                                       UserName = x.UserName,
 | 
						|
                                       RoleId = y.RoleId,
 | 
						|
                                       RoleName = RoleService.getRoleNamesRoleIds(y.RoleId),
 | 
						|
                                       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();
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    getDataList = (from x in db.Sys_User
 | 
						|
                                   where x.IsPost == true && (x.UnitId == unitId || unitId == null)
 | 
						|
                                  && (roleIds == null || roleList.Contains(x.RoleId)) && (strParam == null || x.UserName.Contains(strParam))
 | 
						|
                                   select new Model.UserItem
 | 
						|
                                   {
 | 
						|
                                       UserId = x.UserId,
 | 
						|
                                       Account = x.Account,
 | 
						|
                                       UserCode = x.UserCode,
 | 
						|
                                       Password = x.Password,
 | 
						|
                                       UserName = x.UserName,
 | 
						|
                                       RoleId = x.RoleId,
 | 
						|
                                       RoleName = db.Sys_Role.First(z => z.RoleId == x.RoleId).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('\\', '/'),
 | 
						|
                                   }).ToList();
 | 
						|
                }
 | 
						|
 | 
						|
                return getDataList.OrderBy(x => x.UnitName).ThenBy(x => x.UserName).ToList();
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <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> getDataList = new List<Model.UserItem>();
 | 
						|
                List<string> roleList = Funs.GetStrListByStr(roleIds, ',');
 | 
						|
                getDataList = (from x in db.Sys_User
 | 
						|
                               join y in db.Project_ProjectUser on x.UserId equals y.UserId
 | 
						|
                               join z in db.Project_ProjectUnit on x.UnitId equals z.UnitId
 | 
						|
                               where y.ProjectId == projectId && z.ProjectId == projectId && z.UnitType == unitType
 | 
						|
                                  && (roleIds == null || roleList.Contains(y.RoleId)) && (strParam == null || x.UserName.Contains(strParam))
 | 
						|
                                  && y.IsPost == true
 | 
						|
                               select new Model.UserItem
 | 
						|
                               {
 | 
						|
                                   UserId = x.UserId,
 | 
						|
                                   Account = x.Account,
 | 
						|
                                   UserCode = x.UserCode,
 | 
						|
                                   Password = x.Password,
 | 
						|
                                   UserName = x.UserName,
 | 
						|
                                   RoleId = y.RoleId,
 | 
						|
                                   RoleName = RoleService.getRoleNamesRoleIds(y.RoleId),
 | 
						|
                                   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 getDataList.OrderBy(x => x.UnitName).ThenBy(x => x.UserName).ToList();
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <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.Sys_User
 | 
						|
                           where x.IsPost == true
 | 
						|
                           select x;
 | 
						|
                return ObjectMapperManager.DefaultInstance.GetMapper<List<Model.Sys_User>, List<Model.UserItem>>().Map(user.ToList());
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 根据userId获取用户信息
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="userId"></param>
 | 
						|
        /// <returns></returns>
 | 
						|
        public static void getSaveUserTel(string userId, string tel)
 | 
						|
        {
 | 
						|
            using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
 | 
						|
            {
 | 
						|
                var getUser = db.Sys_User.FirstOrDefault(x => x.UserId == userId);
 | 
						|
                if (getUser != null)
 | 
						|
                {
 | 
						|
                    getUser.Telephone = tel;
 | 
						|
                    db.SubmitChanges();
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 根据userId获取用户信息
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="userId"></param>
 | 
						|
        /// <returns></returns>
 | 
						|
        public static void getSaveUserSignatureUrl(string userId, string SignatureUrl)
 | 
						|
        {
 | 
						|
            using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
 | 
						|
            {
 | 
						|
                var getUser = db.Sys_User.FirstOrDefault(x => x.UserId == userId);
 | 
						|
                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 userId)
 | 
						|
        {
 | 
						|
            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 == userId).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 getSaveUserRead(string menuId, string projectId, string userId, string dataId)
 | 
						|
        {
 | 
						|
            using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
 | 
						|
            {
 | 
						|
                var userRead = db.Sys_UserRead.FirstOrDefault(x => x.ProjectId == projectId && x.UserId == userId && x.DataId == dataId);
 | 
						|
                if (userRead == null)
 | 
						|
                {
 | 
						|
                    Model.Sys_UserRead newRead = new Model.Sys_UserRead
 | 
						|
                    {
 | 
						|
                        UserReadId = SQLHelper.GetNewID(),
 | 
						|
                        UserId = userId,
 | 
						|
                        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 getDataLists = (from x in db.Sys_User
 | 
						|
                                        join y in db.Project_ProjectUser on x.UserId equals y.UserId
 | 
						|
                                        where y.ProjectId == projectId 
 | 
						|
                                        select new Model.UserItem
 | 
						|
                                        {
 | 
						|
                                            UserId = x.UserId,
 | 
						|
                                            Account = x.Account,
 | 
						|
                                            UserCode = x.UserCode,
 | 
						|
                                            Password = x.Password,
 | 
						|
                                            UserName = x.UserName,
 | 
						|
                                            RoleId = y.RoleId,
 | 
						|
                                            RoleName = RoleService.getRoleNamesRoleIds(y.RoleId),
 | 
						|
                                            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(strParam))
 | 
						|
                    {
 | 
						|
                        getDataLists = getDataLists.Where(x => x.UserName.Contains(strParam));
 | 
						|
                    }
 | 
						|
 | 
						|
                    string unitId = Const.UnitId_CWCEC;
 | 
						|
                    var unitList = (from x in db.Sys_User where userList.Contains(x.UserId) select x.UnitId).Distinct().ToList();
 | 
						|
                    if (unitList.Count() == 1)
 | 
						|
                    {
 | 
						|
                        unitId = unitList.FirstOrDefault();
 | 
						|
                        getDataList = getDataLists.Where(x => x.UnitId == unitId).ToList();
 | 
						|
 | 
						|
                    }
 | 
						|
                    else if (!unitList.Contains(unitId))
 | 
						|
                    {
 | 
						|
                        getDataList = getDataLists.Where(x => unitList.Contains(x.UnitId)).ToList();
 | 
						|
                    }
 | 
						|
                    else
 | 
						|
                    {
 | 
						|
                        getDataList = getDataLists.Where(x => x.UnitId == unitId).ToList();
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                return getDataList.OrderBy(x => x.UnitName).ThenBy(x => x.UserName).ToList();
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |