| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- 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<ActionResult> Track([FromQuery] int track_id, [FromQuery] string unique_id)
- {
- if (track_id <= 0)
- {
- 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" });
- }
- var dto = new TrackRequestLogDTO
- {
- track_id = track_id,
- event_type = link.event_type,
- platform = link.platform,
- typename = link.platform,
- scene = link.scene,
- unique_id = unique_id,
- ip = _accessor.HttpContext.GetUserIp(),
- user_agent = Request.Headers.UserAgent.ToString(),
- referer = Request.Headers.Referer.ToString()
- };
- _ = TracksCore.LogTrackRequestAsync(dto);
- _ = TracksCore.TrackAsync(link);
- return new APIResult(new { success = true, message = "ok" });
- }
- [HttpPost]
- public async Task<ActionResult> Create([FromQuery] string eventType, [FromQuery] string platform = "", [FromQuery] string typename = "", [FromQuery] string scene = "", [FromQuery] string uniqueId = "", [FromQuery] string description = "")
- {
- if (string.IsNullOrWhiteSpace(typename)) typename = platform;
- 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<ActionResult> 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 });
- }
- }
- }
|