using Dpz.Core.EnumLibrary;
namespace Dpz.Core.Web.Controllers;
public class SteamController(ISteamGameService steamGameService) : Controller
{
public async Task<IActionResult> Index(CancellationToken cancellationToken)
{
this.SetTitle("我的Steam游戏");
var games = await steamGameService.GetGamesAsync(cancellationToken);
return View(games);
}
public async Task<IActionResult> Achievements(
int? id = null,
CancellationToken cancellationToken = default
)
{
if (id == null)
{
return NotFound();
}
var model = await steamGameService.GetGameAsync(id.Value, cancellationToken);
if (model == null)
{
return NotFound();
}
var pageMetaPage = new VmPageMetadata
{
Description =
"游戏成就:" + string.Join(",", model.Achievements.Select(x => x.DisplayName)),
Keywords = [$"{model.Name},{model.Name}游戏成就"],
Relations = ["Steam", "Achievements", id.Value.ToString()],
};
ViewData["PageMetadata"] = pageMetaPage;
this.SetTitle($"{model.Name} 成就");
return View(model);
}
[HttpGet, CheckAuthorize(Permissions = Permissions.System)]
public async Task<IActionResult> ClearCache(CancellationToken cancellationToken)
{
await steamGameService.RemoveByPrefixAsync(cancellationToken);
return RedirectToAction(nameof(Index));
}
}
⚠⚠ 以下内容为AI分析的结果,请根据实际情况进行判断。
这是一个ASP.NET Core MVC控制器,用于处理Steam游戏相关的Web请求。让我详细解释一下这个代码:
控制器概述
public class SteamController(ISteamGameService steamGameService) : Controller
- 这是一个名为
SteamController的控制器类 - 使用了C# 12的主构造函数语法,通过依赖注入接收
ISteamGameService服务 - 继承自
Controller基类,提供MVC控制器的基本功能
主要Action方法
1. Index方法 - 游戏列表页面
public async Task<IActionResult> Index(CancellationToken cancellationToken)
{
this.SetTitle("我的Steam游戏");
var games = await steamGameService.GetGamesAsync(cancellationToken);
return View(games);
}
- 功能:显示Steam游戏列表的主页面
- 操作:
- 设置页面标题为"我的Steam游戏"
- 异步获取游戏数据
- 返回包含游戏数据的视图
2. Achievements方法 - 游戏成就页面
public async Task<IActionResult> Achievements(
int? id = null,
CancellationToken cancellationToken = default
)
- 功能:显示特定游戏的成就信息
- 参数:
id:游戏ID(可空)cancellationToken:取消令牌
- 逻辑流程:
- 验证游戏ID是否存在
- 根据ID获取游戏详情
- 如果游戏不存在,返回404
- 构建页面元数据(SEO信息)
- 设置页面标题
- 返回游戏成就视图
页面元数据配置:
var pageMetaPage = new VmPageMetadata
{
Description = "游戏成就:" + string.Join(",", model.Achievements.Select(x => x.DisplayName)),
Keywords = [$"{model.Name},{model.Name}游戏成就"],
Relations = ["Steam", "Achievements", id.Value.ToString()],
};
3. ClearCache方法 - 清除缓存
[HttpGet, CheckAuthorize(Permissions = Permissions.System)]
public async Task<IActionResult> ClearCache(CancellationToken cancellationToken)
- 功能:清除Steam相关的缓存数据
- 权限:需要系统权限(通过
CheckAuthorize特性验证) - HTTP方法:仅接受GET请求
- 操作:
- 调用服务清除缓存
- 重定向回首页
主要特性
- 异步编程:所有方法都使用
async/await模式,支持取消令牌 - 依赖注入:通过构造函数注入Steam游戏服务
- 权限控制:清除缓存功能需要系统权限
- SEO友好:为成就页面配置了详细的元数据
- 错误处理:对无效ID返回404响应
- 用户体验:设置了中文页面标题
这个控制器主要用于Steam游戏管理系统,提供游戏列表浏览、成就查看和缓存管理功能。
评论加载中...