using System.Threading.Tasks;
using Datory;
using GxPress.Entity.Topic;
using GxPress.Repository.Interface;
using GxPress.Repository.Interface.Note;
using GxPress.Repository.Interface.Visit;
using GxPress.Service.Interface.Visit;
namespace GxPress.Service.Implement.Visit
{
///
/// 访问服务
///
public class VisitService : IVisitService
{
private readonly IVisitRepository _visitRepository;
private readonly ITopicRepository _topicRepository;
private readonly INoteRepository _noteRepository;
private readonly ITopicAddresseeRepository _topicAddresseeRepository;
private readonly IArticleRepository _articleRepository;
public VisitService(IVisitRepository visitRepository, ITopicRepository topicRepository, INoteRepository noteRepository, ITopicAddresseeRepository topicAddresseeRepository, IArticleRepository articleRepository)
{
_visitRepository = visitRepository;
_topicRepository = topicRepository;
_noteRepository = noteRepository;
_topicAddresseeRepository = topicAddresseeRepository;
_articleRepository = articleRepository;
}
///
/// /// 添加/数据条数
///
///
/// 类型ID 类型1文章 2话题 3 收藏 4笔记 5通知 6站内信 7小组 8 会议详情
///
///
public async Task AddVisit(int userId, int typeId, int sourceId)
{
var visitBool = await _visitRepository.ExistsAsync(Q.Where(nameof(Entity.Visit.Visit.TypeId), typeId).Where(nameof(Entity.Visit.Visit.SourceId), sourceId).Where(nameof(Entity.Visit.Visit.UserId), userId));
if (visitBool == false)
{
var visit = new Entity.Visit.Visit();
visit.TypeId = typeId;
visit.UserId = userId;
visit.SourceId = sourceId;
await _visitRepository.InsertAsync(visit);
//修改访问量数量
if (typeId == 1)
{
var article = await _articleRepository.GetAsync(sourceId);
article.ReadCount++;
await _articleRepository.UpdateAsync(article);
}
//修改访问量数量
if (typeId == 2)
{
var topic = await _topicRepository.GetAsync(sourceId);
topic.ReadCount++;
await _topicRepository.UpdateAsync(topic);
//修改
await _topicAddresseeRepository.UpdateAsync(Q.Set(nameof(TopicAddressee.IsRead), true)
.Where(nameof(TopicAddressee.TopicId), sourceId)
.Where(nameof(TopicAddressee.UserId), userId));
}
if (typeId == 4)
{
var note = await _noteRepository.GetAsync(sourceId);
note.ReadCount++;
await _noteRepository.UpdateAsync(note);
}
return true;
}
return false;
}
///
/// 获取访问数量
///
///
///
///
public async Task GetCountAsync(int typeId, int sourceId)
{
return await _visitRepository.CountAsync(Q.Where(nameof(Entity.Visit.Visit.TypeId), typeId).Where(nameof(Entity.Visit.Visit.SourceId), sourceId));
}
}
}