Files
jinko.yikatong/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs
2024-06-29 11:34:58 +08:00

177 lines
5.5 KiB
C#

using System.ComponentModel.DataAnnotations;
using Dlhis.Canteen.Order.Request;
using Dlhis.Canteen.Order.Response;
using Dlhis.Canteen.Order.Services;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Canteen.Order.Controllers;
/// <summary>
/// 充值/消费
/// </summary>
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class BalancesController : ControllerBase
{
private readonly IBalanceService _balanceService;
public BalancesController(IBalanceService balanceService)
{
_balanceService = balanceService;
}
/// <summary>
/// 获取所有消费记录分页
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Authorize()]
[HttpGet]
public async Task<Pagination<BalanceRecordResponse>> GetPageAsync([FromQuery] BalanceRecordPageRequest request)
{
return await _balanceService.GetPageAsync(request);
}
/// <summary>
/// 修补餐补明细
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Authorize(Roles = "admin,tenant-admin")]
[HttpPost("supplementBalance")]
public async Task SupplementBalanceAsync(BalanceSupplementRequest request)
{
await _balanceService.SupplementBalanceAsync(request);
}
/// <summary>
/// 营业点消费明细
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("recordPageDetails")]
public async Task<BalanceRecordByBusinessPlaceResponse> RecordPageDetailsAsync([FromQuery] BalanceRecordPageDetailRequest request)
{
return await _balanceService.RecordPageDetailsAsync(request);
}
/// <summary>
/// 设备消费记录
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("device/page")]
[IgnoreTenant]
public async Task<Pagination<BalanceRecordDeviceResponse>> GetPageByDeviceUniqueNoGetAsync([FromQuery] BalanceRecordPageByDeviceUniqueNoRequest request)
{
return await _balanceService.GetPageByDeviceUniqueNoAsync(request);
}
/// <summary>
/// 设备消费记录
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("device/page")]
[IgnoreTenant]
public async Task<Pagination<BalanceRecordDeviceResponse>> GetPageByDeviceUniqueNoPostAsync(BalanceRecordPageByDeviceUniqueNoRequest request)
{
return await _balanceService.GetPageByDeviceUniqueNoAsync(request);
}
/// <summary>
/// 用户消费记录
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("user/page")]
[IgnoreTenant]
public async Task<BalanceRecordUserResultResponse> GetPageByUserAsync([FromQuery] BalanceRecordUserPageRequest request)
{
return await _balanceService.GetPageByUserAsync(request);
}
/// <summary>
/// 获取消费机总数、离线设备数量、营业点数量、可消费人数、人均日消费额
/// </summary>
/// <returns></returns>
[HttpGet("consumenumbers")]
public async Task<ConsumeNumberResponse> GetConsumeNumberAsync()
{
return await _balanceService.GetConsumeNumberAsync();
}
/// <summary>
/// 消费人数详情
/// </summary>
/// <returns></returns>
[HttpGet("spendingDetails")]
public async Task<Pagination<SpendingDetailResponse>> GetSpendingDetailsAsync([FromQuery] SpendingDetailRequest request)
{
return await _balanceService.GetSpendingDetailsAsync(request);
}
/// <summary>
/// 日消费均额
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("averageDaily")]
public async Task<Pagination<AverageDailyResponse>> AverageDailyAsync([FromQuery] AverageDailyRequest request)
{
return await _balanceService.AverageDailyAsync(request);
}
/// <summary>
/// 获取消费机详情
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("consumeDevices")]
public async Task<Pagination<DevicePageResponse>> GetConsumeDeviceAsync([FromQuery] GetConsumeDeviceRequest request)
{
return await _balanceService.GetConsumeDeviceAsync(request);
}
/// <summary>
/// 海宁餐补数据写入
/// </summary>
/// <param name="request"></param>
[Transactional]
[IgnoreTenant]
[HttpPost("haining/import")]
public async Task Import(BalanceHainingImportRequest request)
{
await _balanceService.HainingImportAsync(request);
}
/// <summary>
/// 根据工号海宁餐补数据获取
/// </summary>
/// <param name="userCode">工号</param>
/// <returns></returns>
[IgnoreTenant]
[HttpGet("haining/list")]
public async Task<List<BalanceHainingDownloadResponse>> HainingDownloadAsync([Required(ErrorMessage = "工号不能为空")] string userCode)
{
return await _balanceService.HainingDownloadAsync(userCode);
}
/// <summary>
/// 手动处理余额
/// </summary>
/// <param name="requests"></param>
[Authorize(Roles = "admin")]
[HttpPost("manuallyRecalc")]
[IgnoreTenant]
[Transactional]
public async Task ManuallyImportBalanceAndReCalcAsync(List<BalanceManuallyImportRequest> requests)
{
await _balanceService.ManuallyImportBalanceAndReCalcAsync(requests);
}
}