using System; using System.Collections.Generic; using System.Linq; using System.Linq.Dynamic; using System.Reflection; using System.Text; using Domain; using Dao; namespace Service.Implement { public class SysUserManager : GenericManagerBase, ISysUserManager { private static log4net.ILog logger = log4net.LogManager.GetLogger(typeof(SysUserManager)); public IList LoadAllByPage(out long total, int page, int rows, string order, string sort, int type, int? groupId, int? hotelID) { //var list = CurrentRepository.LoadAll(); ////list = list.Where("Account != @0", "admin"); //if (groupId.HasValue && groupId != 1) //{ // list = list.Where(r => r.Group != null && r.Group.ID == groupId); //} //total = list.LongCount(); //list = list.OrderBy(sort + " " + order); ////list = list.Skip((page - 1) * rows).Take(rows); //return list.ToList(); return ((ISysUserRepository)(this.CurrentRepository)).LoadAllByPage(out total, page, rows, order, sort, type, groupId, hotelID).ToList(); } public SysUsers Get(string account) { return ((Dao.ISysUserRepository)(this.CurrentRepository)).Get(account); } public SysUsers Get(string account, string password) { var entity = ((Dao.ISysUserRepository)(this.CurrentRepository)).Get(account); if (entity != null) { if (entity.Password != ComputePasswordHash(password, entity)) { return null; } } return entity; } public int GetCount() { return CurrentRepository.LoadAll().Where(r => !r.IsDeleted).Count(); } public override object Save(SysUsers entity) { entity.Password = ComputePasswordHash("123456", entity); entity.Password2 = "123456"; entity.Last_Modified_Time = DateTime.Now;//标识有更新 return base.Save(entity); //if (entity.Hotels != null && entity.Hotels.Count > 0) //{ // var userHotel = SysUserHotelRepository.Get(entity.ID, entity.Hotels[0].ID); // if (userHotel == null) // { // userHotel = new SysUserHotel(); // } // userHotel.UserID = entity.ID; // userHotel.HotelID = entity.Hotels[0].ID; // userHotel.GroupID = entity.Group.ID; // SysUserHotelRepository.SaveOrUpdate(userHotel); //} //return result; } public void Update(SysUsers entity, string password) { entity.Password = ComputePasswordHash(password, entity); entity.Password2 = password; entity.Last_Modified_Time = DateTime.Now;//标识有更新 base.Update(entity); } public bool HasAuthority(string account, int authorityId) { SysUsers user = Get(account); if (user == null) { return false; } if (user.Account == "admin") { return true; } if (user.Role == null || user.Role.Authorities == null) { return false; } if (user.Role.Authorities.Count(r => r.ID == authorityId) == 0) { return false; } return true; } #region Private Methods /// /// 计算密码 Hash值 /// /// /// /// private string ComputePasswordHash(string password, SysUsers entity) { return HashCode(entity.Account.ToUpper() + password + entity.CreatedDate.ToString("yyyy-MM-dd HH:mm:ss")); } /// /// 获取MD5值 /// /// 加密的字符串 /// 返回MD5值 private string HashCode(string key) { return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(key, "MD5"); } #endregion } }