Пример #1
0
        /// <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);
        }
Пример #2
0
        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));
        }
Пример #3
0
        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));
        }
Пример #6
0
        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));
        }
Пример #7
0
        /// <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);
        }
Пример #8
0
        /// <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);
        }
Пример #9
0
        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));
        }
Пример #10
0
        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));
        }