From 8642cc943c7e803834d1553eb97de3bad1a0fae1 Mon Sep 17 00:00:00 2001
From: yzh <snbbt@21cn.com>
Date: 星期二, 10 五月 2022 13:36:38 +0800
Subject: [PATCH] 充值功能优化,客户表增加余额、订单表增加充值金额

---
 web/web/GwOrder.ashx |  122 ++++++++++++++++++++++++++++------------
 1 files changed, 84 insertions(+), 38 deletions(-)

diff --git a/web/web/GwOrder.ashx b/web/web/GwOrder.ashx
index 30c4bfd..485c75d 100644
--- a/web/web/GwOrder.ashx
+++ b/web/web/GwOrder.ashx
@@ -9,6 +9,7 @@
 {
     private GwOrderDao _Dao = new GwOrderDao();
     private GwSpDao _GwSpDao = new GwSpDao();
+    private GwClientDao _GwClientDao = new GwClientDao();
     private GwOpGroupDao _GwOpGroupDao = new GwOpGroupDao();
     private GwProductDao _GwProductDao = new GwProductDao();
     private SysXhDao _SysXhDao = new SysXhDao();
@@ -286,6 +287,10 @@
         string orderId = context.GetString("orderId");
         int basicNum = context.GetInt("basicNum");
         int givingNum = context.GetInt("givingNum");
+        string clientId = "";
+        int payAmount = 0;
+        int tmpPayAmount = Math.Max((int) (context.GetDecimal("payAmount", new Decimal(4, 0, 0, false, (byte) 2)) * new Decimal(1000)), 1);
+        payAmount = tmpPayAmount;
         //double price = context.GetDecimal(price);
         int num = Math.Max((int) (context.GetDecimal("price", new Decimal(4, 0, 0, false, (byte) 2)) * new Decimal(1000)), 1);
         string remark = context.GetString("remark");
@@ -307,7 +312,7 @@
         if (gwOrder.Status !=0 && gwOrder.Status !=1)
             throw new ArgumentException("璇ヨ鍗曞凡澶勭悊,鎿嶄綔澶辫触锛�");
 
-
+        clientId = gwOrder.ClientId;
 
         //鑾峰彇璁㈠崟瀹℃牳娴佺▼
         string flowGroup = null;    //娴佺▼缁勫悎
@@ -417,10 +422,11 @@
         }
         else if(status==1)
         {
-                int beforeBasicNum = 0;
-                int beforeGivingNum = 0;
-                int balance = 0;
-            if(string.IsNullOrEmpty(nextFlowCode))
+            int beforeBasicNum = 0;
+            int beforeGivingNum = 0;
+            int balance = 0;
+            int topUpAmountTotal = 0;
+            if (string.IsNullOrEmpty(nextFlowCode))
             {
                 orderStatus = 2;
 
@@ -429,12 +435,17 @@
 
                 beforeBasicNum = gwSp.BasicNum;
                 beforeGivingNum = gwSp.GivingNum;
-                balance = Convert.ToInt32(gwSp.Balance);
+                //balance = Convert.ToInt32(gwSp.Balance);
 
-                    //涓�1-棰勪粯璐�
-                if (gwSp.ChargeType.Equals("1") && gwSp.Balance < num * basicNum )
+                //鑾峰彇瀹㈡埛淇℃伅
+                GwClient gwClient = _GwClientDao.Get(gwSp.ClientID);
+                balance =  int.Parse(gwClient.Balance.ToString() );
+                topUpAmountTotal = int.Parse(gwClient.Top_up_Amount_Total.ToString() );
+
+                //涓�1-棰勪粯璐�
+                if (gwSp.ChargeType==1 && (balance + payAmount) < num * basicNum)
                 {
-                        throw new ArgumentException("璐﹀彿浣欓涓嶈冻锛岃鑱旂郴绠$悊鍛橈紒");
+                    throw new ArgumentException("瀹㈡埛浣欓鍙婂厖鍊奸噾棰濅笉瓒宠喘涔帮紝璇疯皟鏁村悗鎻愪氦锛�");
                 }
 
                 //gwSp.Balance = balance - num * basicNum;
@@ -446,6 +457,18 @@
                     , beforeGivingNum + givingNum
                     , spId
                     );
+
+
+                //鏈夊厖鍊奸噾棰濇椂锛屾洿鏂板鎴风疮璁″厖鍊奸噾棰濓紙鍘橈級
+                if (payAmount > 0) {
+                    //GwClient gwClient = new GwClient();
+                    gwClient = new GwClient();
+                    gwClient.Top_up_Amount_Total = topUpAmountTotal + payAmount;    //绱閲戦:鍗曚綅锛堝帢锛�
+                    gwClient.Balance = ((balance + payAmount) - num * basicNum) ;   //璐︽埛浣欓:鍗曚綅锛堝帢锛�
+                    gwClient.ClientID = clientId;
+
+                    _GwClientDao.UpdateClientAmount(gwClient);
+                }
             }
             else
             {
@@ -462,8 +485,8 @@
             //newGwOrder.OrderAmountTotal = basicNum * num ;
             //newGwOrder.BeforeBalanceNum = beforeGivingNum + beforeGivingNum;
             //newGwOrder.Status = orderStatus;
-                //鏇存柊璁㈠崟
-               _Dao.UpdateBalanceAndStatus(basicNum, givingNum, basicNum + givingNum, basicNum * num, beforeGivingNum + beforeGivingNum,orderStatus, orderId );
+            //鏇存柊璁㈠崟
+            _Dao.UpdateBalanceAndStatus(basicNum, givingNum, basicNum + givingNum, basicNum * num, payAmount,  beforeGivingNum + beforeGivingNum, orderStatus, orderId );
 
             //Dao.Update(newGwOrder);
 
@@ -496,6 +519,7 @@
 
         int orderNumTotal = context.GetInt("orderNumTotal", 0);
         int orderAmountTotal = context.GetInt("orderAmountTotal", 0);
+        int payAmount = 0;
         int beforeBalanceNum = context.GetInt("beforeBalanceNum", 0);
         //瀹㈡湇浜哄憳鎻愪氦璁㈠崟鏃剁殑鐘舵�佷负1-瀹℃牳涓��
         int status = 1; //0-寰呭鏍革紙宸叉彁浜わ級锛�1-瀹℃牳涓紱2-瀹℃牳閫氳繃锛�3-瀹℃牳涓嶉�氳繃锛�4-鍙栨秷锛涚敵璇疯鍗曞湪鏈鏍告儏鍐典笅鍙互鍙栨秷銆�
@@ -503,7 +527,9 @@
         DateTime createTime = DateTime.Now;
         string creator = context.OperatorID;
 
-        int num = Math.Max((int) (context.GetDecimal("price", new Decimal(4, 0, 0, false, (byte) 2)) * new Decimal(1000)), 1);
+        int tmpPayAmount = Math.Max((int) (context.GetDecimal("payAmount", new Decimal(4, 0, 0, false, (byte) 2)) * new Decimal(1000)), 0);
+        payAmount = tmpPayAmount;
+        int num = Math.Max((int) (context.GetDecimal("price", new Decimal(4, 0, 0, false, (byte) 2)) * new Decimal(1000)), 0);
         price = num;
 
         //鏍¢獙
@@ -523,9 +549,32 @@
             throw new ArgumentException("璐﹀彿涓嶈兘涓虹┖锛�");
         }
 
-        if (basicNum<=0 && givingNum <= 0)
+        if (basicNum<=0 && givingNum <= 0 && payAmount <=0)
         {
-            throw new ArgumentException("鍩烘湰鏉℃暟鎴栬禒閫佹潯鏁板繀椤诲ぇ浜庨浂锛�");
+            throw new ArgumentException("鍏呭�奸噾棰濇垨鍩烘湰鏉℃暟鎴栬禒閫佹潯鏁板繀椤诲ぇ浜庨浂锛�");
+        }
+
+        //鑾峰彇璐﹀彿淇℃伅
+        GwSp gwSp = _GwSpDao.Get(spId);
+        int balance = 0;
+        if (gwSp == null)
+        {
+            throw new ArgumentException("璐﹀彿涓嶅瓨鍦紒");
+        }
+        else if (gwSp.Status==0)
+        {
+            throw new ArgumentException("璐﹀彿宸茬鐢紒");
+        }
+
+
+        //鑾峰彇瀹㈡埛淇℃伅
+        GwClient gwClient = _GwClientDao.Get(gwSp.ClientID);
+        balance =  int.Parse(gwClient.Balance.ToString() );
+
+        //涓�1-棰勪粯璐�
+        if (gwSp.ChargeType==1 && (balance + payAmount) < num * basicNum)
+        {
+            throw new ArgumentException("瀹㈡埛浣欓鍙婂厖鍊奸噾棰濅笉瓒宠喘涔帮紝璇疯皟鏁村悗鎻愪氦锛�");
         }
 
         //鑾峰彇璁㈠崟瀹℃牳娴佺▼
@@ -588,18 +637,6 @@
             throw new ArgumentException("鐢ㄦ埛娌℃湁鍏呭�兼潈闄愶紝璇疯仈绯荤鐞嗗憳锛�");
         }
 
-
-        //鑾峰彇璁㈠崟淇℃伅
-        GwSp gwSp = _GwSpDao.Get(spId);
-        if (gwSp == null)
-        {
-            throw new ArgumentException("璐﹀彿涓嶅瓨鍦紒");
-        }
-        else if (gwSp.Status==0)
-        {
-            throw new ArgumentException("璐﹀彿宸茬鐢紒");
-        }
-
         productId = gwSp.ProductId;
         price = gwSp.Price;
 
@@ -620,6 +657,7 @@
             Price = price,    //鍗曚环鎹㈢畻
             OrderNumTotal = orderNumTotal,
             OrderAmountTotal = orderAmountTotal,
+            PayAmount = payAmount,
             BeforeBalanceNum = beforeBalanceNum,
             Status = status,
             Remark = remark,
@@ -628,19 +666,22 @@
 
         });
 
-
-        string auditId = _SysXhDao.getXh("GW_ORDER_AUDIT");  //鑾峰彇鐢熸垚璁㈠崟瀹℃牳ID
-        this._GwOrderAuditDao.Add(new GwOrderAudit()
+        //娴佺▼缁勫悎涓虹┖鏃�
+        if (!string.IsNullOrEmpty(flowGroup))
         {
-            AuditId = auditId,
-            OrderId = orderId,
-            AuditSort = sort,
-            AuditStatus = status,
-            Auditor = creator,
-            //AuditReason = null,
-            AuditTime = createTime
+            string auditId = _SysXhDao.getXh("GW_ORDER_AUDIT");  //鑾峰彇鐢熸垚璁㈠崟瀹℃牳ID
+            this._GwOrderAuditDao.Add(new GwOrderAudit()
+            {
+                AuditId = auditId,
+                OrderId = orderId,
+                AuditSort = sort,
+                AuditStatus = status,
+                Auditor = creator,
+                //AuditReason = null,
+                AuditTime = createTime
 
-        });
+            });
+        }
 
 
         return new JsonPageResult(true, "鐢熸垚璁㈠崟淇℃伅鎴愬姛锛�");
@@ -660,13 +701,17 @@
 
         int orderNumTotal = context.GetInt("orderNumTotal", 0);
         int orderAmountTotal = context.GetInt("orderAmountTotal", 0);
+        int payAmount = 0;
         int beforeBalanceNum = context.GetInt("beforeBalanceNum", 0);
         int status = 0;
         string remark = context.GetString("remark");
         DateTime createTime = DateTime.Now;
         string creator = context.OperatorID;
 
-        int num = Math.Max((int) (context.GetDecimal("price", new Decimal(4, 0, 0, false, (byte) 2)) * new Decimal(1000)), 1);
+        int tmpPayAmount = Math.Max((int) (context.GetDecimal("payAmount", new Decimal(4, 0, 0, false, (byte) 2)) * new Decimal(1000)), 0);
+        payAmount = tmpPayAmount;
+
+        int num = Math.Max((int) (context.GetDecimal("price", new Decimal(4, 0, 0, false, (byte) 2)) * new Decimal(1000)), 0);
         price = num;
 
         //鏍¢獙
@@ -703,6 +748,7 @@
             Price = price,    //鍗曚环鎹㈢畻
             OrderNumTotal = orderNumTotal,
             OrderAmountTotal = orderAmountTotal,
+            PayAmount = payAmount,
             BeforeBalanceNum = beforeBalanceNum,
             Status = status,
             Remark = remark,

--
Gitblit v1.9.1