public async Task <TopicDTO> AddTopic(TopicDTO model, string operatorId) { var now = DateTime.Now; var count = _topicRepository.GetFiltered(o => o.OrganizationId == model.OrganizationId && (o.EndDate == null || o.EndDate >= now)).Count(); if (count >= 3) { throw new Exception("商户最多发布3条主题。"); } if (!string.IsNullOrEmpty(model?.Address?.StreetAddress)) { var lonLat = await _amapProxy.Geo(model.Address.StreetAddress); model.Address.Longitude = lonLat?.Longitude ?? 0; model.Address.Latitude = lonLat?.Latitude ?? 0; } var obj = TopicFactory.CreateInstance( model.Title, model.FaceImageUrl, model.Introduction, model.IsCustom, model.CustomTopicUrl, model.OrganizationId, model.Address.Province, model.Address.City, model.Address.Area, model.Address.StreetAddress, model.Address.Postcode, model.Address.Latitude, model.Address.Longitude, operatorId, model.CreatorName, model.CreatorPortraitUrl, model.StartDate, model.EndDate, model.Category ); _topicRepository.Add(obj); if (model.ContentImages != null && model.ContentImages.Count() > 0) { var i = 0; foreach (var img in model.ContentImages) { i++; _topicImageRepository.Add(new TopicImage { ImageId = img.ImageId, ImageUrl = img.ImageUrl, TopicId = obj.Id, Order = i }); } } _dbUnitOfWork.Commit(); return(new TopicDTO { Address = obj.Address, Category = obj.Category, ContentImages = model.ContentImages.Select(item => new TopicImageDTO { ImageId = item.ImageId, ImageUrl = item.ImageUrl, TopicId = obj.Id }).ToList(), CreatedBy = obj.CreatedBy, CreatedOn = obj.CreatedOn, CustomTopicUrl = obj.CustomTopicUrl, EndDate = obj.EndDate, FaceImageUrl = obj.FaceImageUrl, Introduction = obj.Introduction, IsCustom = obj.IsCustom, IsSuspend = obj.IsSuspend, LastUpdBy = obj.LastUpdBy, LastUpdOn = obj.LastUpdOn, OrganizationId = obj.OrganizationId, StartDate = obj.StartDate, Title = obj.Title, Id = obj.Id, CreatorName = obj.CreatorName, CreatorPortraitUrl = obj.CreatorPortraitUrl }); }