Пример #1
0
        /// <summary>
        /// 激活好友
        /// </summary>
        /// <param name="fromUserName"></param>
        /// <param name="toUserName"></param>
        public void ActivePartner(string fromUserName, string toUserName, string name)
        {
            var toMember = GetMember(toUserName);

            if (toMember.Status != MemberStatus.UnActived)
            {
                throw new PlatformException(ErrorCode.UserIsActived);
            }
            var fromMember = GetMember(fromUserName);
            var userNames  = toMember.Chain.Split(new[] { ChainStr }, StringSplitOptions.RemoveEmptyEntries);

            if (!userNames.Contains(fromUserName))
            {
                throw new PlatformException(ErrorCode.ErrorInvitRelationship);
            }
            if (fromMember.CopperBalance < MiddleTier.BusinessConfig.ActivePartnerNeedAmount)
            {
                throw new PlatformException(ErrorCode.AccountBalanceNotEnough);
            }
            //2、用户注册后,默认是未激活状态(这个又改回来了),推荐人可以激活他下面的所有用户(往下N代都行),直推从好友列表中激活就可以了。不是直推的让他输入登录名和姓名,匹配上了就可以激活(要判断是否是A下面的用户),激活动作扣除激活人的100$的银,并且往被激活人账户里充100$的银(100这个参数做成可配的)。 冬冬要做个激活的页面。
            ISession     session      = DataBase.Session;
            ITransaction iTransaction = session.BeginTransaction(IsolationLevel.ReadCommitted);

            try
            {
                fromMember.CopperBalance -= MiddleTier.BusinessConfig.ActivePartnerNeedAmount;
                toMember.SilverBalance   += MiddleTier.BusinessConfig.ActivePartnerNeedAmount;
                toMember.Status           = MemberStatus.Actived;
                //6、激活成功送钻石一个(给推荐人),每增加一个矿工送一个钻石,选金厂送5个,冶炼厂送10个!钻石以后有用! (这个数字做成可配的)
                fromMember.DiamondBalance += MiddleTier.BusinessConfig.ActivePartnerRewardDiamondAmount;
                DataBase.Update(toMember, session);
                DataBase.Update(fromMember, session);

                //创建转账单
                var transferBill = new TransferBill
                {
                    FromMemberUserName = fromUserName,
                    FromAccountType    = AccountType.Copper,
                    ToMemberUserName   = toUserName,
                    ToAccountType      = AccountType.Silver,
                    Amount             = MiddleTier.BusinessConfig.ActivePartnerNeedAmount,
                    Status             = TransferBillStatus.Completed,
                    TransferBillType   = TransferBillType.Active,
                    ExpiredAt          = DateTime.Now
                };
                DataBase.Save(transferBill, session);
                var ffMemberIncomeRecord = new MemberIncomeRecord
                {
                    Amount                  = MiddleTier.BusinessConfig.ActivePartnerRewardDiamondAmount,
                    MemberUserName          = fromMember.UserName,
                    DiamondAmount           = MiddleTier.BusinessConfig.ActivePartnerRewardDiamondAmount,
                    CopperAmount            = -MiddleTier.BusinessConfig.ActivePartnerNeedAmount,
                    Type                    = MemberIncomeType.InviteActive,
                    ReferenceMemberUsername = toUserName
                };
//				var fffMemberIncomeRecord = new MemberIncomeRecord
//				{
//					Amount = MiddleTier.BusinessConfig.ActivePartnerNeedAmount,
//					MemberUserName = toUserName,
//					GoldAmount = MiddleTier.BusinessConfig.ActivePartnerNeedAmount,
//					Type = MemberIncomeType.InviteActiveCost,
//					ReferenceMemberUsername = fromUserName
//				};
                DataBase.Save(ffMemberIncomeRecord, session);
                //				DataBase.Save(fffMemberIncomeRecord, session);
                if (toMember.RecommendUserName.IsNotNullOrEmpty())
                {
                    var recommendCount     = DataBase.Count <Member>(e => e.RecommendUserName == toMember.RecommendUserName && new [] { MemberStatus.Actived, MemberStatus.InUse, MemberStatus.SealUp }.Contains(e.Status), session);
                    var slagEquipmentCount = DataBase.Count <SlagRefiningEquipment>(e => e.MemberUserName == toMember.RecommendUserName && e.SourceType == SlagRefiningEquipmentSourceType.InvitingAwards, session);
                    if (slagEquipmentCount < MiddleTier.BusinessConfig.SlagRefiningEquipmentCountLimit && (int)(recommendCount / MiddleTier.BusinessConfig.SlagRefiningEquipmentRewardInviteMemberCount) > slagEquipmentCount)                    //每个推荐人精炼设备上限&&达到发放奖励的推荐人数
                    {
                        //矿渣提炼炉上限是10台,每推荐10名合伙人送一台,每台可精炼矿渣总量的0.3%黄金,前两台0.5%,每台使用期限一年!
                        DataBase.Save(new SlagRefiningEquipment
                        {
                            MemberUserName = toMember.RecommendUserName,
                            LastRefiningAt = DateTime.Now,
                            Percentage     = slagEquipmentCount < MiddleTier.BusinessConfig.SlagRefiningEquipmentTopCount ? MiddleTier.BusinessConfig.SlagRefiningEquipmentTopPercentage : MiddleTier.BusinessConfig.SlagRefiningEquipmentNormalPercentage,
                            SourceType     = SlagRefiningEquipmentSourceType.InvitingAwards,
                            ValidityTerm   = DateTime.Now.AddDays(MiddleTier.BusinessConfig.SlagRefiningEquipmentUseTermDay)
                        }, session);
                    }
                }
                iTransaction.Commit();
            }
            catch (Exception ex)
            {
                iTransaction.Rollback();
                MiddleTier.LogManager.Error(ex);
                if (ex is PlatformException platformException)
                {
                    throw platformException;
                }
                throw new PlatformException(ErrorCode.SystemError);
            }
            finally
            {
                session.Close();
            }
        }
Пример #2
0
        /// <summary>
        /// 用户采集
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="id"></param>
        public void MemberCollect(string userName, long id)
        {
            //数据校验
            var member = MiddleTier.MemberManager.GetMember(userName);

            if (member == null)
            {
                throw new PlatformException(ErrorCode.UserNameIsNotExisted);
            }
            var memberMiningEquipment = DataBase.Get <MemberMiningEquipment>(e => e.Id == id && e.MemberUserName == userName);

            if (memberMiningEquipment == null)
            {
                throw new PlatformException(ErrorCode.ErrorId);
            }
            var collectStatus = GetMemberMiningEquipmentStatus(memberMiningEquipment.LastCollectAt);

            if (collectStatus != MemberMiningEquipmentStatus.CanCollected)
            {
                throw new PlatformException(ErrorCode.MiningEquipmentCollectError);
            }
            ISession     session      = DataBase.Session;
            ITransaction iTransaction = session.BeginTransaction(IsolationLevel.ReadCommitted);

            try
            {
                var amount = MemberMiningEquipmentCalculate(memberMiningEquipment);
                //新增采集收益记录
                var memberIncomeRecord = new MemberIncomeRecord
                {
                    GoldAmount       = amount * MiddleTier.BusinessConfig.CollectGoldPercentage / 100,
                    CopperAmount     = amount * MiddleTier.BusinessConfig.CollectCopperPercentage / 100,
                    SilverAmount     = amount * MiddleTier.BusinessConfig.CollectSilverPercentage / 100,
                    SlagAmount       = amount * MiddleTier.BusinessConfig.CollectSlagPercentage / 100,
                    SlagToGoldAmount = 0,
                    Amount           = amount,
                    MemberUserName   = member.UserName,
                    Type             = MemberIncomeType.Collect
                };
                DataBase.Save(memberIncomeRecord, session);
                //更新账户余额
//				member.GoldBalance += memberIncomeRecord.GoldAmount;
//				member.SilverBalance += memberIncomeRecord.SilverAmount;
//				member.CopperBalance += memberIncomeRecord.CopperAmount;
//				member.SlagBalance += memberIncomeRecord.SlagAmount;
//				member.CollectAmount += memberIncomeRecord.Amount;
//				DataBase.Update(member, session);
                var sql = MiddleTier.MemberManager.GetUpdateBalanceSql(member.UserName, memberIncomeRecord.GoldAmount,
                                                                       memberIncomeRecord.SilverAmount, memberIncomeRecord.CopperAmount, memberIncomeRecord.SlagAmount,
                                                                       memberIncomeRecord.Amount);
                DataBase.ExecuteBySql(sql, session);
                //给邀请人发送奖励
                //原三层减为两层,推荐收益的3%直接显示累计在黄金里!
                //				var inviters = GetInviters(member, MiddleTier.BusinessConfig.ProfitTransmitTime,session);
                //				inviters.ForEach(inviter =>
                //				{
                //					var feedBackAmount = amount * MiddleTier.BusinessConfig.ProfitTransmitPercentage / 100;
                //					//Todo 是金账户么?
                //					inviter.GoldBalance += feedBackAmount;
                //					inviter.FeedBackAmount += feedBackAmount;
                //					DataBase.Update(inviter, session);
                //				});
                //刷新采矿机的状态
                //每5天收矿一次(用户手动点击劳工或矿机收矿),当天24点前必须收矿,错过了就不能收了,10天收两次,10天两次都错过收矿,将该劳工(或矿机)锁定10天!
                memberMiningEquipment.LastCollectAt = DateTime.Now;
                memberMiningEquipment.OverDueTime   = 0;
                memberMiningEquipment.Status        = MemberMiningEquipmentStatus.InUse;
                DataBase.Update(memberMiningEquipment, session);
                iTransaction.Commit();
            }
            catch (Exception ex)
            {
                iTransaction.Rollback();
                MiddleTier.LogManager.Error(ex);
                if (ex is PlatformException platformException)
                {
                    throw platformException;
                }
                throw new PlatformException(ErrorCode.SystemError);
            }
            finally
            {
                session.Close();
            }
        }
Пример #3
0
        /// <summary>
        /// 用户精炼
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="id"></param>
        public void MemberRefining(string userName, long id)
        {
            var member = MiddleTier.MemberManager.GetMember(userName);

            if (member == null)
            {
                throw new PlatformException(ErrorCode.UserNameIsNotExisted);
            }
            var slagRefiningEquipment = DataBase.Get <SlagRefiningEquipment>(e => e.Id == id && e.MemberUserName == userName);

            if (slagRefiningEquipment == null)
            {
                throw new PlatformException(ErrorCode.ErrorId);
            }
            if (slagRefiningEquipment.LastRefiningAt.Date >= DateTime.Now.Date)
            {
                throw new PlatformException(ErrorCode.RefiningTooBusy);
            }
            ISession     session      = DataBase.Session;
            ITransaction iTransaction = session.BeginTransaction(IsolationLevel.ReadCommitted);

            try
            {
                //比如矿渣余额1000    黄金账户增加金额=1000*精炼百分比(0.3)*精炼数量
                //后台设个系数吧,矿渣和黄金的提炼比例。 默认1: 1。比如提炼出1G黄金就扣1G矿渣。 如果1: 2,就是提炼1G黄金,扣2G矿渣。
                var amount = member.SlagBalance * slagRefiningEquipment.Percentage / 100;
                member.GoldBalance += amount;
                member.SlagBalance -= amount * MiddleTier.BusinessConfig.RefiningConsumeRatio;
                DataBase.Update(member, session);
                slagRefiningEquipment.LastRefiningAt = DateTime.Now;
                DataBase.Update(slagRefiningEquipment, session);
                //创建转账单
                var transferBill = new TransferBill
                {
                    FromMemberUserName = userName,
                    FromAccountType    = AccountType.Slag,
                    ToMemberUserName   = userName,
                    ToAccountType      = AccountType.Gold,
                    Amount             = amount,
                    Status             = TransferBillStatus.Completed,
                    TransferBillType   = TransferBillType.SlagRefine,
                    ExpiredAt          = DateTime.Now,
                    ServiceCharge      = amount * MiddleTier.BusinessConfig.RefiningConsumeRatio - amount
                };
                DataBase.Save(transferBill, session);
                var memberIncomeRecord = new MemberIncomeRecord
                {
                    Amount         = amount,
                    GoldAmount     = amount,
                    SlagAmount     = -amount * MiddleTier.BusinessConfig.RefiningConsumeRatio,
                    Type           = MemberIncomeType.Refining,
                    MemberUserName = userName
                };
                DataBase.Save(memberIncomeRecord, session);
                iTransaction.Commit();
            }
            catch (Exception ex)
            {
                iTransaction.Rollback();
                MiddleTier.LogManager.Error(ex);
                if (ex is PlatformException platformException)
                {
                    throw platformException;
                }
                throw new PlatformException(ErrorCode.SystemError);
            }
            finally
            {
                session.Close();
            }
        }
Пример #4
0
        public void MemberBuyMiningEquipment(string userName, MiningEquipmentType type)
        {
            //数据校验
            var member = MiddleTier.MemberManager.GetMember(userName);

            if (member == null)
            {
                throw new PlatformException(ErrorCode.UserNameIsNotExisted);
            }
            var miningEquipment = DataBase.Get <MiningEquipment>(e => e.Type == type);

            if (miningEquipment == null)
            {
                throw new PlatformException(ErrorCode.ErrorId);
            }
            if (member.SilverBalance < miningEquipment.Price)
            {
                throw new PlatformException(ErrorCode.AccountBalanceNotEnough);
            }
            //11、可以设置购买劳工和矿机的上限(比如劳工设置最多可以买10个,半自动矿机最多可以买5个),这个数字后台可以调整。
            var count      = DataBase.Count <MemberMiningEquipment>(e => e.MemberUserName == userName && e.Type == type);
            var limitCount = type == MiningEquipmentType.Miner
                                ? MiddleTier.BusinessConfig.MemberMiningEquipmentType1Limit
                                : (
                type == MiningEquipmentType.GoldFactory
                                                ? MiddleTier.BusinessConfig.MemberMiningEquipmentType2Limit
                                                : MiddleTier.BusinessConfig.MemberMiningEquipmentType3Limit);

            if (count >= limitCount)
            {
                throw new PlatformException(ErrorCode.EquipmentCountLimit);
            }
            ISession     session      = DataBase.Session;
            ITransaction iTransaction = session.BeginTransaction(IsolationLevel.ReadCommitted);

            try
            {
                var diamondAmount = type == MiningEquipmentType.Miner
                                        ? MiddleTier.BusinessConfig.PartnerBuyEquipmentType1RewardDiamondAmount
                                        : (
                    type == MiningEquipmentType.GoldFactory
                                                        ? MiddleTier.BusinessConfig.PartnerBuyEquipmentType2RewardDiamondAmount
                                                        : MiddleTier.BusinessConfig.PartnerBuyEquipmentType3RewardDiamondAmount);
                //扣除银余额
                member.SilverBalance -= miningEquipment.Price;
                if (member.Status == MemberStatus.Actived)
                {
                    member.Status = MemberStatus.InUse;
                }
                if (member.ExpiredAt < DateTime.Now.AddDays(miningEquipment.ExpirationDay + 20))
                {
                    member.ExpiredAt = DateTime.Now.AddDays(miningEquipment.ExpirationDay + 20);
                }
                member.DiamondBalance += diamondAmount;
                DataBase.Update(member, session);
//				DataBase.ExecuteBySql($"UPDATE Members set SilverBalance = SilverBalance-{miningEquipment.Price}  Where UserName='******';");
                //新增用户挖矿设备
                var memberMiningEquipment = new MemberMiningEquipment
                {
                    MemberUserName = userName,
                    LastCollectAt  = DateTime.Now,
                    OverDueTime    = 0,
                    Percentage     = miningEquipment.Percentage,
                    PurchasePrice  = miningEquipment.Price,
                    Type           = miningEquipment.Type,
                    ValidityTerm   = DateTime.Now.AddDays(miningEquipment.ExpirationDay),
                    Status         = MemberMiningEquipmentStatus.InUse
                };
                DataBase.Save(memberMiningEquipment, session);
//				2.用户购买矿工后,给她的直接上级奖励矿工价值的25 %(这25 % 中30 % 是金,70 % 是狂渣),她的间接推荐人(上级的上级)拿矿工价值的10 %。
//				限制条件:每种类型矿工的前30个,第31个开始就不给上面的奖励了。
                if (DataBase.Count <MemberMiningEquipment>(e => e.MemberUserName == member.UserName && e.Type == type, session) <= 30)
                {
                    if (member.RecommendUserName.IsNotNullOrEmpty())
                    {
                        var fRecommendUser = DataBase.Get <Member>(e => e.UserName == member.RecommendUserName, session);
                        if (fRecommendUser != null)
                        {
                            //Todo 收益记录
                            var fAmount = miningEquipment.Price / 4;
                            fRecommendUser.GoldBalance        += fAmount * 0.3m;
                            fRecommendUser.FeedBackAmount     += fAmount;
                            fRecommendUser.FeedBackGoldAmount += fAmount * 0.3m;
                            fRecommendUser.SlagBalance        += fAmount * 0.7m;
                            fRecommendUser.FeedBackSlagAmount += fAmount * 0.7m;
                            DataBase.Update(fRecommendUser, session);
                            var fMemberIncomeRecord = new MemberIncomeRecord
                            {
                                Amount                  = fAmount,
                                GoldAmount              = fAmount * 0.3m,
                                SlagAmount              = fAmount * 0.7m,
                                MemberUserName          = fRecommendUser.UserName,
                                Type                    = MemberIncomeType.InviteFeedback,
                                ReferenceMemberUsername = userName
                            };
                            DataBase.Save(fMemberIncomeRecord, session);
                            var ffMemberIncomeRecord = new MemberIncomeRecord
                            {
                                Amount                  = diamondAmount,
                                MemberUserName          = userName,
                                DiamondAmount           = diamondAmount,
                                Type                    = MemberIncomeType.EquipmentBuyFeedback,
                                ReferenceMemberUsername = userName
                            };
                            DataBase.Save(ffMemberIncomeRecord, session);
                            if (fRecommendUser.RecommendUserName.IsNotNullOrEmpty())
                            {
                                var sRecommendUser = DataBase.Get <Member>(e => e.UserName == fRecommendUser.RecommendUserName, session);
                                if (sRecommendUser != null)
                                {
                                    var sRecommendUserRefineEquipmentCount =
                                        DataBase.Count <SlagRefiningEquipment>(e => e.MemberUserName == sRecommendUser.UserName);
                                    if (sRecommendUserRefineEquipmentCount >= 4)
                                    {
                                        var sAmount = miningEquipment.Price / 10;
                                        sRecommendUser.GoldBalance        += sAmount * 0.3m;
                                        sRecommendUser.FeedBackAmount     += sAmount;
                                        sRecommendUser.FeedBackGoldAmount += sAmount * 0.3m;
                                        sRecommendUser.SlagBalance        += sAmount * 0.7m;
                                        sRecommendUser.FeedBackSlagAmount += sAmount * 0.7m;
                                        DataBase.Update(sRecommendUser, session);
                                        var sMemberIncomeRecord = new MemberIncomeRecord
                                        {
                                            Amount                  = sAmount,
                                            GoldAmount              = sAmount,
                                            MemberUserName          = sRecommendUser.UserName,
                                            Type                    = MemberIncomeType.EquipmentBuyFeedback,
                                            ReferenceMemberUsername = userName
                                        };
                                        DataBase.Save(sMemberIncomeRecord, session);
                                    }
                                }
                            }
                        }
                    }
                    //给邀请人发放奖励-矿渣
                    //增加直接推荐奖励,推荐的玩家每购买一台矿机,推荐人都有矿机价值的10%奖励,累计到矿渣!
//					var inviters = GetInviters(member, 2, session);
//					inviters.ForEach(inviter =>
//					{
//						inviter.SlagBalance +=
//							memberMiningEquipment.PurchasePrice / 100 * MiddleTier.BusinessConfig.EquipmentBuyRewardPercentage;
//						//6、激活成功送钻石一个(给推荐人),每增加一个矿工送一个钻石,选金厂送5个,冶炼厂送10个!钻石以后有用! (这个数字做成可配的)
//						inviter.DiamondBalance += type == MiningEquipmentType.Type1
//							? MiddleTier.BusinessConfig.PartnerBuyEquipmentType1RewardDiamondAmount
//							: (
//								type == MiningEquipmentType.Type2
//									? MiddleTier.BusinessConfig.PartnerBuyEquipmentType2RewardDiamondAmount
//									: MiddleTier.BusinessConfig.PartnerBuyEquipmentType3RewardDiamondAmount);
//						DataBase.Update(inviter, session);
//					});
                }
                iTransaction.Commit();
            }
            catch (Exception ex)
            {
                iTransaction.Rollback();
                MiddleTier.LogManager.Error(ex);
                if (ex is PlatformException platformException)
                {
                    throw platformException;
                }
                throw new PlatformException(ErrorCode.SystemError);
            }
            finally
            {
                session.Close();
            }
        }
Пример #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="record"></param>
        /// <returns></returns>
        public static string ToContent(this MemberIncomeRecord record)
        {
            string content  = "";
            var    language = LanguageHelper.GetLanguage();

            if (language == LanguageType.English)
            {
                switch (record.Type)
                {
                case MemberIncomeType.ToBuyReward:
                case MemberIncomeType.Collect:
                    content =
                        $"{record.GoldAmount}$ gold,{record.SilverAmount}$ silver,{record.CopperAmount}$ copper,{record.SlagAmount}$ slag";
                    break;

                case MemberIncomeType.InviteFeedback:
                    content = $"[{record.ReferenceMemberUsername}]  {record.GoldAmount}$ gold,{record.SlagAmount}$ slag";
                    break;

                case MemberIncomeType.Refining:
                    content = $"{record.GoldAmount}$ gold,{record.SlagAmount}$ slag";
                    break;

                case MemberIncomeType.EquipmentBuyFeedback:
                    content = $"{record.DiamondAmount} diamond";
                    break;

                case MemberIncomeType.InviteActive:
                    content = $"{record.DiamondAmount} diamond,{record.CopperAmount}$ copper";
                    break;

                case MemberIncomeType.InviteActiveCost:
                    content = $"{record.GoldAmount}$ gold";
                    break;
                }
            }
            else
            {
                switch (record.Type)
                {
                case MemberIncomeType.ToBuyReward:
                case MemberIncomeType.Collect:
                    content =
                        $"{record.GoldAmount}$金,{record.SilverAmount}$银,{record.CopperAmount}$铜,{record.SlagAmount}$矿渣";
                    break;

                case MemberIncomeType.InviteFeedback:
                    content = $"[{record.ReferenceMemberUsername}]  {record.GoldAmount}$金,{record.SlagAmount}$矿渣";
                    break;

                case MemberIncomeType.Refining:
                    content = $"{record.GoldAmount}$金,{record.SlagAmount}$矿渣";
                    break;

                case MemberIncomeType.EquipmentBuyFeedback:
                    content = $"{record.DiamondAmount}枚钻石";
                    break;

                case MemberIncomeType.InviteActive:
                    content = $"{record.DiamondAmount}枚钻石,{record.CopperAmount}$铜";
                    break;

                case MemberIncomeType.InviteActiveCost:
                    content = $"{record.GoldAmount}$金";
                    break;
                }
            }
            return(content);
        }
Пример #6
0
        public void MemberToBuyReward()
        {
            var session = DataBase.Session;
            var endDay  = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 28);
            var lastDay = endDay.AddMonths(-1);

            if (DateTime.Now.Day == 1)
            {
                endDay  = endDay.AddMonths(-1);
                lastDay = lastDay.AddMonths(-1);
            }
            if (session.Query <MemberIncomeRecord>().Any(e => e.CreatedAt > lastDay))
            {
                session.Close();
                throw new PlatformException("本月已经奖励过了啊");
            }
            var queryable = session.Query <TransferBill>().Where(e =>
                                                                 e.Status == TransferBillStatus.Completed && e.TransferBillType == TransferBillType.GoldTransfer &&
                                                                 e.CompletedAt >= lastDay && e.CompletedAt < endDay).Select(
                e => new { e.ToMemberUserName, e.Amount }).GroupBy(e => e.ToMemberUserName)
                            .Select(e => new KeyValuePair <string, decimal>(e.Key, e.Sum(x => x.Amount))).ToList();
            var usernames = queryable.Select(kv => kv.Key).ToList();
            var users     = session.Query <Member>().Where(e => usernames.Contains(e.UserName));

            foreach (var member in users)
            {
                ITransaction iTransaction = session.BeginTransaction(IsolationLevel.ReadCommitted);
                try
                {
                    var amount = queryable.First(e => e.Key == member.UserName).Value * 0.03m;
                    //新增采集收益记录
                    var memberIncomeRecord = new MemberIncomeRecord
                    {
                        GoldAmount       = amount * MiddleTier.BusinessConfig.CollectGoldPercentage / 100,
                        CopperAmount     = amount * MiddleTier.BusinessConfig.CollectCopperPercentage / 100,
                        SilverAmount     = amount * MiddleTier.BusinessConfig.CollectSilverPercentage / 100,
                        SlagAmount       = amount * MiddleTier.BusinessConfig.CollectSlagPercentage / 100,
                        SlagToGoldAmount = 0,
                        Amount           = amount,
                        MemberUserName   = member.UserName,
                        Type             = MemberIncomeType.ToBuyReward
                    };
                    DataBase.Save(memberIncomeRecord, session);
                    //更新账户余额
//					member.GoldBalance += memberIncomeRecord.GoldAmount;
//					member.SilverBalance += memberIncomeRecord.SilverAmount;
//					member.CopperBalance += memberIncomeRecord.CopperAmount;
//					member.SlagBalance += memberIncomeRecord.SlagAmount;
//					member.CollectAmount += memberIncomeRecord.Amount;
//					DataBase.Update(member, session);
                    var sql = MiddleTier.MemberManager.GetUpdateBalanceSql(member.UserName, memberIncomeRecord.GoldAmount,
                                                                           memberIncomeRecord.SilverAmount, memberIncomeRecord.CopperAmount, memberIncomeRecord.SlagAmount,
                                                                           memberIncomeRecord.Amount);
                    DataBase.ExecuteBySql(sql, session);
                    iTransaction.Commit();
                }
                catch (Exception ex)
                {
                    iTransaction.Rollback();
                    MiddleTier.LogManager.Error(ex);
                    session.Close();
                    if (ex is PlatformException platformException)
                    {
                        throw platformException;
                    }
                    throw new PlatformException(ErrorCode.SystemError);
                }
            }
//			users.ForEach(member =>
//			{
//
//			});
            session.Close();
        }