券 失效定时任务 领取列表 头像 名称
This commit is contained in:
parent
60bcef1e9b
commit
e18dbe51d6
|
|
@ -0,0 +1,57 @@
|
|||
package com.czg.task;
|
||||
|
||||
import com.czg.config.RedisCst;
|
||||
import com.czg.market.entity.MkShopCouponRecord;
|
||||
import com.czg.market.service.MkShopCouponRecordService;
|
||||
import com.czg.service.RedisService;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 订单定时任务
|
||||
*
|
||||
* @author ww
|
||||
* @description
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class CouponTask {
|
||||
@Resource
|
||||
private MkShopCouponRecordService mkShopCouponRecordService;
|
||||
@Resource
|
||||
private RedisService redisService;
|
||||
|
||||
/**
|
||||
* 优惠券 过期
|
||||
*/
|
||||
@Scheduled(cron = "0 30 * * * ? ")
|
||||
public void deliver() {
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
mkShopCouponRecordService.update(MkShopCouponRecord.builder().status(2).build(), new QueryWrapper()
|
||||
.eq(MkShopCouponRecord::getStatus, 0)
|
||||
.le(MkShopCouponRecord::getUseEndTime, now)
|
||||
);
|
||||
// 计算当前时间加一小时
|
||||
LocalDateTime oneHourLater = now.plusHours(1);
|
||||
List<MkShopCouponRecord> list = mkShopCouponRecordService.list(new QueryWrapper()
|
||||
.eq(MkShopCouponRecord::getStatus, 0)
|
||||
.le(MkShopCouponRecord::getUseEndTime, oneHourLater)
|
||||
);
|
||||
for (MkShopCouponRecord mkShopCouponRecord : list) {
|
||||
LocalDateTime endTime = mkShopCouponRecord.getUseEndTime();
|
||||
if (endTime != null) {
|
||||
Duration duration = Duration.between(now, endTime);
|
||||
long seconds = duration.getSeconds() % 60;
|
||||
redisService.set(RedisCst.classKeyExpired.EXPIRED_COUPON + mkShopCouponRecord.getId(), mkShopCouponRecord.getId(), seconds);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,7 +1,10 @@
|
|||
package com.czg.config;
|
||||
|
||||
import com.czg.account.service.ShopTableService;
|
||||
import com.czg.market.entity.MkShopCouponRecord;
|
||||
import com.czg.market.service.MkShopCouponRecordService;
|
||||
import com.czg.order.service.OrderInfoService;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
|
|
@ -29,6 +32,8 @@ public class RedisKeyExpirationListener implements MessageListener {
|
|||
private OrderInfoService orderInfoService;
|
||||
@DubboReference
|
||||
private ShopTableService tableService;
|
||||
@Resource
|
||||
private MkShopCouponRecordService mkShopCouponRecordService;
|
||||
|
||||
|
||||
//redis key失效监听
|
||||
|
|
@ -50,10 +55,17 @@ public class RedisKeyExpirationListener implements MessageListener {
|
|||
log.info("监听到订单过期,订单Id: {}", expiredKey);
|
||||
String orderId = expiredKey.substring(RedisCst.classKeyExpired.EXPIRED_ORDER.length());
|
||||
orderInfoService.expired(Long.parseLong(orderId));
|
||||
}else if (expiredKey.startsWith(RedisCst.classKeyExpired.EXPIRED_TABLE)) {
|
||||
} else if (expiredKey.startsWith(RedisCst.classKeyExpired.EXPIRED_TABLE)) {
|
||||
log.info("监听到台桌清台过期,台桌Id: {}", expiredKey);
|
||||
String tableId = expiredKey.substring(RedisCst.classKeyExpired.EXPIRED_TABLE.length());
|
||||
tableService.expiredTable(Long.parseLong(tableId));
|
||||
} else if (expiredKey.startsWith(RedisCst.classKeyExpired.EXPIRED_COUPON)) {
|
||||
log.info("监听到优惠券过期,优惠券Id: {}", expiredKey);
|
||||
String couponId = expiredKey.substring(RedisCst.classKeyExpired.EXPIRED_COUPON.length());
|
||||
mkShopCouponRecordService.update(MkShopCouponRecord.builder().status(2).build(), new QueryWrapper()
|
||||
.eq(MkShopCouponRecord::getStatus, 0)
|
||||
.eq(MkShopCouponRecord::getId, Long.parseLong(couponId))
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,8 @@ public interface RedisCst {
|
|||
public static final String EXPIRED_ORDER = "expired:order:";
|
||||
//台桌清台key过期
|
||||
public static final String EXPIRED_TABLE = "expired:table:";
|
||||
//优惠券过期
|
||||
public static final String EXPIRED_COUPON = "expired:coupon:";
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -80,8 +80,8 @@ public class MkShopCouponRecordServiceImpl extends ServiceImpl<MkShopCouponRecor
|
|||
@Override
|
||||
public Page<MkShopCouponRecordDTO> getRecord(String search, MkShopCouponRecordDTO mkShopCouponRecordDTO, String startTime, String endTime) {
|
||||
Map<Long, UserInfo> userInfoMap = new HashMap<>();
|
||||
QueryWrapper queryWrapper = new QueryWrapper();
|
||||
if (StrUtil.isNotBlank(search)) {
|
||||
QueryWrapper queryWrapper = new QueryWrapper();
|
||||
queryWrapper.and(q -> {
|
||||
q.like(UserInfo::getId, search).or(r -> {
|
||||
r.like(UserInfo::getNickName, search);
|
||||
|
|
@ -89,12 +89,12 @@ public class MkShopCouponRecordServiceImpl extends ServiceImpl<MkShopCouponRecor
|
|||
s.like(UserInfo::getPhone, search);
|
||||
});
|
||||
});
|
||||
List<UserInfo> userInfos = userInfoService.list(queryWrapper);
|
||||
if (CollUtil.isNotEmpty(userInfos)) {
|
||||
userInfoMap = userInfos.stream().collect(Collectors.toMap(UserInfo::getId, userInfo -> userInfo));
|
||||
} else {
|
||||
return new Page<>();
|
||||
}
|
||||
}
|
||||
List<UserInfo> userInfos = userInfoService.list(queryWrapper);
|
||||
if (CollUtil.isNotEmpty(userInfos)) {
|
||||
userInfoMap = userInfos.stream().collect(Collectors.toMap(UserInfo::getId, userInfo -> userInfo));
|
||||
} else {
|
||||
return new Page<>();
|
||||
}
|
||||
QueryWrapper recordQueryWrapper = new QueryWrapper();
|
||||
recordQueryWrapper.eq(MkShopCouponRecord::getShopId, mkShopCouponRecordDTO.getShopId())
|
||||
|
|
@ -107,7 +107,7 @@ public class MkShopCouponRecordServiceImpl extends ServiceImpl<MkShopCouponRecor
|
|||
}
|
||||
if (CollUtil.isNotEmpty(userInfoMap)) {
|
||||
recordQueryWrapper.in(MkShopCouponRecord::getUserId, userInfoMap.keySet());
|
||||
} else {
|
||||
} else if (mkShopCouponRecordDTO.getUserId() != null) {
|
||||
recordQueryWrapper.eq(MkShopCouponRecord::getUserId, mkShopCouponRecordDTO.getUserId());
|
||||
}
|
||||
Page<MkShopCouponRecordDTO> recordPage = pageAs(PageUtil.buildPage(), recordQueryWrapper, MkShopCouponRecordDTO.class);
|
||||
|
|
@ -117,6 +117,18 @@ public class MkShopCouponRecordServiceImpl extends ServiceImpl<MkShopCouponRecor
|
|||
record.setHeadImg(userInfo.getHeadImg());
|
||||
record.setNickName(userInfo.getNickName());
|
||||
}
|
||||
} else if (mkShopCouponRecordDTO.getUserId() != null) {
|
||||
UserInfo userInfo = userInfoService.getById(mkShopCouponRecordDTO.getUserId());
|
||||
for (MkShopCouponRecordDTO record : recordPage.getRecords()) {
|
||||
record.setHeadImg(userInfo.getHeadImg());
|
||||
record.setNickName(userInfo.getNickName());
|
||||
}
|
||||
} else {
|
||||
for (MkShopCouponRecordDTO record : recordPage.getRecords()) {
|
||||
UserInfo userInfo = userInfoService.getById(record.getUserId());
|
||||
record.setHeadImg(userInfo.getHeadImg());
|
||||
record.setNickName(userInfo.getNickName());
|
||||
}
|
||||
}
|
||||
return recordPage;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue