package com.ruoyi.basic.service.impl; import com.ruoyi.basic.pojo.CustomerReturnVisit; import com.ruoyi.basic.service.CustomerReturnVisitService; import com.ruoyi.framework.redis.RedisCache; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.ZoneId; /** *
* 客户回访提醒服务 *
* * @author deslrey * @version 1.0 * @since 2026/03/05 10:45 */ @Slf4j @Service public class ReturnVisitReminderService { private static final String REMINDER_QUEUE_KEY = "return_visit:reminder:queue"; @Autowired private RedisCache redisCache; @Autowired private CustomerReturnVisitService customerReturnVisitService; @SuppressWarnings("unchecked") public void scheduleReminder(Long returnVisitId) { CustomerReturnVisit returnVisit = customerReturnVisitService.getById(returnVisitId); if (returnVisit == null || returnVisit.getIsEnabled() == 0) { return; } long timestamp = returnVisit.getReminderTime() .atZone(ZoneId.systemDefault()) .toInstant() .toEpochMilli(); redisCache.redisTemplate.opsForZSet().add(REMINDER_QUEUE_KEY, returnVisitId, timestamp); log.info("已添加回访提醒到队列: ID={}, 提醒时间={}", returnVisitId, returnVisit.getReminderTime()); } @SuppressWarnings("unchecked") public void cancelReminder(Long returnVisitId) { redisCache.redisTemplate.opsForZSet().remove(REMINDER_QUEUE_KEY, returnVisitId); log.info("已取消回访提醒: ID={}", returnVisitId); } }