Example #1
0
 private static bool SaveOrder(SysCompany company, SysMemberItem mItem, SysCompanyItem cItem, SysMember user, out string message)
 {
     message = string.Empty;
     //Order order = new Order
     //{
     //    OrderCode = OrderBLL.GetOrderCode(company),
     //    OrderCard = string.Empty,
     //    OrderDate = DateTime.Now,
     //    OrderDateDeliver = DateTime.Now,
     //    OrderDateUpload = DateTime.Now,
     //    OrderMemberID = user.Id,
     //    OrderMemo = string.Empty,
     //    OrderProduct = "优惠消费",
     //    OrderQty = 0,
     //    OrderRateSale = 0,
     //    OrderRate = 0,
     //    OrderPoint = 0,
     //    OrderSellerID = company.Id,
     //    OrderStatus = 1,
     //    OrderSum = cItem.ItemSum,
     //    OrderSumOk = cItem.ItemSum,
     //    OrderPay = 0,
     //    OrderPayCash = 0,
     //    OrderPayPoint = mItem.ItemPoint,
     //    OrderType = (int)OrderType.CompanyItem
     //};
     TransactionScope ts = new TransactionScope( );
     SharedDbConnectionScope ss = new SharedDbConnectionScope( );
     try
     {
         //order.Save( );
         //if (mItem.ItemPoint.HasValue && mItem.ItemPoint.Value > 0)
         //{
         //    new Payment
         //    {
         //        PaymentCode = order.OrderCode,
         //        PaymentCompanyID = company.Id,
         //        PaymentDate = order.OrderDate,
         //        PaymentEmail = string.Empty,
         //        PaymentMemberID = user.Id,
         //        PaymentMemo = string.Format("{0}抢购{1}的优惠项目,并且使用{2}个积分抵扣", user.MemberPhoneNumber, company.CompanyName, -mItem.ItemPoint.Value),
         //        PaymentOrderID = order.Id,
         //        PaymentStatus = 1,
         //        PaymentSum = -mItem.ItemPoint.Value,
         //        PaymentType = (int)PaymentType.CompanyItem
         //    }.Save( );
         //}
         //如果是联盟商家则更新积分状态
         CompanyType companyType = Formatter.ToEnum<CompanyType>(company.CompanyType);
         Payment p = Payment.FetchByID(mItem.PaymentID.Value);
         if (p != null)
         {
             p.PaymentStatus = 1;
             p.Save( );
         }
         mItem.ItemStatus = (int)MemberCompanyItemStatus.Completed;
         mItem.SetDate = DateTime.Now;
         mItem.Save( );
         cItem.ItemUsed = Utilities.ToInt(cItem.ItemUsed) + 1;
         cItem.Save( );
         OrderBLL.UpdateBalance( );
         ts.Complete( );
         message = string.Format("结算成功,{0}使用{1}个积分购得{2}", user.MemberFullname, mItem.ItemPoint, cItem.ItemTitle);
         return true;
     }
     catch (Exception ex)
     {
         message = ex.Message;
         return false;
     }
     finally
     {
         ss.Dispose( );
         ts.Dispose( );
     }
 }
Example #2
0
        private static int SaveOrder(OrderMealUserData userData,
                              List<OrderMealData> orderData,
                              Order order,
                              SysCompany company,
                              SysCompanyItem companyItem,
                              decimal orderSum,
                              int qty,
                              bool isNewOrder,
                              out int orderId,
                              out string message)
        {
            orderId = -1;
            bool isLogin = AppContextBase.Context.CurrentSubSys != SubSystem.ALL;
            decimal servicesSum = company.ServiceSum.HasValue ? company.ServiceSum.Value : 0;
            SysMember user = isLogin ? AppContextBase.Context.User : null;
            bool isNeedCheckPhone;
            if (!isLogin || !Utilities.Compare(user.MemberPhoneNumber, userData.userPhone))
                isNeedCheckPhone = true;
            else
                isNeedCheckPhone = MsnBLL.IsPhoneNumNeedCheck(userData.userPhone);
            decimal userOrderAvgSum = 0;
            if (isLogin && companyItem != null && !CompanyItemBLL.CanClickCompanyMealItem(company, user, companyItem, userData.orderId, out userOrderAvgSum, out message))
                return -1;
            bool isNew = false;
            using (TransactionScope ts = new TransactionScope( ))
            {
                using (SharedDbConnectionScope ss = new SharedDbConnectionScope( ))
                {
                    if (isNeedCheckPhone && !MsnBLL.CheckPhoneNumCode(userData.userPhone, userData.checkCode, userData.msnLogId))
                    {
                        message = "验证码有误或已超时,请重新验证。";
                        return -1;
                    }
                    user = user ?? UserBLL.GetOrNewMemberByPhoneNumber(userData.userPhone, company, out isNew);
                    if (isNew)
                        user.AreaDepth2 = company.AreaDepth; //第一次订快餐的地址,默认该地址所属商圈为其工作圈
                    else if (!Utilities.Compare(user.AreaDepth2, company.AreaDepth))
                    {
                        if (string.IsNullOrEmpty(user.AreaDepth1))
                            user.AreaDepth1 = company.AreaDepth;
                        else if (string.IsNullOrEmpty(user.AreaDepth3))
                            user.AreaDepth3 = company.AreaDepth;
                    }

                    if (!isNewOrder)
                    {
                        if (order.OrderMemberID != user.Id)
                        {
                            message = "你不能修改其他会员的订单.";
                            return -1;
                        }
                        ClearOrderMenuDetail(order.Id);
                        if (Utilities.ToDecimal(order.OrderPoint) > 0)
                            RewardBLL.RewardMemberPointForOrderMeal(user, company, order);
                        order.OrderStatus = (int)OrderStatus.Modified;
                    }
                    else
                    {
                        order.OrderNum = GetOrderNum( );
                        order.OrderStatus = (int)OrderStatus.NotStart;
                        order.OrderPoint = 0;
                    }
                    var dtNow = DateTime.Now;
                    //order.OrderCode = orderCode;
                    order.OrderCard = string.Empty;
                    order.OrderDate = dtNow;
                    order.OrderDateDeliver = dtNow;
                    order.OrderDateUpload = dtNow;
                    order.OrderMemberID = user.Id;
                    order.OrderMemo = userData.memo;
                    order.OrderProduct = userData.address; //送餐地址
                    order.OrderQty = qty;
                    order.OrderRateSale = 0; // 折扣
                    order.OrderRate = RewardBLL.OrderMealRewardRate(company) / 100M;  //赠送比例
                    order.OrderPrePoint = (RewardBLL.OrderMealRewardRate(company) / 100M) * orderSum; //赠送积分
                    order.OrderSellerID = company.Id;
                    order.OrderSum = orderSum; //订单总额
                    order.OrderSumOk = orderSum + servicesSum; //订单总额
                    order.OrderPay = orderSum + servicesSum; //现金支付
                    order.OrderPayCash = 0; //储值支付
                    order.OrderPayPoint = companyItem != null ? companyItem.ItemPoint : 0;//积分支付
                    order.OrderType = (int)OrderType.OrderMeal;
                    order.ServiceSum = servicesSum;
                    order.MansionId = userData.mansionId;
                    order.OrderModel = company.IsUseMsg.HasValue && company.IsUseMsg.Value ? (int)OrderModel.Auto : (int)OrderModel.Manual;
                    order.OrderUpdateOn = DateTime.Now;
                    order.IsNonOut = false;
                    order.HasOutOfStock = false;
                    order.Save( );
                    //RewardBLL.RewardMemberPointForOrderMeal(user, company, order);
                    //save detail
                    List<OrdersDetail> details = new List<OrdersDetail>( );
                    foreach (var pair in orderData)
                    {
                        var d = new OrdersDetail( )
                        {
                            MenuId = pair.menudId,
                            MenuName = pair.menuName,
                            OrderId = order.Id,
                            OrderQty = pair.menuAmount,
                            OrderPrice = pair.menuPrice.Value,
                            IsChgPrice = false,
                            IsOutOfStock = false,
                            ItemInfo = pair.isCompanyItem && companyItem != null ? companyItem.ItemInfo : null
                        };
                        d.Save( );
                        details.Add(d);
                    }
                    if (isLogin && companyItem != null)
                        CompanyItemBLL.ClickCompanyMealItem(company, user, companyItem, order, userOrderAvgSum);

                    UserBLL.AddUserFavAddress(user.Id, userData.mansionId, userData.address);
                    //UserBLL.AddUserFavCompany(user.Id, company.Id);
                    //OrderBLL.UpdateBalance( );
                    ts.Complete( );
                    //SendOrderMealMessage(company, user, order, details, out message);
                    if (userData.orderId > 0)
                        OrderProgressBLL.ClearOrderLog(order.Id);
                    OrderProgressBLL.InitOrderLogProgress(order, company);

                    message = "订餐成功.";
                    orderId = order.Id;
                }
            }
            //Auto login
            if (!isLogin)
            {
                if (user != null)
                {
                    if (user.MemberRoleId > 0)
                        user.LastLoginSubSys = (int)SubSystem.Member;
                    else if (user.CompanyRoleId > 0)
                        user.LastLoginSubSys = (int)SubSystem.Company;
                    else if (user.AdminRoleId > 0)
                        user.LastLoginSubSys = (int)SubSystem.Admin;
                    user.LastLoginDate = DateTime.Now;
                    user.Save( );
                    Utilities.LoginSigIn(user.Id, (SubSystem)user.LastLoginSubSys);
                    if (isNew)
                    {
                        message = "下次订餐您可以直接登录,账号是您的手机号码,密码为手机后6位数,记得及时修改密码哦!";
                        return 2;
                    }
                    return 1;
                }
            }
            return 1;
        }
Example #3
0
        public static bool ClickCompanyItem(SysCompany company, SysMember user, DateTime dtDate, SysCompanyItem item, out int memberItemID, out string message)
        {
            memberItemID = 0;
            if (item == null || user == null)
            {
                message = "参数错误!";
                goto lbl_end;
            }

            if (item.ItemClicked >= item.ItemAmount)
            {
                message = "已经达到了最大可{ItemType}的数量";
                goto lbl_end;
            }
            //check ItemLimitOnce
            if (CheckCompanyItemOnceLimit(company.Id, user.Id))
            {
                message = ItemCheckResult[-3];
                goto lbl_end;
            }
            decimal userLastOrderSum = UserBLL.GetUserLastMonthOrderSum(user.Id);
            int result = CompanyItemBLL.ExecuteCheckFunc(user.Id, item.ItemID, userLastOrderSum);
            if (result < 0)
            {
                message = ItemCheckResult.ContainsKey(result) ? ItemCheckResult[result] : "你无权{ItemType}此优惠项目!";
                goto lbl_end;
            }
            //判断会员积分是否足够
            decimal point = DB.Select(SysMember.Columns.MemberBalance).From<SysMember>( )
                              .Where(SysMember.IdColumn).IsEqualTo(user.Id)
                              .ExecuteScalar<decimal>( );
            if (item.ItemPoint.HasValue && point < item.ItemPoint.Value)
            {
                message = "您的账户积分余额不足,无法{ItemType}^_^";
                goto lbl_end;
            }
            SysMemberItem data = new SysMemberItem
            {
                CompanyID = item.CompanyID,
                CompanyItemID = item.ItemID,
                ItemDate = dtDate,
                OrderDate = DateTime.Now,
                MemberID = user.Id,
                OrderSum = userLastOrderSum,
                ItemPoint = item.ItemPoint,
                ItemStatus = (int)MemberCompanyItemStatus.InProgress,
                SetDate = null,
                IsCanModifiedDate = true,
                PaymentID = 0,
                OrderID = 0
            };
            TransactionScope ts = new TransactionScope( );
            SharedDbConnectionScope ss = new SharedDbConnectionScope( );
            try
            {
                if (item.ItemPoint.HasValue && item.ItemPoint.Value > 0)
                {
                    Payment p = new Payment
                    {
                        PaymentCode = string.Empty,
                        PaymentCompanyID = item.CompanyID,
                        PaymentDate = data.OrderDate.Value,
                        PaymentEmail = string.Empty,
                        PaymentMemberID = user.Id,
                        PaymentMemo = string.Format("抢购【{0}】的优惠项目,并使用{1:0.00}个积分消费", company.CompanyName, item.ItemPoint.Value),
                        PaymentOrderID = 0,
                        PaymentStatus = 2,
                        PaymentSum = -item.ItemPoint.Value,
                        PaymentType = (int)PaymentType.CompanyItem
                    };
                    p.Save( );
                    data.PaymentID = p.Id;
                }
                data.Save( );
                item.ItemClicked = Utilities.ToInt(item.ItemClicked) + 1;
                item.Save( );
                OrderBLL.UpdateBalance( );
                ts.Complete( );
                message = "{ItemType}成功";
                memberItemID = data.ItemID;
                return true;
            }
            catch (Exception ex)
            {
                message = "{ItemType}失败:" + ex.Message;
                Logging.Log("CompanyItemBLL->ClickCompanyItem", ex, true);
            }
            finally
            {
                ss.Dispose( );
                ts.Dispose( );
            }
            lbl_end:
            return false;
        }
Example #4
0
 public static void ClickCompanyMealItem(SysCompany company, SysMember user, SysCompanyItem item, Order order, decimal userLastOrderSum)
 {
     Payment p = null;
     Func<SysMemberItem> fnNew = ( ) =>
     {
         item.ItemClicked = Utilities.ToInt(item.ItemClicked) + 1;
         item.Save( );
         if (item.ItemPoint.HasValue && item.ItemPoint.Value > 0)
         {
             p = new Payment
             {
                 PaymentCode = string.Empty,
                 PaymentCompanyID = item.CompanyID,
                 PaymentDate = order.OrderDate,
                 PaymentEmail = string.Empty,
                 PaymentMemberID = user.Id,
                 PaymentOrderID = order.Id,
                 PaymentStatus = 1,
                 PaymentType = (int)PaymentType.CompanyItem
             };
         }
         return new SysMemberItem( ) { PaymentID = 0, CompanyID = company.Id, CompanyItemID = item.ItemID, MemberID = user.Id, OrderID = order.Id };
     };
     Func<SysMemberItem> fnOld = ( ) =>
         {
             var memberItem = GetMemberMealItemByOrderId(order.Id, user.Id);
             if (memberItem != null)
                 p = Payment.FetchByID(memberItem.PaymentID);
             return memberItem;
         };
     SysMemberItem data = fnOld( ) ?? fnNew( );
     data.ItemDate = order.OrderDate;
     data.OrderDate = order.OrderDate;
     data.OrderSum = userLastOrderSum;
     data.ItemPoint = item.ItemPoint;
     data.ItemStatus = (int)MemberCompanyItemStatus.InProgress;
     data.SetDate = null;
     data.IsCanModifiedDate = true;
     if (p != null)
     {
         if (item.ItemPoint.HasValue && item.ItemPoint.Value > 0)
         {
             p.PaymentMemo = string.Format("抢购【{0}】的优惠项目,并使用{1:0.00}个积分消费", company.CompanyName, item.ItemPoint);
             p.PaymentSum = -item.ItemPoint.Value;
             p.Save( );
             data.PaymentID = p.Id;
         }
         else
         {
             Payment.Delete(p.Id);
             data.PaymentID = 0;
         }
     }
     data.Save( );
 }
Example #5
0
 public static bool CanClickCompanyMealItem(SysCompany company, SysMember user, SysCompanyItem item, int orderId, out decimal userLastOrderSum, out string message)
 {
     userLastOrderSum = 0;
     if (item == null || user == null || company.Id != item.CompanyID)
     {
         message = "参数错误!";
         goto lbl_end;
     }
     userLastOrderSum = UserBLL.GetUserAvgOrderSum(user.Id);
     int result = CompanyItemBLL.ExecuteCheckFunc(user.Id, item.ItemID, userLastOrderSum, orderId);
     if (result < 0)
     {
         message = ItemCheckResult.ContainsKey(result) ? ItemCheckResult[result] : "你无权抢购此优惠项目!";
         goto lbl_end;
     }
     //判断会员积分是否足够
     decimal point = DB.Select(SysMember.Columns.MemberBalance).From<SysMember>( )
                       .Where(SysMember.IdColumn).IsEqualTo(user.Id)
                       .ExecuteScalar<decimal>( );
     if (item.ItemPoint.HasValue && point < item.ItemPoint.Value)
     {
         message = "您的账户积分不足,无法抢购此优惠";
         goto lbl_end;
     }
     message = string.Empty;
     return true;
     lbl_end:
     return false;
 }
Example #6
0
        public static bool CancelCompanyItem(SysMember user, SysCompanyItem companyItem, SysMemberItem memberItem, out string message)
        {
            message = string.Empty;
            if (companyItem == null || user == null || memberItem == null)
            {
                message = "参数错误!";
                goto lbl_end;
            }
            if (companyItem.IsCanDel.HasValue && companyItem.IsCanDel.Value != 1)
            {
                message = "本单不支持退订";
                goto lbl_end; ;
            }
            if (memberItem.ItemStatus == (int)MemberCompanyItemStatus.Completed)
            {
                message = "此单你已经消费 ,不能再退订";
                goto lbl_end;
            }
            TransactionScope ts = null;
            SharedDbConnectionScope ss = null;
            try
            {
                ts = new TransactionScope( );
                ss = new SharedDbConnectionScope( );

                if (memberItem.PaymentID.HasValue)
                    Payment.Delete(memberItem.PaymentID.Value);
                SysMemberItem.Delete(memberItem.ItemID);
                companyItem.ItemClicked = companyItem.ItemClicked.Value - 1;
                companyItem.Save( );
                ts.Complete( );

                message = "退订成功";
                return true;
            }
            catch (Exception ex)
            {
                message = ex.Message;
                Logging.Log("CompanyItemBLL->CancelCompanyItem", ex, true);
            }
            finally
            {
                ss.Dispose( );
                ts.Dispose( );
            }
            lbl_end:
            return false;
        }
Example #7
0
 SysCompanyItem GetNewCompanyItem(string pic, string pic1, string pic2)
 {
     SysCompanyItem item = new SysCompanyItem
     {
         AreaDepth = txtAreaDepth.MulitAreaDepth,
         CompanyID = AppContext.Company.Id,
         ItemAddr = AppContext.Company.CompanyAddress,
         ItemAmount = txtItemAmount.Value,
         ItemClicked = 0,
         ItemDate = txtItemDate.Value,
         ItemEndDate = txtEndDate.Value,
         ItemLimit = cbAOnce.Checked ? 1 : 2,
         ItemPic = pic,
         ItemPic1 = pic1,
         ItemPic2 = pic2,
         ItemPoint = Convert.ToDecimal(txtPoint.Value),
         ItemSum = Convert.ToDecimal(txtItemSum.Value),
         ItemTitle = txtItemTitle.Text.Trim( ),
         ItemContent = txtItemContent.Text.Trim( ),
         ItemIntro = txtItemIntro.Text.Trim( ),
         ItemTips = txtItemTips.Text.Trim( ),
         ItemUsed = 0,
         IsDeleted = false,
         MemberLimit = GetMemberLimit( ),
         OrderSumLimit = Convert.ToDecimal(txtOrderSumLimit.Value),
         IsPass = false,
         IsCanDel = cbCanDel.Checked ? 1 : 0
     };
     return item;
 }
Example #8
0
 public Common.ServicesResult SaveItem(HttpContext context)
 {
     int code = -1;
     string message;
     object ret = null;
     try
     {
         var data = Utilities.JSONToObj<Dictionary<string, object>>(context.Request["item"]);
         if (!data.ContainsKey(SysCompanyItem.Columns.ItemID))
         {
             message = "数据格式不合法.";
             goto lbl_return;
         }
         var id = Utilities.ToInt(data[SysCompanyItem.Columns.ItemID]);
         data.Remove(SysCompanyItem.Columns.ItemID);
         SysCompanyItem item = SysCompanyItem.FetchByID(id);
         if (item != null || AppContextBase.Context.Company == null)
         {
             if (AppContextBase.Context.Company == null || item.CompanyID != AppContextBase.Context.Company.Id)
             {
                 message = "你没权限进行此操作.";
                 goto lbl_return;
             }
         }
         else
         {
             item = new SysCompanyItem( );
             item.MemberLimit = 0;
             item.IsCanDel = 0;
             item.IsPass = true;
             item.AreaDepth = AppContextBase.Context.Company.AreaDepth;
             item.IsDeleted = false;
             item.ItemClicked = 0;
             item.ItemUsed = 0;
         }
         foreach (var pair in data)
         {
             item.SetColumnValue(pair.Key, pair.Value);
         }
         var img = context.Request["img"];
         if (!string.IsNullOrEmpty(img))
         {
             var imgData = Convert.FromBase64String(img);
             var result = FileUpload.SaveUploadFile(imgData, FileType.Image, SaveType.CompanyItem, "a.jpg", out message, true);
             if (result == null)
                 goto lbl_return;
             item.ItemPic = result.RelPath;
         }
         if (item.ItemSum == null)
             item.ItemSum = 0M;
         if (item.ItemAmount == null)
             item.ItemAmount = 0;
         if (item.OrderSumLimit == null)
             item.OrderSumLimit = 0;
         item.CompanyID = AppContextBase.Context.User.CompanyId.Value;
         item.Save( );
         data[SysCompanyItem.Columns.ItemID] = item.ItemID;
         message = "保存成功.";
         code = 0;
         ret = data;
     }
     catch (Exception ex)
     {
         message = ex.Message;
     }
     lbl_return:
     return Common.ServicesResult.GetInstance(code, message, ret);
 }
Example #9
0
        public void Insert(string ItemTitle,string ItemIntro,string ItemContent,string ItemTips,int CompanyID,int? ItemAmount,decimal? ItemSum,decimal? ItemPoint,int? ItemClicked,int? ItemUsed,string ItemPic,string ItemPic1,string ItemPic2,string ItemAddr,DateTime? ItemDate,DateTime? ItemEndDate,decimal? OrderSumLimit,int? MemberLimit,int? ItemLimit,string AreaDepth,bool? IsDeleted,bool? IsPass,int? IsCanDel,string ItemPic3,string ItemPic4,string ItemPic5,string ItemPic6,string ItemPic7,string ItemInfo,string WorkingHours,bool? ItemStatus,int? OrderFreqLimit,decimal? ItemNeedPay)
        {
            SysCompanyItem item = new SysCompanyItem();

            item.ItemTitle = ItemTitle;

            item.ItemIntro = ItemIntro;

            item.ItemContent = ItemContent;

            item.ItemTips = ItemTips;

            item.CompanyID = CompanyID;

            item.ItemAmount = ItemAmount;

            item.ItemSum = ItemSum;

            item.ItemPoint = ItemPoint;

            item.ItemClicked = ItemClicked;

            item.ItemUsed = ItemUsed;

            item.ItemPic = ItemPic;

            item.ItemPic1 = ItemPic1;

            item.ItemPic2 = ItemPic2;

            item.ItemAddr = ItemAddr;

            item.ItemDate = ItemDate;

            item.ItemEndDate = ItemEndDate;

            item.OrderSumLimit = OrderSumLimit;

            item.MemberLimit = MemberLimit;

            item.ItemLimit = ItemLimit;

            item.AreaDepth = AreaDepth;

            item.IsDeleted = IsDeleted;

            item.IsPass = IsPass;

            item.IsCanDel = IsCanDel;

            item.ItemPic3 = ItemPic3;

            item.ItemPic4 = ItemPic4;

            item.ItemPic5 = ItemPic5;

            item.ItemPic6 = ItemPic6;

            item.ItemPic7 = ItemPic7;

            item.ItemInfo = ItemInfo;

            item.WorkingHours = WorkingHours;

            item.ItemStatus = ItemStatus;

            item.OrderFreqLimit = OrderFreqLimit;

            item.ItemNeedPay = ItemNeedPay;

            item.Save(UserName);
        }