| | |
| | | import com.ruoyi.common.core.utils.DateUtils; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.system.api.constants.DelayTaskEnum; |
| | | import com.ruoyi.system.api.feignClient.GoodsSkuClient; |
| | | import java.util.Date; |
| | | import lombok.extern.log4j.Log4j2; |
| | | import javax.annotation.Resource; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.data.redis.connection.Message; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.data.redis.core.ValueOperations; |
| | | import org.springframework.data.redis.listener.KeyExpirationEventMessageListener; |
| | | import org.springframework.data.redis.listener.RedisMessageListenerContainer; |
| | | import org.springframework.scheduling.annotation.Async; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | |
| | |
| | | * @author mitao |
| | | * @date 2024/5/22 |
| | | */ |
| | | @Log4j2 |
| | | @Slf4j |
| | | @Component |
| | | public class RedisListener extends KeyExpirationEventMessageListener { |
| | | |
| | | private RedisTemplate<String, Object> redisTemplate; |
| | | |
| | | @Resource |
| | | private GoodsSkuClient goodsSkuClient; |
| | | public RedisListener(RedisMessageListenerContainer listenerContainer, |
| | | RedisTemplate redisTemplate) { |
| | | super(listenerContainer); |
| | |
| | | if(expiredKey.contains("-")){ |
| | | String[] split = expiredKey.split("-"); |
| | | String operation=split[0]; |
| | | Long id = Long.valueOf(split[1]); |
| | | if(DelayTaskEnum.SECKILL_START_TASK.getCode().equals(operation)){ |
| | | //自动开始任务 |
| | | //自动开始秒杀任务 |
| | | autoStartSeckill(id); |
| | | }else if(DelayTaskEnum.SECKILL_END_TASK.getCode().equals(operation)){ |
| | | //自动结束任务 |
| | | //自动结束秒杀任务 |
| | | autoEndSeckill(id); |
| | | }else if(DelayTaskEnum.GROUP_PURCHASES_START_TASK.getCode().equals(operation)){ |
| | | //自动开始任务 |
| | | //自动开始团购任务 |
| | | autoStartGroupPurchase(id); |
| | | } |
| | | else if(DelayTaskEnum.GROUP_PURCHASES_END_TASK.getCode().equals(operation)){ |
| | | //自动结束任务 |
| | | //自动结束团购任务 |
| | | autoEndGroupPurchase(id); |
| | | }else if(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode().equals(operation)){ |
| | | //自动结束任务 |
| | | //自动取消订单 |
| | | autoCancelOrder(id); |
| | | } |
| | | //删除失效的key |
| | | redisTemplate.delete(expiredKey); |
| | |
| | | } |
| | | |
| | | //延时任务表 |
| | | @Async |
| | | public void autoStartSeckill(Long seckillId) { |
| | | log.info("autoStartSeckill scheduler task is running :" + seckillId); |
| | | goodsSkuClient.startSeckill(seckillId); |
| | | |
| | | private void autoStartActivity(String activityId){ |
| | | log.info("autoStartActivity scheduler task is running :" + activityId); |
| | | } |
| | | |
| | | private void autoEndActivity(String activityId){ |
| | | log.info("autoEndActivity scheduler task is running :" + activityId); |
| | | @Async |
| | | public void autoEndSeckill(Long seckillId) { |
| | | log.info("autoEndSeckill scheduler task is running :" + seckillId); |
| | | goodsSkuClient.endSeckill(seckillId); |
| | | } |
| | | |
| | | private void autoCancelOrder(String orderId){ |
| | | @Async |
| | | public void autoStartGroupPurchase(Long GroupPurchaseId) { |
| | | log.info("autoStartGroupPurchase scheduler task is running :" + GroupPurchaseId); |
| | | goodsSkuClient.startGroupPurchase(GroupPurchaseId); |
| | | } |
| | | |
| | | @Async |
| | | public void autoEndGroupPurchase(Long GroupPurchaseId) { |
| | | log.info("autoEndGroupPurchase scheduler task is running :" + GroupPurchaseId); |
| | | goodsSkuClient.endGroupPurchase(GroupPurchaseId); |
| | | } |
| | | |
| | | @Async |
| | | public void autoCancelOrder(Long orderId) { |
| | | log.info("autoCancelOrder scheduler task is running :" + orderId); |
| | | } |
| | | } |