/***********************************************************************
* Project: baifenBinfa
* ProjectName: 百分兵法管理系统
* Web: http://chuanyin.com
* Author:
* Email:
* CreateTime: 202403/02
* Description: 暂无
***********************************************************************/
using System;
using System.Threading.Tasks;
using CoreCms.Net.Configuration;
using CoreCms.Net.IRepository;
using CoreCms.Net.IServices;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.ViewModels.UI;
using Microsoft.Extensions.DependencyInjection;
namespace CoreCms.Net.Services
{
///
/// 线下支付 接口实现
///
public class BalancePayServices : BaseServices, IBalancePayServices
{
private readonly IServiceProvider _serviceProvider;
private readonly ICoreCmsUserBalanceServices _userBalanceServices;
public BalancePayServices(IWeChatPayRepository dal
, IServiceProvider serviceProvider, ICoreCmsUserBalanceServices userBalanceServices)
{
BaseDal = dal;
_serviceProvider = serviceProvider;
_userBalanceServices = userBalanceServices;
}
///
/// 发起支付
///
/// 实体数据
///
public async Task PubPay(CoreCmsBillPayments entity)
{
using (var container = _serviceProvider.CreateScope())
{
var userBalanceServices = container.ServiceProvider.GetService();
var billPaymentsServices = container.ServiceProvider.GetService();
var jm = new WebApiCallBack();
var result = await userBalanceServices.Change(entity.userId,
(int)GlobalEnumVars.UserBalanceSourceTypes.Pay, entity.money, entity.paymentId);
if (!result.status)
{
jm.msg = result.msg;
return jm;
}
//改变支付单状态
var billPaymentInfo = await billPaymentsServices.QueryByIdAsync(entity.paymentId);
if (billPaymentInfo == null)
{
jm.msg = GlobalErrorCodeVars.Code10056;
jm.data = 10056;
return jm;
}
var userBalance = result.data as CoreCmsUserBalance;
var resultBillPayment = await billPaymentsServices.ToUpdate(entity.paymentId,
(int)GlobalEnumVars.BillPaymentsStatus.Payed, "balancepay", entity.money, userBalance.memo,
userBalance.id.ToString());
if (resultBillPayment.status)
{
jm.msg = resultBillPayment.msg;
jm.status = true;
jm.data = entity;
}
else
{
jm.msg = resultBillPayment.msg;
}
return jm;
}
}
///
/// 用户余额退款
///
/// 退款单数据
/// 支付单数据
///
public async Task Refund(CoreCmsBillRefund refundInfo, CoreCmsBillPayments paymentInfo)
{
var jm = new WebApiCallBack();
if (refundInfo.money == 0)
{
jm.status = true;
jm.msg = "退款成功";
jm.data = new
{
ReturnCode = "SUCCESS"
};
return jm;
}
var res = await _userBalanceServices.Change(paymentInfo.userId,
(int)GlobalEnumVars.UserBalanceSourceTypes.Refund, refundInfo.money, paymentInfo.paymentId);
if (res.status == false) return jm;
jm.status = true;
jm.data = res;
jm.msg = "退款成功";
return jm;
}
}
}