From b88cad7b8083e8b723c19be6795559b4271ddd11 Mon Sep 17 00:00:00 2001 From: chenchun Date: Wed, 16 Oct 2024 17:49:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Settings/DigitalCollectiblesSettingProvider.cs | 8 +++++++- .../Managers/MiningPoolManager.cs | 9 +++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Domain.Shared/Settings/DigitalCollectiblesSettingProvider.cs b/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Domain.Shared/Settings/DigitalCollectiblesSettingProvider.cs index 68fc1061..29491c38 100644 --- a/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Domain.Shared/Settings/DigitalCollectiblesSettingProvider.cs +++ b/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Domain.Shared/Settings/DigitalCollectiblesSettingProvider.cs @@ -16,7 +16,13 @@ namespace Yi.Abp.Domain.Shared.Settings { context.Add( //每日矿池最大上限 - new SettingDefinition("MaximumPoolLimit", "100") + new SettingDefinition("MaxPoolLimit", "100"), + + //每日手动挖矿最大上限 + new SettingDefinition("MiningMaxLimit", "10"), + + //每次挖矿最小间隔(秒) + new SettingDefinition("MiningMinIntervalSeconds", "5") ); } } diff --git a/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Domain/Managers/MiningPoolManager.cs b/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Domain/Managers/MiningPoolManager.cs index 9235df9c..68790cb8 100644 --- a/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Domain/Managers/MiningPoolManager.cs +++ b/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Domain/Managers/MiningPoolManager.cs @@ -56,11 +56,16 @@ public class MiningPoolManager : DomainService /// public async Task MiningAsync(Guid userId) { + var result = new MiningPoolResult(); //从矿池中开挖,判断矿池是否还有矿 //根据挖矿概率,进行挖掘 //挖到了放到用户仓库即可 + var miningMaxLimit = int.Parse(await _settingProvider.GetOrNullAsync("MiningMaxLimit")); + var miningMinIntervalSeconds = int.Parse(await _settingProvider.GetOrNullAsync("MiningMinIntervalSeconds")); + + //如果概率是挖到了矿,再从矿物中随机选择一个稀有度,再在当前稀有度中的矿物列表,随机选择一个具体的矿物 var pool =await GetMiningPoolContentAsync(); if (pool.TotalNumber == 0) @@ -77,7 +82,7 @@ public class MiningPoolManager : DomainService //成功后在藏品中根据稀有度概率必定获取一个 var probabilityArray = RarityEnumExtensions.GetProbabilityArray(); var index = GetRandomIndex(probabilityArray); - var rarityType = (RarityEnum)Enum.GetValues(typeof(RarityEnum)).GetValue(index); + var rarityType = (RarityEnum)Enum.GetValues(typeof(RarityEnum)).GetValue(index)!; var collectiblesList = await _collectiblesRepository._DbQueryable.Where(x => x.Rarity == rarityType).ToListAsync(); int randomIndex = new Random().Next(collectiblesList.Count); @@ -165,7 +170,7 @@ public class MiningPoolManager : DomainService public async Task RefreshMiningPoolAsync() { //获取当前最大的限制 - var maximumPoolLimit = int.Parse(await _settingProvider.GetOrNullAsync("MaximumPoolLimit")); + var maximumPoolLimit = int.Parse(await _settingProvider.GetOrNullAsync("MaxPoolLimit")); DateTime startTime = DateTime.Today.AddHours(10); DateTime endTime = startTime.AddDays(1);