public void ReqVerifyAccessToken(NetMessage message) { var reqData = message.GetData <TcpMsg.ReqVerifyAccessToken>(); if (null != user) { if (!string.IsNullOrEmpty(reqData.accessToken)) { user.SetAccessToken(reqData.accessToken); LDC.LDCApiManager.Instance.AddLDCCmd(new LDC.Msg.LDCMsg_VerifyAccessToken() { guid = user.Id.ToString(), accessToken = reqData.accessToken }); } else { var ackData = new TcpMsg.AckVerifyAccessToken(); ackData.errCode = TcpMsg.Error.AccessToken_NullOrEmpty; ackData.authType = TcpMsg.AuthType.AuthFail; user.Send(new Packet(ackData)); logger.Warn($"GUID={user.Id.ToString()} Error Code={ackData.errCode.ToString()}"); } } else { logger.Warn($"Is User Null~~~"); } }
public void IntlMsg_GetUser(InternalMsg.InternalBaseMsg msg) { var intlMsg = msg as InternalMsg.IntlMsg_GetUser; var resDataHeader = JsonConvert.DeserializeObject <LBD.ResponesDataHeader>(intlMsg.result); if (resDataHeader.statusCode == 1000) { var resData = JsonConvert.DeserializeObject <LBD.Respones_GetUserInfio>(intlMsg.result); if (null != user) { if (!string.IsNullOrEmpty(resData.responseData.walletAddress)) { user.walletAddr = resData.responseData.walletAddress; LBD.LBDApiManager.Instance.AddLBDCmd(new LBD.Msg.LBDMsg_GetProxy() { uid = user.UID, guid = user.Id.ToString(), lineuserid = user.lineUID }); } else { // Is not LBW member TcpMsg.MessageResponse ackData; if (user.stateType == UserStateType.CreateNickName) { ackData = new TcpMsg.AckCreateNickName() { errCode = TcpMsg.Error.IsNot_LBW_Member }; } else if (user.stateType == UserStateType.ExistingUserConnect) { ackData = new TcpMsg.AckVerifyAccessToken() { errCode = TcpMsg.Error.IsNot_LBW_Member, authType = TcpMsg.AuthType.IsNot_LBW_Member }; } else { logger.Warn($"User is not an LBW member User StateError StateType={user.stateType.ToString()}"); return; } logger.Warn($"User is not an LBW member StateType={user.stateType.ToString()}"); user.Send(new Packet(ackData)); } } else { logger.Warn($"Is User Null~~~"); } } else { logger.Warn($"Error statusCode={resDataHeader.statusCode} statusMessage={resDataHeader.statusMessage}"); } }
public void IntlMsg_GetProxy(InternalMsg.InternalBaseMsg msg) { var intlMsg = msg as InternalMsg.IntlMsg_GetProxy; var resDataHeader = JsonConvert.DeserializeObject <LBD.ResponesDataHeader>(intlMsg.result); if (resDataHeader.statusCode == 1000) { var resData = JsonConvert.DeserializeObject <LBD.Respones_GetProxyInfo>(intlMsg.result); if (null != user) { if (resData.responseData.isApproved) { TcpMsg.MessageResponse ackData; if (user.stateType == UserStateType.CreateNickName) { ackData = new TcpMsg.AckCreateNickName(); } else if (user.stateType == UserStateType.ExistingUserConnect) { ackData = new TcpMsg.AckVerifyAccessToken() { authType = TcpMsg.AuthType.AuthSucess }; } else { logger.Warn($"User is not Proxy Approved User StateError StateType={user.stateType.ToString()}"); return; } user.Send(new Packet(ackData)); } else { logger.Debug($"User is not Proxy Approved RequestProxy UID={user.UID}"); LBD.LBDApiManager.Instance.AddLBDCmd(new LBD.Msg.LBDMsg_RequestProxy() { uid = user.UID, guid = user.Id.ToString(), fromUserId = user.lineUID, landingUri = string.Empty }); var ackData = new TcpMsg.AckRequestProxy(); user.Send(new Packet(ackData)); } } else { logger.Warn($"Is User Null~~~"); } } else { logger.Warn($"Error statusCode={resDataHeader.statusCode} statusMessage={resDataHeader.statusMessage}"); } }
public void IntlMsg_VerifyAccessToken(InternalMsg.InternalBaseMsg msg) { var intlMsg = msg as InternalMsg.IntlMsg_VerifyAccessToken; if (null != user) { var ackData = new TcpMsg.AckVerifyAccessToken(); if (intlMsg.result) { var accessToken = user.GetAccessToken(); if (!string.IsNullOrEmpty(accessToken)) { var ldcMsg = new LDC.Msg.LDCMsg_GetProfile() { guid = user.Id.ToString(), accessToken = accessToken }; LDC.LDCApiManager.Instance.AddLDCCmd(ldcMsg); return; } else { ackData.errCode = TcpMsg.Error.AccessToken_NullOrEmpty; } } else { ackData.errCode = TcpMsg.Error.AccessToken_CheckError; } ackData.authType = TcpMsg.AuthType.AuthFail; user.Send(new Packet(ackData)); logger.Warn($"GUID={user.Id.ToString()} Error Code={ackData.errCode.ToString()}"); } else { logger.Warn($"Is User Null~~~"); } }
public void IntlMsg_TransactionHash(InternalMsg.InternalBaseMsg msg) { var intlMsg = msg as InternalMsg.IntlMsg_TransactionHash; var resDataHeader = JsonConvert.DeserializeObject <LBD.ResponesDataHeader>(intlMsg.result); if (resDataHeader.statusCode == 1000) { if (null == user) { return; } var code = LBD.LBDApiManager.TxHashToCode(intlMsg.result); if (code == 0) { var logs = LBD.LBDApiManager.TxHashToLogs(intlMsg.result); // Used for nontFungible Mint and Transfer. Use both single and multi. // If future Mint and Transfer are included in one log, you have to think again. var nontFungible_tokenInfos = new List <LBD.TokenInfo>(); // Currently, only one type of eventType is used. // If you use eventType because it is mixed, you have to think again. var eventType = string.Empty; var fromAddr = string.Empty; var toAddr = string.Empty; foreach (var log in logs) { foreach (var evnt in log.events) { eventType = evnt.type; switch (evnt.type) { case "mint_ft": { var tokenInfos = new List <LBD.TokenInfo>(); foreach (var attr in evnt.attributes) { if (attr.key == "to") { logger.Info($"{attr.key} {attr.key}={attr.value}"); } else if (attr.key == "amount") { var value = attr.value.Split(':'); var tokenInfo = LBD.LBDApiManager.Instance.TokenIdToTokenInfo(true, value[1], Convert.ToInt32(value[0])); tokenInfos.Add(tokenInfo); } } user.SetFungibleTokenMint(tokenInfos); if (user.stateType == UserStateType.NewUserConnect) { tokenInfos.ForEach(x => { user.Currency_SetPrice(x.tokenType, x.amount); }); user.OperatorServiceTokenMint(1000); } else if (user.stateType == UserStateType.BuyFungible) { var currency = tokenInfos.ToDictionary(x => x.tokenType, x => (Int64)x.amount); user.OnMintBuyShopSlot(currency); } } break; case "mint_nft": { foreach (var attr in evnt.attributes) { if (attr.key == "to") { toAddr = attr.value; logger.Info($"{attr.key} {attr.key}={attr.value}"); } else if (attr.key == "name") { logger.Info($"{attr.key} {attr.key}={attr.value}"); } else if (attr.key == "token_id") { var tokenInfo = LBD.LBDApiManager.Instance.TokenIdToTokenInfo(false, attr.value, 1); nontFungible_tokenInfos.Add(tokenInfo); } } } break; case "burn_ft": case "burn_ft_from": { var tokenInfos = new List <LBD.TokenInfo>(); foreach (var attr in evnt.attributes) { if (attr.key == "from") { logger.Info($"{attr.key} {attr.key}={attr.value}"); } else if (attr.key == "amount") { var value = attr.value.Split(':'); var tokenInfo = LBD.LBDApiManager.Instance.TokenIdToTokenInfo(true, value[1], Convert.ToInt32(value[0])); tokenInfos.Add(tokenInfo); } } //user.TokenBurn(ackData.fungible, tokenInfos); } break; case "burn_nft": case "burn_nft_from": { var tokenInfos = new List <LBD.TokenInfo>(); foreach (var attr in evnt.attributes) { if (attr.key == "from") { logger.Info($"{attr.key} {attr.key}={attr.value}"); } else if (attr.key == "token_id") { var tokenInfo = LBD.LBDApiManager.Instance.TokenIdToTokenInfo(false, attr.value, 1); tokenInfos.Add(tokenInfo); } } //user.TokenBurn(ackData.fungible, tokenInfos); } break; case "transfer_ft": case "transfer_ft_from": { var tokenInfos = new List <LBD.TokenInfo>(); foreach (var attr in evnt.attributes) { if (attr.key == "from") { fromAddr = attr.value; logger.Info($"{attr.key} {attr.key}={attr.value}"); } else if (attr.key == "to") { toAddr = attr.value; logger.Info($"{attr.key} {attr.key}={attr.value}"); } else if (attr.key == "amount") { var value = attr.value.Split(':'); var tokenInfo = LBD.LBDApiManager.Instance.TokenIdToTokenInfo(true, value[1], Convert.ToInt32(value[0])); tokenInfos.Add(tokenInfo); } } FungibleTransferUserStateProcess(fromAddr, toAddr, tokenInfos); } break; case "transfer_nft": case "transfer_nft_from": { foreach (var attr in evnt.attributes) { if (attr.key == "from") { fromAddr = attr.value; logger.Info($"{attr.key} {attr.key}={attr.value}"); } else if (attr.key == "to") { toAddr = attr.value; logger.Info($"{attr.key} {attr.key}={attr.value}"); } else if (attr.key == "token_id") { var tokenInfo = LBD.LBDApiManager.Instance.TokenIdToTokenInfo(false, attr.value, 1); nontFungible_tokenInfos.Add(tokenInfo); } } //user.TokenTransfer(false, tokenInfos); } break; case "attach": case "attach_from": { LBD.TokenInfo ptokenInfo = null; LBD.TokenInfo ctokenInfo = null; foreach (var attr in evnt.attributes) { if (attr.key == "from") { logger.Info($"{attr.key} {attr.key}={attr.value}"); } else if (attr.key == "to_token_id") { ptokenInfo = LBD.LBDApiManager.Instance.TokenIdToTokenInfo(false, attr.value, 1); } else if (attr.key == "token_id") { ctokenInfo = LBD.LBDApiManager.Instance.TokenIdToTokenInfo(false, attr.value, 1); } } user.AddComposableTokenInfo(ptokenInfo, ctokenInfo); } break; case "detach": case "detach_from": { LBD.TokenInfo ptokenInfo = null; LBD.TokenInfo ctokenInfo = null; foreach (var attr in evnt.attributes) { if (attr.key == "from") { logger.Info($"{attr.key} {attr.key}={attr.value}"); } else if (attr.key == "from_token_id") { ptokenInfo = LBD.LBDApiManager.Instance.TokenIdToTokenInfo(false, attr.value, 1); } else if (attr.key == "token_id") { ctokenInfo = LBD.LBDApiManager.Instance.TokenIdToTokenInfo(false, attr.value, 1); } } user.RemoveComposableTokenInfo(ptokenInfo, ctokenInfo); } break; case "mint": case "mint_from": { var contractId = string.Empty; Int32 amount = 0; foreach (var attr in evnt.attributes) { if (attr.key == "contract_id") { contractId = attr.value; } else if (attr.key == "amount") { amount = Convert.ToInt32(attr.value); } else if (attr.key == "from") { logger.Info($"{attr.key} {attr.key}={attr.value}"); } else if (attr.key == "to") { logger.Info($"{attr.key} {attr.key}={attr.value}"); } } //user.SetServiceTokenMint(contractId, amount); } break; case "transfer": case "transfer_from": { var from = string.Empty; var to = string.Empty; var contractId = string.Empty; Int32 amount = 0; foreach (var attr in evnt.attributes) { if (attr.key == "from") { from = attr.value; logger.Info($"{attr.key} {attr.key}={attr.value}"); } else if (attr.key == "to") { to = attr.value; logger.Info($"{attr.key} {attr.key}={attr.value}"); } else if (attr.key == "contract_id") { contractId = attr.value; } else if (attr.key == "amount") { amount = Convert.ToInt32(attr.value); } } if (from == Setting.ProgramSetting.Instance.lbdInfo.operatorAddr) { user.ServiceTokenTransfer(contractId, amount); } else if (from == user.walletAddr) { user.ServiceTokenTransfer(contractId, -amount); } var tokenInfos = new List <LBD.TokenInfo> { new LBD.TokenInfo() { tokenType = contractId, amount = amount, } }; if (user.stateType == UserStateType.NewUserConnect) { user.stateType = UserStateType.CreateNickName; var ackData = new TcpMsg.AckVerifyAccessToken(); ackData.authType = TcpMsg.AuthType.CreateNickname; user.Send(new Packet(ackData)); logger.Debug($"UserUID={user.UID} UserStateType={user.stateType.ToString()}"); } else if (user.stateType == UserStateType.BuyFungible) { var currency = tokenInfos.ToDictionary(x => x.tokenType, x => (Int64)x.amount); user.OnMintBuyShopSlot(currency); } else if (user.stateType == UserStateType.BuyShopSlot) { user.OnBurnShopSlot(tokenInfos); } else if (user.stateType == UserStateType.RefreshShopCardSlot) { user.OnBurnRefreshShopCardSlot(tokenInfos); } } break; case "approve_collection": { var contractId = string.Empty; foreach (var attr in evnt.attributes) { if (attr.key == "proxy") { logger.Info($"{attr.key} {attr.key}={attr.value}"); } else if (attr.key == "approver") { logger.Info($"{attr.key} {attr.key}={attr.value}"); } else if (attr.key == "contract_id") { contractId = attr.value; } } LBD.LBDApiManager.Instance.AddLBDCmd(new LBD.Msg.LBDMsg_GetProxy() { uid = user.UID, guid = user.Id.ToString(), lineuserid = user.lineUID }); } break; } } } MultNonFungibleUserStateProcess(eventType, fromAddr, toAddr, nontFungible_tokenInfos); } else { logger.Warn($"TransactionHash fail Code={code}"); } } }
public void Login(InternalMsg.IntlMsg_GetProfile profile) { logger.Debug($"Profile UserId={profile.userId} displayName={profile.displayName}"); displayName = profile.displayName; pictureUrl = profile.pictureUrl; statusMessage = profile.statusMessage; if (stateType == UserStateType.None) { var repoUser = TCGGameSrv.IocContainer.Resolve <Repository.IUser>(); tblUser = repoUser.GetUserFromLineUserId(profile.userId); var IsCreate = false; if (null == tblUser) { Table.TblUser newUser = new Table.TblUser() { lineuserid = profile.userId, nickname = string.Empty, address = string.Empty, regDate = DateTime.Now }; newUser.uuid = repoUser.Insert(newUser); tblUser = newUser; IsCreate = true; } if (IsCreate) { stateType = UserStateType.NewUserConnect; LBD.LBDApiManager.Instance.AddLBDCmd(new LBD.Msg.LBDMsg_MultiMintNonFungible() { uid = UID, guid = Id.ToString(), toAddr = string.Empty, toUserId = lineUID, mints = DefaultCardToTokenTypeInfo() }); IsCreate = false; logger.Debug($"UserUID={UID} UserStateType={stateType.ToString()}"); } else { if (string.IsNullOrEmpty(tblUser.nickname)) { stateType = UserStateType.CreateNickName; var ackData = new TcpMsg.AckVerifyAccessToken(); ackData.authType = TcpMsg.AuthType.CreateNickname; Send(new Packet(ackData)); } else { stateType = UserStateType.ExistingUserConnect; GetWalletAddress(); } } logger.Debug($"UserUID={UID} UserStateType={stateType.ToString()}"); } }