public override bool TakeAction()
        {
            UserBasisCache dest = UserHelper.FindUserBasis(Uid);

            if (dest == null)
            {
                return(true);
            }

            receipt            = new JPFriendData();
            receipt.UserId     = Uid;
            receipt.NickName   = dest.NickName;
            receipt.Profession = dest.Profession;
            receipt.AvatarUrl  = dest.AvatarUrl;
            receipt.UserLv     = dest.UserLv;
            //receipt.FightValue = dest.FightingValue;
            receipt.VipLv = dest.VipLv;
            GameSession fsession = GameSession.Get(dest.UserID);

            if (fsession != null && fsession.Connected)
            {
                receipt.IsOnline = true;
            }

            return(true);
        }
        public override bool TakeAction()
        {
            if (GetBasis.BackLevelNum > 0)
            {
                int levelDown = GetBasis.BackLevelNum;
                GetBasis.UserLv = Math.Max(GetBasis.UserLv - levelDown, 10);
                UserHelper.UserLvChange(Current.UserId);
                GetBasis.BackLevelNum = 0;
            }


            receipt = new JPUserDetailsData()
            {
                UserId                   = Current.UserId,
                NickName                 = GetBasis.NickName,
                Profession               = GetBasis.Profession,
                UserLv                   = GetBasis.UserLv,
                Diamond                  = GetBasis.DiamondNum,
                BuyDiamond               = GetBasis.BuyDiamond,
                UsedDiamond              = GetBasis.UsedDiamond,
                VipLv                    = GetBasis.VipLv,
                AvatarUrl                = GetBasis.AvatarUrl,
                Gold                     = GetBasis.Gold,
                CombatRankID             = GetBasis.CombatRankID,
                LevelRankID              = GetBasis.LevelRankID,
                LotteryTimes             = GetLottery.LotteryTimes,
                SignStartID              = DataHelper.SignStartID,
                ShareCount               = GetBasis.ShareCount,
                ShareDate                = GetBasis.ShareDate,
                InviteCount              = GetBasis.InviteCount,
                ReceiveInviteList        = GetBasis.ReceiveInviteList.ToList(),
                ReceiveLevelAwardList    = GetBasis.ReceiveLevelAwardList.ToList(),
                ReceiveRankingAwardList  = GetBasis.ReceiveRankingAwardList.ToList(),
                LastMatchFightFailedDate = Util.ConvertDateTimeStamp(GetCombat.LastMatchFightFailedDate),
                ComboNum                 = GetBasis.ComboNum,
                OpenServiceDateSec       = Util.ConvertDateTimeStamp(DataHelper.OpenServiceDate)
            };
            receipt.Attribute   = GetAttribute;
            receipt.Equips      = GetEquips;
            receipt.Package     = GetPackage;
            receipt.Soul        = GetSoul;
            receipt.Skill       = GetSkill;
            receipt.Task        = GetTask;
            receipt.Achievement = GetAchievement;
            receipt.Guild       = GetGuild;
            receipt.MailBox     = GetMailBox;
            receipt.EventAward  = GetEventAward;
            UserHelper.FundCfgCheck(Current.UserId);
            receipt.Pay     = GetPay;
            receipt.Combat  = GetCombat;
            receipt.Lottery = GetLottery;
            receipt.VitData.RemainTimeSec = GetBasis.RestoreVitRemainTimeSec();
            receipt.VitData.Vit           = GetBasis.Vit;

            UserHelper.ElfExperienceExpireCheck(Current.UserId);
            receipt.Elf = GetElf;

            UserHelper.TransferExpireCheck(Current.UserId);
            receipt.Transfer = GetTransfer;

            /// 好友/仇人
            {
                receipt.Friends.GiveAwayCount = GetFriends.GiveAwayCount;
                //receipt.Friends.TodayRobList = GetFriends.TodayRobList.ToList();
                foreach (var v in GetFriends.FriendsList)
                {
                    var          basis  = UserHelper.FindUserBasis(v.UserId);
                    JPFriendData friend = new JPFriendData()
                    {
                        UserId            = v.UserId,
                        NickName          = basis.NickName,
                        Profession        = basis.Profession,
                        AvatarUrl         = basis.AvatarUrl,
                        UserLv            = basis.UserLv,
                        VipLv             = basis.VipLv,
                        IsGiveAway        = v.IsGiveAway,
                        IsByGiveAway      = v.IsByGiveAway,
                        IsReceiveGiveAway = v.IsReceiveGiveAway,
                        RobGold           = v.RobGold,
                    };
                    var gameSession = GameSession.Get(v.UserId);
                    friend.IsOnline = gameSession != null && gameSession.Connected;
                    receipt.Friends.FriendsList.Add(friend);
                }
                foreach (var v in GetFriends.ApplyList)
                {
                    var basis = UserHelper.FindUserBasis(v.UserId);
                    JPFriendApplyData apply = new JPFriendApplyData()
                    {
                        UserId     = v.UserId,
                        NickName   = basis.NickName,
                        Profession = basis.Profession,
                        AvatarUrl  = basis.AvatarUrl,
                        UserLv     = basis.UserLv,
                        VipLv      = basis.VipLv,
                        ApplyTime  = v.ApplyDate
                    };
                    var gameSession = GameSession.Get(v.UserId);
                    apply.IsOnline = gameSession != null && gameSession.Connected;
                    receipt.Friends.ApplyList.Add(apply);
                }
                foreach (var v in GetEnemys.EnemyList)
                {
                    var         basis = UserHelper.FindUserBasis(v.UserId);
                    JPEnemyData enemy = new JPEnemyData()
                    {
                        UserId     = v.UserId,
                        NickName   = basis.NickName,
                        Profession = basis.Profession,
                        AvatarUrl  = basis.AvatarUrl,
                        UserLv     = basis.UserLv,
                        RobGold    = v.RobGold,
                    };
                    receipt.Enemys.EnemysList.Add(enemy);
                }
                receipt.Enemys.LogList      = GetEnemys.LogList.ToList();
                receipt.Enemys.IsHaveNewLog = GetEnemys.IsHaveNewLog;
            }

            /// 公会
            if (!receipt.Guild.GuildID.IsEmpty())
            {
                var guildData = new ShareCacheStruct <GuildsCache>().FindKey(receipt.Guild.GuildID);
                if (guildData != null && guildData.FindMember(Current.UserId) != null)
                {
                    UserHelper.BulidJPGuildData(GetGuild.GuildID, receipt.GuildData);
                }
            }


            if (GetBasis.IsReceiveOfflineEarnings)
            {
                receipt.OfflineEarnings = "0";
                receipt.OfflineTimeSec  = 0;
            }
            else
            {
                // 离线收益

                BigInteger transscriptEarnings = 0;
                var        monster             = new ShareCacheStruct <Config_Monster>().Find(t => t.Grade == GetBasis.UserLv);

                BigInteger bi = BigInteger.Parse(monster.DropoutGold) * 30;
                transscriptEarnings += bi;

                double rate = Convert.ToDouble(GetBasis.OfflineTimeSec / 300.0);
                int    tmp  = Convert.ToInt32(rate * 100);

                //var vipcfg = new ShareCacheStruct<Config_Vip>().FindKey(GetBasis.VipLv);
                //if (vipcfg != null)
                {
                    int skillAddition = 0;
                    var elfcfg        = new ShareCacheStruct <Config_Elves>().Find(t => t.ElvesID == GetElf.SelectID);
                    if (elfcfg != null && elfcfg.ElvesType == ElfSkillType.OffineGold)
                    {
                        skillAddition = elfcfg.ElvesNum;
                    }
                    BigInteger sum = transscriptEarnings * tmp / 100;
                    //BigInteger earning = sum + sum / 100 * (vipcfg.Multiple);
                    //BigInteger earning2 = earning + earning / 1000 * skillAddition;
                    BigInteger earning2 = sum + sum / 1000 * skillAddition;
                    if (GetPay.QuarterCardDays >= 0)
                    {
                        earning2 = earning2 * 2;
                    }

                    GetBasis.OfflineEarnings = earning2.ToNotNullString("0");
                }
            }
            receipt.OfflineTimeSec  = GetBasis.OfflineTimeSec;
            receipt.OfflineEarnings = GetBasis.OfflineEarnings;


            // 排行榜奖励数据
            UserRankAward rankAward = DataHelper.LevelRankingAwardCacheList.Find(t => t.UserID == Current.UserId);

            if (rankAward != null)
            {
                receipt.RankAwardData.LevelRankID     = rankAward.RankId;
                receipt.RankAwardData.IsReceivedLevel = rankAward.IsReceived;
            }
            rankAward = DataHelper.FightValueRankingAwardCacheList.Find(t => t.UserID == Current.UserId);
            if (rankAward != null)
            {
                receipt.RankAwardData.FightValueRankID     = rankAward.RankId;
                receipt.RankAwardData.IsReceivedFightValue = rankAward.IsReceived;
            }
            rankAward = DataHelper.ComboRankingAwardCacheList.Find(t => t.UserID == Current.UserId);
            if (rankAward != null)
            {
                receipt.RankAwardData.ComboRankID     = rankAward.RankId;
                receipt.RankAwardData.IsReceivedCombo = rankAward.IsReceived;
            }

            UserHelper.AchievementProcess(Current.UserId, AchievementType.CombatRandID, "0", 0, false);



            return(true);
        }