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); }
/// <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); }