const sendEmail = require('./Email') class emailTemplate { stramptoTime(time) { if (time < 10) return ''; return new Date(+time).toLocaleString('zh-CN', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit' }); } async checkEmail(email, code) { const time = new Date().getTime() await sendEmail(email, 'RunForge - 邮箱验证码', ` RunForge - 邮箱验证码

RunForge - 邮箱验证码

尊敬的用户:

您正在本站进行邮箱验证操作,如非您本人操作,请忽略此邮件。

您的验证码为:

${code}

验证码5分钟内有效,超时请重新获取

` ) } async registerSuccess(email, username) { const time = new Date().getTime() await sendEmail(email, '您已成功注册RunForge账号', ` RunForge - 注册成功提醒

RunForge - 注册成功提醒

尊敬的 ${username}:

您已成功注册RunForge账号:

用户名: ${username}

注册时间: ${this.stramptoTime(time)}

` ) } async lepaoOver(email, data) { await sendEmail(email, '🎉乐跑完成祝贺', ` 🎉 RunForge - 乐跑完成祝贺

🏃‍♀️RunForge - 乐跑目标完成🎉

亲爱的 ${data.name} 宝宝 ꒰。•ᴗ•。꒱:

✨恭喜恭喜~你已经火力全开地完成了设定乐跑目标啦!🎊
不得不说,你就是我们心中的 小跑神 🌟💨,坚持到最后真的超级棒!💪( •̀ᄇ• ́)و

跑过的风,晒过的阳,每一步都是你努力的见证!🌤️🍃
我们在远程为你打Call中 📣📣📣 ~真的好佩服佩服你!

这一学期和你一起“并肩作战”,我们感到非常幸运!🧡
希望你收获了健康,也收获了快乐~o(≧▽≦)o

📬 如果有任何问题,随时给我们戳小窗~我们在线等你哟 (´▽`)ノ♪

🥳 祝你假期躺赢、学习加buff、每天都开心到冒泡泡!✧*。٩(ˊᗜˋ*)و✧*。
📚 新学期我们一起继续加速奔跑吧~Let's gooo!🔥🔥

🧡我们已经为您关闭了自动乐跑功能,如您需要继续乐跑,还可前往RunForge自行开启哦!

` ) } async lepaoSuccess(email, data) { await sendEmail(email, '乐跑成功提醒', ` RunForge - 乐跑成功提醒

RunForge - 乐跑成功啦 🎉💖

亲爱的 ${data.name} 宝宝:

耶耶耶~ 我们已经乖乖帮你完成了一次乐跑啦 ✨🏃‍♀️💨

学号: ${data.account}

跑区: ${data.area} 🌈

跑步时长: ${this.formatSecondsToMinSec(data.time)} ⏱️

平均配速: ${this.calculatePace(data.time, data.distance)} 🐇

跑步距离: ${Number(data.distance).toFixed(2)} Km 💕

累计次数: ${data.total_num} 次 ✨

开始时间: ${data.startTime} 🎯

结束时间: ${data.endTime} 💨

有问题随时找RunForge客服小可爱呀 💌 我们会陪你耐心解决的~

` ) } async lepaoFail(email, data) { const time = new Date().getTime() await sendEmail(email, '乐跑失败提醒', ` RunForge - 乐跑失败提醒

RunForge - 乐跑没有成功呢 😢💦

亲爱的 ${data.name ?? data.account} 宝宝 🌸:

我们刚刚尝试帮你完成乐跑的时候,遇到了一点小意外呢 💔💦:

学号: ${data.account} 🎓

时间: ${this.stramptoTime(time)} ⏰

失败原因: ${data.reason} 😭

宝宝随时可以来找RunForge客服小可爱哟 💌 我们会耐心陪宝宝解决问题的 🌈🥰

` ) } async orderNewReply(email, data) { await sendEmail(email, 'RunForge - 工单状态更新提醒', ` RunForge - 工单状态更新提醒

RunForge - 工单状态更新提醒

尊敬的用户:

您编号为${data.id}的工单有新的回复:

回复内容: ${data.content}

回复时间: ${this.stramptoTime(new Date().getTime())}

${data.files.length > 0 ? '当前回复内含有附件,前往RunForge官网内查看' : ''}

请前往RunForge官网回复工单,请勿直接回复邮件。

` ) } // 时长计算 formatSecondsToMinSec(totalSeconds) { const minutes = Math.floor(totalSeconds / 60); const seconds = totalSeconds % 60; return `${minutes}分${seconds.toString().padStart(2, '0')}秒`; } // 配速计算 calculatePace(seconds, kilometers) { const paceInSeconds = seconds / kilometers; const minutes = Math.floor(paceInSeconds / 60); const remainingSeconds = Math.round(paceInSeconds % 60); return `${minutes}'${remainingSeconds.toString().padStart(2, '0')}''`; } } const EmailTemplate = new emailTemplate() module.exports = EmailTemplate