LqTestService.cs 4.2 KB
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using NCC.Common.Core.Manager;
using NCC.Dependency;
using NCC.DynamicApiController;

namespace NCC.Extend.LqTest
{
    /// <summary>
    /// 测试服务(用于验证接口可用性及自动委派流程)
    /// </summary>
    [ApiDescriptionSettings(Tag = "绿纤测试服务", Name = "LqTest", Order = 200)]
    [Route("api/Extend/[controller]")]
    public class LqTestService : IDynamicApiController, ITransient
    {
        private readonly IUserManager _userManager;

        /// <summary>
        /// 初始化一个<see cref="LqTestService"/>类型的新实例
        /// </summary>
        public LqTestService(IUserManager userManager)
        {
            _userManager = userManager;
        }

        /// <summary>
        /// 健康检查 / 连通性测试
        /// </summary>
        /// <remarks>
        /// 用于验证 API 服务是否正常运行,无需登录即可调用(若需鉴权可移除 AllowAnonymous)
        ///
        /// 示例请求:
        /// ```http
        /// GET /api/Extend/LqTest/Ping
        /// ```
        ///
        /// 参数说明:无
        /// </remarks>
        /// <returns>服务状态信息</returns>
        /// <response code="200">成功返回服务状态</response>
        /// <response code="500">服务器错误</response>
        [HttpGet("Ping")]
        [AllowAnonymous]
        public Task<object> Ping()
        {
            var result = new
            {
                success = true,
                message = "绿纤 ERP 测试接口正常",
                timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                service = "LqTestService"
            };
            return Task.FromResult<object>(result);
        }

        /// <summary>
        /// Hello World 测试接口
        /// </summary>
        /// <remarks>
        /// 直接返回 hello world 字符串,用于简单连通性测试
        /// </remarks>
        /// <returns>hello world</returns>
        /// <response code="200">成功返回</response>
        [HttpGet("HelloWorld")]
        [AllowAnonymous]
        public Task<object> HelloWorld()
        {
            return Task.FromResult<object>(new { message = "hello world" });
        }

        /// <summary>
        /// Echo 回显测试接口
        /// </summary>
        /// <remarks>
        /// 返回服务器时间与随机数,用于验证接口连通性
        ///
        /// 示例请求:
        /// ```http
        /// GET /api/Extend/LqTest/Echo
        /// ```
        /// </remarks>
        /// <returns>服务器时间与随机数</returns>
        /// <response code="200">成功返回</response>
        [HttpGet("Echo")]
        [AllowAnonymous]
        public Task<object> Echo()
        {
            var random = new Random();
            var result = new
            {
                message = "echo ok",
                serverTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                randomValue = random.Next(1, 10000)
            };
            return Task.FromResult<object>(result);
        }

        /// <summary>
        /// 带鉴权的测试接口(需登录)
        /// </summary>
        /// <remarks>
        /// 验证当前用户登录态,返回用户相关信息
        ///
        /// 示例请求:
        /// ```http
        /// GET /api/Extend/LqTest/WhoAmI
        /// Authorization: Bearer {token}
        /// ```
        /// </remarks>
        /// <returns>当前用户信息</returns>
        /// <response code="200">成功返回用户信息</response>
        /// <response code="401">未登录或 token 无效</response>
        [HttpGet("WhoAmI")]
        public async Task<object> WhoAmI()
        {
            var userId = _userManager.UserId;
            var userInfo = await _userManager.GetUserInfo();
            var result = new
            {
                success = true,
                userId,
                userName = userInfo?.userName ?? "未知",
                account = userInfo?.userAccount ?? "未知",
                timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
            };
            return result;
        }
    }
}