예제 #1
0
        static void ReduceDeduct(OrderInfo order, Member member)
        {
            int referralDeduct = HiContext.Current.SiteSettings.ReferralDeduct;

            if (((referralDeduct > 0) && member.ReferralUserId.HasValue) && (member.ReferralUserId.Value > 0))
            {
                IUser user = Users.GetUser(member.ReferralUserId.Value, false);
                if ((user != null) && (user.UserRole == UserRole.Underling))
                {
                    Member member2 = user as Member;
                    if ((member.ParentUserId == member2.ParentUserId) && member2.IsOpenBalance)
                    {
                        decimal           num2           = member2.Balance - ((order.RefundAmount * referralDeduct) / 100M);
                        BalanceDetailInfo balanceDetails = new BalanceDetailInfo();
                        balanceDetails.UserId    = member2.UserId;
                        balanceDetails.UserName  = member2.Username;
                        balanceDetails.TradeDate = DateTime.Now;
                        balanceDetails.TradeType = TradeTypes.ReferralDeduct;
                        balanceDetails.Expenses  = new decimal?((order.RefundAmount * referralDeduct) / 100M);
                        balanceDetails.Balance   = num2;
                        balanceDetails.Remark    = string.Format("退回提成因为'{0}'的订单{1}已退款", order.Username, order.OrderId);
                        UnderlingProvider.Instance().AddUnderlingBalanceDetail(balanceDetails);
                    }
                }
            }
        }
예제 #2
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.Underling))
            {
                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;
                }
                SubsiteSalesProvider.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.Underling))
                    {
                        Member member2 = user2 as Member;
                        if ((member.ParentUserId == member2.ParentUserId) && member2.IsOpenBalance)
                        {
                            decimal           num3           = member2.Balance + ((order.GetTotal() * referralDeduct) / 100M);
                            BalanceDetailInfo balanceDetails = new BalanceDetailInfo();
                            balanceDetails.UserId    = member2.UserId;
                            balanceDetails.UserName  = member2.Username;
                            balanceDetails.TradeDate = DateTime.Now;
                            balanceDetails.TradeType = TradeTypes.ReferralDeduct;
                            balanceDetails.Income    = new decimal?((order.GetTotal() * referralDeduct) / 100M);
                            balanceDetails.Balance   = num3;
                            balanceDetails.Remark    = string.Format("提成来自'{0}'的订单{1}", order.Username, order.OrderId);
                            UnderlingProvider.Instance().AddUnderlingBalanceDetail(balanceDetails);
                        }
                    }
                }
                SubsiteSalesProvider.Instance().UpdateUserAccount(order.GetTotal(), point.Points, order.UserId);
                int historyPoint = SubsiteSalesProvider.Instance().GetHistoryPoint(member.UserId);
                SubsiteSalesProvider.Instance().ChangeMemberGrade(member.UserId, member.GradeId, historyPoint);
            }
            Users.ClearUserCache(user);
        }