public void ReserveEs(int _uid, long _cid, string GoodsStr, bool firstes) { // 从前台获取到的物品数据拼接字符串 string splitGoodsArr = GoodsStr; // 将每一组数据从数组中分割出来 string[] settleGoodsItem = splitGoodsArr.Split(';'); string[] settleGoodsItemInfo; List <settleGoods> goodsList = new List <settleGoods>(); //string[][] goodsInfo = new string[6][]; // 将每一组的每一个数据从字符串中分割出来 for (int i = 0; i < settleGoodsItem.Length; i++) { settleGoodsItemInfo = settleGoodsItem[i].Split(','); goodsList.Add(new settleGoods(int.Parse(settleGoodsItemInfo[0]), settleGoodsItemInfo[1], float.Parse(settleGoodsItemInfo[3]), int.Parse(settleGoodsItemInfo[4]))); } int goodsCount = settleGoodsItem.Length; float TotalPrice = 0.0f; for (int p = 0; p < goodsCount; p++) { TotalPrice += (goodsList[p].GoodsPrice * float.Parse(goodsList[p].PurchaseCount.ToString())); ExService es = exsBll.GetModel(goodsList[p].GoodsId); es.GoodsStock -= goodsList[p].PurchaseCount; exsBll.Update(es); } ServiceOrderBLL orderBLL = new ServiceOrderBLL(); ServiceOrder order = orderBLL.GetModel( decimal.Parse(orderBLL.GetList("Uid = " + _uid + " and (esOrderStatus = 0 or esOrderStatus = 1 or esOrderStatus = 2)").Tables[0].Rows[0][0].ToString()) ); if (firstes) { order.esOrderTotalPrice = decimal.Parse(TotalPrice.ToString()); for (int p = 0; p < goodsCount; p++) { if (p != goodsCount - 1) { order.esOrderContent += (goodsList[p].GoodsName + "*" + goodsList[p].PurchaseCount + ","); } else { order.esOrderContent += (goodsList[p].GoodsName + "*" + goodsList[p].PurchaseCount); } } } else { order.esOrderTotalPrice += decimal.Parse(TotalPrice.ToString()); string oldesOrderContent = order.esOrderContent; if (oldesOrderContent != "") { string newOrderContent = string.Empty; // 获取订单内容中已有的Goods信息 string[] oldesOrderContentItemInfos = oldesOrderContent.Split(','); int oldesOrderContentItemCount = oldesOrderContentItemInfos.Length; string[][] oldesOrderGoodsInfos = new string[oldesOrderContentItemCount][]; for (int b = 0; b < oldesOrderContentItemCount; b++) { oldesOrderGoodsInfos[b] = oldesOrderContentItemInfos[b].Split('*'); }// 此时该订单的已有订单内容已被解析出来 List <int> sameItemIndex = new List <int>(); // 获取已有订单中,相同Goods的索引 for (int n = 0; n < oldesOrderContentItemCount; n++) { for (int p = 0; p < goodsCount; p++) { // 如果该订单已有订单内容中包含新增的此Goods,那么直接将数量+1即可 if (goodsList[p].GoodsName == oldesOrderGoodsInfos[n][0]) { sameItemIndex.Add(n); break; } } } // 获取到了之前订单内容和新订单中相同Goods老订单中的索引 bool isOldSame = false; for (int p = 0; p < oldesOrderContentItemCount; p++) { for (int c = 0; c < sameItemIndex.Count; c++) { if (p == sameItemIndex[c]) { isOldSame = true; break; } } if (isOldSame) { for (int k = 0; k < goodsCount; k++) { if (oldesOrderGoodsInfos[p][0] == goodsList[k].GoodsName) { if (p == oldesOrderContentItemCount - 1) { newOrderContent += (oldesOrderGoodsInfos[p][0] + "*" + (goodsList[k].PurchaseCount + int.Parse(oldesOrderGoodsInfos[p][1]))); } else { newOrderContent += (oldesOrderGoodsInfos[p][0] + "*" + (goodsList[k].PurchaseCount + int.Parse(oldesOrderGoodsInfos[p][1])) + ","); } } } isOldSame = false; } else { if (p == oldesOrderContentItemCount - 1) { newOrderContent += (oldesOrderGoodsInfos[p][0] + "*" + oldesOrderGoodsInfos[p][1]); } else { newOrderContent += (oldesOrderGoodsInfos[p][0] + "*" + oldesOrderGoodsInfos[p][1] + ","); } } } bool hasSame = false; for (int p = 0; p < goodsCount; p++) { for (int k = 0; k < oldesOrderContentItemCount; k++) { if (goodsList[p].GoodsName == oldesOrderGoodsInfos[k][0]) { hasSame = true; break; } } if (hasSame) { hasSame = false; continue; } else { newOrderContent += ("," + goodsList[p].GoodsName + "*" + goodsList[p].PurchaseCount); } } order.esOrderContent = newOrderContent; } else // 之前就是空的订单内容 { for (int p = 0; p < goodsCount; p++) { if (p != goodsCount - 1) { order.esOrderContent += (goodsList[p].GoodsName + "*" + goodsList[p].PurchaseCount + ","); } else { order.esOrderContent += (goodsList[p].GoodsName + "*" + goodsList[p].PurchaseCount); } } } } bool res1 = orderBLL.Update(order); CheckInBLL ckBll = new CheckInBLL(); CheckIn checkin = ckBll.GetModel(_cid); checkin.cTotalPrice += decimal.Parse(TotalPrice.ToString()); bool res2 = ckBll.Update(checkin); if (res1 && res2) { Response.Write(1); Response.End(); } else { Response.Write(-1); Response.End(); } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { omMaxPage = GetCurrentMaxPage(); } // 页面加载时获取订单未处理订单信息 if (!string.IsNullOrEmpty(Request["postTag"])) { if (Request["postTag"] == "load") { CheckInBLL ckbll = new CheckInBLL(); string sqlStrByPage = "select * from (" + " select ROW_NUMBER() over(order by S.Oid DESC) AS Row, S.Oid, U.Fname, C.Cid, C.Gid, C.CheckinTime, S.esOrderContent" + " from Users U, CheckIn C, ServiceOrder S" + " where U.Uid = S.Uid and C.Uid = S.Uid and C.Oid = S.Oid and C.CheckinStatus = 0) T where T.Row between 1 and 5"; Response.Write(Get_Serialize_Data_FromSql(connectString, sqlStrByPage)); Response.End(); } } // 分页获取订单信息数据 if (!string.IsNullOrEmpty(Request["postTag"])) { if (Request["postTag"] == "omByPage") { omNowPage = int.Parse(Request["omNowPage"]); omMaxPage = GetCurrentMaxPage(); if (omNowPage > omMaxPage) { Response.Write(-1); Response.End(); } StringBuilder sqlPage = new StringBuilder(); sqlPage.AppendFormat("select * from (" + " select ROW_NUMBER() over(order by S.Oid DESC) AS Row, S.Oid, U.Fname, C.Cid, C.Gid, C.CheckinTime, S.esOrderContent" + " from Users U, CheckIn C, ServiceOrder S" + " where U.Uid = S.Uid and C.Uid = S.Uid and C.Oid = S.Oid and C.CheckinStatus = 0) T where T.Row between {0} and {1}", (omNowPage - 1) * 5 + 1, omNowPage * 5); Response.Write(Get_Serialize_Data_FromSql(connectString, sqlPage.ToString())); Response.End(); } } // 进行订单的确认或退回操作 if (!string.IsNullOrEmpty(Request["postTag"])) { if (Request["postTag"] == "operation") { long cid = long.Parse(Request["cid"]); decimal oid = decimal.Parse(Request["oid"]); int tag = int.Parse(Request["tag"]); CheckInBLL ckbll = new CheckInBLL(); ServiceOrderBLL esbll = new ServiceOrderBLL(); CheckIn ck = ckbll.GetModel(cid); ServiceOrder esorder = esbll.GetModel(oid); if (tag == 0) { ck.CheckinStatus = 1; esorder.esOrderStatus = 1; ckbll.Update(ck); esbll.Update(esorder); Response.Write(1); Response.End(); } else { ck.CheckinStatus = -1; esorder.esOrderStatus = -1; ckbll.Update(ck); esbll.Update(esorder); Response.Write(2); Response.End(); } } } // 确认后异步更新前台数据, 重新获取最大页数 if (!string.IsNullOrEmpty(Request["postTag"])) { if (Request["postTag"] == "updatePage") { omNowPage = int.Parse(Request["omNowPage"]); omMaxPage = GetCurrentMaxPage(); if (omNowPage - 1 == omMaxPage) { omNowPage = omMaxPage; Response.Write(omNowPage); Response.End(); } StringBuilder sqlPage = new StringBuilder(); sqlPage.AppendFormat("select * from (" + " select ROW_NUMBER() over(order by S.Oid DESC) AS Row, S.Oid, U.Fname, C.Cid, C.Gid, C.CheckinTime, S.esOrderContent" + " from Users U, CheckIn C, ServiceOrder S" + " where U.Uid = S.Uid and C.Uid = S.Uid and C.Oid = S.Oid and C.CheckinStatus = 0) T where T.Row between {0} and {1}", (omNowPage - 1) * 5 + 1, omNowPage * 5); Response.Write(Get_Serialize_Data_FromSql(connectString, sqlPage.ToString())); Response.End(); } } }