public async Task <bool> SubscribeAsync(Subscribe sub) { if (!sub.IsValidate) { return(false); } var topic = await _topicServce.GetTopicAsync(sub.TopicId); if (topic.IsNull()) { return(false); } //再判断下是否已经订阅过 var searchOptions = new SubscribeSearchOptions { ServiceId = sub.ServiceId, SubscriberId = sub.SubscriberId, TopicId = sub.TopicId, TargetId = sub.TargetId }; var existSubscribes = await Search(searchOptions, null); if (!existSubscribes.IsNull() && existSubscribes.Count > 0) { return(false); } sub.Id = Guid.NewGuid().ToString(); return(SubscribeDb.Insert(sub)); }
public async Task <bool> UnSubsribeAsync(Subscribe sub) { var topic = await _topicServce.GetTopicAsync(sub.TopicId); if (topic.IsNull()) { return(false); } var searchOptions = new SubscribeSearchOptions { ServiceId = sub.ServiceId, SubscriberId = sub.SubscriberId, TopicId = sub.TopicId, TargetId = sub.TargetId }; var existSubscribes = await Search(searchOptions, null); if (existSubscribes.IsNull() || existSubscribes.Count() <= 0) { return(false); } try { return(SubscribeDb.DeleteById(existSubscribes.First().Id.ToGuid())); } catch { return(false); } }
public async Task <List <SubscribeViewModel> > GetSubscribeTarget([FromBody] SubscribeSearchOptions viewModel) { viewModel.SubscriberId = viewModel?.SubscriberId ?? User.GetUserId(); viewModel.ServiceId = viewModel?.ServiceId ?? User.GetServiceId(); var subscribes = await _subscribeService.Search( viewModel, null ); List <SubscribeViewModel> results = new List <SubscribeViewModel>(); foreach (var item in subscribes) { results.Add(Mapper.Map <SubscribeViewModel>(item)); } return(results); }
public async Task <List <Subscribe> > Search(SubscribeSearchOptions options, PageOptions page) { var query = DB.Queryable <Subscribe>(); if (!options.IsNull()) { var SubscriberId = options?.SubscriberId; var TargetId = options?.TargetId; var ServiceId = options?.ServiceId; var TopicId = options?.TopicId; var code = options?.Code; if (!SubscriberId.IsNullOrEmpty()) { query.Where(s => s.SubscriberId == SubscriberId); } if (!TargetId.IsNullOrEmpty()) { query.Where(s => s.TargetId == TargetId); } if (!ServiceId.IsNullOrEmpty()) { query.Where(s => s.ServiceId == ServiceId); } if (!TopicId.IsNullOrEmpty()) { query.Where(s => s.TopicId == TopicId); } } var targets = new List <Subscribe>(); if (!page.IsNull() && page.IsValidate) { targets = await query.ToPageListAsync(page.PageIndex, page.PageSize); } else { targets = await query.ToListAsync(); } return(targets); }