Beispiel #1
0
        public void Add(List <AddSmsModel> smsModels)
        {
            DateTime now = DateTime.Now;

            var smsModel = new List <SmsModel>();

            foreach (var sms in smsModels)
            {
                var maxCount = _smsFactory.Create(sms.Type).MaxCount;
                sms.Mobiles = sms.Mobiles.Distinct().ToList();
                var page = GetPageCount(sms.Mobiles.Count, maxCount);

                var index = 0;
                do
                {
                    var toBeSendPhones = sms.Mobiles.Skip(index * maxCount).Take(maxCount).ToList();
                    smsModel.Add(new SmsModel
                    {
                        Content          = sms.Content,
                        CreateDateTime   = now,
                        Mobiles          = toBeSendPhones,
                        TimeSendDateTime = sms.TimeSendDateTime,
                        Type             = sms.Type
                    });
                    index++;
                } while (index < page);
            }

            SmsList = smsModel;

            _mongoProxy.BatchAdd(SmsList);
        }
Beispiel #2
0
        /// <summary>
        /// 初始化添加预定义权限值
        /// </summary>
        /// <param name="app"></param>
        public static void InitPermission(IApplicationBuilder app)
        {
            //验证权限值是否重复
            ValidPermissions();

            //反射被标记的Controller和Action
            _mongoRepository = (MongoRepository)app.ApplicationServices.GetService(typeof(MongoRepository));

            var permList = new List <MenuAction>();
            var actions  = typeof(PermissionUtil).Assembly.GetTypes()
                           .Where(t => typeof(Controller).IsAssignableFrom(t) && !t.IsAbstract)
                           .SelectMany(t => t.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly));

            //遍历集合整理信息
            foreach (var action in actions)
            {
                var permissionAttribute =
                    action.GetCustomAttributes(typeof(PermissionAttribute), false).ToList();
                if (!permissionAttribute.Any())
                {
                    continue;
                }

                var codes          = permissionAttribute.Select(a => ((PermissionAttribute)a).Code).ToArray();
                var controllerName = action?.ReflectedType?.Name.Replace("Controller", "").ToLower();
                var actionName     = action.Name.ToLower();

                foreach (var item in codes)
                {
                    if (permList.Exists(c => c.Code == item))
                    {
                        var menuAction = permList.FirstOrDefault(a => a.Code == item);
                        menuAction?.Url.Add($"{controllerName}/{actionName}".ToLower());
                    }
                    else
                    {
                        var perm = new MenuAction
                        {
                            Id             = item.ToString().EncodeMd5String().ToObjectId(),
                            CreateDateTime = DateTime.Now,
                            Url            = new List <string> {
                                $"{controllerName}/{actionName}".ToLower()
                            },
                            Code = item,
                            Name = ((PermCode)item).GetDisplayName() ?? ((PermCode)item).ToString()
                        };
                        permList.Add(perm);
                    }
                }
                PermissionUrls.TryAdd($"{controllerName}/{actionName}".ToLower(), codes);
            }

            //业务功能持久化
            _mongoRepository.Delete <MenuAction>(a => true);
            _mongoRepository.BatchAdd(permList);
        }