public void ProcessRequest(HttpContext context) { M_UserInfo mu = buser.GetLogin(); retMod.retcode = M_APIResult.Failed; string cartCookID = GetCartCookID(context); //retMod.callback = CallBack;//暂不开放JsonP try { switch (Action) { case "deladdress": { B_UserRecei receBll = new B_UserRecei(); int id = DataConverter.CLng(Req("id")); if (mu == null || mu.UserID == 0 || id < 1) { OldRep("-1"); } else { receBll.U_DelByID(id, mu.UserID); OldRep("1"); } } break; case "setnum": //ID,数量,Cookies,可不登录,数量不能小于1 { int id = DataConverter.CLng(Req("mid")); int pronum = DataConverter.CLng(Req("pronum")); if (id < 1 || pronum < 1 || string.IsNullOrEmpty(cartCookID)) { OldRep("-1"); } else { cartBll.UpdateProNum(cartCookID, mu.UserID, id, pronum); OldRep("1"); } } break; case "arrive": { B_Arrive avBll = new B_Arrive(); string flow = Req("flow"); double money = double.Parse(Req("money")); string err = ""; M_Arrive avMod = avBll.SelModelByFlow(flow, mu.UserID); if (avBll.U_CheckArrive(avMod, mu.UserID, ref money, ref err)) { retMod.retcode = M_APIResult.Success; //已优惠金额,优惠后金额 retMod.result = "{\"amount\":\"" + avMod.Amount + "\",\"money\":\"" + money + "\"}"; } else { retMod.retmsg = err; } } break; default: retMod.retmsg = "[" + Action + "]接口不存在"; break; } } catch (Exception ex) { retMod.retmsg = ex.Message; } RepToClient(retMod); }
public ContentResult OrderCom() { M_APIResult retMod = new M_APIResult(M_APIResult.Failed); switch (action) { case "cart_del": { cartBll.DelByIDS(CartCookID, buser.GetLogin().UserName, ids); retMod.retcode = M_APIResult.Success; } break; case "setnum": //兼容 case "cart_setnum": //ID,数量,Cookies,可不登录,数量不能小于1 { int id = DataConverter.CLng(GetParam("id")); int pronum = DataConverter.CLng(GetParam("pronum")); if (id < 1 || pronum < 1) { retMod.retmsg = "商品ID与数量不能小于1"; } else if (string.IsNullOrEmpty(CartCookID)) { retMod.retmsg = "CartCookID不存在"; } else { cartBll.UpdateProNum(CartCookID, mu.UserID, id, pronum); retMod.retcode = M_APIResult.Success; } } break; case "deladdress": { int id = DataConverter.CLng(GetParam("id")); if (mu == null || mu.UserID == 0 || id < 1) { return(Content(Failed.ToString())); } else { receBll.U_DelByID(id, mu.UserID); return(Content(Success.ToString())); } } case "arrive": { string flow = GetParam("flow"); double money = double.Parse(GetParam("money")); DataTable cartdt = cartBll.SelByCartID(CartCookID, mu.UserID, -100, ids); if (cartdt.Rows.Count < 1) { retMod.retmsg = "购物车为空"; return(Content(retMod.ToString())); } M_Arrive avMod = avBll.SelModelByFlow(flow, mu.UserID); M_Arrive_Result arrMod = avBll.U_CheckArrive(avMod, mu.UserID, cartdt, money); if (arrMod.enabled) { retMod.retcode = M_APIResult.Success; //已优惠金额,优惠后金额 retMod.result = Newtonsoft.Json.JsonConvert.SerializeObject(arrMod); } else { retMod.retmsg = arrMod.err; } } break; default: retMod.retmsg = "[" + action + "]接口不存在"; break; } return(Content(retMod.ToString())); }
//提交订单 protected void AddOrder_Btn_Click(object sender, EventArgs e) { if (Address_Div.Visible && DataConvert.CLng(Request.Form["address_rad"]) < 1) { function.WriteErrMsg("尚未选定收货地址"); } //1,生成订单,2,关联购物车中商品为已绑定订单 M_UserInfo mu = buser.GetLogin(false); M_UserRecei receMod = receBll.GetSelect(Convert.ToInt32(Request.Form["address_rad"]), mu.UserID); DataTable cartDT = cartBll.SelByCartID(B_Cart.GetCartID(), mu.UserID, ProClass, ids);//需要购买的商品 if (cartDT.Rows.Count < 1) { function.WriteErrMsg("你尚未选择商品,<a href='/User/Order/OrderList'>查看我的订单</a>"); } //------生成订单前检测区 foreach (DataRow dr in cartDT.Rows) { if (!HasStock(dr["Allowed"], DataConvert.CLng(dr["stock"]), Convert.ToInt32(dr["Pronum"]))) { function.WriteErrMsg("购买失败," + dr["proname"] + "的库存数量不足"); } } //------检测End //按店铺生成订单,统一存ZL_Orderinfo DataTable storeDT = cartDT.DefaultView.ToTable(true, "StoreID"); List <M_OrderList> orderList = new List <M_OrderList>();//用于生成临时订单,统计计算(Disuse) foreach (DataRow dr in storeDT.Rows) { #region 暂不使用字段 //Odata.province = this.DropDownList1.SelectedValue; //Odata.city = this.DropDownList2.SelectedValue;//将地址省份与市ID存入,XML数据源 //Odata.Guojia = "";//国家 //Odata.Chengshi = DropDownList2.SelectedItem.Text;//城市 //Odata.Diqu = DropDownList3.SelectedItem.Text;//地区 //Odata.Delivery = DataConverter.CLng(Request.Form["Delivery"]); //Odata.Deliverytime = DataConverter.CLng(this.Deliverytime.Text); //Odata.Mobile = receMod.MobileNum; #endregion M_OrderList Odata = new M_OrderList(); Odata.Ordertype = OrderHelper.GetOrderType(ProClass); Odata.OrderNo = B_OrderList.CreateOrderNo((M_OrderList.OrderEnum)Odata.Ordertype); Odata.StoreID = Convert.ToInt32(dr["StoreID"]); cartDT.DefaultView.RowFilter = "StoreID=" + Odata.StoreID; DataTable storeCartDT = cartDT.DefaultView.ToTable(); switch (ProClass)//旅游机票等,以联系人信息为地址 { case 7: case 8: M_Cart_Travel model = JsonConvert.DeserializeObject <M_Cart_Travel>(storeCartDT.Rows[0]["Additional"].ToString()); M_Cart_Contract user = model.Contract[0]; Odata.Receiver = user.Name; Odata.Reuser = user.Name; Odata.Phone = user.Mobile; Odata.MobileNum = user.Mobile; Odata.Email = user.Email; break; default: if (Address_Div.Visible) { Odata.Receiver = receMod.ReceivName; Odata.Reuser = receMod.ReceivName; Odata.Phone = receMod.phone; Odata.MobileNum = receMod.MobileNum; Odata.Email = receMod.Email; Odata.Shengfen = receMod.Provinces; Odata.Jiedao = receMod.Street; Odata.ZipCode = receMod.Zipcode; } break; } Odata.Invoiceneeds = DataConverter.CLng(Request.Form["invoice_rad"]);//是否需开发票 Odata.Invoice = Odata.Invoiceneeds == 0 ? "" : InvoTitle_T.Text + "||" + Invoice_T.Text; Odata.Rename = mu.UserName; Odata.Outstock = 0; //缺货处理 Odata.Ordermessage = ORemind_T.Text; //订货留言 Odata.Merchandiser = ""; //跟单员 Odata.Internalrecords = ""; //内部记录 Odata.IsCount = false; //-----金额计算 Odata.Balance_price = GetTotalMoney(storeCartDT); Odata.Freight = GetFarePrice(storeCartDT, Odata.StoreID); //运费计算 Odata.Ordersamount = Odata.Balance_price + Odata.Freight; //订单金额 Odata.AllMoney_Json = orderCom.GetTotalJson(storeCartDT); //附加需要的虚拟币 Odata.Specifiedprice = Odata.Ordersamount; //订单金额; Odata.Receivablesamount = 0; //收款金额 Odata.Developedvotes = 0; Odata.OrderStatus = (int)M_OrderList.StatusEnum.Normal; //订单状态 Odata.Paymentstatus = (int)M_OrderList.PayEnum.NoPay; //付款状态 Odata.StateLogistics = 0; //物流状态 Odata.Signed = 0; //签收 Odata.Settle = 0; //结清 Odata.Aside = 0; //作废 Odata.Suspended = 0; //暂停 Odata.AddUser = mu.UserName;; Odata.Userid = mu.UserID; Odata.Integral = DataConverter.CLng(Request.QueryString["jifen"]); Odata.Freight_remark = " "; Odata.Balance_remark = ""; Odata.Promoter = 0; Odata.id = orderBll.Adds(Odata); cartProBll.CopyToCartPro(mu, storeCartDT, Odata.id); orderList.Add(Odata); orderCom.SendMessage(Odata, null, "ordered"); } cartBll.DelByids(ids); //-----------------订单生成后处理 //进行减库存等操作 foreach (DataRow dr in cartDT.Rows) { M_Product model = proBll.GetproductByid(Convert.ToInt32(dr["Proid"])); model.Stock = model.Stock - DataConvert.CLng(dr["Pronum"]); SqlHelper.ExecuteSql("Update ZL_Commodities Set Stock=" + model.Stock + " Where ID=" + model.ID); } //生成支付单,处理优惠券,并进入付款步骤 M_Payment payMod = payBll.CreateByOrder(orderList); //优惠券 if (!string.IsNullOrEmpty(Arrive_Hid.Value)) { M_Arrive avMod = avBll.SelModelByFlow(Arrive_Hid.Value, mu.UserID); double money = payMod.MoneyPay; string err = ""; string remind = "支付单抵扣[" + payMod.PayNo + "]"; if (avBll.U_UseArrive(avMod, mu.UserID, ref money, ref err, remind)) { payMod.MoneyPay = money; payMod.ArriveMoney = avMod.Amount; payMod.ArriveDetail = avMod.ID.ToString(); } else { payMod.ArriveDetail = "优惠券[" + avMod.ID + "]异常 :" + err; } } //积分处理 if (point_body.Visible && DataConvert.CLng(Point_T.Text) > 0) { int point = DataConvert.CLng(Point_T.Text); int maxPoint = (int)((SiteConfig.ShopConfig.PointRatiot * 0.01) * (double)payMod.MoneyPay / SiteConfig.ShopConfig.PointRate); //if (point <= 0) { function.WriteErrMsg("积分数值不正确"); } if (point > mu.UserExp) { function.WriteErrMsg("您的积分不足!"); } if (point > maxPoint) { function.WriteErrMsg("积分不能大于可兑换金额!"); } //生成支付单时扣除用户积分 buser.ChangeVirtualMoney(mu.UserID, new M_UserExpHis() { ScoreType = (int)M_UserExpHis.SType.Point, score = -point, detail = "积分抵扣,支付单号:" + payMod.PayNo }); payMod.MoneyPay = payMod.MoneyPay - (point * SiteConfig.ShopConfig.PointRate); payMod.UsePoint = point; } if (payMod.MoneyPay <= 0) { payMod.MoneyPay = 0.01; } payMod.Remark = cartDT.Rows.Count > 1 ? "[" + cartDT.Rows[0]["ProName"] as string + "]等" : cartDT.Rows[0]["ProName"] as string; payMod.PaymentID = payBll.Add(payMod); Response.Redirect("/PayOnline/Orderpay.aspx?PayNo=" + payMod.PayNo); }
protected void AddOrder_Btn_Click(object sender, EventArgs e) { //1,生成订单,2,关联购物车中商品为已绑定订单 M_UserInfo mu = buser.GetLogin(false); DataTable cartDT = cartBll.SelByCartID(B_Cart.GetCartID(), mu.UserID, ProClass, ids);//需要购买的商品 if (cartDT.Rows.Count < 1) { function.WriteErrMsg("你尚未选择商品,<a href='/User/Order/OrderList'>查看我的订单</a>"); } #region 检测缓存中的值与数据库中是否匹配 string refreshTip = ",请点击<a href='" + Request.RawUrl + "'>刷新页面</a>"; if (VerifyDT == null || VerifyDT.Rows.Count < 1 || VerifyDT.Rows.Count != cartDT.Rows.Count) { function.WriteErrMsg("验证失效" + refreshTip, Request.RawUrl); } for (int i = 0; i < VerifyDT.Rows.Count; i++) { //检测每一个商品,是否发生了ID/金额/数量/价格/总金额上面的差异或缺少 DataRow verifyDR = VerifyDT.Rows[i]; DataRow cartDR = GetDRFromDT(cartDT, Convert.ToInt32(verifyDR["ID"])); if (cartDR == null) { function.WriteErrMsg("购物车信息不匹配" + refreshTip, Request.RawUrl); } foreach (string field in verifyFields) { double verifyVal = DataConvert.CDouble(verifyDR[field]); double cartVal = DataConvert.CDouble(cartDR[field]); if (verifyVal != cartVal) { function.WriteErrMsg("购物车的[" + field + "]不匹配" + refreshTip, Request.RawUrl); } } } #endregion //------生成订单前检测区 foreach (DataRow dr in cartDT.Rows) { if (!HasStock(dr["Allowed"], DataConvert.CLng(dr["stock"]), Convert.ToInt32(dr["Pronum"]))) { function.WriteErrMsg("购买失败," + dr["proname"] + "的库存数量不足"); } } //------检测End //按店铺生成订单 DataTable storeDT = cartDT.DefaultView.ToTable(true, "StoreID"); List <M_OrderList> orderList = new List <M_OrderList>();//用于生成临时订单,统计计算(Disuse) foreach (DataRow dr in storeDT.Rows) { #region 暂不使用字段 //Odata.province = this.DropDownList1.SelectedValue; //Odata.city = this.DropDownList2.SelectedValue;//将地址省份与市ID存入,XML数据源 //Odata.Guojia = "";//国家 //Odata.Chengshi = DropDownList2.SelectedItem.Text;//城市 //Odata.Diqu = DropDownList3.SelectedItem.Text;//地区 //Odata.Delivery = DataConverter.CLng(Request.Form["Delivery"]); //Odata.Deliverytime = DataConverter.CLng(this.Deliverytime.Text); //Odata.Mobile = receMod.MobileNum; #endregion M_OrderList Odata = new M_OrderList(); Odata.Ordertype = OrderHelper.GetOrderType(ProClass); Odata.OrderNo = B_OrderList.CreateOrderNo((M_OrderList.OrderEnum)Odata.Ordertype); Odata.StoreID = Convert.ToInt32(dr["StoreID"]); cartDT.DefaultView.RowFilter = "StoreID=" + Odata.StoreID; DataTable storeCartDT = cartDT.DefaultView.ToTable(); switch (ProClass)//旅游机票等,以联系人信息为地址 { case 7: case 8: M_Cart_Travel model = JsonConvert.DeserializeObject <M_Cart_Travel>(storeCartDT.Rows[0]["Additional"].ToString()); M_Cart_Contract user = model.Contract[0]; Odata.Receiver = user.Name; Odata.Phone = user.Mobile; Odata.MobileNum = user.Mobile; Odata.Email = user.Email; break; default: if (Address_Div.Visible) { int arsID = DataConvert.CLng(Request.Form["address_rad"]); string arsChk = Request.Form["ars_chk"]; if (!string.IsNullOrEmpty(arsChk)) { #region 自提或微信共享地址 switch (arsChk) { case "self": { Odata.Receiver = "[用户自提]" + Request.Form["arsInfo_name"]; //用户上门购买,然后自提取商品 Odata.MobileNum = Request.Form["arsInfo_mobile"]; } break; case "wechat": { Odata.Receiver = Request.Form["wxad_name"]; Odata.MobileNum = Request.Form["wxad_mobile"]; Odata.Shengfen = Request.Form["wxad_city"]; Odata.Jiedao = Request.Form["address"]; } break; } #endregion } else { M_UserRecei receMod = receBll.GetSelect(arsID, mu.UserID); if (receMod == null) { function.WriteErrMsg("用户尚未选择送货地址,或地址不存在"); } Odata.Receiver = receMod.ReceivName; Odata.Phone = receMod.phone; Odata.MobileNum = receMod.MobileNum; Odata.Email = receMod.Email; Odata.Shengfen = receMod.Provinces; Odata.Jiedao = receMod.Street; Odata.ZipCode = receMod.Zipcode; } } break; } Odata.Invoiceneeds = DataConverter.CLng(Request.Form["invoice_rad"]);//是否需开发票 Odata.Rename = mu.UserName; Odata.AddUser = mu.UserName;; Odata.Userid = mu.UserID; Odata.Ordermessage = ORemind_T.Text;//订货留言 //-----金额计算 Odata.Balance_price = GetTotalMoney(storeCartDT); Odata.Freight = GetFarePrice(storeCartDT, Odata.StoreID); //运费计算 Odata.Ordersamount = Odata.Balance_price + Odata.Freight; //订单金额 Odata.AllMoney_Json = orderCom.GetTotalJson(storeCartDT); //附加需要的虚拟币 Odata.Specifiedprice = Odata.Ordersamount; //订单金额; Odata.OrderStatus = (int)M_OrderList.StatusEnum.Normal; //订单状态 Odata.Paymentstatus = (int)M_OrderList.PayEnum.NoPay; //付款状态 //Odata.Integral = DataConverter.CLng(Request.QueryString["jifen"]); Odata.ExpTime = exptime_hid.Value; Odata.id = orderBll.insert(Odata); //是否需要开发票 if (Odata.Invoiceneeds == 1) { M_Order_Invoice invMod = new M_Order_Invoice(); invMod.OrderID = Odata.id; invMod.InvHead = Request.Form["InvoTitle_T"].Trim(','); invMod.UserCode = Request.Form["InvoUserCode_T"].Trim(','); invMod.InvClass = Request.Form["invUseType_rad"]; invMod.InvContent = Request.Form["Invoice_T"].Trim(','); invMod.UserID = Odata.Userid; invBll.Insert(invMod); new B_Order_InvTlp().Sync(invMod); } cartProBll.CopyToCartPro(mu, storeCartDT, Odata.id); orderList.Add(Odata); orderCom.SendMessage(Odata, null, "ordered"); } cartBll.DelByids(ids); //-----------------订单生成后处理 //进行减库存等操作 foreach (DataRow dr in cartDT.Rows) { M_Product model = proBll.GetproductByid(Convert.ToInt32(dr["Proid"])); model.Stock = model.Stock - DataConvert.CLng(dr["Pronum"]); SqlHelper.ExecuteSql("Update ZL_Commodities Set Stock=" + model.Stock + " Where ID=" + model.ID); } //生成支付单,处理优惠券,并进入付款步骤 M_Payment payMod = payBll.CreateByOrder(orderList); //优惠券 if (!string.IsNullOrEmpty(Request.Form["Arrive_Hid"])) { M_Arrive avMod = avBll.SelModelByFlow(Request.Form["Arrive_Hid"], mu.UserID); double money = payMod.MoneyPay; string remind = "支付单抵扣[" + payMod.PayNo + "]"; M_Arrive_Result retMod = avBll.U_UseArrive(avMod, mu.UserID, cartDT, money, remind); if (retMod.enabled) { payMod.MoneyPay = retMod.money; payMod.ArriveMoney = retMod.amount; payMod.ArriveDetail = avMod.ID.ToString(); } else { payMod.ArriveDetail = "优惠券[" + avMod.ID + "]异常 :" + retMod.err; } } //积分处理 if (point_body.Visible && DataConvert.CLng(Point_T.Text) > 0) { int point = DataConvert.CLng(Point_T.Text); //此处需咨询,上限额度是否要扣减掉优惠券 int maxPoint = Point_CanBeUse(payMod.MoneyPay + payMod.ArriveMoney); //if (point <= 0) { function.WriteErrMsg("积分数值不正确"); } if (point > mu.UserExp) { function.WriteErrMsg("您的积分不足!"); } if (point > maxPoint) { function.WriteErrMsg("积分不能大于可兑换金额[" + maxPoint + "]!"); } //生成支付单时扣除用户积分 buser.ChangeVirtualMoney(mu.UserID, new M_UserExpHis() { ScoreType = (int)M_UserExpHis.SType.Point, score = -point, detail = "积分抵扣,支付单号:" + payMod.PayNo }); payMod.UsePoint = point; payMod.UsePointArrive = Point_ToMoney(point); payMod.MoneyPay = payMod.MoneyPay - payMod.UsePointArrive; } payMod.MoneyReal = payMod.MoneyPay; payMod.Remark = cartDT.Rows.Count > 1 ? "[" + cartDT.Rows[0]["ProName"] as string + "]等" : cartDT.Rows[0]["ProName"] as string; payMod.PaymentID = payBll.Add(payMod); Response.Redirect("/PayOnline/Orderpay.aspx?PayNo=" + payMod.PayNo); }