diff --git a/api/controller_front/invite.js b/api/controller_front/invite.js index 1f941e8..343014a 100644 --- a/api/controller_front/invite.js +++ b/api/controller_front/invite.js @@ -6,7 +6,7 @@ const Framework = require("../../framework/node-core-framework.js"); const dayjs = require('dayjs'); const email_service = require('../services/email_service.js'); - +const redis = require('../../middleware/redis_proxy'); module.exports = { /** * @swagger @@ -550,7 +550,7 @@ module.exports = { async function sendEmailCode(email) { try { // 获取框架的 Redis 服务 - const redis_service = Framework.getServices().redisService; + // 统一邮箱地址为小写,避免大小写不一致导致的问题 const email_lower = email.toLowerCase().trim(); @@ -569,7 +569,7 @@ async function sendEmailCode(email) { // 存储到 Redis,设置 5 分钟过期时间(300秒) try { - await redis_service.set(redis_key, JSON.stringify(code_data), 300); + await redis.set(redis_key, JSON.stringify(code_data), 300); } catch (redis_error) { console.error(`[邮箱验证] Redis 存储失败: ${email_lower}`, redis_error); return { @@ -586,7 +586,7 @@ async function sendEmailCode(email) { if (!email_result.success) { // 如果邮件发送失败,删除已生成的验证码 try { - await redis_service.del(redis_key); + await redis.del(redis_key); } catch (del_error) { console.error(`[邮箱验证] 删除验证码失败:`, del_error); } @@ -621,7 +621,7 @@ async function sendEmailCode(email) { async function verifyEmailCode(email, code) { try { // 获取框架的 Redis 服务 - const redis_service = Framework.getServices().redisService; + const redis = Framework.getServices().redisService; // 统一邮箱地址为小写,避免大小写不一致导致的问题 const email_lower = email.toLowerCase().trim(); @@ -634,7 +634,7 @@ async function verifyEmailCode(email, code) { // 从 Redis 获取验证码 let cached_str; try { - cached_str = await redis_service.get(redis_key); + cached_str = await redis.get(redis_key); } catch (redis_error) { console.error(`[邮箱验证] Redis 获取失败:`, redis_error); return { @@ -658,7 +658,7 @@ async function verifyEmailCode(email, code) { } catch (parse_error) { console.error(`[邮箱验证] 解析验证码数据失败:`, parse_error); try { - await redis_service.del(redis_key); + await redis.del(redis_key); } catch (del_error) { console.error(`[邮箱验证] 删除异常数据失败:`, del_error); } @@ -681,7 +681,7 @@ async function verifyEmailCode(email, code) { // 验证成功后删除缓存 try { - await redis_service.del(redis_key); + await redis.del(redis_key); } catch (del_error) { console.error(`[邮箱验证] 删除验证码失败:`, del_error); } diff --git a/api/middleware/redis_proxy.js b/api/middleware/redis_proxy.js new file mode 100644 index 0000000..443496f --- /dev/null +++ b/api/middleware/redis_proxy.js @@ -0,0 +1,22 @@ +/** + * Redis 服务代理 + * 从 Framework 获取 redisService + */ + +const Framework = require("../framework/node-core-framework.js"); + +module.exports = new Proxy({}, { + get(_, prop) { + const services = Framework.getServices(); + const redisService = services?.redisService; + + if (!redisService) { + throw new Error('Redis service not available. Framework may not be initialized.'); + } + + return typeof redisService[prop] === 'function' + ? redisService[prop].bind(redisService) + : redisService[prop]; + } +}); +