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;
|
|
/**
|
* <br>
|
* 客户回访提醒服务
|
* </br>
|
*
|
* @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);
|
}
|
}
|