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 | 387 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 337 insertions(+), 50 deletions(-) diff --git a/web/web/GwOrder.ashx b/web/web/GwOrder.ashx index 7e9019d..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(); @@ -170,22 +171,22 @@ TotalCount = recordCount }); } - + private JsonPageResult GwOrderList(PageContext<SysUser> context) { - /** - string string1 = context.GetString("SpID"); - string string2 = context.GetString("ClientID"); - string string3 = context.GetString("ClientName"); - string str1 = context.GetString("sDate"); - string str2 = context.GetString("EndTime"); - if (string.IsNullOrEmpty(str1)) - str1 = DateTime.Now.AddDays(-1.0).ToString("yyyy-MM-dd"); - if (string.IsNullOrEmpty(str2)) - str2 = DateTime.Now.ToString("yyyy-MM-dd"); - **/ + /** + string string1 = context.GetString("SpID"); + string string2 = context.GetString("ClientID"); + string string3 = context.GetString("ClientName"); + string str1 = context.GetString("sDate"); + string str2 = context.GetString("EndTime"); + if (string.IsNullOrEmpty(str1)) + str1 = DateTime.Now.AddDays(-1.0).ToString("yyyy-MM-dd"); + if (string.IsNullOrEmpty(str2)) + str2 = DateTime.Now.ToString("yyyy-MM-dd"); + **/ - + string spId = context.GetString("spId"); string clientId = context.GetString("clientId"); string clientName = context.GetString("clientName"); @@ -282,12 +283,26 @@ //璁㈠崟瀹℃牳 private JsonPageResult Audit(PageContext<SysUser> context) { + string spId = context.GetString("spId"); 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"); int status = context.GetInt("status"); //0-瀹℃牳涓嶉�氳繃锛�1-瀹℃牳閫氳繃 string auditReason = context.GetString("auditReason"); + DateTime createTime = DateTime.Now; + string creator = context.OperatorID; string beforeFlowCode = null; //涔嬪墠鐨勬祦绋嬬紪鐮� - string currentFlowCode = null; //褰撳墠鐨勬祦绋嬬紪鐮� + int nowSort = 0; + string nowFlowCode = null; //褰撳墠鐨勬祦绋嬬紪鐮� + int nextSort = 0; string nextFlowCode = null; //涓嬩竴涓祦绋嬬紪鐮� @@ -297,12 +312,183 @@ if (gwOrder.Status !=0 && gwOrder.Status !=1) throw new ArgumentException("璇ヨ鍗曞凡澶勭悊,鎿嶄綔澶辫触锛�"); + clientId = gwOrder.ClientId; + + //鑾峰彇璁㈠崟瀹℃牳娴佺▼ + string flowGroup = null; //娴佺▼缁勫悎 + string[] flowGroupS = null; + string[] flowCodeS = null; + string flowCode = null; + int sort = 0; + string flowNodeCode = null; + int orderStatus = 0; //璁㈠崟鐘舵�� + + SysFlow SysFlow = new SysFlow(); + SysFlow.FlowCode = "F_DDSH"; //璁㈠崟娴佺▼ + SysFlow.Status = 1; //鐘舵�侊細0-绂佺敤锛�1-鍚敤 + + SysFlow sysFlow = _SysFlowDao.Get(SysFlow); + if (sysFlow == null) + { + throw new ArgumentException("璁㈠崟瀹℃牳娴佺▼涓嶅瓨鍦紝璇风郴缁熺鐞嗛厤缃紒"); + } + + //渚嬶細1#KHSH|2#CWSH + flowGroup = sysFlow.FlowGroup; + + GwOrderAudit gworderAudit = new GwOrderAudit(); - gworderAudit.AuditStatus = 1; + //gworderAudit.AuditStatus = 1; gworderAudit.OrderId = orderId; List<GwOrderAudit> gworderAuditList = _GwOrderAuditDao.List(gworderAudit); if(gworderAuditList==null || gworderAuditList.Count<=0 ) { + //鑾峰彇瀹℃牳娴佺▼鐨勭涓�鐜妭 + nowSort = 0; + } + else + { + //鑾峰彇瀹℃牳娴佺▼鐨勪笅鐜妭 + GwOrderAudit gwOrderAudit = gworderAuditList[0]; + nowSort = gwOrderAudit.AuditSort; + + } + + //鑾峰彇瀹℃牳娴佺▼鐨勭涓�鐜妭娴佺▼浠g爜 + nowFlowCode = getNextFlowCode(flowGroup, nowSort); + + if(string.IsNullOrEmpty(nowFlowCode)) + { + //褰撳墠澶勭悊娌℃湁娴佺▼浠g爜 + throw new ArgumentException("娴佺▼澶勭悊宸插畬鎴愶紝璇疯仈绯荤鐞嗗憳锛�"); + } + else + { + object[] tmpFlowCode = splitFlowCodes(nowFlowCode); + if(tmpFlowCode==null) + { + throw new ArgumentException("娴佺▼浠g爜涓叉牸寮忛敊璇紝璇疯仈绯荤鐞嗗憳锛�"); + } + else + { + nowSort = int.Parse(tmpFlowCode[0].ToString() ); + flowCode = tmpFlowCode[1].ToString(); + } + + + //鑾峰彇鐢ㄦ埛鏉冮檺 + SysFlowNode newSysFlowNode = new SysFlowNode(); + newSysFlowNode.BusinessType = 1; //涓氬姟绫诲瀷:1-鍏呭�硷紱99-鍏朵粬 + newSysFlowNode.FlowNodeCode = flowCode; + newSysFlowNode.UserId = creator; + + List<SysFlowNode> newSysFlowNodeList = _SysFlowNodeDao.IsAuth(newSysFlowNode); + if(newSysFlowNodeList==null || newSysFlowNodeList.Count <=0 ) + { + throw new ArgumentException("鐢ㄦ埛鏃犲鏍告潈闄愶紝璇疯仈绯荤鐞嗗憳锛�"); + } + else + { + nextSort = nowSort + 1; + //鑾峰彇瀹℃牳娴佺▼鐨勭涓�鐜妭娴佺▼浠g爜 + nextFlowCode = getNextFlowCode(flowGroup, nextSort); + + } + + } + + //淇濆瓨璁㈠崟瀹℃牳琛� + string auditId = _SysXhDao.getXh("GW_ORDER_AUDIT"); //鑾峰彇鐢熸垚璁㈠崟瀹℃牳ID + this._GwOrderAuditDao.Add(new GwOrderAudit() + { + AuditId = auditId, + OrderId = orderId, + AuditSort = nowSort, + AuditStatus = status, + Auditor = creator, + AuditReason = auditReason, + AuditTime = createTime + + }); + + //瀹℃牳涓嶉�氳繃 + if (status==0) + { + + orderStatus = 3; + //status:0-寰呭鏍革紙宸叉彁浜わ級锛�1-瀹℃牳涓紱2-瀹℃牳閫氳繃锛�3-瀹℃牳涓嶉�氳繃锛�4-鍙栨秷锛� + this._Dao.UpdateStatus(orderStatus, orderId); + + } + else if(status==1) + { + int beforeBasicNum = 0; + int beforeGivingNum = 0; + int balance = 0; + int topUpAmountTotal = 0; + if (string.IsNullOrEmpty(nextFlowCode)) + { + orderStatus = 2; + + //鑾峰彇璐﹀彿淇℃伅 + GwSp gwSp = _GwSpDao.Get(spId); + + beforeBasicNum = gwSp.BasicNum; + beforeGivingNum = gwSp.GivingNum; + //balance = Convert.ToInt32(gwSp.Balance); + + //鑾峰彇瀹㈡埛淇℃伅 + 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("瀹㈡埛浣欓鍙婂厖鍊奸噾棰濅笉瓒宠喘涔帮紝璇疯皟鏁村悗鎻愪氦锛�"); + } + + //gwSp.Balance = balance - num * basicNum; + //gwSp.BasicNum = beforeBasicNum + basicNum; + //gwSp.GivingNum = beforeGivingNum + givingNum; + + _GwSpDao.UpdateBalanceByOrder(balance - num * basicNum + , beforeBasicNum + basicNum + , 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 + { + orderStatus = 1; + } + //status:0-寰呭鏍革紙宸叉彁浜わ級锛�1-瀹℃牳涓紱2-瀹℃牳閫氳繃锛�3-瀹℃牳涓嶉�氳繃锛�4-鍙栨秷锛� + //this._Dao.UpdateStatus(orderStatus, orderId); + + //鑾峰彇璁㈠崟 + //GwOrder newGwOrder = _Dao.Get(orderId); + //newGwOrder.BasicNum = basicNum; + //newGwOrder.GivingNum = givingNum; + //newGwOrder.OrderNumTotal = basicNum + givingNum; + //newGwOrder.OrderAmountTotal = basicNum * num ; + //newGwOrder.BeforeBalanceNum = beforeGivingNum + beforeGivingNum; + //newGwOrder.Status = orderStatus; + //鏇存柊璁㈠崟 + _Dao.UpdateBalanceAndStatus(basicNum, givingNum, basicNum + givingNum, basicNum * num, payAmount, beforeGivingNum + beforeGivingNum, orderStatus, orderId ); + + //Dao.Update(newGwOrder); } @@ -313,7 +499,8 @@ //涓嶆槸鏈�鍚庡鏍哥幆鑺傛椂锛岀珯鍐呴�氱煡 //status:0-寰呭鏍革紙宸叉彁浜わ級锛�1-瀹℃牳涓紱2-瀹℃牳閫氳繃锛�3-瀹℃牳涓嶉�氳繃锛�4-鍙栨秷锛� - this._Dao.UpdateStatus(status, orderId); + //this._Dao.UpdateStatus(status, orderId); + return new JsonPageResult(true, "瀹℃牳鎿嶄綔鎴愬姛锛�"); } @@ -332,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-鍙栨秷锛涚敵璇疯鍗曞湪鏈鏍告儏鍐典笅鍙互鍙栨秷銆� @@ -339,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; //鏍¢獙 @@ -359,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("瀹㈡埛浣欓鍙婂厖鍊奸噾棰濅笉瓒宠喘涔帮紝璇疯皟鏁村悗鎻愪氦锛�"); } //鑾峰彇璁㈠崟瀹℃牳娴佺▼ @@ -414,26 +627,14 @@ //鑾峰彇鐢ㄦ埛鏉冮檺 SysFlowNode sysFlowNode = new SysFlowNode(); - sysFlowNode.BusinessType = 1; //涓氬姟绫诲瀷:1-鍏呭�硷紱99-鍏朵粬 - sysFlowNode.FlowNodeCode = flowNodeCode; - sysFlowNode.UserId = creator; - - List<SysFlowNode> sysFlowNodeList = _SysFlowNodeDao.IsAuth(sysFlowNode); - if(sysFlowNodeList==null || sysFlowNodeList.Count <=0 ) - { - throw new ArgumentException("鐢ㄦ埛娌℃湁鍏呭�兼潈闄愶紝璇疯仈绯荤鐞嗗憳锛�"); - } - + sysFlowNode.BusinessType = 1; //涓氬姟绫诲瀷:1-鍏呭�硷紱99-鍏朵粬 + sysFlowNode.FlowNodeCode = flowNodeCode; + sysFlowNode.UserId = creator; - //鑾峰彇璁㈠崟淇℃伅 - GwSp gwSp = _GwSpDao.Get(spId); - if (gwSp == null) + List<SysFlowNode> sysFlowNodeList = _SysFlowNodeDao.IsAuth(sysFlowNode); + if(sysFlowNodeList==null || sysFlowNodeList.Count <=0 ) { - throw new ArgumentException("璐﹀彿涓嶅瓨鍦紒"); - } - else if (gwSp.Status==0) - { - throw new ArgumentException("璐﹀彿宸茬鐢紒"); + throw new ArgumentException("鐢ㄦ埛娌℃湁鍏呭�兼潈闄愶紝璇疯仈绯荤鐞嗗憳锛�"); } productId = gwSp.ProductId; @@ -442,7 +643,7 @@ orderNumTotal = basicNum + givingNum; orderAmountTotal = basicNum * price; - + string orderId = _SysXhDao.getXh("GW_ORDER"); //鑾峰彇鐢熸垚璁㈠崟ID this._Dao.Add(new GwOrder() { @@ -456,6 +657,7 @@ Price = price, //鍗曚环鎹㈢畻 OrderNumTotal = orderNumTotal, OrderAmountTotal = orderAmountTotal, + PayAmount = payAmount, BeforeBalanceNum = beforeBalanceNum, Status = status, Remark = remark, @@ -464,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, "鐢熸垚璁㈠崟淇℃伅鎴愬姛锛�"); @@ -496,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; //鏍¢獙 @@ -539,6 +748,7 @@ Price = price, //鍗曚环鎹㈢畻 OrderNumTotal = orderNumTotal, OrderAmountTotal = orderAmountTotal, + PayAmount = payAmount, BeforeBalanceNum = beforeBalanceNum, Status = status, Remark = remark, @@ -703,4 +913,81 @@ return string.Empty; } + + //鑾峰彇娴佺▼缁勪腑鐨勪笅涓�涓祦绋� + public string getNextFlowCode(string flowGroup, int sort) + { + if (string.IsNullOrEmpty(flowGroup) ) + { + return null; + } + + string[] flowGroups = null; + string[] flowCodes = null; + int nextSort = 0; + string flowCode = null; + string sortAndFlowCode = null; + flowGroups = flowGroup.Split('|'); + Console.WriteLine(flowGroups.Length); + if (flowGroups.Length > 1) + { + for (int i=0; i<flowGroups.Length; i++) + { + sortAndFlowCode = flowGroups[i]; + if (string.IsNullOrEmpty(sortAndFlowCode)) + { + continue; + } + else + { + flowCodes = sortAndFlowCode.Split('#'); + if(flowCodes.Length!=2) + { + + throw new ArgumentException("娴佺▼缁勫悎涓插瓨鍦ㄦ牸寮忛敊璇紒"); + } + else + { + nextSort = string.IsNullOrEmpty(flowCodes[0])? 0: Convert.ToInt32(flowCodes[0]); //搴忓彿 + flowCode = flowCodes[1]; //娴佺▼浠g爜 + + if (nextSort<=sort) + { + continue; + } + + //return flowCode; + return sortAndFlowCode; + + } + } + + } + } + + return ""; + } + + + //鎷嗗垎娴佺▼搴忓彿鍜屾祦绋嬩唬鐮� + public object[] splitFlowCodes(string sortAndFlowCode) + { + if(string.IsNullOrEmpty(sortAndFlowCode) ) + { + return null; + } + + string[] splitFlowCodes = sortAndFlowCode.Split('#'); + if (splitFlowCodes.Length != 2) + { + throw new ArgumentException("娴佺▼缁勫悎涓叉牸寮忛敊璇紒"); + + } + else + { + return splitFlowCodes; + } + + } + } \ No newline at end of file -- Gitblit v1.9.1