/** * 推广邀请管理控制器(客户端接口) * 提供客户端调用的推广邀请相关接口 */ const Framework = require("../../framework/node-core-framework.js"); module.exports = { /** * @swagger * /api/invite/info: * get: * summary: 获取邀请信息 * description: 根据用户ID获取邀请码和邀请链接 * tags: [前端-推广邀请] * responses: * 200: * description: 获取成功 */ 'GET /invite/info': async (ctx) => { try { // 从query或body中获取user_id,实际应该从token中解析 const body = ctx.getBody(); const user_id = body.user_id || ctx.query?.user_id; if (!user_id) { return ctx.fail('请先登录'); } // 生成邀请码(基于用户ID) const invite_code = `INV${user_id}${Date.now().toString(36).toUpperCase()}`; const invite_link = `https://work.light120.com/invite?code=${invite_code}`; return ctx.success({ invite_code, invite_link, user_id }); } catch (error) { console.error('获取邀请信息失败:', error); return ctx.fail('获取邀请信息失败: ' + error.message); } }, /** * @swagger * /api/invite/statistics: * get: * summary: 获取邀请统计 * description: 根据用户ID获取邀请统计数据 * tags: [前端-推广邀请] * responses: * 200: * description: 获取成功 */ 'GET /invite/statistics': async (ctx) => { try { // 从query或body中获取user_id,实际应该从token中解析 const body = ctx.getBody() || {}; const user_id = body.user_id || ctx.query?.user_id; if (!user_id) { return ctx.fail('请先登录'); } // 这里可以从数据库查询邀请统计,暂时返回模拟数据 return ctx.success({ totalInvites: 0, activeInvites: 0, rewardPoints: 0, rewardAmount: 0 }); } catch (error) { console.error('获取邀请统计失败:', error); return ctx.fail('获取邀请统计失败: ' + error.message); } }, /** * @swagger * /api/invite/generate: * post: * summary: 生成邀请码 * description: 为用户生成新的邀请码 * tags: [前端-推广邀请] * responses: * 200: * description: 生成成功 */ 'POST /invite/generate': async (ctx) => { try { // 从query或body中获取user_id,实际应该从token中解析 const body = ctx.getBody() || {}; const user_id = body.user_id || ctx.query?.user_id; if (!user_id) { return ctx.fail('请先登录'); } // 生成新的邀请码 const invite_code = `INV${user_id}${Date.now().toString(36).toUpperCase()}`; const invite_link = `https://work.light120.com/invite?code=${invite_code}`; return ctx.success({ invite_code, invite_link }); } catch (error) { console.error('生成邀请码失败:', error); return ctx.fail('生成邀请码失败: ' + error.message); } } };