Пример #1
0
        /// <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 }));
        }
Пример #2
0
        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 = "商品团购";
        }
Пример #3
0
        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);
        }
Пример #4
0
        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 + "]";
        }
Пример #5
0
        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));
        }
Пример #6
0
 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);
     }
 }
Пример #7
0
        /// <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);
        }
Пример #8
0
        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);
            }
        }
Пример #9
0
        /// <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);
            }
        }
Пример #10
0
 /// <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 }));
     }
 }
Пример #11
0
        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));
        }
Пример #12
0
        /// <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);
            }
        }
Пример #13
0
        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();
                }
            }
        }
Пример #14
0
        /// <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");
        }
Пример #15
0
        /// <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          = "团购订单";
        }
Пример #16
0
        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));
        }