using molilian.core; using dodohold.core; using Microsoft.AspNetCore.Mvc; using System.Text.Json; using TencentCloud.Ecm.V20190719.Models; using YunhuiKit; namespace molilian.api.Controllers { [ApiController] [Route("[controller]/[action]")] public class TracksController : ControllerBase { protected IHttpContextAccessor _accessor; public TracksController(IHttpContextAccessor accessor) { _accessor = accessor; } [HttpGet] public async Task Track([FromQuery] string eventType, [FromQuery] int track_id = 0) { if (track_id <= 0 || string.IsNullOrEmpty(eventType)) { return new APIResult(new { success = false, message = "miss" }); } var link = await TracksCore.GetLinkByIdAsync(track_id); if (link == null) { return new APIResult(new { success = false, message = "not found" }); } _ = TracksCore.TrackAsync(eventType, link.platform, link.scene, link.unique_id); return new APIResult(new { success = true, message = "ok" }); } [HttpPost] public async Task Create([FromQuery] string eventType, [FromQuery] string typename = "", [FromQuery] string scene = "", [FromQuery] string uniqueId = "", [FromQuery] string description = "") { var link = await TracksCore.CreateLinkAsync(eventType, typename, scene, uniqueId, description); if (link == null) { return new APIResult(new { success = false, message = "invalid params or eventType" }); } //var request = _accessor.HttpContext!.Request; //string url = $"{request.Scheme}://{request.Host}{link.path}"; return new APIResult(new { success = true, message = "ok", url = link.path }); } [HttpGet] public async Task Daily([FromQuery] int daysAgo = 1, [FromQuery] string reportDate = "") { DateTime date; if (!string.IsNullOrWhiteSpace(reportDate) && DateTime.TryParse(reportDate, out var parsed)) { date = parsed.Date; } else { if (daysAgo <= 0) daysAgo = 1; date = DateTime.Now.AddDays(-daysAgo).Date; } int rows = await TracksCore.FlushDailyAsync(DateTime.Now.Date); rows += await TracksCore.FlushDailyAsync(date); return new APIResult(new { success = true, message = "ok", rows }); } } }