Преглед на файлове

订单退款改变逻辑

lcl преди 2 години
родител
ревизия
047cb40d2b
променени са 1 файла, в които са добавени 69 реда и са изтрити 2 реда
  1. 69 2
      Areas/Admin/Controllers/MainServer/OrdersController.cs

+ 69 - 2
Areas/Admin/Controllers/MainServer/OrdersController.cs

@@ -611,8 +611,75 @@ namespace MySystem.Areas.Admin.Controllers
                     var Remark = "";
                     var orderProduct = db.OrderProduct.FirstOrDefault(m => m.OrderId == order.Id) ?? new OrderProduct();
                     Remark = orderProduct.ProductName + "退款至余额";
-                    string SendData = "{\"OrderId\":\"" + data.Id + "\",\"Operator\":\"" + SysUserName + "_" + SysRealName + "\",\"Amount\":\"" + data.RefundActAmount + "\",\"Remark\":\"" + Remark + "\"}";
-                    RedisDbconn.Instance.AddList("RefundQueue", SendData);
+                    // string SendData = "{\"OrderId\":\"" + data.Id + "\",\"Operator\":\"" + SysUserName + "_" + SysRealName + "\",\"Amount\":\"" + data.RefundActAmount + "\",\"Remark\":\"" + Remark + "\"}";
+                    // RedisDbconn.Instance.AddList("RefundQueue", SendData);
+
+                    bool op = true;
+                    decimal TotalPrice = order.TotalPrice;
+                    decimal Amount = data.RefundActAmount;
+                    if(order.PayMode == 1)
+                    {
+                        PublicAccountSet set = db.PublicAccountSet.FirstOrDefault() ?? new PublicAccountSet();
+                        string result = new Alipay.AlipayPublicClass(_accessor.HttpContext).Refund(set.AlipayAppId, set.AlipayPrivateKey, set.AlipayPublicKey, order.OrderNo, Amount);
+                    }
+                    else if(order.PayMode == 3)
+                    {
+                        UserAccount user = db.UserAccount.FirstOrDefault(m => m.Id == order.UserId);
+                        if (user == null)
+                        {
+                            user = db.UserAccount.Add(new UserAccount()
+                            {
+                                Id = order.UserId,
+                                UserId = order.UserId,
+                            }).Entity;
+                            db.SaveChanges();
+                        }
+                        decimal BeforeTotalAmount = user.TotalAmount; //变更前总金额
+                        decimal BeforeFreezeAmount = user.FreezeAmount; //变更前冻结金额
+                        decimal BeforeBalanceAmount = user.BalanceAmount; //变更前余额
+                        user.BalanceAmount += Amount;
+                        decimal AfterTotalAmount = user.TotalAmount; //变更后总金额
+                        decimal AfterFreezeAmount = user.FreezeAmount; //变更后冻结金额
+                        decimal AfterBalanceAmount = user.BalanceAmount; //变更后余额
+                        db.UserAccountRecord.Add(new UserAccountRecord()
+                        {
+                            CreateDate = DateTime.Now,
+                            UpdateDate = DateTime.Now,
+                            UserId = order.UserId, //创客
+                            ChangeType = 21, //变动类型
+                            ChangeAmount = Amount, //变更金额
+                            BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
+                            AfterTotalAmount = AfterTotalAmount, //变更后总金额
+                            BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
+                            AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
+                            BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
+                            AfterBalanceAmount = AfterBalanceAmount, //变更后余额
+                            QueryCount = order.Id,
+                            Remark = Remark,
+                        });
+                    }
+                    if(op)
+                    {
+                        order.RefundStatus = 1;
+                        order.RefundActAmount = Amount;
+                        db.OrderRefund.Add(new OrderRefund()
+                        {
+                            CreateDate = DateTime.Now,
+                            Mobile = order.Mobile,
+                            Amount = Amount,
+                            SeoDescription = Remark,
+                            ProductId = order.ProductId.ToString(),
+                            OrderId = order.Id,
+                            UserId = order.UserId,
+                        });
+                    }
+                    else
+                    {
+                        order.RefundStatus = 0;
+                        order.RefundReason = null;
+                        order.RefundActAmount = 0;
+                    }
+                    db.SaveChanges();
                 }
             }
             return "success";