TracksController.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using molilian.core;
  2. using dodohold.core;
  3. using Microsoft.AspNetCore.Mvc;
  4. using System.Text.Json;
  5. using TencentCloud.Ecm.V20190719.Models;
  6. using YunhuiKit;
  7. namespace molilian.api.Controllers
  8. {
  9. [ApiController]
  10. [Route("[controller]/[action]")]
  11. public class TracksController : ControllerBase
  12. {
  13. protected IHttpContextAccessor _accessor;
  14. public TracksController(IHttpContextAccessor accessor)
  15. {
  16. _accessor = accessor;
  17. }
  18. [HttpGet]
  19. public ActionResult Track([FromQuery] string eventType, [FromQuery] string platform, [FromQuery] string scene, [FromQuery] string uniqueId = "")
  20. {
  21. if (string.IsNullOrEmpty(platform) || string.IsNullOrEmpty(scene) || string.IsNullOrEmpty(eventType))
  22. {
  23. return new APIResult(new { success = false, message = "miss" });
  24. }
  25. _ = TracksCore.CreateLinkAsync(eventType, platform, scene, uniqueId);
  26. _ = TracksCore.TrackAsync(eventType, platform, scene, uniqueId);
  27. return new APIResult(new { success = true, message = "ok" });
  28. }
  29. [HttpPost]
  30. public async Task<ActionResult> Create([FromQuery] string eventType, [FromQuery] string platform, [FromQuery] string scene, [FromQuery] string uniqueId = "")
  31. {
  32. var link = await TracksCore.CreateLinkAsync(eventType, platform, scene, uniqueId);
  33. if (link == null)
  34. {
  35. return new APIResult(new { success = false, message = "invalid params or eventType" });
  36. }
  37. //var request = _accessor.HttpContext!.Request;
  38. //string url = $"{request.Scheme}://{request.Host}{link.path}";
  39. return new APIResult(new { success = true, message = "ok", url = link.path });
  40. }
  41. [HttpGet]
  42. public async Task<ActionResult> Daily([FromQuery] int daysAgo = 1, [FromQuery] string reportDate = "")
  43. {
  44. DateTime date;
  45. if (!string.IsNullOrWhiteSpace(reportDate) && DateTime.TryParse(reportDate, out var parsed))
  46. {
  47. date = parsed.Date;
  48. }
  49. else
  50. {
  51. if (daysAgo <= 0) daysAgo = 1;
  52. date = DateTime.Now.AddDays(-daysAgo).Date;
  53. }
  54. int rows = await TracksCore.FlushDailyAsync(date);
  55. return new APIResult(new { success = true, message = "ok", rows });
  56. }
  57. }
  58. }