226 lines
7.1 KiB
C#
226 lines
7.1 KiB
C#
using System.ComponentModel.DataAnnotations;
|
|
using System.Data;
|
|
using Dlhis.Canteen.Order.Request;
|
|
using Dlhis.Canteen.Order.Response;
|
|
using Dlhis.Canteen.Order.Services;
|
|
using Dlhis.Entity.Canteen.Entities;
|
|
using Kurisu.AspNetCore.DataAccess.Dto;
|
|
using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
|
|
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
|
|
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;
|
|
private readonly IHainingBalanceService _hainingBalanceService;
|
|
private readonly IServiceProvider _serviceProvider;
|
|
|
|
public BalancesController(IBalanceService balanceService, IHainingBalanceService hainingBalanceService, IServiceProvider serviceProvider)
|
|
{
|
|
_balanceService = balanceService;
|
|
_hainingBalanceService = hainingBalanceService;
|
|
_serviceProvider = serviceProvider;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取所有消费记录分页
|
|
/// </summary>
|
|
/// <param name="request"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[IgnoreTenant]
|
|
public async Task<Pagination<BalanceRecordResponse>> GetPageAsync([FromQuery] BalanceRecordPageRequest request)
|
|
{
|
|
return await _balanceService.GetPageAsync(request);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 修补餐补明细
|
|
/// </summary>
|
|
/// <param name="request"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("supplementBalance")]
|
|
public async Task SupplementBalanceAsync(BalanceSupplementRequest request)
|
|
{
|
|
await _balanceService.SupplementBalanceAsync(request);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 退款
|
|
/// </summary>
|
|
/// <param name="request"></param>
|
|
[HttpPost("refund")]
|
|
[IgnoreTenant]
|
|
[Transactional(IsolationLevel.ReadCommitted)]
|
|
public async Task<OrderResultResponse> RefundAsync(BalanceRecordRefundRequest request)
|
|
{
|
|
return await _balanceService.RefundAsync(request.No);
|
|
}
|
|
|
|
|
|
/// <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>
|
|
/// <param name="request"></param>
|
|
/// <returns></returns>
|
|
[HttpGet("user/group/page")]
|
|
[IgnoreTenant]
|
|
public async Task<Pagination<BalanceRecordUserPageResponse>> GetUserBalanceGroupAsync([FromQuery] BalanceRecordUserGroupPageRequest request)
|
|
{
|
|
return await _balanceService.GetUserBalanceGroupAsync(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>
|
|
[Transactional]
|
|
[IgnoreTenant]
|
|
[HttpPost("haining/import")]
|
|
public async Task Import(BalanceHainingImportRequest request)
|
|
{
|
|
await _hainingBalanceService.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 _hainingBalanceService.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);
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 重算
|
|
/// </summary>
|
|
/// <param name="request"></param>
|
|
[Authorize(Roles = "admin")]
|
|
[HttpPost("recalc")]
|
|
[IgnoreTenant]
|
|
[Transactional(IsolationLevel.ReadCommitted)]
|
|
public async Task ReCalcAsync(BalanceReCalcRequest request)
|
|
{
|
|
await _balanceService.ReCalcAsync(request.UserCode);
|
|
}
|
|
|
|
[HttpPost("recalc1")]
|
|
[IgnoreTenant]
|
|
[Transactional(IsolationLevel.ReadCommitted)]
|
|
public async Task ReC5()
|
|
{
|
|
using (var scope = _serviceProvider.CreateScope())
|
|
{
|
|
var db = scope.ServiceProvider.GetService<IDbContext>();
|
|
var codes = await db.Queryable<MealSupplementRecordEntity>().Where(x => x.Amount < 0 && x.Workplace == "5").Select(x => x.Code).Distinct().ToListAsync();
|
|
foreach (var code in codes)
|
|
{
|
|
await _balanceService.ReCalcAsync(code);
|
|
}
|
|
}
|
|
}
|
|
} |