| | |
| | | package com.ruoyi.job.task; |
| | | |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.order.feignClient.RemoteOrderGoodsClient; |
| | | import com.ruoyi.order.service.CommissionService; |
| | | import lombok.extern.log4j.Log4j2; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | |
| | | import javax.annotation.Resource; |
| | | import java.util.Set; |
| | | |
| | | @Component("ryTask") |
| | | @Component("afterSalesTask") |
| | | @Log4j2 |
| | | public class AfterSalesTask { |
| | | @Resource |
| | | private RedisTemplate<String, String> redisTemplate; |
| | | @Resource |
| | | private CommissionService commissionService; |
| | | private RemoteOrderGoodsClient remoteOrderGoodsClient; |
| | | |
| | | /** |
| | | * 计算佣金(设置每分钟执行一次) |
| | |
| | | // 从延迟队列中获取需要处理的订单 |
| | | Set<String> orderIds = redisTemplate.opsForZSet().rangeByScore("delay_queue:commission", 0, now); |
| | | if (orderIds != null && !orderIds.isEmpty()) { |
| | | commissionService.calculationCommission(orderIds); |
| | | R<Void> r = remoteOrderGoodsClient.calculationCommission(orderIds); |
| | | if (R.isError(r)) { |
| | | log.error("计算佣金失败,订单号:{},错误信息:{}", orderIds, r.getMsg()); |
| | | } |
| | | // 处理完后移除已处理的订单 |
| | | redisTemplate.opsForZSet().removeRangeByScore("delay_queue:commission", 0, now); |
| | | } |