diff --git a/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Application.Contracts/Dtos/Market/MarketGetListOutputDto.cs b/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Application.Contracts/Dtos/Market/MarketGetListOutputDto.cs index 3dd8cd17..2facd9f7 100644 --- a/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Application.Contracts/Dtos/Market/MarketGetListOutputDto.cs +++ b/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Application.Contracts/Dtos/Market/MarketGetListOutputDto.cs @@ -1,8 +1,47 @@ using Volo.Abp.Application.Dtos; +using Yi.Framework.DigitalCollectibles.Domain.Shared.Consts; namespace Yi.Framework.DigitalCollectibles.Application.Contracts.Dtos.Market; public class MarketGetListOutputDto:EntityDto { + /// + /// 藏品编号 + /// + public string Code { get; set; } + + /// + /// 藏品名称 + /// + public string Name { get; set; } + + /// + /// 藏品描述 + /// + public string? Describe { get; set; } + + /// + /// 价值数 + /// + public decimal ValueNumber { get; set; } + + /// + /// 藏品地址 + /// + public string Url { get; set; } + /// + /// 稀有度 + /// + public RarityEnum Rarity{ get; set; } + + /// + /// 总共出现次数 + /// + public int FindTotal { get; set; } + + /// + /// 排序 + /// + public int OrderNum { get; set; } } \ No newline at end of file diff --git a/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Application.Contracts/Dtos/MiningPool/MiningPoolGetOutput.cs b/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Application.Contracts/Dtos/MiningPool/MiningPoolGetOutput.cs new file mode 100644 index 00000000..6fe63700 --- /dev/null +++ b/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Application.Contracts/Dtos/MiningPool/MiningPoolGetOutput.cs @@ -0,0 +1,44 @@ +namespace Yi.Framework.DigitalCollectibles.Application.Contracts.Dtos.MiningPool; + +public class MiningPoolGetOutput +{ + /// + /// 普通藏品剩余数量 + /// + public int I0_OrdinaryNumber { get; set; } + + /// + /// 高级藏品剩余数量 + /// + public int I1_SeniorNumber { get; set; } + + /// + /// 稀有藏品剩余数量 + /// + public int I2_RareNumber { get; set; } + + /// + /// 珍品藏品剩余数量 + /// + public int I3_GemNumber { get; set; } + + /// + /// 传说藏品剩余数量 + /// + public int I4_LegendNumber { get; set; } + + /// + /// 开始时间 + /// + public DateTime StartTime{ get; set; } + + /// + /// 结束时间 + /// + public DateTime EndTime{ get; set; } + + /// + /// 总共剩余藏品数量 + /// + public int TotalNumber => I0_OrdinaryNumber + I1_SeniorNumber + I2_RareNumber + I3_GemNumber + I4_LegendNumber; +} \ No newline at end of file diff --git a/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Application.Contracts/Dtos/MiningPool/MiningResultOutput.cs b/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Application.Contracts/Dtos/MiningPool/MiningResultOutput.cs new file mode 100644 index 00000000..a8c73427 --- /dev/null +++ b/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Application.Contracts/Dtos/MiningPool/MiningResultOutput.cs @@ -0,0 +1,11 @@ +using Yi.Framework.DigitalCollectibles.Application.Contracts.Dtos.Collectibles; +using Yi.Framework.DigitalCollectibles.Domain.Shared.Enums; + +namespace Yi.Framework.DigitalCollectibles.Application.Contracts.Dtos.MiningPool; + +public class MiningResultOutput +{ + public MiningResultEnum Result { get; set; } + + public CollectiblesUserGetOutputDto? Collectibles { get; set; } +} \ No newline at end of file diff --git a/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Application/Services/CollectiblesService.cs b/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Application/Services/CollectiblesService.cs index 8e8ce010..51c80905 100644 --- a/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Application/Services/CollectiblesService.cs +++ b/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Application/Services/CollectiblesService.cs @@ -29,7 +29,7 @@ public class CollectiblesService : ApplicationService /// /// /// - [HttpGet("user")] + [HttpGet("collectibles/user")] [Authorize] public async Task> GetForAccountUserAsync( CollectiblesUserGetInput input) diff --git a/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Application/Services/MiningPoolService.cs b/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Application/Services/MiningPoolService.cs new file mode 100644 index 00000000..04cf3594 --- /dev/null +++ b/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Application/Services/MiningPoolService.cs @@ -0,0 +1,41 @@ +using Mapster; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.Application.Services; +using Volo.Abp.Users; +using Yi.Framework.DigitalCollectibles.Application.Contracts.Dtos.MiningPool; +using Yi.Framework.DigitalCollectibles.Domain.Managers; + +namespace Yi.Framework.DigitalCollectibles.Application.Services; + +public class MiningPoolService : ApplicationService +{ + private readonly MiningPoolManager _manager; + + /// + /// 获取矿池状态 + /// + /// + [HttpGet("mining-pool")] + public async Task GetMiningPoolContentAsync() + { + var content = await _manager.GetMiningPoolContentAsync(); + var output = content.Adapt(); + return output; + } + + + /// + /// 用户手动挖矿 + /// + /// + [HttpPost("mining-pool/mining")] + [Authorize] + public async Task MiningAsync() + { + var userId = CurrentUser.GetId(); + var result = await _manager.MiningAsync(userId); + var output = result.Adapt(); + return output; + } +} \ No newline at end of file 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 ce9d1402..9235df9c 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 @@ -44,6 +44,12 @@ public class MiningPoolManager : DomainService return await ComputeMiningProbabilityAsync(); }); + public async Task GetMiningPoolContentAsync() + { + var pool = await _cache.GetAsync(CacheConst.MiningPoolContent); + return pool; + } + /// /// 用户进行一次挖矿 /// @@ -56,7 +62,7 @@ public class MiningPoolManager : DomainService //挖到了放到用户仓库即可 //如果概率是挖到了矿,再从矿物中随机选择一个稀有度,再在当前稀有度中的矿物列表,随机选择一个具体的矿物 - var pool = await _cache.GetAsync(CacheConst.MiningPoolContent); + var pool =await GetMiningPoolContentAsync(); if (pool.TotalNumber == 0) { result.Result = MiningResultEnum.PoolIsEmpty;