package top.weiyuexin.service.impl;

import cn.hutool.core.util.RandomUtil;
import cn.hutool.extra.mail.MailUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import top.weiyuexin.pojo.vo.R;
import top.weiyuexin.service.EmailService;

import java.io.File;
import java.util.concurrent.TimeUnit;

/**
 * @PackageName: top.weiyuexin.service.impl
 * @ProjectName: Online-code-evaluation-system
 * @ClassName: EmailServiceImpl
 * @Author: Weiyuexin
 * @Email: 3022422894@qq.com
 * @Date: 2023/2/8 18:53
 */
@Service
public class EmailServiceImpl implements EmailService {
    @Autowired
    private StringRedisTemplate redisTemplate;
    /**
     * 发送邮件
     * @param email //收件人
     * @return
     */
    @Override
    public R send(String email) {
        //随机产生验证码
        Integer emailCode = RandomUtil.randomInt(10000,99999);
        //信息标题
        String title = "验证你的邮箱";
        //信息内容
        String emailCodeContent = "您的验证码是 "+ emailCode + ", 请在五分钟内完成验证。";
        //调用HuTool中的发送验证码的方法，发送验证码
        try {
            MailUtil.send(email,title,emailCodeContent,false);
//            MailUtil.sendText(email,title,emailCodeContent, (File) null);
            // 将验证码保存到Redis，并设置过期时间为5分钟
            redisTemplate.opsForValue().set("emailCode:"+email, String.valueOf(emailCode),60*5, TimeUnit.SECONDS);
            return R.success("验证码发送成功！");
        }catch (Exception e){
            //发送失败
            return R.error("发送失败，请检查邮箱是否填写正确后重试!");
        }
    }
}
