using Mapster; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using SqlSugar; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; using Volo.Abp.Users; using Yi.Framework.AiHub.Application.Contracts.Dtos; using Yi.Framework.AiHub.Domain.Entities; using Yi.Framework.AiHub.Domain.Entities.Chat; using Yi.Framework.SqlSugarCore.Abstractions; namespace Yi.Framework.AiHub.Application.Services; public class SessionService : CrudAppService { private readonly ISqlSugarRepository _repository; public readonly ISqlSugarRepository _messageRepository; public SessionService(ISqlSugarRepository repository, ISqlSugarRepository messageRepository) : base(repository) { _repository = repository; _messageRepository = messageRepository; } /// /// 创建会话 /// /// /// [Authorize] public override async Task CreateAsync(SessionCreateAndUpdateInput input) { var entity = await MapToEntityAsync(input); entity.UserId = CurrentUser.GetId(); await _repository.InsertAsync(entity); return entity.Adapt(); } /// /// 详情会话 /// /// /// [Authorize] public override Task GetAsync(Guid id) { return base.GetAsync(id); } /// /// 编辑会话 /// /// /// /// [Authorize] public override Task UpdateAsync(Guid id, SessionCreateAndUpdateInput input) { return base.UpdateAsync(id, input); } /// /// 删除会话 /// /// /// [Authorize] public override async Task DeleteAsync(Guid id) { await base.DeleteAsync(id); //对应的消息一起删除 await _messageRepository.DeleteAsync(x => x.SessionId == id); } /// /// 查询会话 /// /// /// [Authorize] public override async Task> GetListAsync(SessionGetListInput input) { RefAsync total = 0; var userId = CurrentUser.GetId(); var entities = await _repository._DbQueryable .Where(x=>x.UserId == userId) .OrderByDescending(x => x.Id) .ToPageListAsync(input.SkipCount, input.MaxResultCount, total); return new PagedResultDto(total, entities.Adapt>()); } }