From b30662d2b4ab4804043eed16e5857c6b42cbbb2b Mon Sep 17 00:00:00 2001 From: chenchun Date: Wed, 26 Jun 2024 12:46:39 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=93=B6=E8=A1=8C?= =?UTF-8?q?=E6=B1=87=E7=8E=87=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Managers/BankManager.cs | 40 ++++++++----------- .../BankValue/BiyingBankValueProvider.cs | 11 +++-- .../Managers/BankValue/IBankValueProvider.cs | 12 +++++- .../BankValue/RandownBankValueProvider.cs | 10 ++--- 4 files changed, 39 insertions(+), 34 deletions(-) diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BankManager.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BankManager.cs index c2418b3d..e751b2e1 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BankManager.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BankManager.cs @@ -15,6 +15,7 @@ namespace Yi.Framework.Bbs.Domain.Managers /// public class BankManager : DomainService { + private const decimal DefalutRate = 1.3m; private ISqlSugarRepository _repository; private ILocalEventBus _localEventBus; private ISqlSugarRepository _interestRepository; @@ -24,7 +25,7 @@ namespace Yi.Framework.Bbs.Domain.Managers _repository = repository; _localEventBus = localEventBus; _interestRepository = interestRepository; - _bankValueProvider=bankValueProvider; + _bankValueProvider = bankValueProvider; } /// @@ -52,22 +53,17 @@ namespace Yi.Framework.Bbs.Domain.Managers output.CreationTime = currentInterestRecords.CreationTime; output.Value = currentInterestRecords.Value; - _currentRateStore=new BankInterestRecordDto() { ComparisonValue= currentInterestRecords .ComparisonValue, - CreationTime=currentInterestRecords.CreationTime,Value=currentInterestRecords.Value}; + _currentRateStore = new BankInterestRecordDto() + { + ComparisonValue = currentInterestRecords.ComparisonValue, + CreationTime = currentInterestRecords.CreationTime, + Value = currentInterestRecords.Value + }; } return output; } - /// - /// 获取第三方的值 - /// - /// - private decimal GetThirdPartyValue() - { - return _bankValueProvider.GetValueAsync().Result; - } - /// /// 强制创建一个记录,不管时间到没到 /// @@ -76,22 +72,19 @@ namespace Yi.Framework.Bbs.Domain.Managers { //获取最新的实体 var lastEntity = await _interestRepository._DbQueryable.OrderByDescending(x => x.CreationTime).FirstAsync(); - decimal oldValue = 1.3m; - - //获取第三方的值 - var thirdPartyValue = GetThirdPartyValue(); - - //获取上一次第三方标准值 - var lastThirdPartyStandardValue = thirdPartyValue; + decimal oldValue = DefalutRate; + + var thirdPartyValue = await _bankValueProvider.GetValueAsync(); //获取实际值的变化率 - decimal changeRate = 0; + decimal changeRate = (thirdPartyValue - _bankValueProvider.StandardValue) / (thirdPartyValue); + + //说明不是第一次 if (lastEntity is not null) { oldValue = lastEntity.Value; - changeRate = (thirdPartyValue - lastEntity.ComparisonValue) / (thirdPartyValue); } //判断市场是否波动 @@ -102,11 +95,10 @@ namespace Yi.Framework.Bbs.Domain.Managers changeRate = 2 * changeRate; } - //根据上一次的老值进行变化率比较 - var currentValue = oldValue + (oldValue* changeRate); + var currentValue = oldValue + (oldValue * changeRate); - var entity = new InterestRecordsAggregateRoot(lastThirdPartyStandardValue, currentValue); + var entity = new InterestRecordsAggregateRoot(thirdPartyValue, currentValue); var output = await _interestRepository.InsertReturnEntityAsync(entity); return output; diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BankValue/BiyingBankValueProvider.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BankValue/BiyingBankValueProvider.cs index 4a1f98e2..39c0cfaf 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BankValue/BiyingBankValueProvider.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BankValue/BiyingBankValueProvider.cs @@ -9,11 +9,15 @@ using Volo.Abp.DependencyInjection; namespace Yi.Framework.Bbs.Domain.Managers.BankValue { - [Dependency(TryRegister =true)] + [Dependency(TryRegister = true)] public class BiyingBankValueProvider : IBankValueProvider, ITransientDependency { //官网地址:www.biyingapi.com private const string Url = "https://api.biyingapi.com/hsrl/ssjy/600519/5579aa4b391945678"; + + public decimal StandardValue => 1700; + + public async Task GetValueAsync() { try @@ -27,9 +31,10 @@ namespace Yi.Framework.Bbs.Domain.Managers.BankValue return jsonObject["p"].Value(); } } - catch(Exception ex) { + catch (Exception ex) + { throw new Exception("BiyingBank获取数据异常", ex); - + } } diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BankValue/IBankValueProvider.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BankValue/IBankValueProvider.cs index 3882601c..f8a09b2e 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BankValue/IBankValueProvider.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BankValue/IBankValueProvider.cs @@ -8,6 +8,16 @@ namespace Yi.Framework.Bbs.Domain.Managers.BankValue { public interface IBankValueProvider { - public Task GetValueAsync(); + /// + /// 标准值 + /// + decimal StandardValue { get; } + + /// + /// 获取第三方值 + /// + /// + Task GetValueAsync(); + } } diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BankValue/RandownBankValueProvider.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BankValue/RandownBankValueProvider.cs index 5eba0f62..093f9047 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BankValue/RandownBankValueProvider.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BankValue/RandownBankValueProvider.cs @@ -1,15 +1,13 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Volo.Abp.DependencyInjection; +using Volo.Abp.DependencyInjection; namespace Yi.Framework.Bbs.Domain.Managers.BankValue { [Dependency(ReplaceServices = true)] internal class RandownBankValueProvider : IBankValueProvider, ITransientDependency { + public decimal StandardValue => 1000; + + public Task GetValueAsync() { var currentNumber = new Random().Next(800, 1200);