コード例 #1
0
        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
            });
        }