Files
sweet-hut-service/home-service/src/main/java/com/cxx/home/schedule/QuartzJob.java
2025-06-10 23:29:25 +08:00

56 lines
1.8 KiB
Java

package com.cxx.home.schedule;
import com.cxx.home.dto.message.MailMessageDto;
import com.cxx.home.entity.Task;
import com.cxx.framework.web.CustomException;
import com.cxx.home.mapper.TaskMapper;
import com.cxx.home.service.MessageService;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
@Slf4j
public class QuartzJob implements Job {
@Resource
private TaskMapper taskMapper;
@Resource
private MessageService messageService;
private final ObjectMapper objectMapper = new ObjectMapper();
@Override
public void execute(JobExecutionContext context) {
JobDataMap jobDataMap = context.getJobDetail().getJobDataMap();
Long taskId = jobDataMap.getLong("id");
Task task = taskMapper.selectById(taskId);
try {
JsonNode taskContent = objectMapper.readTree(task.getContent());
switch (task.getType()) {
case TaskType.EMAIL:
handleEmailTask(taskContent);
break;
case TaskType.SMS:
break;
}
} catch (Exception e) {
throw new CustomException("执行任务错误:", e.getMessage());
}
}
private void handleEmailTask(JsonNode taskContent) {
MailMessageDto mailMessageDto = new MailMessageDto();
mailMessageDto.setTo(taskContent.get("to").asText());
mailMessageDto.setSubject(taskContent.get("subject").asText());
mailMessageDto.setBody(taskContent.get("body").asText());
messageService.sendMailMessage(mailMessageDto);
}
}