private OrderInfo GetOrderInfo(ShoppingCartInfo shoppingCartInfo) { OrderInfo orderInfo = ShoppingProcessor.ConvertShoppingCartToOrder(shoppingCartInfo, this.isGroupBuy, this.isCountDown, this.isSignBuy); if (orderInfo == null) { return(null); } if (this.chkTax.Checked) { orderInfo.Tax = (orderInfo.GetTotal() * decimal.Parse(this.litTaxRate.Text)) / 100M; if (this.isBundling) { BundlingInfo bundlingInfo = ProductBrowser.GetBundlingInfo(this.bundlingid); orderInfo.Tax = (bundlingInfo.Price * decimal.Parse(this.litTaxRate.Text)) / 100M; } } orderInfo.InvoiceTitle = this.txtInvoiceTitle.Text; if (this.isGroupBuy) { GroupBuyInfo productGroupBuyInfo = ProductBrowser.GetProductGroupBuyInfo(shoppingCartInfo.LineItems[this.productSku].ProductId); orderInfo.GroupBuyId = productGroupBuyInfo.GroupBuyId; orderInfo.NeedPrice = productGroupBuyInfo.NeedPrice; } if (this.isCountDown) { CountDownInfo countDownInfo = ProductBrowser.GetCountDownInfo(this.shoppingCart.LineItems[this.productSku].ProductId); orderInfo.CountDownBuyId = countDownInfo.CountDownId; } if (this.isBundling) { BundlingInfo info5 = ProductBrowser.GetBundlingInfo(this.bundlingid); orderInfo.BundlingID = info5.BundlingID; orderInfo.BundlingPrice = info5.Price; orderInfo.Points = this.shoppingCart.GetPoint(info5.Price); } orderInfo.OrderId = this.GenerateOrderId(); orderInfo.OrderDate = DateTime.Now; IUser user = HiContext.Current.User; orderInfo.UserId = user.UserId; orderInfo.Username = user.Username; if (!user.IsAnonymous) { Member member = user as Member; orderInfo.EmailAddress = member.Email; orderInfo.RealName = member.RealName; orderInfo.QQ = member.QQ; orderInfo.Wangwang = member.Wangwang; orderInfo.MSN = member.MSN; } orderInfo.Remark = Globals.HtmlEncode(this.txtMessage.Text); orderInfo.OrderStatus = OrderStatus.WaitBuyerPay; orderInfo.RefundStatus = RefundStatus.None; this.FillOrderCoupon(orderInfo); this.FillOrderShippingMode(orderInfo, shoppingCartInfo); this.FillOrderPaymentMode(orderInfo); return(orderInfo); }
OrderInfo GetOrderInfo(ShoppingCartInfo shoppingCartInfo) { OrderInfo orderInfo = ShoppingProcessor.ConvertShoppingCartToOrder(shoppingCartInfo, isGroupBuy, isCountDown, isSignBuy); if (orderInfo == null) { return(null); } if (isGroupBuy) { GroupBuyInfo productGroupBuyInfo = ProductBrowser.GetProductGroupBuyInfo(shoppingCartInfo.LineItems[productSku].ProductId); orderInfo.GroupBuyId = productGroupBuyInfo.GroupBuyId; orderInfo.NeedPrice = productGroupBuyInfo.NeedPrice; } orderInfo.OrderId = GenerateOrderId(); orderInfo.OrderDate = DateTime.Now; IUser user = HiContext.Current.User; orderInfo.UserId = user.UserId; orderInfo.Username = user.Username; if (!user.IsAnonymous) { Member member = user as Member; orderInfo.EmailAddress = member.Email; orderInfo.RealName = member.RealName; orderInfo.QQ = member.QQ; orderInfo.Wangwang = member.Wangwang; orderInfo.MSN = member.MSN; } orderInfo.Remark = Globals.HtmlEncode(txtMessage.Text); orderInfo.OrderStatus = OrderStatus.WaitBuyerPay; orderInfo.RefundStatus = RefundStatus.None; FillOrderCoupon(orderInfo); FillOrderShippingMode(orderInfo, shoppingCartInfo); FillOrderOptions(orderInfo); FillOrderPaymentMode(orderInfo); return(orderInfo); }
/// <summary> /// 满减活动等打折活动 /// </summary> /// <param name="order"></param> /// <param name="ActivitiesId"></param> /// <param name="ActivitiesName"></param> /// <returns></returns> public void getDiscountTotal(System.Web.HttpContext context) { ShoppingCartInfo shoppingCart; shoppingCart = ShoppingCartProcessor.GetShoppingCart(ManagerHelper.GetCurrentManager().UserId); OrderInfo order = ShoppingProcessor.ConvertShoppingCartToOrder(shoppingCart, false, false, false); if (null == order) { context.Response.Write("{\"success\":false,\"discount\":\"" + 0 + "\"}"); return; } decimal num = new decimal(0); decimal num1 = new decimal(0); decimal num2 = new decimal(0); LineItemInfo lineItemInfo = new LineItemInfo(); System.Data.DataTable type = ProductBrowser.GetType(); for (int i = 0; i < type.Rows.Count; i++) { string str = ""; string str1 = ""; decimal subTotal = new decimal(0); foreach (KeyValuePair <string, LineItemInfo> lineItem in order.LineItems) { lineItemInfo = lineItem.Value; if (string.IsNullOrEmpty(lineItemInfo.MainCategoryPath)) { continue; } int num3 = int.Parse(type.Rows[i]["ActivitiesType"].ToString()); string mainCategoryPath = lineItemInfo.MainCategoryPath; char[] chrArray = new char[] { '|' }; if (num3 == int.Parse(mainCategoryPath.Split(chrArray)[0].ToString())) { subTotal = subTotal + lineItemInfo.GetSubTotal(); } if (int.Parse(type.Rows[i]["ActivitiesType"].ToString()) != 0) { continue; } subTotal = subTotal + lineItemInfo.GetSubTotal(); } if (subTotal != new decimal(0)) { //获取所有活动列表 System.Data.DataTable allFull = ProductBrowser.GetAllFull(int.Parse(type.Rows[i]["ActivitiesType"].ToString())); if (allFull.Rows.Count > 0)//如果存在活动时进入 { //2017-2 如果活动实体类包含了门店id,那么该活动仅对当前门店生效, int currentOrderStoreId = Convert.ToInt32(context.Request["storeid"]); //当前订单的门店id int currentActivityStoreId = 0; //当前活动的门店id int num0 = 0; int num4 = 0; while (true) { if (num4 >= allFull.Rows.Count) { break; } else if (subTotal >= decimal.Parse(allFull.Rows[allFull.Rows.Count - 1]["MeetMoney"].ToString())) { num1 = decimal.Parse(allFull.Rows[allFull.Rows.Count - 1]["MeetMoney"].ToString()); num = decimal.Parse(allFull.Rows[allFull.Rows.Count - 1]["ReductionMoney"].ToString()); currentActivityStoreId = int.TryParse(allFull.Rows[allFull.Rows.Count - 1]["storeid"].ToString(), out num0)?Convert.ToInt32(allFull.Rows[allFull.Rows.Count - 1]["storeid"]):num0; str = string.Concat(allFull.Rows[allFull.Rows.Count - 1]["ActivitiesId"].ToString(), ","); str1 = string.Concat(allFull.Rows[allFull.Rows.Count - 1]["ActivitiesName"].ToString(), ","); break; } else if (subTotal <= decimal.Parse(allFull.Rows[0]["MeetMoney"].ToString())) { num1 = decimal.Parse(allFull.Rows[0]["MeetMoney"].ToString()); num = num + decimal.Parse(allFull.Rows[0]["ReductionMoney"].ToString()); currentActivityStoreId = int.TryParse(allFull.Rows[allFull.Rows.Count - 1]["storeid"].ToString(), out num0) ? Convert.ToInt32(allFull.Rows[allFull.Rows.Count - 1]["storeid"]) : num0; str = string.Concat(allFull.Rows[0]["ActivitiesId"].ToString(), ","); str1 = string.Concat(allFull.Rows[0]["ActivitiesName"].ToString(), ","); break; } else { if (subTotal >= decimal.Parse(allFull.Rows[num4]["MeetMoney"].ToString())) { num1 = decimal.Parse(allFull.Rows[num4]["MeetMoney"].ToString()); num = decimal.Parse(allFull.Rows[num4]["ReductionMoney"].ToString()); currentActivityStoreId = int.TryParse(allFull.Rows[allFull.Rows.Count - 1]["storeid"].ToString(), out num0) ? Convert.ToInt32(allFull.Rows[allFull.Rows.Count - 1]["storeid"]) : num0; str = string.Concat(allFull.Rows[num4]["ActivitiesId"].ToString(), ","); str1 = string.Concat(allFull.Rows[num4]["ActivitiesName"].ToString(), ","); } num4++; } } if (subTotal >= num1) { //如果当前门店id不等于当前活动门店id,返回0元,活动id与活动名为null if (currentOrderStoreId != 0 && currentOrderStoreId != currentActivityStoreId) { context.Response.Write("{\"success\":false,\"discount\":\"" + 0 + "\"}"); return; } num2 = num2 + num; foreach (KeyValuePair <string, LineItemInfo> keyValuePair in order.LineItems) { LineItemInfo value = keyValuePair.Value; if (string.IsNullOrEmpty(value.MainCategoryPath)) { continue; } int num5 = int.Parse(type.Rows[i]["ActivitiesType"].ToString()); string mainCategoryPath1 = value.MainCategoryPath; char[] chrArray1 = new char[] { '|' }; if (num5 != int.Parse(mainCategoryPath1.Split(chrArray1)[0].ToString()) && int.Parse(type.Rows[i]["ActivitiesType"].ToString()) != 0) { continue; } value.PromotionName = str1.Substring(0, str1.Length - 1); value.PromotionId = int.Parse(str.Substring(0, str.Length - 1)); } } } } } context.Response.Write("{\"success\":true,\"discount\":\"" + num2.ToString("F0") + "\"}"); return; }
private void btnAdd_Click(object sender, System.EventArgs e) { #region 获取商品规格信息,构造购物车信息 //实例化购物车 ShoppingCartInfo shoppingCartInfo = new ShoppingCartInfo(); //实例化SKU信息 SkuItemInfo skuItemInfo = new SkuItemInfo(); List <SkuInfo> skuInfoList = new List <SkuInfo>(); List <ShoppingCartItemInfo> itemInfo = new List <ShoppingCartItemInfo>(); //区县Id int regionId = 0; int.TryParse(txtRegionId.Text, out regionId); if (regionId == 0 && dropRegions.GetSelectedRegionId() != null && this.dropRegions.GetSelectedRegionId().Value > 0) { regionId = this.dropRegions.GetSelectedRegionId().Value; } string skuList = !string.IsNullOrWhiteSpace(hiddenSkus.Value) ? hiddenSkus.Value : ""; if (!string.IsNullOrEmpty(skuList)) { skuItemInfo.skuInfo = Newtonsoft.Json.JsonConvert.DeserializeObject <SkuInfo[]>(skuList); } if (skuItemInfo != null && skuItemInfo.skuInfo != null && skuItemInfo.skuInfo.Count() > 0) { skuInfoList = skuItemInfo.skuInfo.OrderByDescending(a => a.SkuId).ToList(); } string skuIdStr = ""; if (skuInfoList.Count > 0) { skuInfoList.ForEach(a => { skuIdStr += "'" + a.SkuId + "'" + ","; }); } if (!string.IsNullOrEmpty(skuIdStr) && skuIdStr.Length > 0) { skuIdStr = skuIdStr.Substring(0, skuIdStr.Length - 1); skuIdStr = "(" + skuIdStr + ")"; itemInfo = ShoppingProcessor.GetSkuList(skuIdStr).ToList(); } if (itemInfo.Count > 0) { //循环处理 itemInfo.ForEach(a => { skuInfoList.ForEach(b => { if (b.SkuId == a.SkuId) { a.Quantity = b.BuyQty; a.ShippQuantity = b.BuyQty; } }); }); } #endregion //收货地址ID int shippingId = 0; int.TryParse(txtShippingId.Text, out shippingId); //身份证号码 string identityCard = txtIdentityCard.Text.Trim(); //用户ID int userId = 0; int.TryParse(txtUserId.Text, out userId); //手机号码 string cellPhone = txtCellPhone.Text.Trim(); //收货人姓名 string shipTo = txtShipTo.Text.Trim(); //地址 string address = txtDetailsAddress.Text.Trim(); string addressproc = ""; if (!string.IsNullOrEmpty(dropRegions.SelectedRegions)) { addressproc = (dropRegions.SelectedRegions).Replace(",", "") + address; } //邮政编码 string zipcode = txtZipcode.Text.Trim(); //电话号码 string telPhone = txtTelPhone.Text.Trim(); //用户名 string username = txtUserName.Text.Trim(); #region 新增或修改收货地址信息 ShippingAddressInfo shippingAddress = new ShippingAddressInfo() { ShipTo = shipTo, Address = addressproc, Zipcode = zipcode, TelPhone = telPhone, CellPhone = cellPhone, IdentityCard = identityCard, IsDefault = true, RegionId = regionId, UserId = userId, ShippingId = shippingId }; //如果没有选择收获地址,那么新增一个用户,手机号作为用户名,密码为手机号 int newUserId = 0; if (userId == 0) { Member member = new Member(UserRole.Member); member.GradeId = MemberProcessor.GetDefaultMemberGrade(); member.SessionId = Globals.GetGenerateId(); member.Username = cellPhone; member.Email = "";// cellPhone + "@mail.haimylife.com"; member.Password = cellPhone; member.PasswordFormat = MembershipPasswordFormat.Hashed; member.TradePasswordFormat = MembershipPasswordFormat.Hashed; member.TradePassword = cellPhone; member.IsApproved = true; member.RealName = string.Empty; member.Address = string.Empty; CreateUserStatus createUserStatus = MemberProcessor.CreateMember(member); if (createUserStatus == CreateUserStatus.DuplicateUsername || createUserStatus == CreateUserStatus.DisallowedUsername) { ErrorLog.Write("用户名重复,用户名为:" + member.Username); } if (createUserStatus == CreateUserStatus.DuplicateEmailAddress) { ErrorLog.Write("邮件名重复,邮箱为:" + member.Email); } if (createUserStatus == CreateUserStatus.Created) { newUserId = member.UserId; userId = member.UserId; } } int newShippingId = 0; //新增或修改收货地址信息 int addressResult = MemberProcessor.AddOrUpdateShippingAddress(shippingAddress, newUserId, out newShippingId); if (addressResult > 0) { ErrorLog.Write("新增或修改收货地址信息成功,收获地址Id[newShippingId]" + newShippingId); } #endregion itemInfo.ForEach(a => { //门店Id为当前登录用户的Id a.StoreId = HiContext.Current.User.UserId; a.UserId = userId; shoppingCartInfo.LineItems.Add(a); }); //获取订单信息 OrderInfo orderInfo = ShoppingProcessor.ConvertShoppingCartToOrder(shoppingCartInfo, false, false, false, userId); if (orderInfo != null) { orderInfo.OrderId = this.GenerateOrderId(); orderInfo.OrderDate = System.DateTime.Now; orderInfo.UserId = userId; if (!string.IsNullOrEmpty(username)) { orderInfo.Username = username; } else { orderInfo.Username = cellPhone; } orderInfo.EmailAddress = ""; orderInfo.RealName = ""; orderInfo.QQ = ""; orderInfo.Remark = txtBak.Text.Trim(); //站点默认为深圳 orderInfo.SiteId = 0; orderInfo.IdentityCard = identityCard; orderInfo.OrderStatus = OrderStatus.WaitBuyerPay; orderInfo.RefundStatus = RefundStatus.None; orderInfo.ShipToDate = DateTime.Now.ToString(); //门店Id int userStoreId = ManagerHelper.GetStoreIdByUserId(HiContext.Current.User.UserId); orderInfo.StoreId = userStoreId; if (!string.IsNullOrEmpty(txtDeductible.Text.Trim())) { orderInfo.Deductible = Decimal.Parse(txtDeductible.Text.Trim()); } if (shippingAddress != null) { #region 验证每人每日最多消费1000元,1000元以上为单件商品 int mayCount = 0; foreach (ShoppingCartItemInfo item in shoppingCartInfo.LineItems) { mayCount += item.Quantity; //#region 验证库存 int stock = ShoppingProcessor.GetProductStock(item.SkuId); if (stock <= 0 || stock < item.Quantity) { this.ShowMsg("商品库存不足!商品名称为:" + item.Name, false); return; } } #endregion #region 验证是否符合清关条件 StringBuilder sb = new StringBuilder(); for (int i = 0; i < shoppingCartInfo.LineItems.Count; i++) { if (i == (shoppingCartInfo.LineItems.Count - 1)) { sb.Append(shoppingCartInfo.LineItems[i].ProductId); } else { sb.AppendFormat("{0},", shoppingCartInfo.LineItems[i].ProductId); } } bool b = ShoppingProcessor.CheckIsCustomsClearance(sb.ToString()); if (b) { orderInfo.IsCustomsClearance = 1; if (string.IsNullOrEmpty(identityCard)) { Member memberNew = Users.GetUser(HiContext.Current.User.UserId, false) as Member; identityCard = memberNew.IdentityCard; } if (string.IsNullOrEmpty(identityCard)) { this.ShowMsg("有需要清关的商品,身份证号码不能为空,请到个人资料里面填写身份信息!", false); return; } } else { orderInfo.IsCustomsClearance = 0; } #endregion orderInfo.ShippingRegion = RegionHelper.GetFullRegion(regionId, ","); orderInfo.RegionId = regionId; orderInfo.Address = address; orderInfo.ZipCode = zipcode; orderInfo.ShipTo = shipTo; orderInfo.TelPhone = telPhone; orderInfo.CellPhone = cellPhone; orderInfo.ShippingId = shippingId <= 0 ? newShippingId : shippingId; } //配送方式 orderInfo.ShippingModeId = ddlshippingMode.SelectedValue > 0 ? (int)ddlshippingMode.SelectedValue : 0; orderInfo.ModeName = !string.IsNullOrEmpty(ddlshippingMode.SelectedItem.Text) ? ddlshippingMode.SelectedItem.Text : ""; decimal tax = 0m; decimal freight = 0m; Dictionary <int, decimal> dictShippingMode = new Dictionary <int, decimal>(); if (shoppingCartInfo.LineItems.Count != shoppingCartInfo.LineItems.Count((ShoppingCartItemInfo a) => a.IsfreeShipping) && !shoppingCartInfo.IsFreightFree) { foreach (ShoppingCartItemInfo item in shoppingCartInfo.LineItems) { tax += item.AdjustedPrice * item.TaxRate * item.Quantity; if ((!item.IsfreeShipping)) { if (item.TemplateId > 0) { if (dictShippingMode.ContainsKey(item.TemplateId)) { dictShippingMode[item.TemplateId] += item.Weight * item.Quantity; } else { dictShippingMode.Add(item.TemplateId, item.Weight * item.Quantity); } } } } foreach (var item in dictShippingMode) { ShippingModeInfo shippingMode = ShoppingProcessor.GetShippingMode(item.Key); freight += ShoppingProcessor.CalcFreight(shippingAddress.RegionId, item.Value, shippingMode); } //运费需要减去优惠 orderInfo.Freight = freight; orderInfo.Tax = tax <= 50 ? 0 : tax; orderInfo.OriginalTax = tax; } else { orderInfo.Freight = 0m; } orderInfo.AdjustedFreight = orderInfo.Freight; int num = ddlpayment.SelectedValue > 0 ? (int)ddlpayment.SelectedValue:0; orderInfo.PaymentTypeId = num; if (num == 16) { orderInfo.PaymentType = "线下支付"; orderInfo.Gateway = "Ecdev.plugins.payment.bankrequest"; } else { PaymentModeInfo paymentMode = ShoppingProcessor.GetPaymentMode(num); if (paymentMode != null) { orderInfo.PaymentTypeId = paymentMode.ModeId; orderInfo.PaymentType = paymentMode.Name; orderInfo.Gateway = paymentMode.Gateway; } } orderInfo.OrderSource = OrderSource.storeAdd; try { orderInfo.OrderType = (int)OrderType.Normal; if (ShoppingProcessor.CreateOrder(orderInfo, true, true)) { Reset(); //this.ShowMsg("添加门店订单成功", true); string url = Globals.GetAdminAbsolutePath("/sales/StoreManageOrder.aspx"); //清除前端的cookie ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>ClearsCookie();alert('添加门店订单成功');window.location.href='" + url + "';</script>"); //base.Response.Redirect(Globals.GetAdminAbsolutePath("'/sales/StoreManageOrder.aspx'"), true); } else { this.ShowMsg("添加门店订单失败!", false); return; } } catch (Exception ex) { ErrorLog.Write("后台成功添加门店订单错误:", Newtonsoft.Json.JsonConvert.SerializeObject(orderInfo), ex); } } }