我有一个项目。我正在研究用户可以将多个帐户绑定到他/她的个人资料的位置。但是,要获取帐号和帐户名称,需要调用一个端点。要获取每个帐号的帐户余额,需要调用另一个端点。现在这是我的问题。根据设计,我需要在每张卡上放置帐号和帐户余额,因为帐户可以多个。所以,我的问题是,我怎样才能最好地做到这一点?拨打电话以获取帐户详细信息,然后选择每个帐号以进行另一个调用,该电话将返回该特定帐号的帐户余额。
这是我的模型:
public class MyAccount
{
public string linkerId { get; set; }
[JsonProperty("accountDetails")]
public AccountDetails Details { get; set; }
public AcctUserDetails acctUserDetails { get; set; }
public LinkedBy linkedBy { get; set; }
public string requestTimestamp { get; set; }
}
public class Account
{
[JsonProperty("payload")]
public List<MyAccount> Accounts { get; set; }
}
public class AccountDetails
{
string acctBalance;
[JsonProperty("accountNumber")]
public string AccountNumber { get; set; }
[JsonProperty("accountName")]
public string AccountName { get; set; }
public string phoneNumber { get; set; }
public string email { get; set; }
[JsonProperty("accountType")]
public string AccountType { get; set; }
public string Balance
{
get
{
foreach (var accountNumm in AccountNumber)
{
MessagingCenter.Send<object, string>(this, "acctNo", AccountNumber);
}
MessagingCenter.Subscribe(this, "myAcctNo", (object obj, string theBalance) =>
{
Device.BeginInvokeOnMainThread(() =>
{
acctBalance = theBalance;
});
});
var newBall = acctBalance;
return newBall;
}
set { Balance = value; }
}
}
此外,My ViewModel 调用 API 以获取所有帐户。
private async void LoadMyAccounts()
{
IsBusy = true;
HttpClient client = new HttpClient();
var url = Constant.GetLinkedAccountsUrl;
var response = await client.GetAsync(url);
var json = await response.Content.ReadAsStringAsync();
Account userAccounts = JsonConvert.DeserializeObject<Account>(json);
var sorted = userAccounts.Accounts;
//getTrans = userTransactions
var allAccounts = new ObservableCollection<MyAccount>(sorted);
AccountsData = allAccounts;
IsBusy = false;
}
然后我有一个服务类,它发送和订阅从模型发送的帐号。这是我的 serviceClass :
public async void GetBalance()
{
HttpClient client = new HttpClient();
var url = Constant.GetAcctBalanceUrl + acctBalance;
var response = await client.GetAsync(url);
var json = await response.Content.ReadAsStringAsync();
if (response.IsSuccessStatusCode)
{
var pro = JsonConvert.DeserializeObject<AcctModel>(json);
var newBal = pro.Balances;
Constant.MyBalance = newBal;
var acctNo = newBal.accountBalance;
MessagingCenter.Send<object, string>(this, "myAcctNo", acctNo);
}
}