| | |
| | | { |
| | | private readonly IRepository<LifePayRechargeReceipts, Guid> _lifePayRechargeReceiptsRepository; |
| | | private readonly IRepository<LifePayExpensesReceipts, Guid> _lifePayExpensesReceiptsRepository; |
| | | private readonly IRepository<LifePayOrder, Guid> _lifePayOrderRepository; |
| | | private readonly IAliPayApi _aliPayApi; |
| | | private readonly IWxPayApi _wxPayApi; |
| | | |
| | | public LifePayOrderService( |
| | | IRepository<LifePayRechargeReceipts, Guid> lifePayRechargeReceiptsRepository, |
| | | IRepository<LifePayExpensesReceipts, Guid> lifePayExpensesReceiptsRepository, |
| | | IRepository<LifePayOrder, Guid> lifePayOrderRepository, |
| | | IAliPayApi aliPayApi, |
| | | IWxPayApi wxPayApi) |
| | | { |
| | | _lifePayRechargeReceiptsRepository = lifePayRechargeReceiptsRepository; |
| | | _lifePayExpensesReceiptsRepository = lifePayExpensesReceiptsRepository; |
| | | _lifePayOrderRepository = lifePayOrderRepository; |
| | | _aliPayApi = aliPayApi; |
| | | _wxPayApi = wxPayApi; |
| | | } |
| | |
| | | OrderNo = x.OrderNo, |
| | | OutOrderNo = x.OutOrderNo, |
| | | LifePayType = x.LifePayType, |
| | | ExpensesReceiptsType = x.ExpensesReceiptsType, |
| | | ExpensesReceiptsType = x.ExpensesReceiptsType.Value, |
| | | Amount = x.Amount, |
| | | FinishTime = x.FinishTime |
| | | }) |
| | |
| | | else |
| | | { |
| | | var query = await _wxPayApi.WxPayDomesticRefundsQuery(input.OrderNo); |
| | | if (query.Code == AlipayResultCode.Success && query.RefundStatus == WxPayRefundStatus.退款成功) |
| | | if (query.Status == WxPayRefundStatus.退款成功) |
| | | { |
| | | data.ExtraProperties = JsonConvert.SerializeObject(query); |
| | | data.FinishTime = Convert.ToDateTime(query.SuccessTime); |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | public async Task GetAllLifePayExpensesReceipts() |
| | | { |
| | | var orderlist = await (from a in _lifePayOrderRepository.Where(x => x.PayStatus >= LifePayStatusEnum.已支付) |
| | | join b in _lifePayExpensesReceiptsRepository on a.OrderNo equals b.OrderNo into temp |
| | | from b in temp.DefaultIfEmpty() |
| | | select new LifePayExpensesReceiptsTemp() |
| | | { |
| | | OrderNo = a.OrderNo, |
| | | OutOrderNo = a.OutOrderNo, |
| | | RefundOrderNo = a.RefundOrderNo, |
| | | LifePayType = a.LifePayType.Value, |
| | | Amount = a.PayAmount.Value, |
| | | ExpensesReceiptsType = b.ExpensesReceiptsType |
| | | }).ToListAsync(); |
| | | foreach (var item in orderlist) |
| | | { |
| | | if (!item.ExpensesReceiptsType.HasValue) |
| | | { |
| | | /// 入账 |
| | | AddLifePayExpensesReceiptsInput input = new AddLifePayExpensesReceiptsInput() |
| | | { |
| | | OrderNo = item.OrderNo, |
| | | OutOrderNo = item.OutOrderNo, |
| | | LifePayType = item.LifePayType, |
| | | Amount = item.Amount, |
| | | ExpensesReceiptsType = ExpensesReceiptsTypeEnum.Expenses |
| | | }; |
| | | |
| | | await AddLifePayExpensesReceipts(input); |
| | | |
| | | /// 出账 |
| | | if (item.RefundOrderNo.IsNotNullOrEmpty()) |
| | | { |
| | | if (input.LifePayType == LifePayTypeEnum.WxPay) |
| | | { |
| | | input.OrderNo = item.RefundOrderNo; |
| | | } |
| | | |
| | | input.ExpensesReceiptsType = ExpensesReceiptsTypeEnum.Receipts; |
| | | await AddLifePayExpensesReceipts(input); |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |