Skip to content

Commit

Permalink
Merge pull request #855 from LittleFish-233/master
Browse files Browse the repository at this point in the history
销量榜添加排序字段
  • Loading branch information
LittleFish-233 authored Jan 25, 2025
2 parents 88d8a9c + 1ecfbd3 commit 533f23a
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -102,14 +102,13 @@ public async Task<ActionResult<List<StoreInfoCardModel>>> GetAllGameStoreInfo()
/// <returns></returns>
[AllowAnonymous]
[HttpGet]
public async Task<ActionResult<GameRevenueInfoViewModel>> GetGameRevenueInfo([FromQuery] int year, [FromQuery] int page = 0, [FromQuery] int max = 20)
public async Task<ActionResult<GameRevenueInfoViewModel>> GetGameRevenueInfo([FromQuery] int year, [FromQuery] int page = 0, [FromQuery] int max = 20, [FromQuery] int order = 0)
{
var games = await _storeInfoRepository.GetAll().AsNoTracking()
.Include(s => s.Entry).ThenInclude(s => s.EntryStaffFromEntryNavigation).ThenInclude(s => s.ToEntryNavigation)
.Where(s => s.PriceNow != null && s.PriceNow > 0 && s.Revenue != null && s.Revenue > 0 && s.EstimationOwnersMax != null && s.EstimationOwnersMax > 0 /*&& s.EstimationOwnersMin != null && s.EstimationOwnersMin > 0*/)
.Where(s => s.Entry != null && s.Entry.PubulishTime != null && (year == 0 || s.Entry.PubulishTime.Value.Year == year))
.Where(s => s.State == StoreState.OnSale && s.PriceNow != null && s.Entry.IsHidden == false && string.IsNullOrWhiteSpace(s.Entry.Name) == false)
.OrderByDescending(s => s.Revenue)
.ToListAsync();
games = games.DistinctBy(s => s.Link).ToList();

Expand All @@ -126,7 +125,7 @@ public async Task<ActionResult<GameRevenueInfoViewModel>> GetGameRevenueInfo([Fr
var price = item.Min(s => s.OriginalPrice);

double? score = 0;
foreach(var info in item)
foreach (var info in item)
{
score += info.EvaluationCount * info.RecommendationRate;
}
Expand All @@ -141,6 +140,7 @@ public async Task<ActionResult<GameRevenueInfoViewModel>> GetGameRevenueInfo([Fr


var gameList = groupGames
.OrderByDescending(s => ((GameRevenueInfoOrderType)order == GameRevenueInfoOrderType.Revenue) ? s.Revenue : ((s.EstimationOwnersMax + s.EstimationOwnersMin) / 2 ?? 0))
.Skip(page * max)
.Take(max)
.ToList();
Expand Down Expand Up @@ -171,6 +171,7 @@ public async Task<ActionResult<GameRevenueInfoViewModel>> GetGameRevenueInfo([Fr
TotalPages = (games.Count + max - 1) / max
};
}

[Authorize(Roles = "Admin")]
[HttpPost]
public async Task<QueryResultModel<StoreInfoOverviewModel>> List(QueryParameterModel model)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ public class GameRevenueInfoCacheModel
public int Max { get; set; }
public int Page { get; set; }
public int Year { get; set; }
public GameRevenueInfoOrderType Order { get; set; }
}

public class GameRevenueInfoViewModel
Expand Down Expand Up @@ -61,4 +62,10 @@ public class GameRevenueInfoCardModel

public DateTime? PublishTime { get; set; }
}

public enum GameRevenueInfoOrderType
{
Revenue,
Owner
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,20 @@
欢迎同好们一起参与到资料站编辑中
</div>
<div class="line-2">
● 销量数据源采用 <a href="https://gamalytic.com/" target="_blank">Gamalytic</a><a href="https://www.taptap.cn/" target="_blank">TapTap</a> ,收入是乘以原价获得的。所以肯定不准,图一乐就好
● 销量数据源采用 (<a href="https://gamalytic.com/" target="_blank">Gamalytic</a> + <a href="https://vginsights.com/" target="_blank">VG Insights</a>) / 2 + <a href="https://www.taptap.cn/" target="_blank">TapTap</a> ,收入是乘以原价获得的。所以肯定不准,图一乐就好
</div>
</div>
<div class="year-card">

<MRadioGroup Value="Order" ValueChanged="OrderValueChanged" TValue="GameRevenueInfoOrderType" Label="排序" Dense HideDetails="true"
Row>
<MRadio Label="收入"
Value="@(GameRevenueInfoOrderType.Revenue)">
</MRadio>
<MRadio Label="销量"
Value="@(GameRevenueInfoOrderType.Owner)">
</MRadio>
</MRadioGroup>
<MButtonGroup Tile Group Value="Year" ValueChanged="ValueChanged" Style=" display: flex; flex-wrap: wrap;" Color="primary">
<MButton Class="m-0" Value="0">
全部
Expand All @@ -39,7 +49,11 @@
[Parameter]
public int Year { get; set; }
[Parameter]
public GameRevenueInfoOrderType Order { get; set; }
[Parameter]
public EventCallback<int> YearChanged { get; set; }
[Parameter]
public EventCallback<GameRevenueInfoOrderType> OrderChanged { get; set; }


public async Task ValueChanged(StringNumber year)
Expand All @@ -50,4 +64,9 @@
}
await YearChanged.InvokeAsync(year.ToInt32());
}

public async Task OrderValueChanged(GameRevenueInfoOrderType order)
{
await OrderChanged.InvokeAsync(order);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

<div class="revenues-page">
<div>
<CnGalWebSite.Shared.MasaComponent.PC.Entries.Revenues.ScreenCard Year="@Year" YearChanged="YearChanged" />
<CnGalWebSite.Shared.MasaComponent.PC.Entries.Revenues.ScreenCard Order="@((GameRevenueInfoOrderType)Order)" OrderChanged="OrderChanged" Year="@Year" YearChanged="YearChanged" />
</div>
@if (isReady == false)
{
Expand Down Expand Up @@ -50,6 +50,8 @@
public int Page { get; set; }
[SupplyParameterFromQuery]
public int Year { get; set; }
[SupplyParameterFromQuery]
public int Order { get; set; }


GameRevenueInfoViewModel Model = new();
Expand Down Expand Up @@ -81,9 +83,10 @@
_dataCacheService.GameRevenueInfoCache.Page = Page;
_dataCacheService.GameRevenueInfoCache.Max = Max;
_dataCacheService.GameRevenueInfoCache.Year = Year;
_dataCacheService.GameRevenueInfoCache.Order = (GameRevenueInfoOrderType)Order;
}

Model = await _pageModelCatche.GetCache($"api/storeinfo/GetGameRevenueInfo?page={_dataCacheService.GameRevenueInfoCache.Page - 1}&max={_dataCacheService.GameRevenueInfoCache.Max}&year={_dataCacheService.GameRevenueInfoCache.Year}");
Model = await _pageModelCatche.GetCache($"api/storeinfo/GetGameRevenueInfo?page={_dataCacheService.GameRevenueInfoCache.Page - 1}&max={_dataCacheService.GameRevenueInfoCache.Max}&year={_dataCacheService.GameRevenueInfoCache.Year}&order={(int)_dataCacheService.GameRevenueInfoCache.Order}");
isReady = true;
StateHasChanged();

Expand All @@ -109,17 +112,23 @@
_dataCacheService.GameRevenueInfoCache.Page = Page;
_dataCacheService.GameRevenueInfoCache.Max = Max;
_dataCacheService.GameRevenueInfoCache.Year = Year;
_dataCacheService.GameRevenueInfoCache.Order = (GameRevenueInfoOrderType)Order;
await Refresh();
}

public void YearChanged(int year)
{
NavigationManager.NavigateTo($"/revenues?page={1}&max={_dataCacheService.GameRevenueInfoCache.Max}&year={year}");
NavigationManager.NavigateTo($"/revenues?page={1}&max={_dataCacheService.GameRevenueInfoCache.Max}&year={year}&order={(int)_dataCacheService.GameRevenueInfoCache.Order}");
}

public void OrderChanged(GameRevenueInfoOrderType order)
{
NavigationManager.NavigateTo($"/revenues?page={1}&max={_dataCacheService.GameRevenueInfoCache.Max}&year={_dataCacheService.GameRevenueInfoCache.Year}&order={(int)order}");
}

private void OnPageClick(int pageIndex)
{
NavigationManager.NavigateTo($"/revenues?page={pageIndex}&max={_dataCacheService.GameRevenueInfoCache.Max}&year={_dataCacheService.GameRevenueInfoCache.Year}");
NavigationManager.NavigateTo($"/revenues?page={pageIndex}&max={_dataCacheService.GameRevenueInfoCache.Max}&year={_dataCacheService.GameRevenueInfoCache.Year}&order={(int)_dataCacheService.GameRevenueInfoCache.Order}");
}

public void Dispose()
Expand Down

0 comments on commit 533f23a

Please sign in to comment.