using LifePayment.Application.Contracts; using LifePayment.Domain.Models; using LifePayment.Domain.Shared; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Dynamic.Core; using System.Threading.Tasks; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; using ZeroD.Util; namespace LifePayment.Application { public class OperateHistoryService : ApplicationService, IOperateHistoryService { private readonly IRepository _operateHistory; public OperateHistoryService( IRepository operateHistory) { _operateHistory = operateHistory; } public async Task> GetOperateHistoryByRelationId(GetOperateHistoryInput input) { var query = _operateHistory.Where(r => r.RelationId == input.RelationId) .WhereIf(input.OperateName.IsNotNullOrEmpty(), r => r.OperateName == input.OperateName) .Select(r => new OperateHistoryDto { OperateName = r.OperateName, RelationId = r.RelationId, CreationTime = r.CreationTime, CreatorName = r.CreatorName, OperateContent = r.OperateContent, TableType = r.TableType }); var result = await query.GetPageResult(input.PageModel); return result; } public async Task> GetOperateHistoryByType(QueryOperateHistoryByTypeInput input) { var query = _operateHistory.AsQueryable(); switch (input.OperateHistoryType) { case OperateHistoryTypeEnum.AccountManage: query = query.Where(x => x.UserId == input.TypeId && LifePaymentConstant.LogsSpecies.AccountManageOperateNameList.Contains(x.OperateName)); break; default: query = query.Where(x => x.RelationId == input.TypeId); break; } var result = await query.Select(r => new OperateHistoryDto { OperateName = r.OperateName, RelationId = r.RelationId, CreationTime = r.CreationTime, CreatorName = r.CreatorName, OperateContent = r.OperateContent, TableType = r.TableType }) .GetPageResult(input.PageModel); return result; } } }