private SDKAccount CreateNewSDKAccount(RequestSDKLogin request) { SDKAccount account = new SDKAccount { Id = Guid.NewGuid(), SDKId = request.Id, UserName = request.User, }; return(account); }
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); }
public void CheckOnline(RequestSDKLogin request) { if (IsExist(DM_ONLINE_ACCOUNT, request.User)) { string onlineConnectionId = Get(DM_ONLINE_ACCOUNT, request.User); if (!request.ConnectionId.Equals(onlineConnectionId)) { SendToClient(onlineConnectionId, "ReceiveDisconnectCommand"); } } int expiredSecond = 300; //5 minutes SetWithExpire(DM_ONLINE_ACCOUNT, request.User, request.ConnectionId, expiredSecond); }