Beispiel #1
0
 static public DOLoginResult MapTo(this SDKAccount data)
 {
     return(new DOLoginResult
     {
         SDKId = data.SDKId,
         PlayerId = data.PlayerId
     });
 }
Beispiel #2
0
        private SDKAccount CreateNewSDKAccount(RequestSDKLogin request)
        {
            SDKAccount account = new SDKAccount
            {
                Id       = Guid.NewGuid(),
                SDKId    = request.Id,
                UserName = request.User,
            };

            return(account);
        }
Beispiel #3
0
        public async Task <BaseResponse <DOLoginResult> > SDKLogin(RequestSDKLogin request)
        {
            BaseResponse <DOLoginResult> response = CreateResponse <DOLoginResult>();

            try
            {
                //check user
                bool userIsExist = await IsExistAsync(DM_SDK_ACCOUNT, request.User);

                if (!userIsExist)
                {
                    //check at mongoDB
                    IMongoCollection <SDKAccount> collectionSDKAccount = MongoGetCollection <SDKAccount>();
                    SDKAccount account = collectionSDKAccount.Find(document => document.UserName == request.User).FirstOrDefault();
                    if (account == null)
                    {
                        account = CreateNewSDKAccount(request);
                    }
                    IMongoCollection <Player> collectionPlayer = MongoGetCollection <Player>();
                    Player player = collectionPlayer.Find(doc => doc.Name == account.UserName).FirstOrDefault();
                    if (player == null)
                    {
                        player = _playerService.CreatePlayer(account);
                    }
                    account.PlayerId = player.Id;
                    SaveAccount(account);
                }

                SDKAccount checkAccount = GetObject <SDKAccount>(DM_SDK_ACCOUNT, request.User);
                if (!checkAccount.SDKId.Equals(request.Id))
                {
                    response.OK      = false;
                    response.Message = "SDK ID không trùng khớp";
                }
                else
                {
                    response.OK             = true;
                    response.Message        = "Đăng nhập thành công";
                    response.Data           = checkAccount.MapTo();
                    checkAccount.LastLogin  = DateTime.Now;
                    checkAccount.LastLogout = null;
                    SaveAccount(checkAccount);
                    CheckOnline(request);
                }
            }
            catch (Exception e)
            {
                ExceptionHandle(response, e);
            }
            return(response);
        }
Beispiel #4
0
        private void SaveAccount(SDKAccount account)
        {
            IMongoCollection <SDKAccount> collection = MongoGetCollection <SDKAccount>();
            SDKAccount old = collection.Find(acc => acc.SDKId == account.SDKId).FirstOrDefault();

            if (old == null)
            {
                collection.InsertOneAsync(account);
            }
            else
            {
                collection.ReplaceOneAsync(acc => acc.SDKId == account.SDKId, account);
            }

            SetObject(DM_SDK_ACCOUNT, account.UserName, account);
        }
Beispiel #5
0
        public Player CreatePlayer(SDKAccount account)
        {
            DORankDefinition def    = _gameConfigService.GetRank(GameConfigService.START_SCORE);
            Player           player = new Player
            {
                Id        = Guid.NewGuid(),
                SDKId     = account.SDKId,
                Name      = account.UserName,
                Score     = GameConfigService.START_SCORE,
                Coin      = GameConfigService.START_COIN,
                RankLabel = def.RankLabel,
                RankIndex = def.RankIndex,
                StarIndex = def.StarIndex,
                TotalDraw = 0,
                TotalGame = 0,
                TotalLose = 0,
                TotalWin  = 0,
            };

            SavePlayer(player);
            return(player);
        }