feat: 完成基础接口搭建

This commit is contained in:
橙子
2024-10-15 22:14:14 +08:00
parent a0ef3af155
commit 3383e86064
6 changed files with 143 additions and 2 deletions

View File

@@ -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<Guid>
{
/// <summary>
/// 藏品编号
/// </summary>
public string Code { get; set; }
/// <summary>
/// 藏品名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 藏品描述
/// </summary>
public string? Describe { get; set; }
/// <summary>
/// 价值数
/// </summary>
public decimal ValueNumber { get; set; }
/// <summary>
/// 藏品地址
/// </summary>
public string Url { get; set; }
/// <summary>
/// 稀有度
/// </summary>
public RarityEnum Rarity{ get; set; }
/// <summary>
/// 总共出现次数
/// </summary>
public int FindTotal { get; set; }
/// <summary>
/// 排序
/// </summary>
public int OrderNum { get; set; }
}

View File

@@ -0,0 +1,44 @@
namespace Yi.Framework.DigitalCollectibles.Application.Contracts.Dtos.MiningPool;
public class MiningPoolGetOutput
{
/// <summary>
/// 普通藏品剩余数量
/// </summary>
public int I0_OrdinaryNumber { get; set; }
/// <summary>
/// 高级藏品剩余数量
/// </summary>
public int I1_SeniorNumber { get; set; }
/// <summary>
/// 稀有藏品剩余数量
/// </summary>
public int I2_RareNumber { get; set; }
/// <summary>
/// 珍品藏品剩余数量
/// </summary>
public int I3_GemNumber { get; set; }
/// <summary>
/// 传说藏品剩余数量
/// </summary>
public int I4_LegendNumber { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public DateTime StartTime{ get; set; }
/// <summary>
/// 结束时间
/// </summary>
public DateTime EndTime{ get; set; }
/// <summary>
/// 总共剩余藏品数量
/// </summary>
public int TotalNumber => I0_OrdinaryNumber + I1_SeniorNumber + I2_RareNumber + I3_GemNumber + I4_LegendNumber;
}

View File

@@ -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; }
}

View File

@@ -29,7 +29,7 @@ public class CollectiblesService : ApplicationService
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
[HttpGet("user")]
[HttpGet("collectibles/user")]
[Authorize]
public async Task<PagedResultDto<CollectiblesUserGetOutputDto>> GetForAccountUserAsync(
CollectiblesUserGetInput input)

View File

@@ -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;
/// <summary>
/// 获取矿池状态
/// </summary>
/// <returns></returns>
[HttpGet("mining-pool")]
public async Task<MiningPoolGetOutput> GetMiningPoolContentAsync()
{
var content = await _manager.GetMiningPoolContentAsync();
var output = content.Adapt<MiningPoolGetOutput>();
return output;
}
/// <summary>
/// 用户手动挖矿
/// </summary>
/// <returns></returns>
[HttpPost("mining-pool/mining")]
[Authorize]
public async Task<MiningResultOutput> MiningAsync()
{
var userId = CurrentUser.GetId();
var result = await _manager.MiningAsync(userId);
var output = result.Adapt<MiningResultOutput>();
return output;
}
}

View File

@@ -44,6 +44,12 @@ public class MiningPoolManager : DomainService
return await ComputeMiningProbabilityAsync();
});
public async Task<MiningPoolContent> GetMiningPoolContentAsync()
{
var pool = await _cache.GetAsync(CacheConst.MiningPoolContent);
return pool;
}
/// <summary>
/// 用户进行一次挖矿
/// </summary>
@@ -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;