网站首页 网站源码
website
站点相关全部源代码,隐藏了一些关于服务器的信息
namespace Dpz.Core.WebApi.Controllers;

/// <summary>
/// 系统配置
/// </summary>
[ApiController, Route("api/[controller]")]
public class OptionController(IAppOptionService appOptionService) : ControllerBase
{
    /// <summary>
    /// 获取友情链接
    /// </summary>
    /// <returns></returns>
    [HttpGet("friends")]
    [ProducesResponseType<List<VmFriends>>(StatusCodes.Status200OK)]
    public async Task<IActionResult> GetFriends()
    {
        var list = await appOptionService.GetFriendsAsync();
        return Ok(list);
    }

    /// <summary>
    /// 添加友情链接
    /// </summary>
    /// <returns></returns>
    [HttpPost("friends")]
    [Authorize(Policy = "System")]
    [ProducesResponseType(StatusCodes.Status204NoContent)]
    [ProducesResponseType(StatusCodes.Status401Unauthorized)]
    public async Task<IActionResult> AddFriend([FromBody] FriendSaveDto model)
    {
        var friend = new VmFriends
        {
            Avatar = model.Avatar,
            Description = model.Description,
            Link = model.Link,
            Name = model.Name
        };
        await appOptionService.AddFriendAsync(friend);
        return NoContent();
    }

    /// <summary>
    /// 编辑友情链接
    /// </summary>
    /// <param name="model"></param>
    /// <returns></returns>
    [HttpPatch("friends")]
    [Authorize(Policy = "System")]
    [ProducesResponseType(StatusCodes.Status204NoContent)]
    [ProducesResponseType(StatusCodes.Status401Unauthorized)]
    public async Task<IActionResult> EditFriend([FromBody] FriendEditDto model)
    {
        var friend = new VmFriends
        {
            Avatar = model.Avatar,
            Description = model.Description,
            Link = model.Link,
            Name = model.Name,
            Id = model.Id
        };
        await appOptionService.EditFriendAsync(friend);
        return NoContent();
    }

    /// <summary>
    /// 删除友情链接
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    [HttpDelete("friends/{id}")]
    [Authorize(Policy = "System")]
    [ProducesResponseType(StatusCodes.Status204NoContent)]
    [ProducesResponseType(StatusCodes.Status401Unauthorized)]
    public async Task<IActionResult> DeleteFriend(string id)
    {
        await appOptionService.DeleteAsync(id);
        return NoContent();
    }

    /// <summary>
    /// 获取APP设置
    /// </summary>
    /// <returns></returns>
    [HttpGet("setting")]
    [ProducesResponseType<VmSetting>(StatusCodes.Status200OK)]
    public async Task<ActionResult<VmSetting>> GetSettingAsync()
    {
        var setting = await appOptionService.GetSettingAsync();
        return Ok(setting);
    }

    /// <summary>
    /// 保存App设置
    /// </summary>
    /// <returns></returns>
    [HttpPost("setting"), Authorize(Policy = "System")]
    [ProducesResponseType(StatusCodes.Status204NoContent)]
    [ProducesResponseType(StatusCodes.Status401Unauthorized)]
    public async Task<IActionResult> SaveSettingAsync([FromBody] VmSetting setting)
    {
        await appOptionService.SaveSettingAsync(setting);
        return NoContent();
    }
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

上述代码是一个 ASP.NET Core Web API 控制器的实现,名为 OptionController,主要用于管理系统配置和友情链接。以下是对代码中各个部分的详细解释:

控制器概述

  • 命名空间: Dpz.Core.WebApi.Controllers,表示该控制器属于 Dpz.Core.WebApi 项目中的 Controllers 文件夹。
  • 特性:
    • [ApiController]:指示该类是一个 API 控制器,启用一些特性,如自动模型验证。
    • [Route("api/[controller]")]:定义了控制器的路由,[controller] 将被替换为控制器的名称(去掉 "Controller" 后缀),即 api/option

依赖注入

  • 控制器通过构造函数注入了一个 IAppOptionService 的实例,名为 appOptionService,用于处理与应用程序选项相关的业务逻辑。

API 方法

  1. 获取友情链接 (GetFriends)

    • HTTP 方法: GET
    • 路由: api/option/friends
    • 功能: 异步获取所有友情链接,并返回一个包含 VmFriends 对象列表的 200 OK 响应。
  2. 添加友情链接 (AddFriend)

    • HTTP 方法: POST
    • 路由: api/option/friends
    • 功能: 需要授权([Authorize(Policy = "System")]),接收一个 FriendSaveDto 对象,创建一个新的 VmFriends 对象并将其添加到系统中,返回 204 No Content 响应。
  3. 编辑友情链接 (EditFriend)

    • HTTP 方法: PATCH
    • 路由: api/option/friends
    • 功能: 需要授权,接收一个 FriendEditDto 对象,更新现有的友情链接信息,返回 204 No Content 响应。
  4. 删除友情链接 (DeleteFriend)

    • HTTP 方法: DELETE
    • 路由: api/option/friends/{id}
    • 功能: 需要授权,接收一个字符串类型的 id,删除对应的友情链接,返回 204 No Content 响应。
  5. 获取 APP 设置 (GetSettingAsync)

    • HTTP 方法: GET
    • 路由: api/option/setting
    • 功能: 异步获取应用程序的设置,返回一个 VmSetting 对象的 200 OK 响应。
  6. 保存 APP 设置 (SaveSettingAsync)

    • HTTP 方法: POST
    • 路由: api/option/setting
    • 功能: 需要授权,接收一个 VmSetting 对象,保存应用程序的设置,返回 204 No Content 响应。

总结

这个控制器提供了一系列 API 接口,用于管理友情链接和应用程序设置。它通过依赖注入的方式使用服务层来处理具体的业务逻辑,并通过适当的 HTTP 方法和状态码来响应客户端请求。控制器中的方法也使用了授权策略,确保只有具有特定权限的用户才能进行某些操作。

loading