public WalletRecord WithdrawNotify(WalletRecord walletRecord, bool success, string failReason = null) { using (CurrentUnitOfWork.SetTenantId(walletRecord.TenantId)) { string openid = WechatUserManager.GetOpenid(walletRecord.GetUserIdentifier()); User user = walletRecord.User; if (user == null) { user = UserRepository.Get(walletRecord.UserId); } if (success) { walletRecord.FetchStatus = FetchStatus.Success; walletRecord.FailReason = ""; WalletRecordRepository.Update(walletRecord); CurrentUnitOfWork.SaveChanges(); if (!string.IsNullOrEmpty(openid)) { Task.Run(async() => { WalletWithdrawTemplateMessageData data = new WalletWithdrawTemplateMessageData( new TemplateDataItem(L("WithdrawSuccessfully")), new TemplateDataItem(user.NickName), new TemplateDataItem((-walletRecord.Money).ToString()), new TemplateDataItem(L("ThankYouForYourPatronage")) ); await TemplateMessageManager.SendTemplateMessageOfWalletWithdrawAsync(walletRecord.TenantId, openid, null, data); }); } } else { if (string.IsNullOrEmpty(failReason)) { failReason = L("UnKnowFail"); } walletRecord.FetchStatus = FetchStatus.Fail; walletRecord.FailReason = failReason; WalletRecordRepository.Update(walletRecord); CurrentUnitOfWork.SaveChanges(); if (!string.IsNullOrEmpty(openid)) { Task.Run(async() => { WalletWithdrawTemplateMessageData data = new WalletWithdrawTemplateMessageData( new TemplateDataItem(L("WithdrawFailed") + ":" + failReason), new TemplateDataItem(user.NickName), new TemplateDataItem((-walletRecord.Money).ToString()), new TemplateDataItem(L("ThankYouForYourPatronage")) ); await TemplateMessageManager.SendTemplateMessageOfWalletWithdrawAsync(walletRecord.TenantId, openid, null, data); }); } } return(walletRecord); } }
public async Task <SendTemplateMessageResult> SendTemplateMessageOfWalletWithdrawAsync(int tenantId, string openId, string url, WalletWithdrawTemplateMessageData data) { string accessToken = await WechatCommonManager.GetAccessTokenAsync(tenantId); string templateId = await SettingManager.GetSettingValueForTenantAsync(WechatSettings.TemplateMessage.WalletWithdraw, tenantId); SendTemplateMessageResult sendResult = await SendTemplateMessageAsync(accessToken, openId, templateId, url, data); return(sendResult); }