share.controller.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. const router_1 = __importDefault(require("@koa/router"));
  7. const share_service_1 = require("./share.service");
  8. const auth_1 = require("../../middleware/auth");
  9. const router = new router_1.default();
  10. /**
  11. * 获取分享信息(兼容feature_list测试接口)
  12. * GET /api/share?audioId=xxx
  13. */
  14. router.get('/', async (ctx) => {
  15. try {
  16. const { audioId } = ctx.query;
  17. if (!audioId) {
  18. ctx.body = {
  19. code: 400,
  20. message: 'audioId is required',
  21. };
  22. return;
  23. }
  24. const card = await share_service_1.shareService.generateShareCard(audioId);
  25. ctx.body = {
  26. code: 0,
  27. message: 'success',
  28. data: card,
  29. };
  30. }
  31. catch (error) {
  32. ctx.body = {
  33. code: 400,
  34. message: error.message || '获取分享信息失败',
  35. };
  36. }
  37. });
  38. /**
  39. * 获取分享卡片信息
  40. * GET /api/share/card/:audioId
  41. */
  42. router.get('/card/:audioId', async (ctx) => {
  43. try {
  44. const { audioId } = ctx.params;
  45. const card = await share_service_1.shareService.generateShareCard(audioId);
  46. ctx.body = {
  47. code: 0,
  48. message: 'success',
  49. data: card,
  50. };
  51. }
  52. catch (error) {
  53. ctx.body = {
  54. code: 400,
  55. message: error.message || '获取分享信息失败',
  56. };
  57. }
  58. });
  59. /**
  60. * 生成二维码数据
  61. * GET /api/share/qrcode/:audioId
  62. */
  63. router.get('/qrcode/:audioId', async (ctx) => {
  64. try {
  65. const { audioId } = ctx.params;
  66. const qrData = share_service_1.shareService.generateQRCodeData(audioId);
  67. ctx.body = {
  68. code: 0,
  69. message: 'success',
  70. data: {
  71. text: qrData,
  72. },
  73. };
  74. }
  75. catch (error) {
  76. ctx.body = {
  77. code: 400,
  78. message: error.message || '生成二维码失败',
  79. };
  80. }
  81. });
  82. /**
  83. * 记录分享行为
  84. * POST /api/share/track
  85. */
  86. router.post('/track', auth_1.authMiddleware, async (ctx) => {
  87. try {
  88. const { audioId, platform } = ctx.request.body;
  89. const userId = ctx.state.user.id;
  90. await share_service_1.shareService.trackShare(audioId, userId, platform);
  91. ctx.body = {
  92. code: 0,
  93. message: 'success',
  94. };
  95. }
  96. catch (error) {
  97. ctx.body = {
  98. code: 400,
  99. message: error.message || '记录分享失败',
  100. };
  101. }
  102. });
  103. exports.default = router;