TracksController.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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 async Task<ActionResult> Track([FromQuery] string eventType, [FromQuery] int track_id = 0)
  20. {
  21. if (track_id <= 0 || string.IsNullOrEmpty(eventType))
  22. {
  23. return new APIResult(new { success = false, message = "miss" });
  24. }
  25. var link = await TracksCore.GetLinkByIdAsync(track_id);
  26. if (link == null)
  27. {
  28. return new APIResult(new { success = false, message = "not found" });
  29. }
  30. _ = TracksCore.TrackAsync(eventType, link.platform, link.scene, link.unique_id);
  31. return new APIResult(new { success = true, message = "ok" });
  32. }
  33. [HttpPost]
  34. public async Task<ActionResult> Create([FromQuery] string eventType, [FromQuery] string typename = "", [FromQuery] string scene = "", [FromQuery] string uniqueId = "", [FromQuery] string description = "")
  35. {
  36. var link = await TracksCore.CreateLinkAsync(eventType, typename, scene, uniqueId, description);
  37. if (link == null)
  38. {
  39. return new APIResult(new { success = false, message = "invalid params or eventType" });
  40. }
  41. //var request = _accessor.HttpContext!.Request;
  42. //string url = $"{request.Scheme}://{request.Host}{link.path}";
  43. return new APIResult(new { success = true, message = "ok", url = link.path });
  44. }
  45. [HttpGet]
  46. public async Task<ActionResult> Daily([FromQuery] int daysAgo = 1, [FromQuery] string reportDate = "")
  47. {
  48. DateTime date;
  49. if (!string.IsNullOrWhiteSpace(reportDate) && DateTime.TryParse(reportDate, out var parsed))
  50. {
  51. date = parsed.Date;
  52. }
  53. else
  54. {
  55. if (daysAgo <= 0) daysAgo = 1;
  56. date = DateTime.Now.AddDays(-daysAgo).Date;
  57. }
  58. int rows = await TracksCore.FlushDailyAsync(DateTime.Now.Date);
  59. rows += await TracksCore.FlushDailyAsync(date);
  60. return new APIResult(new { success = true, message = "ok", rows });
  61. }
  62. }
  63. }