irc-netcore-api/IRaCIS.Core.Application/Service/Financial/VolumeRewardService.cs

62 lines
2.3 KiB
C#

using AutoMapper;
using AutoMapper.QueryableExtensions;
using IRaCIS.Core.Infrastructure.ExpressionExtend;
using IRaCIS.Application.Interfaces;
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infra.EFCore;
using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Infrastructure.Extention;
using Microsoft.AspNetCore.Mvc;
using Panda.DynamicWebApi.Attributes;
namespace IRaCIS.Application.Services
{
[ ApiExplorerSettings(GroupName = "Financial")]
public class VolumeRewardService : BaseService, IVolumeRewardService
{
private readonly IRepository<VolumeReward> _volumeRewardRepository;
public VolumeRewardService(IRepository<VolumeReward> volumeRewardRepository,IMapper mapper)
{
_volumeRewardRepository = volumeRewardRepository;
}
/// <summary>
/// 批量添加或更新奖励费用单价
/// </summary>
[NonDynamicMethod]
public async Task<IResponseOutput> AddOrUpdateVolumeRewardPriceList(IEnumerable<AwardPriceCommand> addOrUpdateModel)
{
await _volumeRewardRepository.BatchDeleteAsync(t => t.Id != Guid.Empty);
var temp = _mapper.Map<List<VolumeReward>>(addOrUpdateModel);
await _volumeRewardRepository.AddRangeAsync(temp);
var success = await _volumeRewardRepository.SaveChangesAsync();
return ResponseOutput.Result(success);
}
/// <summary>
/// 获取所有奖励单价列表-用于计算时,一次性获取所有
/// </summary>
[NonDynamicMethod]
public async Task<List<AwardPriceCalculateDTO>> GetVolumeRewardPriceList()
{
return await _volumeRewardRepository.ProjectTo<AwardPriceCalculateDTO>(_mapper.ConfigurationProvider).OrderBy(t => t.Min).ToListAsync();
}
/// <summary>
/// 分页获取奖励单价列表
/// </summary>
[HttpPost]
public async Task<PageOutput<AwardPriceDTO>> GetVolumeRewardPriceList(AwardPriceQueryDTO queryParam)
{
var awardPriceQueryable = _volumeRewardRepository.ProjectTo<AwardPriceDTO>(_mapper.ConfigurationProvider);
return await awardPriceQueryable.ToPagedListAsync(queryParam.PageIndex, queryParam.PageSize, "Min");
}
}
}