public APIResult UpdateConglomeration() { _logger.LogInformation("=================【更新拼团状态】UpdateConglomeration服务开始=========="); var orders = shopDb.ConglomerationOrder.Where(m => !m.IsDel && (m.Status.Equals(ShopOrderStatus.待成团) || m.Status.Equals(ShopOrderStatus.待自提) || m.Status.Equals(ShopOrderStatus.待配送)) && (!m.ConglomerationSetUp.IsDel && m.ConglomerationSetUp.EndTime <= DateTime.Now && (m.ConglomerationSetUp.Status.Equals(ConglomerationSetUpStatus.未成团) || m.ConglomerationSetUp.Status.Equals(ConglomerationSetUpStatus.已取消)))) .Include(m => m.ConglomerationSetUp); _logger.LogInformation($"需更新订单数量 :{orders.Count()}"); foreach (var ordersItem in orders) { try { //执行退款改变订单状态 var shop = shopDb.Shops.Find(ordersItem.ShopId); Refunds refunds = new Refunds(proxyFactory); var memberTradeForRechange = shopDb.MemberTradeForRechange.FirstOrDefault(m => m.Status.Equals(MemberTradeForRechangeStatus.成功) && m.ConglomerationOrderId.Equals(ordersItem.Id)); _logger.LogInformation($"支付记录ID :{memberTradeForRechange.Id}"); if (memberTradeForRechange == null) { _logger.LogInformation($"错误无法找到支付记录 订单ID :{ordersItem.Id}"); return(Error("无法找到支付记录")); } var isOk = refunds.RefundAction(new RefundArgsModel() { ShopFlag = shop.Flag, TradeNo = memberTradeForRechange.TradeNo }); _logger.LogInformation($"退款结果 isOk :{isOk.Status}"); if (isOk.Status == MemberTradeForRefundStatus.成功) { ordersItem.Status = ShopOrderStatus.已退款; } if (isOk.Status == MemberTradeForRefundStatus.退款中) { ordersItem.Status = ShopOrderStatus.退款中; } ordersItem.ConglomerationSetUp.Status = ConglomerationSetUpStatus.已取消; ShopConglomerationActivityOptions.RemoveSetup(ordersItem.ConglomerationSetUp.Id); } catch (Exception e) { _logger.LogInformation($"更新出错错误信息{e.Message} 订单ID :{ordersItem.Id}"); } } shopDb.SaveChanges(); _logger.LogInformation("=================【更新拼团状态】UpdateConglomeration服务结束=========="); return(Success("ok")); }
public void TestRefundQuery([FromBody] RefundArgsModel args) { // this.LogDbContext.Add(new TaskLog() { TaskName = "TestRefund", ExeResult = "" }); //this.LogDbContext.SaveChanges(); Refunds refund = new Refunds(proxyFactory); refund.RefundAction(new ZRui.Web.Core.Finance.WechatPay.PayAPIModels.RefundArgsModel() { ShopFlag = args.ShopFlag, TradeNo = args.TradeNo, }); }
//[Authorize] public APIResult OnRefund([FromBody] ConglomerationOrderRequestModel input) { var order = db.ConglomerationOrder.Find(input.ConglomerationOrderId); if (order == null) { return(Error("未找到订单数据")); } _logger.LogInformation($"退款订单信息:{order.Id}"); try { if (!order.ShopId.Equals(input.ShopId)) { return(Error("订单与商铺不匹配")); } if (order.Status.Equals(ShopOrderStatus.待成团) || order.Status.Equals(ShopOrderStatus.待自提) || order.Status.Equals(ShopOrderStatus.待配送) || order.Status.Equals(ShopOrderStatus.退款审批)) { var shop = db.Shops.Find(order.ShopId); Refunds refunds = new Refunds(_proxyFactory); var memberTradeForRechange = db.MemberTradeForRechange.FirstOrDefault(m => m.Status.Equals(MemberTradeForRechangeStatus.成功) && m.ConglomerationOrderId.Equals(order.Id)); if (memberTradeForRechange == null) { return(Error("无法找到支付记录")); } var isOk = refunds.RefundAction(new RefundArgsModel() { ShopFlag = shop.Flag, TradeNo = memberTradeForRechange.TradeNo }); if (isOk.Status == MemberTradeForRefundStatus.成功) { order.Status = ShopOrderStatus.已退款; db.SaveChanges(); return(Success("您的退款申请已提交,银行处理退款中")); } if (isOk.Status == MemberTradeForRefundStatus.退款中) { order.Status = ShopOrderStatus.退款中; db.SaveChanges(); return(Success("您的退款申请已提交,银行处理退款中")); } } order.Status = ShopOrderStatus.退款中; return(Error("退款失败请联系管理员")); } catch (Exception e) { _logger.LogInformation($"退款订单信息:{e}"); return(Error(e.Message)); } }
//[Authorize] public async Task <APIResult> ManagerRefund([FromBody] ToAmountArgsModel args) { string exmsg = string.Empty; try { var shoporder = db.Set <ShopOrder>().FirstOrDefault(r => r.Id == args.id); //if (shoporder == null) throw new Exception("未找到此订单"); //CheckShopActor(shoporder.ShopId, ShopActorType.超级管理员);//检测用户权限 var shopMemberConsume = db.GetSingle <ShopMemberConsume>(shoporder.ShopMemberConsumeId ?? 0); if (shopMemberConsume != null) { var shopMemberRufund = db.Query <ShopMemberRufund>() .Where(m => !m.IsDel && m.ShopOrderId == shoporder.Id) .FirstOrDefault(); if (shopMemberRufund != null) { throw new Exception("该订单已退款"); } ShopMemberServer shopMemberServer = new ShopMemberServer(db, shoporder.ShopId, shoporder.MemberId); shopMemberServer.RefundToBalance(shoporder); shoporder.Status = ShopOrderStatus.已退款; db.SaveChanges(); var orderType = await ShopIntegralRechargeServer.GetOrderSourceType(db, args.id, false, _logger); //积分回滚 await ShopIntegralRechargeServer.IntegralReturn(db, args.id, orderType, _logger); return(Success("退款成功")); } else { var shoppayinfo = db.Set <ShopPayInfo>().FirstOrDefault(r => r.ShopId == shoporder.ShopId && r.IsEnable == true); if (shoppayinfo == null) { throw new Exception("未找到商户退款配置"); } var membertradeforrechange = financeDb.Set <MemberTradeForRechange>().Where(r => r.OrderId == shoporder.Id && r.OrderType == OrderType.普通订单 && r.Status == MemberTradeForRechangeStatus.成功); if (membertradeforrechange != null && membertradeforrechange.Count() > 0) //代表有支付成功的数据 { Refunds refunds = new Refunds(proxyFactory); var refundresult = refunds.RefundAction(new RefundArgsModel() { ShopFlag = shoppayinfo.ShopFlag, TradeNo = membertradeforrechange.First().TradeNo, OrderType = OrderType.普通订单, OrderId = shoporder.Id }); if (refundresult.Status == MemberTradeForRefundStatus.成功) { shoporder.Status = ShopOrderStatus.已退款; DecreaseCommodity(shoporder); db.SaveChanges(); return(Success()); } else if (refundresult.Status == MemberTradeForRefundStatus.退款中) { shoporder.Status = ShopOrderStatus.退款中; db.SaveChanges(); } else { shoporder.Status = ShopOrderStatus.退款中; db.SaveChanges(); } var orderType = await ShopIntegralRechargeServer.GetOrderSourceType(db, args.id, false, _logger); //积分回滚 await ShopIntegralRechargeServer.IntegralReturn(db, args.id, orderType, _logger); return(Success("您的退款申请已经提交,银行处理退款中")); } else { throw new Exception($"找不到订单{shoporder.OrderNumber}支付成功的记录"); } } } catch (Exception ex) { exmsg = ex.Message; throw new Exception(ex.Message); } }