예제 #1
0
        public static bool PointChageCoupon(int couponId, int needPoint, int currentPoint)
        {
            Member        user  = HiContext.Current.User as Member;
            UserPointInfo point = new UserPointInfo {
                OrderId   = string.Empty,
                UserId    = user.UserId,
                TradeDate = DateTime.Now,
                TradeType = UserPointTradeType.ChangeCoupon,
                Increased = null,
                Reduced   = new int?(needPoint),
                Points    = currentPoint - needPoint
            };

            if ((point.Points >= 0) && TradeProvider.Instance().AddMemberPoint(point))
            {
                CouponItemInfo couponItem = new CouponItemInfo {
                    CouponId     = couponId,
                    UserId       = new int?(user.UserId),
                    UserName     = user.Username,
                    EmailAddress = user.Email,
                    ClaimCode    = Guid.NewGuid().ToString().Replace("-", "").Substring(0, 15),
                    GenerateTime = DateTime.Now
                };
                Users.ClearUserCache(user);
                if (TradeProvider.Instance().SendClaimCodes(couponItem))
                {
                    return(true);
                }
            }
            return(false);
        }
예제 #2
0
        public static bool CutNeedPoint(int needPoint, string orderId)
        {
            Member        member        = HiContext.Current.User as Member;
            UserPointInfo userPointInfo = new UserPointInfo();

            userPointInfo.OrderId   = orderId;
            userPointInfo.UserId    = member.UserId;
            userPointInfo.TradeDate = DateTime.Now;
            userPointInfo.TradeType = UserPointTradeType.Change;
            userPointInfo.Reduced   = new int?(needPoint);
            userPointInfo.Points    = member.Points - needPoint;
            int arg_5B_0 = userPointInfo.Points;

            if (userPointInfo.Points < 0)
            {
                userPointInfo.Points = 0;
            }
            bool result;

            if (ShoppingProvider.Instance().AddMemberPoint(userPointInfo))
            {
                Users.ClearUserCache(member);
                result = true;
            }
            else
            {
                result = false;
            }
            return(result);
        }
예제 #3
0
        private static void UpdateUserAccount(OrderInfo order)
        {
            int num = order.UserId;

            if (num == 1100)
            {
                num = 0;
            }
            IUser user = Users.GetUser(num, false);

            if (user != null && user.UserRole == UserRole.Member)
            {
                Member        member        = user as Member;
                UserPointInfo userPointInfo = new UserPointInfo();
                userPointInfo.OrderId   = order.OrderId;
                userPointInfo.UserId    = member.UserId;
                userPointInfo.TradeDate = DateTime.Now;
                userPointInfo.TradeType = UserPointTradeType.Bounty;
                userPointInfo.Increased = new int?(order.Points);
                userPointInfo.Points    = order.Points + member.Points;
                int arg_A2_0 = userPointInfo.Points;
                if (userPointInfo.Points < 0)
                {
                    userPointInfo.Points = 2147483647;
                }
                SalesProvider.Instance().AddMemberPoint(userPointInfo);
                int referralDeduct = HiContext.Current.SiteSettings.ReferralDeduct;
                if (referralDeduct > 0 && member.ReferralUserId.HasValue && member.ReferralUserId.Value > 0)
                {
                    IUser user2 = Users.GetUser(member.ReferralUserId.Value, false);
                    if (user2 != null && user2.UserRole == UserRole.Member)
                    {
                        Member member2 = user2 as Member;
                        if (member.ParentUserId == member2.ParentUserId && member2.IsOpenBalance)
                        {
                            decimal           balance           = member2.Balance + order.GetTotal() * referralDeduct / 100m;
                            BalanceDetailInfo balanceDetailInfo = new BalanceDetailInfo();
                            balanceDetailInfo.UserId    = member2.UserId;
                            balanceDetailInfo.UserName  = member2.Username;
                            balanceDetailInfo.TradeDate = DateTime.Now;
                            balanceDetailInfo.TradeType = TradeTypes.ReferralDeduct;
                            balanceDetailInfo.Income    = new decimal?(order.GetTotal() * referralDeduct / 100m);
                            balanceDetailInfo.Balance   = balance;
                            balanceDetailInfo.Remark    = string.Format("提成来自{0}的订单{1}", order.Username, order.OrderId);
                            MemberProvider.Instance().InsertBalanceDetail(balanceDetailInfo);
                        }
                    }
                }
                SalesProvider.Instance().UpdateUserAccount(order.GetTotal(), order.UserId);
                int historyPoint = SalesProvider.Instance().GetHistoryPoint(member.UserId);
                SalesProvider.Instance().ChangeMemberGrade(member.UserId, member.GradeId, historyPoint);
                Users.ClearUserCache(user);
            }
        }
예제 #4
0
        static void UpdateUserAccount(OrderInfo order)
        {
            int userId = order.UserId;

            if (userId == 0x44c)
            {
                userId = 0;
            }
            IUser user = Users.GetUser(userId, false);

            if ((user != null) && (user.UserRole == UserRole.Member))
            {
                Member        member = user as Member;
                UserPointInfo point  = new UserPointInfo();
                point.OrderId   = order.OrderId;
                point.UserId    = member.UserId;
                point.TradeDate = DateTime.Now;
                point.TradeType = UserPointTradeType.Bounty;
                point.Increased = new int?(order.GetTotalPoints());
                point.Points    = order.GetTotalPoints() + member.Points;
                if ((point.Points > 0x7fffffff) || (point.Points < 0))
                {
                    point.Points = 0x7fffffff;
                }
                SalesProvider.Instance().AddMemberPoint(point);
                int referralDeduct = HiContext.Current.SiteSettings.ReferralDeduct;
                if (((referralDeduct > 0) && member.ReferralUserId.HasValue) && (member.ReferralUserId.Value > 0))
                {
                    IUser user2 = Users.GetUser(member.ReferralUserId.Value, false);
                    if ((user2 != null) && (user2.UserRole == UserRole.Member))
                    {
                        Member member2 = user2 as Member;
                        if ((member.ParentUserId == member2.ParentUserId) && member2.IsOpenBalance)
                        {
                            decimal           num3          = member2.Balance + ((order.GetTotal() * referralDeduct) / 100M);
                            BalanceDetailInfo balanceDetail = new BalanceDetailInfo();
                            balanceDetail.UserId    = member2.UserId;
                            balanceDetail.UserName  = member2.Username;
                            balanceDetail.TradeDate = DateTime.Now;
                            balanceDetail.TradeType = TradeTypes.ReferralDeduct;
                            balanceDetail.Income    = new decimal?((order.GetTotal() * referralDeduct) / 100M);
                            balanceDetail.Balance   = num3;
                            balanceDetail.Remark    = string.Format("提成来自'{0}'的订单{1}", order.Username, order.OrderId);
                            MemberProvider.Instance().InsertBalanceDetail(balanceDetail);
                        }
                    }
                }
                SalesProvider.Instance().UpdateUserAccount(order.GetTotal(), order.UserId);
                int historyPoint = SalesProvider.Instance().GetHistoryPoint(member.UserId);
                SalesProvider.Instance().ChangeMemberGrade(member.UserId, member.GradeId, historyPoint);
                Users.ClearUserCache(user);
            }
        }
예제 #5
0
        static void ReducedPoint(OrderInfo order, Member member)
        {
            UserPointInfo point = new UserPointInfo();

            point.OrderId   = order.OrderId;
            point.UserId    = member.UserId;
            point.TradeDate = DateTime.Now;
            point.TradeType = UserPointTradeType.Refund;
            point.Reduced   = new int?(Convert.ToInt32((decimal)(order.RefundAmount / HiContext.Current.SiteSettings.PointsRate)));
            point.Points    = member.Points - point.Reduced.Value;
            SalesProvider.Instance().AddMemberPoint(point);
        }
예제 #6
0
        private static void ReducedPoint(OrderInfo order, Member member)
        {
            UserPointInfo point = new UserPointInfo();

            point.OrderId   = order.OrderId;
            point.UserId    = member.UserId;
            point.TradeDate = DateTime.Now;
            point.TradeType = UserPointTradeType.Refund;
            point.Reduced   = new int?(order.Points);
            point.Points    = member.Points - point.Reduced.Value;
            SalesProvider.Instance().AddMemberPoint(point);
        }
예제 #7
0
        private static void ReducedPoint(OrderInfo order, Member member)
        {
            UserPointInfo userPointInfo = new UserPointInfo();

            userPointInfo.OrderId   = order.OrderId;
            userPointInfo.UserId    = member.UserId;
            userPointInfo.TradeDate = DateTime.Now;
            userPointInfo.TradeType = UserPointTradeType.Refund;
            userPointInfo.Reduced   = new int?(order.Points);
            userPointInfo.Points    = member.Points - userPointInfo.Reduced.Value;
            SalesProvider.Instance().AddMemberPoint(userPointInfo);
        }
예제 #8
0
 public override bool AddMemberPoint(UserPointInfo point)
 {
     System.Data.Common.DbCommand sqlStringCommand = this.database.GetSqlStringCommand("INSERT INTO Hishop_PointDetails (OrderId,UserId, TradeDate, TradeType, Increased, Reduced, Points, Remark)VALUES(@OrderId,@UserId, @TradeDate, @TradeType, @Increased, @Reduced, @Points, @Remark)");
     this.database.AddInParameter(sqlStringCommand, "OrderId", System.Data.DbType.String, point.OrderId);
     this.database.AddInParameter(sqlStringCommand, "UserId", System.Data.DbType.Int32, point.UserId);
     this.database.AddInParameter(sqlStringCommand, "TradeDate", System.Data.DbType.DateTime, point.TradeDate);
     this.database.AddInParameter(sqlStringCommand, "TradeType", System.Data.DbType.Int32, (int)point.TradeType);
     this.database.AddInParameter(sqlStringCommand, "Increased", System.Data.DbType.Int32, point.Increased.HasValue ? point.Increased.Value : 0);
     this.database.AddInParameter(sqlStringCommand, "Reduced", System.Data.DbType.Int32, point.Reduced.HasValue ? point.Reduced.Value : 0);
     this.database.AddInParameter(sqlStringCommand, "Points", System.Data.DbType.Int32, point.Points);
     this.database.AddInParameter(sqlStringCommand, "Remark", System.Data.DbType.String, point.Remark);
     return(this.database.ExecuteNonQuery(sqlStringCommand) > 0);
 }
예제 #9
0
        static void ReducedPoint(OrderInfo order, Member member)
        {
            UserPointInfo point = new UserPointInfo();

            point.OrderId   = order.OrderId;
            point.UserId    = member.UserId;
            point.TradeDate = DateTime.Now;
            point.TradeType = UserPointTradeType.Refund;
            SiteSettings masterSettings = SettingsManager.GetMasterSettings(false);

            point.Reduced = new int?(Convert.ToInt32((decimal)(order.RefundAmount / masterSettings.PointsRate)));
            point.Points  = member.Points - point.Reduced.Value;
            SubsiteSalesProvider.Instance().AddMemberPoint(point);
        }
예제 #10
0
        public static bool CutNeedPoint(int needPoint)
        {
            Member        user  = HiContext.Current.User as Member;
            UserPointInfo point = new UserPointInfo();

            point.UserId    = user.UserId;
            point.TradeDate = DateTime.Now;
            point.TradeType = UserPointTradeType.Change;
            point.Reduced   = new int?(needPoint);
            point.Points    = user.Points - needPoint;
            if ((point.Points > 0x7fffffff) || (point.Points < 0))
            {
                point.Points = 0;
            }
            if (ShoppingProvider.Instance().AddMemberPoint(point))
            {
                Users.ClearUserCache(user);
                return(true);
            }
            return(false);
        }
예제 #11
0
        public static bool PointChageCoupon(int couponId, int needPoint, int currentPoint)
        {
            Member        member        = HiContext.Current.User as Member;
            UserPointInfo userPointInfo = new UserPointInfo();

            userPointInfo.OrderId   = string.Empty;
            userPointInfo.UserId    = member.UserId;
            userPointInfo.TradeDate = DateTime.Now;
            userPointInfo.TradeType = UserPointTradeType.ChangeCoupon;
            userPointInfo.Increased = null;
            userPointInfo.Reduced   = new int?(needPoint);
            userPointInfo.Points    = currentPoint - needPoint;
            bool result;

            if (userPointInfo.Points < 0)
            {
                result = false;
            }
            else
            {
                if (TradeProvider.Instance().AddMemberPoint(userPointInfo))
                {
                    CouponItemInfo couponItemInfo = new CouponItemInfo();
                    couponItemInfo.CouponId     = couponId;
                    couponItemInfo.UserId       = new int?(member.UserId);
                    couponItemInfo.UserName     = member.Username;
                    couponItemInfo.EmailAddress = member.Email;
                    couponItemInfo.ClaimCode    = Guid.NewGuid().ToString().Replace("-", "").Substring(0, 15);
                    couponItemInfo.GenerateTime = DateTime.Now;
                    Users.ClearUserCache(member);
                    if (TradeProvider.Instance().SendClaimCodes(couponItemInfo))
                    {
                        result = true;
                        return(result);
                    }
                }
                result = false;
            }
            return(result);
        }
예제 #12
0
 public abstract bool AddMemberPoint(UserPointInfo point);
예제 #13
0
        public static bool UserPayOrder(OrderInfo order, bool isBalancePayOrder)
        {
            bool flag = false;

            if (order.CheckAction(OrderActions.BUYER_PAY))
            {
                using (DbConnection connection = DatabaseFactory.CreateDatabase().CreateConnection())
                {
                    connection.Open();
                    DbTransaction dbTran = connection.BeginTransaction();
                    try
                    {
                        if (!TradeProvider.Instance().UserPayOrder(order, isBalancePayOrder, dbTran))
                        {
                            dbTran.Rollback();
                            return(false);
                        }
                        if ((HiContext.Current.SiteSettings.IsDistributorSettings && (order.GroupBuyId <= 0)) && !PurchaseOrderProvider.CreateInstance().CreatePurchaseOrder(order, dbTran))
                        {
                            dbTran.Rollback();
                            return(false);
                        }
                        flag = true;
                        dbTran.Commit();
                    }
                    catch
                    {
                        dbTran.Rollback();
                        return(false);
                    }
                    finally
                    {
                        connection.Close();
                    }
                }
                if (!flag)
                {
                    return(flag);
                }
                if (!HiContext.Current.SiteSettings.IsDistributorSettings)
                {
                    TradeProvider.Instance().UpdateStockPayOrder(order.OrderId);
                }
                TradeProvider.Instance().UpdateProductSaleCounts(order.LineItems);
                if ((order.UserId == 0) || (order.UserId == 0x44c))
                {
                    return(flag);
                }
                IUser user = Users.GetUser(order.UserId, false);
                if (((user == null) || (user.UserRole != UserRole.Member)) && ((user == null) || (user.UserRole != UserRole.Underling)))
                {
                    return(flag);
                }
                Member        member = user as Member;
                UserPointInfo point  = new UserPointInfo {
                    OrderId   = order.OrderId,
                    UserId    = member.UserId,
                    TradeDate = DateTime.Now,
                    TradeType = UserPointTradeType.Bounty,
                    Increased = new int?(order.Points),
                    Points    = order.Points + member.Points
                };
                if ((point.Points > 0x7fffffff) || (point.Points < 0))
                {
                    point.Points = 0x7fffffff;
                }
                TradeProvider.Instance().AddMemberPoint(point);
                int referralDeduct = HiContext.Current.SiteSettings.ReferralDeduct;
                if (((referralDeduct > 0) && member.ReferralUserId.HasValue) && (member.ReferralUserId.Value > 0))
                {
                    IUser user2 = Users.GetUser(member.ReferralUserId.Value, false);
                    if ((user2 != null) && ((user2.UserRole == UserRole.Member) || (user2.UserRole == UserRole.Underling)))
                    {
                        Member member2 = user2 as Member;
                        if ((member.ParentUserId == member2.ParentUserId) && member2.IsOpenBalance)
                        {
                            decimal           num2           = member2.Balance + ((order.GetTotal() * referralDeduct) / 100M);
                            BalanceDetailInfo balanceDetails = new BalanceDetailInfo {
                                UserId    = member2.UserId,
                                UserName  = member2.Username,
                                TradeDate = DateTime.Now,
                                TradeType = TradeTypes.ReferralDeduct,
                                Income    = new decimal?((order.GetTotal() * referralDeduct) / 100M),
                                Balance   = num2,
                                Remark    = string.Format("提成来自'{0}'的订单{1}", order.Username, order.OrderId)
                            };
                            PersonalProvider.Instance().AddBalanceDetail(balanceDetails);
                        }
                    }
                }
                TradeProvider.Instance().UpdateUserAccount(order.GetTotal(), point.Points, order.UserId);
                int historyPoint = TradeProvider.Instance().GetHistoryPoint(member.UserId);
                TradeProvider.Instance().ChangeMemberGrade(member.UserId, member.GradeId, historyPoint);
                Users.ClearUserCache(user);
            }
            return(flag);
        }
예제 #14
0
        public static bool UserPayOrder(OrderInfo order, bool isBalancePayOrder)
        {
            bool flag = false;
            bool result;

            if (order.CheckAction(OrderActions.BUYER_PAY))
            {
                Database database = DatabaseFactory.CreateDatabase();
                using (System.Data.Common.DbConnection dbConnection = database.CreateConnection())
                {
                    dbConnection.Open();
                    System.Data.Common.DbTransaction dbTransaction = dbConnection.BeginTransaction();
                    try
                    {
                        if (!TradeProvider.Instance().UserPayOrder(order, isBalancePayOrder, dbTransaction))
                        {
                            dbTransaction.Rollback();
                            result = false;
                            return(result);
                        }
                        if (HiContext.Current.SiteSettings.IsDistributorSettings && order.GroupBuyId <= 0)
                        {
                            PurchaseOrderProvider purchaseOrderProvider = PurchaseOrderProvider.CreateInstance();
                            if (!purchaseOrderProvider.CreatePurchaseOrder(order, dbTransaction))
                            {
                                dbTransaction.Rollback();
                                result = false;
                                return(result);
                            }
                        }
                        flag = true;
                        dbTransaction.Commit();
                    }
                    catch
                    {
                        dbTransaction.Rollback();
                        result = false;
                        return(result);
                    }
                    finally
                    {
                        dbConnection.Close();
                    }
                }
                if (flag)
                {
                    if (!HiContext.Current.SiteSettings.IsDistributorSettings)
                    {
                        TradeProvider.Instance().UpdateStockPayOrder(order.OrderId);
                    }
                    TradeProvider.Instance().UpdateProductSaleCounts(order.LineItems);
                    if (order.UserId != 0 && order.UserId != 1100)
                    {
                        IUser user = Users.GetUser(order.UserId, false);
                        bool  arg_145_0;
                        if (user != null)
                        {
                            if (user.UserRole == UserRole.Member)
                            {
                                arg_145_0 = false;
                                goto IL_145;
                            }
                        }
                        arg_145_0 = (user == null || user.UserRole != UserRole.Underling);
IL_145:
                        if (!arg_145_0)
                        {
                            Member        member        = user as Member;
                            UserPointInfo userPointInfo = new UserPointInfo();
                            userPointInfo.OrderId   = order.OrderId;
                            userPointInfo.UserId    = member.UserId;
                            userPointInfo.TradeDate = DateTime.Now;
                            userPointInfo.TradeType = UserPointTradeType.Bounty;
                            userPointInfo.Increased = new int?(order.Points);
                            userPointInfo.Points    = order.Points + member.Points;
                            int arg_1B7_0 = userPointInfo.Points;
                            if (userPointInfo.Points < 0)
                            {
                                userPointInfo.Points = 2147483647;
                            }
                            TradeProvider.Instance().AddMemberPoint(userPointInfo);
                            int referralDeduct = HiContext.Current.SiteSettings.ReferralDeduct;
                            if (referralDeduct > 0 && member.ReferralUserId.HasValue && member.ReferralUserId.Value > 0)
                            {
                                IUser user2 = Users.GetUser(member.ReferralUserId.Value, false);
                                if (user2 != null && (user2.UserRole == UserRole.Member || user2.UserRole == UserRole.Underling))
                                {
                                    Member member2 = user2 as Member;
                                    if (member.ParentUserId == member2.ParentUserId && member2.IsOpenBalance)
                                    {
                                        decimal           balance           = member2.Balance + order.GetTotal() * referralDeduct / 100m;
                                        BalanceDetailInfo balanceDetailInfo = new BalanceDetailInfo();
                                        balanceDetailInfo.UserId    = member2.UserId;
                                        balanceDetailInfo.UserName  = member2.Username;
                                        balanceDetailInfo.TradeDate = DateTime.Now;
                                        balanceDetailInfo.TradeType = TradeTypes.ReferralDeduct;
                                        balanceDetailInfo.Income    = new decimal?(order.GetTotal() * referralDeduct / 100m);
                                        balanceDetailInfo.Balance   = balance;
                                        balanceDetailInfo.Remark    = string.Format("提成来自'{0}'的订单{1}", order.Username, order.OrderId);
                                        PersonalProvider.Instance().AddBalanceDetail(balanceDetailInfo);
                                    }
                                }
                            }
                            TradeProvider.Instance().UpdateUserAccount(order.GetTotal(), userPointInfo.Points, order.UserId);
                            int historyPoint = TradeProvider.Instance().GetHistoryPoint(member.UserId);
                            TradeProvider.Instance().ChangeMemberGrade(member.UserId, member.GradeId, historyPoint);
                            Users.ClearUserCache(user);
                        }
                    }
                }
            }
            result = flag;
            return(result);
        }