/// <summary> /// 获取用户权限 /// </summary> /// <param name="userID">用户ID</param> public async Task <PrivilegeDTO> GetPrivilegeAsync(int userID) { //todo:如果权限相关的表改变了,则删除所有mongo缓存 //todo:如果只改变了某一个用户的权限,只删除该用户的mongodb //todo:没有权限的用户 var collection = this.MongoDB.GetCollection <PrivilegeDTO>("privilege"); var document = await collection.FindAsync(e => e.UserID == userID).ConfigureAwait(false); var privilege = await document.FirstOrDefaultAsync().ConfigureAwait(false); //var privilege = collection.FindOneAs<PrivilegeDTO>(Query<PrivilegeDTO>.EQ(e => e.UserID, userID)); if (privilege == null) { privilege = new PrivilegeDTO { UserID = userID }; var accessTask = Task.Run(async() => { privilege.Accesses = await this.GetAccessByUserIDAsync(userID).ConfigureAwait(false); }); var menuTask = Task.Run(async() => { privilege.Menus = await this.GetMenuTreeByUserIDAsync(userID).ConfigureAwait(false); }); var buttonTask = Task.Run(async() => { privilege.Buttons = await this.GetButtonByUserIDAsync(userID).ConfigureAwait(false); }); await Task.WhenAll(accessTask, menuTask, buttonTask).ConfigureAwait(false); this.UpdatePrivilegeToMongo(privilege); } return(privilege); }
public IActionResult Index(PrivilegeDTO model) { if (!_loginServices.isInAdminRoles(this.GetRoles())) { return(RedirectToAction("Login", "Accounts")); } int pageno = 1; if (this.RouteData.Values["pno"] != null) { pageno = NumUtil.ParseInteger(this.RouteData.Values["pno"].ToString()); if (pageno == 0) { pageno = 1; } } int skipRows = (pageno - 1) * 25; model.Privileges = this._context.Privileges .Include(s => s.Merchant) .Include(s => s.MerchantCategory) .Include(s => s.Redeems) .OrderBy(c => c.Index).ThenByDescending(o => o.PrivilegeID); if (model.CategoryID.HasValue) { model.Privileges = model.Privileges.Where(w => w.CategoryID == model.CategoryID); } if (!string.IsNullOrEmpty(model.search_text)) { var text = model.search_text.ToLower(); model.Privileges = model.Privileges .Where(c => (!string.IsNullOrEmpty(c.PrivilegeName) && c.PrivilegeName.ToLower().Contains(text)) | (!string.IsNullOrEmpty(c.Merchant.MerchantName) && c.Merchant.MerchantName.ToLower().Contains(text)) | (!string.IsNullOrEmpty(c.Allowable_Outlet) && c.Allowable_Outlet.ToLower().Contains(text)) | (!string.IsNullOrEmpty(c.PrivilegeCondition) && c.PrivilegeCondition.ToLower().Contains(text)) | (!string.IsNullOrEmpty(c.PrivilegeDesc) && c.PrivilegeDesc.ToLower().Contains(text)) ); } ViewBag.ItemCount = model.Privileges.Count(); ViewBag.PageLength = (ViewBag.ItemCount / 25); if (ViewBag.ItemCount % 25 > 0) { ViewBag.PageLength += 1; } ViewBag.PageNo = pageno; model.Privileges = model.Privileges.Skip(skipRows).Take(25); model.MerchantCategorys = this._context.MerchantCategories.Where(w => w.Status == StatusType.Active).OrderBy(o => o.Index); return(View("Privilege", model)); }
public void UpdatePrivilegeToMongo_Valid_True() { Stopwatch stopwatch = Stopwatch.StartNew(); var accesses = new List <AccessInfoDTO>() { new AccessInfoDTO() { Title = "Title", Url = "http://" }, new AccessInfoDTO() { Title = "Title", Url = "http://" } }; var menus = new List <MenuInfoDTO>() { new MenuInfoDTO() { Title = "Title", Url = "http://", Icon = "icon" }, new MenuInfoDTO() { Title = "Title", Url = "http://", Icon = "icon" } }; var buttons = new List <ButtonInfoDTO>() { new ButtonInfoDTO() { ButtonName = "ButtonName", ButtonType = ButtonType.查询 }, new ButtonInfoDTO() { ButtonName = "ButtonName", ButtonType = ButtonType.添加 } }; var privilege = new PrivilegeDTO() { Accesses = accesses, Buttons = buttons, Menus = menus, UserID = 2 }; this._service.UpdatePrivilegeToMongo(privilege); stopwatch.Stop(); this.Output.WriteLine("UpdatePrivilegeToMongo_Valid_True:" + stopwatch.ElapsedMilliseconds + "ms"); }
public async Task <IActionResult> CreateAsync([FromBody] PrivilegeDTO privilegeDTO) { if (privilegeDTO == null) { return(BadRequest()); } var privilegeModel = _mapper.Map <Privilege>(privilegeDTO); await _unitOfWork.Privileges.AddAsync(privilegeModel); await _unitOfWork.CompleteAsync(); privilegeDTO = _mapper.Map <PrivilegeDTO>(privilegeModel); return(CreatedAtRoute("GetPrivilege", new { id = privilegeDTO.Id }, privilegeDTO)); }
public async Task <IActionResult> UpdateAsync(long id, [FromBody] PrivilegeDTO privilegeDTO) { var existing = await _unitOfWork.Privileges.GetByIdAsync(id); if (existing == null) { return(NotFound($"Privilege {id} could not be found.")); } var PrivilegeModel = _mapper.Map <Privilege>(privilegeDTO); await _unitOfWork.Privileges.UpdateAsync(id, PrivilegeModel); await _unitOfWork.CompleteAsync(); privilegeDTO = _mapper.Map <PrivilegeDTO>(existing); return(Ok(privilegeDTO)); }
public IActionResult LoadPrivilege(PrivilegeDTO model) { model.Privileges = this._context.Privileges .Include(s => s.Merchant) .Include(s => s.MerchantCategory) .Include(s => s.PrivilegeImages) .Include(s => s.PrivilegeCustomerClasses) .Where(w => w.Status == StatusType.Active & (!w.StartDate.HasValue || w.StartDate.Value.Date <= DateUtil.Now().Date) & (!w.EndDate.HasValue || w.EndDate.Value.Date >= DateUtil.Now().Date)); //if (model.LastPrivilegeID.HasValue) // model.Privileges = model.Privileges.Where(w => w.PrivilegeID < model.LastPrivilegeID); if (model.LastIndex.HasValue) { model.Privileges = model.Privileges.Where(w => w.Index > model.LastIndex); } if (model.CategoryID.HasValue) { model.Privileges = model.Privileges.Where(w => w.Merchant.CategoryID == model.CategoryID); } if (!string.IsNullOrEmpty(model.Outlets)) { model.Privileges = model.Privileges.Where(w => (!string.IsNullOrEmpty(w.Allowable_Outlet) && w.Allowable_Outlet.ToLower().Contains(model.Outlets.ToLower())) | (!string.IsNullOrEmpty(w.Merchant.MerchantName) && w.Merchant.MerchantName.ToLower().Contains(model.Outlets.ToLower()))); } if (model.ProvinceID.HasValue) { model.Privileges = model.Privileges.Where(w => w.Merchant.ProvinceID == model.ProvinceID); } if (model.CustomerClassID.HasValue) { model.Privileges = model.Privileges.Where(w => w.PrivilegeCustomerClasses.Any(s => s.CustomerClassID == model.CustomerClassID)); } model.Privileges = model.Privileges.OrderBy(c => c.Index).ThenByDescending(o => o.PrivilegeID).Take(12); return(PartialView("_Privilegies", model)); }
/// <summary> /// 获取用户权限 /// </summary> /// <param name="userID">用户ID</param> public PrivilegeDTO GetPrivilege(int userID) { //todo:如果权限相关的表改变了,则删除所有mongo缓存 //todo:如果只改变了某一个用户的权限,只删除该用户的mongodb //todo:没有权限的用户 var collection = this.MongoDB.GetCollection <PrivilegeDTO>("privilege"); var document = collection.Find(e => e.UserID == userID); var privilege = document.FirstOrDefault(); //PrivilegeDTO privilege = collection.FindOneAs<PrivilegeDTO>(Query<PrivilegeDTO>.EQ(e => e.UserID, userID)); if (privilege == null) { privilege = new PrivilegeDTO(); privilege.UserID = userID; privilege.Accesses = this.GetAccessByUserID(userID); privilege.Menus = this.GetMenuTreeByUserID(userID); privilege.Buttons = this.GetButtonByUserID(userID); this.UpdatePrivilegeToMongo(privilege); } return(privilege); }
/// <summary> /// 更新用户权限 /// </summary> /// <param name="privilege">用户权限</param> public void UpdatePrivilegeToMongo(PrivilegeDTO privilege) { var collection = this.MongoDB.GetCollection <PrivilegeDTO>("privilege"); collection.UpdateOne(e => e.UserID == privilege.UserID, new ObjectUpdateDefinition <PrivilegeDTO>(new object()) .Set(e => e.Accesses, privilege.Accesses) .Set(e => e.Menus, privilege.Menus) .Set(e => e.Buttons, privilege.Buttons), new UpdateOptions() { IsUpsert = true }); //collection.Update( // Query<PrivilegeDTO>.EQ(e => e.UserID, privilege.UserID), // Update<PrivilegeDTO> // .Set(e => e.Accesses, privilege.Accesses) // .Set(e => e.Buttons, privilege.Buttons) // .Set(e => e.Menus, privilege.Menus), // UpdateFlags.Upsert); }
public IActionResult Privilege(PrivilegeDTO model) { ViewData["FBAppID"] = this._conf.FBAppID; model.Privileges = this._context.Privileges .Include(s => s.Merchant) .Include(s => s.Merchant.Province) .Include(s => s.PrivilegeImages) .Include(s => s.PrivilegeCustomerClasses) .Include(s => s.MerchantCategory) .Where(w => w.Status == StatusType.Active & (!w.StartDate.HasValue || w.StartDate.Value.Date <= DateUtil.Now().Date) & (!w.EndDate.HasValue || w.EndDate.Value.Date >= DateUtil.Now().Date)); if (model.CategoryID.HasValue) { model.Privileges = model.Privileges.Where(w => w.Merchant.CategoryID == model.CategoryID); } if (!string.IsNullOrEmpty(model.Outlets)) { model.Privileges = model.Privileges.Where(w => (w.Merchant.Province != null && w.Merchant.Province.ProvinceName.ToLower().Contains(model.Outlets.ToLower())) | (!string.IsNullOrEmpty(w.Allowable_Outlet) && w.Allowable_Outlet.ToLower().Contains(model.Outlets.ToLower())) | (!string.IsNullOrEmpty(w.Merchant.MerchantName) && w.Merchant.MerchantName.ToLower().Contains(model.Outlets.ToLower()))); } if (model.ProvinceID.HasValue) { model.Privileges = model.Privileges.Where(w => w.Merchant.ProvinceID == model.ProvinceID); } if (model.CustomerClassID.HasValue) { model.Privileges = model.Privileges.Where(w => w.PrivilegeCustomerClasses.Any(s => s.CustomerClassID == model.CustomerClassID)); } if (_loginServices.isAuthen()) { var customer = this._context.Customers.Where(w => w.User.UserName == this.HttpContext.User.Identity.Name).FirstOrDefault(); if (customer != null) { GetCustomerClass(customer, true); var customerclass = _context.CustomerClasses.Where(w => w.ID == customer.CustomerClassID).FirstOrDefault(); if (customerclass != null && customerclass.ID != 1 && customerclass.ID != 2) { /*TIP Lady or Other*/ model.Privileges = model.Privileges.Where(w => w.PrivilegeCustomerClasses.Any(s => s.CustomerClassID == 1) | w.PrivilegeCustomerClasses.Any(s => s.CustomerClassID == 2) | w.PrivilegeCustomerClasses.Any(s => s.CustomerClassID == customerclass.ID)); ViewBag.ListCustomerClass = this._context.CustomerClasses.Where(w => w.Status == StatusType.Active & (w.ID == 1 | w.ID == 2 | w.ID == customerclass.ID)); } else { model.Privileges = model.Privileges.Where(w => w.PrivilegeCustomerClasses.Any(s => s.CustomerClassID == 1) | w.PrivilegeCustomerClasses.Any(s => s.CustomerClassID == 2)); ViewBag.ListCustomerClass = this._context.CustomerClasses.Where(w => w.Status == StatusType.Active & (w.ID == 1 | w.ID == 2)); } } else { model.Privileges = model.Privileges.Where(w => w.PrivilegeCustomerClasses.Any(s => s.CustomerClassID == 1) | w.PrivilegeCustomerClasses.Any(s => s.CustomerClassID == 2)); ViewBag.ListCustomerClass = this._context.CustomerClasses.Where(w => w.Status == StatusType.Active & (w.ID == 1 | w.ID == 2)); } } else { //model.Privileges = model.Privileges.Where(w => w.PrivilegeCustomerClasses.Any(s => s.CustomerClassID == 1) | w.PrivilegeCustomerClasses.Any(s => s.CustomerClassID == 2)); ViewBag.ListCustomerClass = this._context.CustomerClasses.Where(w => w.Status == StatusType.Active & (w.ID == 1 | w.ID == 2)); } model.AllPrivilegeCnt = model.Privileges.Count(); model.Privileges = model.Privileges.OrderBy(c => c.Index).ThenByDescending(o => o.PrivilegeID).Take(12); model.Provinces = this._context.Provinces.OrderBy(b => b.ProvinceName); return(View("Privilege", model)); }
public Privilege MapDTOToPrivilege(PrivilegeDTO privilegeDTO) { var mappedPrivilege = AutoMapper.Mapper.Map <Privilege>(privilegeDTO); return(mappedPrivilege); }
public PrivilegeDTO UpdatePrivilege(PrivilegeDTO entity) { var privilege = _privilegeHelper.UpdatePrivilege(_dtoMapper.MapDTOToPrivilege(entity)); return(_dtoMapper.MapPrivilegeToDTO(privilege)); }