/// <summary> /// 拼团活动详情 /// </summary> /// <returns></returns> public ActionResult GroupBuyDetail() { int id = RequestHelper.GetForm <int>("id"); GroupBuyInfo entity = GroupBuyBLL.Read(id); if (entity.Id <= 0) { return(Json(new { ok = false, msg = "拼团商品不存在" })); } var product = ProductBLL.Read(entity.ProductId); if (product.Id <= 0) { return(Json(new { ok = false, msg = "拼团商品不存在" })); } if (product.OpenGroup != 1) { return(Json(new { ok = false, msg = "此商品暂不支持拼团" })); } //拼团状态 entity.VirtualStatus = (entity.EndTime <DateTime.Now && entity.Quantity> entity.SignCount) ? -1 : (entity.StartTime <= DateTime.Now && entity.EndTime >= DateTime.Now && entity.Quantity > entity.SignCount) ? 0 : (entity.StartTime <= DateTime.Now && entity.EndTime >= DateTime.Now && entity.Quantity <= entity.SignCount) ? 1 : -1; //除团长以外其他参与者 List <GroupSignInfo> signList = GroupSignBLL.ReadListByGroupId(id).Where(k => k.UserId != entity.Leader).ToList(); #region 推荐商品 int userGrade = UserGradeBLL.ReadByMoney(0).Id; int uid = RequestHelper.GetForm <int>("uid"); var user = UserBLL.ReadUserMore(uid); if (user != null && user.Id > 0) { userGrade = UserGradeBLL.ReadByMoney(user.MoneyUsed).Id; } int hotCount = 0; var prorecommend = ProductBLL.SearchList(1, 4, new ProductSearchInfo { IsSale = (int)BoolType.True, IsTop = (int)BoolType.True, IsDelete = (int)BoolType.False, NotInProductId = product.Id.ToString() }, ref hotCount); var prorelist = new List <ProductVirtualModel>(); foreach (var item in prorecommend) { var vp = new ProductVirtualModel() { id = item.Id, name = item.Name, img = ShopCommon.ShowImage(item.Photo.Replace("Original", "150-150")), imgbig = ShopCommon.ShowImage(item.Photo.Replace("Original", "350-350")), imgorg = ShopCommon.ShowImage(item.Photo), price = ProductBLL.GetCurrentPrice(item.SalePrice, userGrade), click = item.ViewCount, like = item.LikeNum, totalstore = item.StandardType == (int)ProductStandardType.Single ? ProductTypeStandardRecordBLL.GetSumStorageByProduct(item.Id) : item.TotalStorageCount, //ordercount = item.OrderCount //是否启用不限库存,分别计算销量 ordercount = item.UnlimitedStorage == 1 ? OrderBLL.GetProductOrderCountDaily(item.Id, item.StandardType, DateTime.Now) : item.OrderCount }; prorelist.Add(vp); } #endregion return(Json(new { ok = true, entity = entity, product = product, signlist = signList, topproductlist = prorelist })); }
protected override void PageLoad() { base.PageLoad(); int currentPage = RequestHelper.GetQueryString <int>("Page"); if (currentPage < 1) { currentPage = 1; } int pageSize = 10; int count = 0; GroupBuySearchInfo groupBuySearch = new GroupBuySearchInfo(); groupBuySearch.Status = GroupBuyStatus.Normal; groupBuyList = GroupBuyBLL.ReadGroupBuyList(currentPage, pageSize, groupBuySearch, ref count); commonPagerClass.CurrentPage = currentPage; commonPagerClass.PageSize = pageSize; commonPagerClass.Count = count; commonPagerClass.FirstPage = "<<首页"; commonPagerClass.PreviewPage = "<<上一页"; commonPagerClass.NextPage = "下一页>>"; commonPagerClass.LastPage = "末页>>"; commonPagerClass.ListType = false; commonPagerClass.DisCount = false; commonPagerClass.PrenextType = true; string productIDList = string.Empty; string idList = string.Empty; foreach (GroupBuyInfo groupBuy in groupBuyList) { productIDList += "," + groupBuy.ProductID.ToString(); idList += "," + groupBuy.ID.ToString(); } if (productIDList != string.Empty) { productIDList = productIDList.Substring(1); } if (idList != string.Empty) { idList = idList.Substring(1); } //读取商品 if (productIDList != string.Empty) { ProductSearchInfo productSearch = new ProductSearchInfo(); productSearch.InProductID = productIDList; productList = ProductBLL.SearchProductList(productSearch); } //读取购买人数 if (idList != string.Empty) { dicCount = UserGroupBuyBLL.ReadUserGroupBuyCount(idList); } Title = "商品团购"; }
private void Approve(int approveStatus) { int orderRefundId = RequestHelper.GetQueryString <int>("Id"); var submitOrderRefund = OrderRefundBLL.Read(orderRefundId); string remark = Remark.Text.Trim(); switch (submitOrderRefund.Status) { case (int)OrderRefundStatus.Submit: CheckAdminPower("OrderRefundApprove", PowerCheckType.Single); //如果是团购单,且拼团正在进行中,暂不能申请退款 var order = OrderBLL.Read(submitOrderRefund.OrderId); if (order.IsActivity == (int)OrderKind.GroupBuy && order.FavorableActivityId > 0) { var groupBuy = GroupBuyBLL.Read(order.FavorableActivityId); if (groupBuy.StartTime <= DateTime.Now && groupBuy.EndTime >= DateTime.Now && groupBuy.Quantity > groupBuy.SignCount) { ScriptHelper.Alert("拼团正在进行,暂不能退款", RequestHelper.RawUrl); } } if (approveStatus == (int)BoolType.True) { submitOrderRefund.Status = (int)OrderRefundStatus.Approve; submitOrderRefund.Remark = "系统审核通过,等待处理退款: " + remark; } else { submitOrderRefund.Status = (int)OrderRefundStatus.Reject; submitOrderRefund.Remark = "系统审核不通过: " + remark; } break; case (int)OrderRefundStatus.Returning: ScriptHelper.Alert("正在处理退款,请不要重复退款", RequestHelper.RawUrl); break; case (int)OrderRefundStatus.HasReturn: ScriptHelper.Alert("退款已完成,请不要重复退款", RequestHelper.RawUrl); break; case (int)OrderRefundStatus.Reject: ScriptHelper.Alert("退款已被拒绝,请不要重复退款", RequestHelper.RawUrl); break; default: ScriptHelper.Alert("无效的操作", RequestHelper.RawUrl); break; } OrderRefundBLL.Update(submitOrderRefund); //退款操作记录 AddOrderRefundAction(submitOrderRefund, approveStatus); AdminLogBLL.Add(ShopLanguage.ReadLanguage("UpdateRecord"), ShopLanguage.ReadLanguage("OrderRefund"), submitOrderRefund.Id); ScriptHelper.Alert("操作成功", RequestHelper.RawUrl); }
protected override void PageLoad() { base.PageLoad(); topNav = 2; int groupId = RequestHelper.GetQueryString <int>("GroupId"); group = GroupBuyBLL.Read(groupId); dataList = GroupSignBLL.SearchListByGroupId(groupId, 1, group.Quantity, ref Count); dataList.ForEach(k => k.UserName = System.Web.HttpUtility.UrlDecode(k.UserName, System.Text.Encoding.UTF8)); Title = "参团记录[" + group.ProductName + "]"; }
protected override void PageLoad() { base.PageLoad(); topNav = 2; status = RequestHelper.GetQueryString <int>("status") < -2 ? 0 : RequestHelper.GetQueryString <int>("status"); GroupBuySearchInfo searchInfo = new GroupBuySearchInfo(); searchInfo.Status = status; dataList = GroupBuyBLL.SearchList(1, pageSize, searchInfo, ref Count); dataList.ForEach(k => k.GroupUserName = System.Web.HttpUtility.UrlDecode(k.GroupUserName, System.Text.Encoding.UTF8)); }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { CheckAdminPower("ReadGroupSign", PowerCheckType.Single); int groupId = RequestHelper.GetQueryString <int>("GroupId"); group = GroupBuyBLL.Read(groupId); var dataList = GroupSignBLL.SearchListByGroupId(groupId, 1, group.Quantity, ref Count); dataList.ForEach(k => k.UserName = HttpUtility.UrlDecode(k.UserName, System.Text.Encoding.UTF8)); BindControl(dataList, RecordList); } }
/// <summary> /// 审核按钮点击方法 /// </summary> protected void CheckButton_Click(object sender, EventArgs e) { OrderInfo order = ButtoStart(); #region 拼团单,未拼满或者拼团失败不能通过审核 if (order.IsActivity == (int)OrderKind.GroupBuy) { var groupBuy = GroupBuyBLL.Read(order.FavorableActivityId); if (!(groupBuy.StartTime <= DateTime.Now && groupBuy.EndTime >= DateTime.Now && groupBuy.SignCount >= groupBuy.Quantity)) { ScriptHelper.Alert("拼团未成功,暂不能通过审核"); } } #endregion int startOrderStatus = order.OrderStatus; //确认付款,收款时间 order.PayDate = RequestHelper.DateNow; order.ShippingNumber = ShippingNumber.Text; order.ShippingDate = Convert.ToDateTime(ShippingDate.Text); //更新商品库存数量 ProductBLL.ChangeSendCountByOrder(order.Id, ChangeAction.Plus); //自提:现场审核提货,完成 if (order.SelfPick == 1) { order.OrderStatus = (int)OrderStatus.ReceiveShipping; #region 提货码状态置为1(无效) PickUpCodeBLL.UsePickCodeByOrder(order.Id); #endregion #region 完成订单给分销商返佣 //订单实际支付金额 decimal paid_money = OrderBLL.ReadNoPayMoney(order); //购买人 var user = UserBLL.Read(order.UserId); //购买者有推荐人 且 实际支付金额大于0才进行返佣 if (user.Recommend_UserId > 0 && paid_money > 0) { RebateBLL.RebateToDistributor(user, paid_money, order.Id); } #endregion } else {//配送:进入配货状态 order.OrderStatus = (int)OrderStatus.Shipping; } ButtonEnd(order, Note.Text, OrderOperate.Check, startOrderStatus); }
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { CheckAdminPower("ReadGroupBuy", PowerCheckType.Single); status = RequestHelper.GetQueryString <int>("status") < -2?0:RequestHelper.GetQueryString <int>("status"); GroupBuySearchInfo searchInfo = new GroupBuySearchInfo(); searchInfo.Status = status; List <GroupBuyInfo> dataList = GroupBuyBLL.SearchList(CurrentPage, PageSize, searchInfo, ref Count); dataList.ForEach(k => k.GroupUserName = HttpUtility.UrlDecode(k.GroupUserName, System.Text.Encoding.UTF8)); BindControl(dataList, RecordList, MyPager); } }
/// <summary> /// 页面加载方法 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected override void PageLoad() { base.PageLoad(); int id = RequestHelper.GetQueryString <int>("ID"); groupBuy = GroupBuyBLL.ReadGroupBuy(id); TimeSpan timeSpan = groupBuy.EndDate - RequestHelper.DateNow; leftTime = timeSpan.Days * 24 * 3600 + timeSpan.Hours * 3600 + timeSpan.Minutes * 60 + timeSpan.Seconds; buyCount = UserGroupBuyBLL.ReadUserGroupBuyCount(id); product = ProductBLL.ReadProduct(groupBuy.ProductID); Title = product.Name + " - 商品团购"; int count = 0; GroupBuySearchInfo groupBuySearch = new GroupBuySearchInfo(); groupBuySearch.Status = GroupBuyStatus.Normal; groupBuyList = GroupBuyBLL.ReadGroupBuyList(1, 8, groupBuySearch, ref count); string productIDList = string.Empty; string idList = string.Empty; foreach (GroupBuyInfo groupBuyInfo in groupBuyList) { if (productIDList == string.Empty) { productIDList = groupBuyInfo.ProductID.ToString(); idList = groupBuyInfo.ID.ToString(); } else { productIDList += "," + groupBuyInfo.ProductID.ToString(); idList += "," + groupBuyInfo.ID.ToString(); } } //读取商品 if (productIDList != string.Empty) { ProductSearchInfo productSearch = new ProductSearchInfo(); productSearch.InProductID = productIDList; productList = ProductBLL.SearchProductList(productSearch); } }
/// <summary> /// 获取当前拼团商品列表 /// 及开团情况:多少人开团,多少人参与 /// 拼团图片:如果传了则显示开团主图,否则显示商品主图 /// </summary> /// <returns></returns> public ActionResult GetGroupList(int pageIndex = 1, int pageSize = 2) { try { int count = 0; var openGroup_Products = ProductBLL.SearchList(pageIndex, pageSize, new ProductSearchInfo { IsSale = 1, IsDelete = 0, OpenGroup = 1 }, ref count); openGroup_Products.ForEach(p => p = ProductBLL.Read(p.Id)); return(Json(new { ok = true, count = openGroup_Products.Count, groupList = openGroup_Products.Select(p => new { product = new { id = p.Id, title = p.Name, img = !string.IsNullOrWhiteSpace(p.GroupPhoto) ? p.GroupPhoto : p.Photo, groupprice = p.GroupPrice, marketprice = p.MarketPrice, totalstore = p.StandardType == (int)ProductStandardType.Single ? ProductTypeStandardRecordBLL.GetSumStorageByProduct(p.Id) : p.TotalStorageCount, ordercount = p.UnlimitedStorage == 1 ? OrderBLL.GetProductOrderCountDaily(p.Id, p.StandardType, DateTime.Now) : p.OrderCount, unlimitedstorage = p.UnlimitedStorage, // 开/参团情况 groups = GroupBuyBLL.SearchList(new GroupBuySearchInfo { ProductId = p.Id }) } } ) })); } catch (Exception ex) { return(Json(new { ok = false, error = ex.Message })); } }
public ActionResult Index() { int[] arrT = new int[5]; //检查用户的待付款订单是否超时失效,超时则更新为失效状态 OrderBLL.CheckOrderPayTime(user.Id); //订单自动收货 OrderBLL.CheckOrderRecieveTimeProg(user.Id); OrderSearchInfo orderSearch = new OrderSearchInfo(); orderSearch.OrderStatus = (int)(OrderStatus.WaitPay); orderSearch.UserId = uid; orderSearch.IsDelete = 0; arrT[0] = OrderBLL.SearchList(orderSearch).Count; orderSearch.OrderStatus = (int)(OrderStatus.WaitCheck); orderSearch.UserId = uid; orderSearch.IsDelete = 0; //待审核 var orderList = OrderBLL.SearchList(orderSearch); arrT[1] = orderList.Count; #region 待分享 var list1 = orderList.Where(k => k.IsActivity == (int)OrderKind.GroupBuy && k.FavorableActivityId > 0); var groupIds = list1.Select(k => k.FavorableActivityId).ToArray(); var groupList = GroupBuyBLL.ReadList(groupIds).Where(k => k.StartTime <= DateTime.Now && k.EndTime >= DateTime.Now && k.Quantity > k.SignCount); var ids = groupList.Select(k => k.Id); var list2 = list1.Where(k => ids.Contains(k.FavorableActivityId)); arrT[4] = list2.Count(); #endregion orderSearch.OrderStatus = (int)(OrderStatus.HasShipping); orderSearch.UserId = uid; orderSearch.IsDelete = 0; arrT[2] = OrderBLL.SearchList(orderSearch).Count; orderSearch.OrderStatus = (int)(OrderStatus.ReceiveShipping); orderSearch.UserId = uid; orderSearch.IsDelete = 0; arrT[3] = OrderBLL.SearchList(orderSearch).Count; //是否填写手机号 bool hasMobile = !string.IsNullOrEmpty(user.Mobile.Trim()); #region 生日前后5天登录会员中心,自动发放本年度生日礼券。( 是否获取生日优惠券,本年生日前后5天出现提示) //判断是否能够获取本年度生日礼券 bool canGetBirthdayCoupon = true; DateTime birthday = DateTime.MinValue; //如果用户已填写生日,则在生日前后5天提示领取生日礼券 if (DateTime.TryParse(user.Birthday, out birthday) && (birthday.AddDays(-5).Month == DateTime.Now.Month && birthday.AddDays(-5).Day <= DateTime.Now.Day) && (birthday.AddDays(5).Month == DateTime.Now.Month && birthday.AddDays(5).Day >= DateTime.Now.Day)) { int count = 0; var couponlist = CouponBLL.SearchList(1, 1, new CouponSearchInfo { Type = (int)CouponKind.BirthdayGet, CanUse = 1 }, ref count); //如果有生日礼券活动进行中 if (couponlist.Count > 0) { ////如果本年度已获取,则不能再获取 //if (user.HasBirthdayCoupon != 0 && user.GetBirthdayCouponDate.Year == DateTime.Now.Year) canGetBirthdayCoupon = false; #region 自动发放,每年度限领1次 if (user.HasBirthdayCoupon == 0 || (user.HasBirthdayCoupon != 0 && user.GetBirthdayCouponDate.Year != DateTime.Now.Year)) { UserCouponInfo userCoupon = UserCouponBLL.ReadLast(couponlist[0].Id); if (UserCouponBLL.UniqueUserCatch(user.Id, couponlist[0].Id)) { int startNumber = 0; if (userCoupon.Id > 0) { string tempNumber = userCoupon.Number.Substring(3, 5); while (tempNumber.Substring(0, 1) == "0") { tempNumber = tempNumber.Substring(1); } startNumber = Convert.ToInt32(tempNumber); } startNumber++; int cpid = UserCouponBLL.Add(new UserCouponInfo { UserId = user.Id, UserName = user.UserName, CouponId = couponlist[0].Id, GetType = (int)CouponType.BirthdayGet, Number = ShopCommon.CreateCouponNo(couponlist[0].Id, startNumber), Password = ShopCommon.CreateCouponPassword(startNumber), IsUse = (int)BoolType.False, OrderId = 0 }); //领取成功改变user表标识 if (cpid > 0) { Dictionary <string, object> dict = new Dictionary <string, object>(); dict.Add("[HasBirthdayCoupon]", 1); dict.Add("[GetBirthdayCouponDate]", DateTime.Now); UserBLL.UpdatePart("[usr]", dict, user.Id); //user对应的未使用优惠券数量加1 user.CouPonLeft++; } } } #endregion } else { //如果商家后台没有设置正在进行中的会员生日券,则不能获取 canGetBirthdayCoupon = false; } } else { canGetBirthdayCoupon = false; } #endregion //计算是否 return(Json(new { ordercount = arrT, hasmobile = hasMobile, usergrade = userGradeInfo, cangetbirthdaycoupon = canGetBirthdayCoupon, couponleft = user.CouPonLeft, pointleft = user.PointLeft }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 按纽提交结束 /// </summary> protected void ButtonEnd(OrderInfo order, string note, OrderOperate orderOperate, int startOrderStatus) { OrderBLL.AdminUpdateOrderAddAction(order, note, (int)orderOperate, startOrderStatus); string result = OrderOperateSendEmail(order, orderOperate); if (orderOperate == OrderOperate.Pay) { #region 拼团订单付款:团长付款--开团+增加参团记录;成员付款--增加参团记录 if (order.IsActivity == (int)OrderKind.GroupBuy) { var orderDetail = OrderDetailBLL.ReadList(order.Id).FirstOrDefault() ?? new OrderDetailInfo(); if (orderDetail.Id > 0) { var product = ProductBLL.Read(orderDetail.ProductId); //团长付款 if (order.FavorableActivityId <= 0) { //开团 int groupId = GroupBuyBLL.Add(new GroupBuyInfo { Leader = order.UserId, ProductId = product.Id, StartTime = DateTime.Now, EndTime = DateTime.Now.AddDays(ShopConfig.ReadConfigInfo().GroupBuyDays), Quantity = product.GroupQuantity, //团购订单支付成功之后计数加1 SignCount = 1 }); //订单绑定团购Id Dictionary <string, object> dict = new Dictionary <string, object>(); dict.Add("[FavorableActivityId]", groupId); OrderBLL.UpdatePart("[Order]", dict, order.Id); //增加参团记录 GroupSignBLL.Add(new GroupSignInfo { GroupId = groupId, UserId = order.UserId, OrderId = order.Id, SignTime = DateTime.Now }); } else//参团者付款 { //增加参团记录 GroupSignBLL.Add(new GroupSignInfo { GroupId = order.FavorableActivityId, UserId = order.UserId, OrderId = order.Id, SignTime = DateTime.Now }); //开团表signcount加1 GroupBuyBLL.PlusSignCount(order.FavorableActivityId); } } } #endregion #region 自提订单 生成提货码 //避免重复数据,一个订单对应一个提货码,提货码没有有效期,使用过后失效 if (order.SelfPick == 1 && PickUpCodeBLL.ReadByOrderId(order.Id).Id <= 0) { PickUpCodeInfo pkCode = new PickUpCodeInfo(); pkCode.OrderId = order.Id; pkCode.Status = 0; pkCode.PickCode = PickUpCodeBLL.CreatePickUpCode(); int pickCodeId = PickUpCodeBLL.Add(pkCode); //if (pickCodeId <= 0) //{ // return Json(new { flag = false, msg = "生成提货码失败" }); //} } #endregion //付款操作时触发sianalr ScriptHelper.Alert("订单" + ShopLanguage.ReadLanguage("OperateOK") + "。" + result, RequestHelper.RawUrl.IndexOf("?") >= 0 ? RequestHelper.RawUrl + "&paysuccess=1" : RequestHelper.RawUrl + "?paysuccess=1"); } else { ScriptHelper.Alert("订单" + ShopLanguage.ReadLanguage("OperateOK") + "。" + result, RequestHelper.RawUrl); } }
public override void ProcessNotify() { WxPayData notifyData = GetNotifyData(); //检查支付结果中transaction_id是否存在 if (!notifyData.IsSet("transaction_id")) { //若transaction_id不存在,则立即返回结果给微信支付后台 WxPayData res = new WxPayData(); res.SetValue("return_code", "FAIL"); res.SetValue("return_msg", "支付结果中微信订单号不存在"); Log.Error(this.GetType().ToString(), "The Pay result is error : " + res.ToXml()); //page.Response.Write(res.ToXml()); //page.Response.End(); } else { string transaction_id = notifyData.GetValue("transaction_id").ToString(); //查询订单,判断订单真实性 if (!QueryOrder(transaction_id)) ////沙箱测试只能用out_trade_no //if (notifyData.IsSet("out_trade_no") && !QueryOrderByout_trade_no(notifyData.GetValue("out_trade_no").ToString())) { //若订单查询失败,则立即返回结果给微信支付后台 WxPayData res = new WxPayData(); res.SetValue("return_code", "FAIL"); res.SetValue("return_msg", "订单查询失败"); Log.Error(this.GetType().ToString(), "Order query failure : " + res.ToXml()); //page.Response.Write(res.ToXml()); //page.Response.End(); } //查询订单成功 else { Log.Debug(this.GetType().ToString(), "订单查询成功 "); /************在这里加入商户自己的逻辑***********************************************************/ //attach:以逗号分开的订单Id字符串,与支付时提交的数据一致 if (notifyData.IsSet("attach")) { string attach = notifyData.GetValue("attach").ToString(); string[] orderIds = attach.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (string orderId in orderIds) { var order = OrderBLL.Read(int.Parse(orderId)); if (order.Id > 0) { #region 正常流程 待付款--》待审核 if (order.OrderStatus == (int)OrderStatus.WaitPay) { order.PayKey = "WxPay"; order.PayName = "微信支付"; order.WxPayTradeNo = transaction_id; //沙箱测试用out_trade_no //order.WxPayTradeNo = notifyData.GetValue("out_trade_no").ToString(); order.OrderStatus = (int)OrderStatus.WaitCheck; order.PayDate = RequestHelper.DateNow; OrderBLL.Update(order); #region 拼团订单付款:团长付款--开团+增加参团记录;成员付款--增加参团记录 if (order.IsActivity == (int)OrderKind.GroupBuy) { var orderDetail = OrderDetailBLL.ReadList(order.Id).FirstOrDefault() ?? new OrderDetailInfo(); if (orderDetail.Id > 0) { var product = ProductBLL.Read(orderDetail.ProductId); //团长付款 if (order.FavorableActivityId <= 0) { //开团 int groupId = GroupBuyBLL.Add(new GroupBuyInfo { Leader = order.UserId, ProductId = product.Id, StartTime = DateTime.Now, EndTime = DateTime.Now.AddDays(ShopConfig.ReadConfigInfo().GroupBuyDays), Quantity = product.GroupQuantity, //团购订单支付成功之后计数加1 SignCount = 1 }); //订单绑定团购Id Dictionary <string, object> dict = new Dictionary <string, object>(); dict.Add("[FavorableActivityId]", groupId); OrderBLL.UpdatePart("[Order]", dict, order.Id); //增加参团记录 GroupSignBLL.Add(new GroupSignInfo { GroupId = groupId, UserId = order.UserId, OrderId = order.Id, SignTime = DateTime.Now }); } else//参团者付款--放到参团者checkout { ////增加参团记录 //GroupSignBLL.Add(new GroupSignInfo //{ // GroupId = order.FavorableActivityId, // UserId = order.UserId, // OrderId = order.Id, // SignTime = DateTime.Now //}); ////开团表signcount加1 //GroupBuyBLL.PlusSignCount(order.FavorableActivityId); } } } #endregion #region 自提订单 生成提货码 //避免重复数据,一个订单对应一个提货码,提货码没有有效期,使用过后失效 if (order.SelfPick == 1 && PickUpCodeBLL.ReadByOrderId(order.Id).Id <= 0) { PickUpCodeInfo pkCode = new PickUpCodeInfo(); pkCode.OrderId = order.Id; pkCode.Status = 0; pkCode.PickCode = PickUpCodeBLL.CreatePickUpCode(); int pickCodeId = PickUpCodeBLL.Add(pkCode); } #endregion #region 价订单 if (order.IsActivity == (int)OrderKind.Bargain) { BargainOrderBLL.HandleBargainOrderPay(order.FavorableActivityId); } #endregion //发送订单支付成功通知 SendPayOrderMsg(order); //增加操作记录 OrderActionInfo orderAction = new OrderActionInfo(); orderAction.OrderId = order.Id; orderAction.OrderOperate = (int)OrderOperate.Pay; orderAction.StartOrderStatus = (int)OrderStatus.WaitPay; orderAction.EndOrderStatus = (int)OrderStatus.WaitCheck; orderAction.Note = "客户微信在线支付"; orderAction.IP = ClientHelper.IP; orderAction.Date = RequestHelper.DateNow; orderAction.AdminID = 0; orderAction.AdminName = string.Empty; OrderActionBLL.Add(orderAction); } #endregion #region 非正常流程 待付款超时已失效(未退款)--》待审核 if (order.OrderStatus == (int)OrderStatus.NoEffect && order.IsRefund == 0) { order.PayKey = "WxPay"; order.PayName = "微信支付"; order.WxPayTradeNo = transaction_id; order.OrderStatus = (int)OrderStatus.WaitCheck; order.PayDate = RequestHelper.DateNow; OrderBLL.Update(order); #region 拼团订单付款:团长付款--开团+增加参团记录;成员付款--增加参团记录 if (order.IsActivity == (int)OrderKind.GroupBuy) { var orderDetail = OrderDetailBLL.ReadList(order.Id).FirstOrDefault() ?? new OrderDetailInfo(); if (orderDetail.Id > 0) { var product = ProductBLL.Read(orderDetail.ProductId); //团长付款 if (order.FavorableActivityId <= 0) { //开团 int groupId = GroupBuyBLL.Add(new GroupBuyInfo { Leader = order.UserId, ProductId = product.Id, StartTime = DateTime.Now, EndTime = DateTime.Now.AddDays(ShopConfig.ReadConfigInfo().GroupBuyDays), Quantity = product.GroupQuantity, //团购订单支付成功之后计数加1 SignCount = 1 }); //订单绑定团购Id Dictionary <string, object> dict = new Dictionary <string, object>(); dict.Add("[FavorableActivityId]", groupId); OrderBLL.UpdatePart("[Order]", dict, order.Id); //增加参团记录 GroupSignBLL.Add(new GroupSignInfo { GroupId = groupId, UserId = order.UserId, OrderId = order.Id, SignTime = DateTime.Now }); } else//参团者付款--放到参团者checkout { ////增加参团记录 //GroupSignBLL.Add(new GroupSignInfo //{ // GroupId = order.FavorableActivityId, // UserId = order.UserId, // OrderId = order.Id, // SignTime = DateTime.Now //}); ////开团表signcount加1 //GroupBuyBLL.PlusSignCount(order.FavorableActivityId); } } } #endregion #region 自提订单 生成提货码 //避免重复数据,一个订单对应一个提货码,提货码没有有效期,使用过后失效 if (order.SelfPick == 1 && PickUpCodeBLL.ReadByOrderId(order.Id).Id <= 0) { PickUpCodeInfo pkCode = new PickUpCodeInfo(); pkCode.OrderId = order.Id; pkCode.Status = 0; pkCode.PickCode = PickUpCodeBLL.CreatePickUpCode(); int pickCodeId = PickUpCodeBLL.Add(pkCode); } #endregion #region 价订单 if (order.IsActivity == (int)OrderKind.Bargain) { BargainOrderBLL.HandleBargainOrderPay(order.FavorableActivityId); } #endregion #region 扣除支付积分 if (order.Point > 0) { //减少积分 UserAccountRecordInfo uarInfo = new UserAccountRecordInfo(); uarInfo.RecordType = (int)AccountRecordType.Point; uarInfo.UserId = order.UserId; uarInfo.UserName = order.UserName; uarInfo.Note = "支付订单:" + order.OrderNumber; uarInfo.Point = -order.Point; uarInfo.Money = 0; uarInfo.Date = DateTime.Now; uarInfo.IP = ClientHelper.IP; UserAccountRecordBLL.Add(uarInfo); } #endregion #region 减少商品库存 ProductBLL.ChangeOrderCountByOrder(order.Id, ChangeAction.Plus); #endregion //发送订单支付成功通知 SendPayOrderMsg(order); //增加操作记录 OrderActionInfo orderAction = new OrderActionInfo(); orderAction.OrderId = order.Id; orderAction.OrderOperate = (int)OrderOperate.Pay; orderAction.StartOrderStatus = (int)OrderStatus.WaitPay; orderAction.EndOrderStatus = (int)OrderStatus.WaitCheck; orderAction.Note = "客户微信在线支付"; orderAction.IP = ClientHelper.IP; orderAction.Date = RequestHelper.DateNow; orderAction.AdminID = 0; orderAction.AdminName = string.Empty; OrderActionBLL.Add(orderAction); } #endregion //记录微信支付交易单号 if (order.OrderStatus == (int)OrderStatus.WaitCheck && string.IsNullOrEmpty(order.WxPayTradeNo)) { order.WxPayTradeNo = transaction_id; OrderBLL.Update(order); } notifyResult = true; } } } /************在这里加入商户自己的逻辑***********************************************************/ WxPayData res = new WxPayData(); res.SetValue("return_code", "SUCCESS"); res.SetValue("return_msg", "OK"); Log.Info(this.GetType().ToString(), "order query success : " + res.ToXml()); //page.Response.Write(res.ToXml()); //page.Response.End(); } } }
/// <summary> /// 提交数据 /// </summary> protected override void PostBack() { int groupID = RequestHelper.GetForm <int>("groupID"); buyCount = RequestHelper.GetForm <int>("buyCount"); string url = "/GroupBuyOrder-" + groupID + "-" + buyCount + ".aspx"; groupBuy = GroupBuyBLL.ReadGroupBuy(groupID); if (groupBuy.ID <= 0) { ScriptHelper.AlertFront("该团购不存在!", url); } if (UserGroupBuyBLL.ReadUserGroupBuyByUser(groupID, base.UserID).ID > 0) { ScriptHelper.AlertFront("您已经参加该团购了!", url); } if (groupBuy.StartDate > DateTime.Now) { ScriptHelper.AlertFront("该团购还未开始,不能购买!", url); } if (groupBuy.EndDate < DateTime.Now) { ScriptHelper.AlertFront("该团购已经结束,不能购买!", url); } if (buyCount <= 0) { ScriptHelper.AlertFront("购买数量有误!", url); } if (buyCount > groupBuy.EachNumber) { ScriptHelper.AlertFront("购买数量超过了该团购个人限购数!", url); } int hasBuy = 0; foreach (UserGroupBuyInfo userGroupBuy in UserGroupBuyBLL.ReadUserGroupBuyList(groupID)) { hasBuy += userGroupBuy.BuyCount; } if (buyCount > (groupBuy.MaxCount - hasBuy)) { ScriptHelper.AlertFront("购买数量超过了该团购剩余数!", url); } product = ProductBLL.ReadProduct(groupBuy.ProductID); //检查地址 string consignee = StringHelper.AddSafe(RequestHelper.GetForm <string>("Consignee")); if (consignee == string.Empty) { ScriptHelper.AlertFront("收货人姓名不能为空", url); } string tel = StringHelper.AddSafe(RequestHelper.GetForm <string>("Tel")); string mobile = StringHelper.AddSafe(RequestHelper.GetForm <string>("Mobile")); if (tel == string.Empty && mobile == string.Empty) { ScriptHelper.AlertFront("固定电话,手机必须得填写一个", url); } string zipCode = StringHelper.AddSafe(RequestHelper.GetForm <string>("ZipCode")); if (zipCode == string.Empty) { ScriptHelper.AlertFront("邮编不能为空", url); } string address = StringHelper.AddSafe(RequestHelper.GetForm <string>("Address")); if (address == string.Empty) { ScriptHelper.AlertFront("地址不能为空", url); } //验证配送方式 int shippingID = RequestHelper.GetForm <int>("ShippingID"); if (shippingID == int.MinValue) { ScriptHelper.AlertFront("请选择配送方式", url); } //检查金额 decimal productMoney = groupBuy.Price * buyCount; decimal favorableMoney = RequestHelper.GetForm <decimal>("FavorableMoney"); decimal shippingMoney = RequestHelper.GetForm <decimal>("ShippingMoney"); decimal balance = RequestHelper.GetForm <decimal>("Balance"); decimal couponMoney = RequestHelper.GetForm <decimal>("CouponMoney"); if (productMoney - favorableMoney + shippingMoney - balance - couponMoney < 0) { ScriptHelper.AlertFront("金额有错误,请重新检查", url); } //支付方式 string payKey = RequestHelper.GetForm <string>("Pay"); PayPluginsInfo payPlugins = PayPlugins.ReadPayPlugins(payKey); //添加订单 OrderInfo order = new OrderInfo(); order.OrderNumber = ShopCommon.CreateOrderNumber(); order.IsActivity = (int)BoolType.True; if (productMoney - favorableMoney + shippingMoney - balance - couponMoney == 0 || payPlugins.IsCod == (int)BoolType.True) { order.OrderStatus = (int)OrderStatus.WaitCheck; } else { order.OrderStatus = (int)OrderStatus.WaitPay; } order.OrderNote = "团购活动:" + groupBuy.Name; order.ProductMoney = productMoney; order.Balance = balance; order.FavorableMoney = favorableMoney; order.OtherMoney = 0; order.CouponMoney = couponMoney; order.Consignee = consignee; SingleUnlimitClass singleUnlimitClass = new SingleUnlimitClass(); order.RegionID = singleUnlimitClass.ClassID; order.Address = address; order.ZipCode = zipCode; order.Tel = tel; string userEmail = string.Empty; if (base.UserID == 0) { userEmail = StringHelper.AddSafe(RequestHelper.GetForm <string>("Email")); } else { userEmail = CookiesHelper.ReadCookieValue("UserEmail"); } order.Email = userEmail; order.Mobile = mobile; order.ShippingID = shippingID; order.ShippingDate = RequestHelper.DateNow; order.ShippingNumber = string.Empty; order.ShippingMoney = shippingMoney; order.PayKey = payKey; order.PayName = payPlugins.Name; order.PayDate = RequestHelper.DateNow;; order.IsRefund = (int)BoolType.False; order.FavorableActivityID = 0; order.GiftID = 0; order.InvoiceTitle = string.Empty; order.InvoiceContent = string.Empty; order.UserMessage = StringHelper.AddSafe(RequestHelper.GetForm <string>("UserMessage")); order.AddDate = RequestHelper.DateNow; order.IP = ClientHelper.IP; order.UserID = base.UserID; order.UserName = base.UserName; int orderID = OrderBLL.AddOrder(order); OrderDetailInfo orderDetail = new OrderDetailInfo(); orderDetail.OrderID = orderID; orderDetail.ProductID = product.ID; orderDetail.ProductName = product.Name; orderDetail.ProductWeight = product.Weight; orderDetail.SendPoint = 0; orderDetail.ProductPrice = groupBuy.Price; orderDetail.BuyCount = buyCount; orderDetail.FatherID = 0; orderDetail.RandNumber = string.Empty; orderDetail.GiftPackID = 0; OrderDetailBLL.AddOrderDetail(orderDetail); //更改产品库存订单数量 ProductBLL.ChangeProductOrderCountByOrder(orderID, ChangeAction.Plus); //添加团购单 UserGroupBuyInfo buyInfo = new UserGroupBuyInfo(); buyInfo.GroupBuyID = groupBuy.ID; buyInfo.Date = RequestHelper.DateNow; buyInfo.IP = ClientHelper.IP; buyInfo.BuyCount = buyCount; buyInfo.OrderID = orderID; buyInfo.UserID = base.UserID; buyInfo.UserName = base.UserName; buyInfo.Consignee = consignee; buyInfo.RegionID = singleUnlimitClass.ClassID; buyInfo.Address = address; buyInfo.ZipCode = zipCode; buyInfo.Tel = tel; buyInfo.Email = userEmail; buyInfo.Mobile = mobile; UserGroupBuyBLL.AddUserGroupBuy(buyInfo); ResponseHelper.Redirect("/Finish-I" + orderID.ToString() + ".aspx"); }
/// <summary> /// 页面加载 /// </summary> protected override void PageLoad() { base.PageLoad(); int groupID = RequestHelper.GetQueryString <int>("ID"); buyCount = RequestHelper.GetQueryString <int>("BuyCount"); groupBuy = GroupBuyBLL.ReadGroupBuy(groupID); if (groupBuy.ID <= 0) { result = "该团购不存在!"; return; } if (UserGroupBuyBLL.ReadUserGroupBuyByUser(groupID, base.UserID).ID > 0) { result = "您已经参加该团购了!"; return; } if (groupBuy.StartDate > DateTime.Now) { result = "该团购还未开始,不能购买!"; return; } if (groupBuy.EndDate < DateTime.Now) { result = "该团购已经结束,不能购买!"; return; } if (buyCount <= 0) { result = "购买数量有误!"; return; } if (buyCount > groupBuy.EachNumber) { result = "购买数量超过了该团购个人限购数!"; return; } int hasBuy = 0; foreach (UserGroupBuyInfo userGroupBuy in UserGroupBuyBLL.ReadUserGroupBuyList(groupID)) { hasBuy += userGroupBuy.BuyCount; } if (buyCount > (groupBuy.MaxCount - hasBuy)) { result = "购买数量超过了该团购剩余数!"; return; } product = ProductBLL.ReadProduct(groupBuy.ProductID); //登录验证 if (ShopConfig.ReadConfigInfo().AllowAnonymousAddCart == (int)BoolType.False && base.UserID == 0) { ResponseHelper.Redirect("/User/Login.aspx?RedirectUrl=/GroupBuyOrder-" + groupID + "-" + buyCount + ".aspx"); ResponseHelper.End(); } //读取数据 if (base.UserID > 0) { userAddressList = UserAddressBLL.ReadUserAddressByUser(base.UserID); } payPluginsList = PayPlugins.ReadProductBuyPayPluginsList(); Title = "团购订单"; }
public ActionResult Detail(int id) { int userGrade = UserGradeBLL.ReadByMoney(0).Id; int uid = RequestHelper.GetForm <int>("uid"); var user = UserBLL.ReadUserMore(uid); if (user.Id > 0) { userGrade = UserGradeBLL.ReadByMoney(user.MoneyUsed).Id; user.UserName = HttpUtility.UrlDecode(user.UserName, System.Text.Encoding.UTF8); } if (id <= 0) { return(Json(new { ok = false, error = "该产品未上市" })); } string fromwhere = RequestHelper.GetQueryString <string>("fw"); ProductInfo product = ProductBLL.Read(id); if (product.IsSale == (int)BoolType.False || product.IsDelete == 1) { return(Json(new { ok = false, error = "该产品未上市" })); } #region 如果商品没有小程序码 则生成并保存 if (string.IsNullOrWhiteSpace(product.Qrcode)) { string product_miniProramCode = string.Empty; CreateMiniProgramCode(product.Id, ref product_miniProramCode, product.Qrcode); if (!string.IsNullOrWhiteSpace(product_miniProramCode)) {//如果调用接口成功生成小程序码(因为只有发布后才能使用此微信接口) Dictionary <string, object> dict = new Dictionary <string, object>(); dict.Add("[Qrcode]", product_miniProramCode); ProductBLL.UpdatePart("[Product]", dict, product.Id); product.Qrcode = product_miniProramCode; } } #endregion //更新查看数量 if (CookiesHelper.ReadCookie("productview" + product.Id + "") == null) { ProductBLL.ChangeViewCount(id, 1); CookiesHelper.AddCookie("productview" + product.Id + "", product.Id.ToString()); } ProductCommentSearchInfo proCommSear = new ProductCommentSearchInfo(); var proComm = ProductCommentBLL.SearchProductCommentList(proCommSear = new ProductCommentSearchInfo { ProductId = product.Id, Status = (int)CommentStatus.Show }); var procomlist = new List <VirtualProductCommend>(); foreach (var item in proComm) { VirtualProductCommend vpc = new VirtualProductCommend() { id = item.Id, name = HttpUtility.UrlDecode(item.UserName, Encoding.UTF8), avator = ShopCommon.ShowImage(UserBLL.Read(item.UserId).Photo), lv = item.Rank, date = item.PostDate, content = item.Content, imglist = ProductPhotoBLL.ReadList(item.Id, 3), adminreply = item.AdminReplyContent, replydate = item.AdminReplyDate }; procomlist.Add(vpc); } //产品价格 int hotCount = 0; var currentMemberPrice = ProductBLL.GetCurrentPrice(product.SalePrice, userGrade); var prorecommend = ProductBLL.SearchList(1, 8, new ProductSearchInfo { IsSale = (int)BoolType.True, IsTop = (int)BoolType.True, IsDelete = (int)BoolType.False, NotInProductId = product.Id.ToString() }, ref hotCount); var prorelist = new List <ProductVirtualModel>(); foreach (var item in prorecommend) { var vp = new ProductVirtualModel() { id = item.Id, name = item.Name, img = ShopCommon.ShowImage(item.Photo.Replace("Original", "150-150")), imgbig = ShopCommon.ShowImage(item.Photo.Replace("Original", "350-350")), imgorg = ShopCommon.ShowImage(item.Photo), price = ProductBLL.GetCurrentPrice(item.SalePrice, userGrade), marketprice = item.MarketPrice, click = item.ViewCount, like = item.LikeNum, totalstore = item.StandardType == (int)ProductStandardType.Single ? ProductTypeStandardRecordBLL.GetSumStorageByProduct(item.Id) : item.TotalStorageCount, //ordercount = item.OrderCount //是否启用不限库存,分别计算销量 ordercount = item.UnlimitedStorage == 1 ? OrderBLL.GetProductOrderCountDaily(item.Id, item.StandardType, DateTime.Now) : item.OrderCount }; prorelist.Add(vp); } //产品图片 List <ProductPhotoInfo> productPhotoList = new List <ProductPhotoInfo>(); ProductPhotoInfo productPhoto = new ProductPhotoInfo(); productPhoto.Name = product.Name; productPhoto.ImageUrl = product.Photo; productPhotoList.Add(productPhoto); productPhotoList.AddRange(ProductPhotoBLL.ReadList(id, 0)); productPhotoList.ForEach(k => k.ImageUrl = k.ImageUrl.Replace("75-75", "Original")); //属性 var attributeRecordList = ProductTypeAttributeRecordBLL.ReadList(id); #region 产品规格 List <ProductTypeStandardInfo> standardList = new List <ProductTypeStandardInfo>(); string standardRecordValueList = "|"; var standardRecordList = ProductTypeStandardRecordBLL.ReadListByProduct(product.Id, product.StandardType); decimal maxPrice = product.SalePrice; if (standardRecordList.Count > 0) { string[] standardIDArray = standardRecordList[0].StandardIdList.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < standardIDArray.Length; i++) { int standardID = Convert.ToInt32(standardIDArray[i]); ProductTypeStandardInfo standard = ProductTypeStandardBLL.Read(standardID); string[] valueArray = standard.ValueList.Split(';'); string valueList = string.Empty; for (int k = 0; k < valueArray.Length; k++) { foreach (ProductTypeStandardRecordInfo standardRecord in standardRecordList) { if (standardRecord.MarketPrice > maxPrice) { maxPrice = standardRecord.MarketPrice; } string[] tempValueArray = standardRecord.ValueList.Split(';'); if (valueArray[k] == tempValueArray[i]) { valueList += valueArray[k] + ";"; break; } } } if (valueList != string.Empty) { valueList = valueList.Substring(0, valueList.Length - 1); } standard.ValueList = valueList; standardList.Add(standard); } //规格值 foreach (ProductTypeStandardRecordInfo standardRecord in standardRecordList) { standardRecordValueList += standardRecord.ProductId + ";" + standardRecord.ValueList + "|"; } } #endregion #region 正在开的团(进行中,排除本人开的团) GroupBuySearchInfo gpsearch = new GroupBuySearchInfo { ProductId = product.Id, //NotLeader = user.Id, Status = (int)GroupBuyStatus.Going }; List <GroupBuyInfo> gpList = GroupBuyBLL.SearchList(gpsearch); gpList.ForEach(k => k.groupSignList = GroupSignBLL.ReadListByGroupId(k.Id)); gpList.ForEach(k => k.GroupUserName = System.Web.HttpUtility.UrlDecode(k.GroupUserName, Encoding.UTF8)); #endregion return(Json(new { ok = true, product = new { id = product.Id, img = ShopCommon.ShowImage(product.Photo.Replace("Original", "350-350")), imgorg = ShopCommon.ShowImage(product.Photo), title = product.Name, summary = product.Summary, price = currentMemberPrice, marketprice = product.MarketPrice, intro = string.IsNullOrEmpty(product.Introduction1_Mobile) ? product.Introduction1 : product.Introduction1_Mobile, remark = product.Remark, totalstore = product.StandardType == (int)ProductStandardType.Single ? ProductTypeStandardRecordBLL.GetSumStorageByProduct(product.Id) : product.TotalStorageCount, ordercount = product.UnlimitedStorage == 1 ? OrderBLL.GetProductOrderCountDaily(product.Id, product.StandardType, DateTime.Now) : product.OrderCount, unlimitedstorage = product.UnlimitedStorage, virtualordercount = product.VirtualOrderCount, usevirtualorder = product.UseVirtualOrder, opengroup = product.OpenGroup, groupprice = product.GroupPrice, groupquantity = product.GroupQuantity, qrcode = product.Qrcode, groupphoto = string.IsNullOrWhiteSpace(product.GroupPhoto) ? product.Photo : product.GroupPhoto }, standardList = standardList, standardRecordValueList = standardRecordValueList, attributeRecordList = attributeRecordList, productPhotoList = productPhotoList, prorecommend = prorelist, proComm = procomlist, maxPrice = maxPrice, groupList = gpList }, JsonRequestBehavior.AllowGet)); }