self_mall_api/ARW.WebApi/Controllers/Api/OrderManage/OrderRefunds/OrderRefundApiController.cs
2023-10-25 16:07:57 +08:00

175 lines
6.0 KiB
C#

using Infrastructure;
using Infrastructure.Attribute;
using Infrastructure.Enums;
using Infrastructure.Model;
using Mapster;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using ARW.Admin.WebApi.Extensions;
using ARW.Admin.WebApi.Filters;
using ARW.Common;
using ARW.Admin.WebApi.Controllers;
using ARW.Model.Dto.Api.OrderManage.OrderRefunds;
using ARW.Service.Api.IBusinessService.OrderManage.OrderRefunds;
using ARW.Model.Models.Business.OrderManage.OrderRefunds;
using ARW.Model.Vo.Api.OrderManage.OrderRefunds;
using Microsoft.AspNetCore.Authorization;
using Geocoding;
using ARW.Model.Dto.Business.OrderManage.OrderRefunds;
using ARW.Service.Business.IBusinessService.OrderManage.OrderRefunds;
using ARW.Admin.WebApi.Framework;
using ARW.Service.Business.IBusinessService.LogisticsManage.LogisticsCompanys;
using ARW.Service.System.IService;
using ARW.Service.Business.IBusinessService.OrderManage.Orders;
namespace ARW.WebApi.Controllers.Api.OrderManage.OrderRefunds
{
/// <summary>
/// 售后单记录表控制器Api
///
/// @author lwh
/// @date 2023-10-16
/// </summary>
[Verify]
[Route("api/[controller]")]
public class OrderRefundApiController : BaseController
{
private readonly IOrderRefundServiceApi _OrderRefundServiceApi;
private readonly ILogisticsCompanyService _LogisticsCompanyService;
private readonly ISysDictDataService _SysDictDataService;
private readonly IOrderService _OrderService;
/// <summary>
/// 依赖注入
/// </summary>
/// <param name="OrderRefundServiceApi">售后单记录表售后单记录表Api服务</param>
public OrderRefundApiController(IOrderRefundServiceApi OrderRefundServiceApi, ILogisticsCompanyService logisticsCompanyService, ISysDictDataService sysDictDataService, IOrderService orderService)
{
_OrderRefundServiceApi = OrderRefundServiceApi;
_LogisticsCompanyService = logisticsCompanyService;
_SysDictDataService = sysDictDataService;
_OrderService = orderService;
}
/// <summary>
/// 获取售后单记录表列表(Api)
/// </summary>
/// <param name="parm">查询参数</param>
/// <returns></returns>
[HttpGet("getOrderRefundList")]
public async Task<IActionResult> GetOrderRefundListApi([FromQuery] OrderRefundQueryDtoApi parm)
{
var user = JwtUtil.GetLoginUser(App.HttpContext);
parm.CustomerGuid = user.UserId;
var res = await _OrderRefundServiceApi.GetOrderRefundListApi(parm);
return SUCCESS(res);
}
/// <summary>
/// 获取OrderRefund详情(Api)
/// </summary>
/// <param name="parm">查询参数</param>
/// <returns></returns>
[HttpGet("getOrderRefundDetails")]
public async Task<IActionResult> GetOrderRefundDetails([FromQuery] OrderRefundDtoApi parm)
{
//if (parm == null) throw new CustomException("参数错误!");
var res = await _OrderRefundServiceApi.GetOrderRefundDetails(parm);
if (res != "[]")
{
var data = res.FromJSON<OrderRefundApiDetailsVo>();
return SUCCESS(data);
}
else
{
return SUCCESS(res);
}
}
/// <summary>
/// 获取物流公司列表
/// </summary>
/// <returns></returns>
[HttpGet("getLogisticsCompanyList")]
public async Task<IActionResult> GetLogisticsCompanyList()
{
var res = await _LogisticsCompanyService.GetListAsync();
return SUCCESS(res);
}
/// <summary>
/// 获取退款原因
/// </summary>
/// <returns></returns>
[HttpGet("getRefundReason")]
public async Task<IActionResult> GetRefundReason()
{
var res = _SysDictDataService.SelectDictDataByType("refund_reason");
return SUCCESS(res);
}
/// <summary>
/// 添加售后单记录表
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
[HttpPost("addOrderRefund")]
[Log(Title = "添加售后单记录表", BusinessType = BusinessType.ADDORUPDATE)]
public async Task<IActionResult> AddOrderRefund([FromBody] AddOrderRefundApiDto parm)
{
if (parm == null) { throw new CustomException("请求参数错误"); }
var user = JwtUtil.GetLoginUser(App.HttpContext);
parm.CustomerGuid = user.UserId;
var order = await _OrderService.GetFirstAsync(s => s.OrderGuid == parm.OrderGuid);
parm.ShopGuid = order.ShopGuid;
var modal = parm.Adapt<OrderRefund>().ToCreate(HttpContext);
var res = await _OrderRefundServiceApi.AddOrderRefund(modal);
return SUCCESS(res);
}
/// <summary>
/// 撤销申请
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
[HttpPost("repeal")]
[Log(Title = "撤销申请", BusinessType = BusinessType.ADDORUPDATE)]
public async Task<IActionResult> RepealOrderRefund([FromBody] AddOrderRefundApiDto parm)
{
if (parm == null) { throw new CustomException("请求参数错误"); }
var res = await _OrderRefundServiceApi.RepealOrderRefund(parm);
return SUCCESS(res);
}
/// <summary>
/// 买家发货(填写运单号)
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
[HttpPost("buyerDelivery")]
[Log(Title = "买家发货(填写运单号)", BusinessType = BusinessType.ADDORUPDATE)]
public async Task<IActionResult> BuyerDelivery([FromBody] BuyerDeliveryApiDto parm)
{
if (parm == null) { throw new CustomException("请求参数错误"); }
var res = await _OrderRefundServiceApi.BuyerDelivery(parm);
return SUCCESS(res);
}
}
}