Esempio n. 1
0
        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"));
        }
Esempio n. 2
0
        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,
            });
        }
Esempio n. 3
0
        //[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));
            }
        }
Esempio n. 4
0
        //[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);
            }
        }