券 失效定时任务 领取列表 头像 名称
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;
|
package com.czg.config;
|
||||||
|
|
||||||
import com.czg.account.service.ShopTableService;
|
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.czg.order.service.OrderInfoService;
|
||||||
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.dubbo.config.annotation.DubboReference;
|
import org.apache.dubbo.config.annotation.DubboReference;
|
||||||
|
|
@ -29,6 +32,8 @@ public class RedisKeyExpirationListener implements MessageListener {
|
||||||
private OrderInfoService orderInfoService;
|
private OrderInfoService orderInfoService;
|
||||||
@DubboReference
|
@DubboReference
|
||||||
private ShopTableService tableService;
|
private ShopTableService tableService;
|
||||||
|
@Resource
|
||||||
|
private MkShopCouponRecordService mkShopCouponRecordService;
|
||||||
|
|
||||||
|
|
||||||
//redis key失效监听
|
//redis key失效监听
|
||||||
|
|
@ -50,10 +55,17 @@ public class RedisKeyExpirationListener implements MessageListener {
|
||||||
log.info("监听到订单过期,订单Id: {}", expiredKey);
|
log.info("监听到订单过期,订单Id: {}", expiredKey);
|
||||||
String orderId = expiredKey.substring(RedisCst.classKeyExpired.EXPIRED_ORDER.length());
|
String orderId = expiredKey.substring(RedisCst.classKeyExpired.EXPIRED_ORDER.length());
|
||||||
orderInfoService.expired(Long.parseLong(orderId));
|
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);
|
log.info("监听到台桌清台过期,台桌Id: {}", expiredKey);
|
||||||
String tableId = expiredKey.substring(RedisCst.classKeyExpired.EXPIRED_TABLE.length());
|
String tableId = expiredKey.substring(RedisCst.classKeyExpired.EXPIRED_TABLE.length());
|
||||||
tableService.expiredTable(Long.parseLong(tableId));
|
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:";
|
public static final String EXPIRED_ORDER = "expired:order:";
|
||||||
//台桌清台key过期
|
//台桌清台key过期
|
||||||
public static final String EXPIRED_TABLE = "expired:table:";
|
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
|
@Override
|
||||||
public Page<MkShopCouponRecordDTO> getRecord(String search, MkShopCouponRecordDTO mkShopCouponRecordDTO, String startTime, String endTime) {
|
public Page<MkShopCouponRecordDTO> getRecord(String search, MkShopCouponRecordDTO mkShopCouponRecordDTO, String startTime, String endTime) {
|
||||||
Map<Long, UserInfo> userInfoMap = new HashMap<>();
|
Map<Long, UserInfo> userInfoMap = new HashMap<>();
|
||||||
|
QueryWrapper queryWrapper = new QueryWrapper();
|
||||||
if (StrUtil.isNotBlank(search)) {
|
if (StrUtil.isNotBlank(search)) {
|
||||||
QueryWrapper queryWrapper = new QueryWrapper();
|
|
||||||
queryWrapper.and(q -> {
|
queryWrapper.and(q -> {
|
||||||
q.like(UserInfo::getId, search).or(r -> {
|
q.like(UserInfo::getId, search).or(r -> {
|
||||||
r.like(UserInfo::getNickName, search);
|
r.like(UserInfo::getNickName, search);
|
||||||
|
|
@ -89,12 +89,12 @@ public class MkShopCouponRecordServiceImpl extends ServiceImpl<MkShopCouponRecor
|
||||||
s.like(UserInfo::getPhone, search);
|
s.like(UserInfo::getPhone, search);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
List<UserInfo> userInfos = userInfoService.list(queryWrapper);
|
}
|
||||||
if (CollUtil.isNotEmpty(userInfos)) {
|
List<UserInfo> userInfos = userInfoService.list(queryWrapper);
|
||||||
userInfoMap = userInfos.stream().collect(Collectors.toMap(UserInfo::getId, userInfo -> userInfo));
|
if (CollUtil.isNotEmpty(userInfos)) {
|
||||||
} else {
|
userInfoMap = userInfos.stream().collect(Collectors.toMap(UserInfo::getId, userInfo -> userInfo));
|
||||||
return new Page<>();
|
} else {
|
||||||
}
|
return new Page<>();
|
||||||
}
|
}
|
||||||
QueryWrapper recordQueryWrapper = new QueryWrapper();
|
QueryWrapper recordQueryWrapper = new QueryWrapper();
|
||||||
recordQueryWrapper.eq(MkShopCouponRecord::getShopId, mkShopCouponRecordDTO.getShopId())
|
recordQueryWrapper.eq(MkShopCouponRecord::getShopId, mkShopCouponRecordDTO.getShopId())
|
||||||
|
|
@ -107,7 +107,7 @@ public class MkShopCouponRecordServiceImpl extends ServiceImpl<MkShopCouponRecor
|
||||||
}
|
}
|
||||||
if (CollUtil.isNotEmpty(userInfoMap)) {
|
if (CollUtil.isNotEmpty(userInfoMap)) {
|
||||||
recordQueryWrapper.in(MkShopCouponRecord::getUserId, userInfoMap.keySet());
|
recordQueryWrapper.in(MkShopCouponRecord::getUserId, userInfoMap.keySet());
|
||||||
} else {
|
} else if (mkShopCouponRecordDTO.getUserId() != null) {
|
||||||
recordQueryWrapper.eq(MkShopCouponRecord::getUserId, mkShopCouponRecordDTO.getUserId());
|
recordQueryWrapper.eq(MkShopCouponRecord::getUserId, mkShopCouponRecordDTO.getUserId());
|
||||||
}
|
}
|
||||||
Page<MkShopCouponRecordDTO> recordPage = pageAs(PageUtil.buildPage(), recordQueryWrapper, MkShopCouponRecordDTO.class);
|
Page<MkShopCouponRecordDTO> recordPage = pageAs(PageUtil.buildPage(), recordQueryWrapper, MkShopCouponRecordDTO.class);
|
||||||
|
|
@ -117,6 +117,18 @@ public class MkShopCouponRecordServiceImpl extends ServiceImpl<MkShopCouponRecor
|
||||||
record.setHeadImg(userInfo.getHeadImg());
|
record.setHeadImg(userInfo.getHeadImg());
|
||||||
record.setNickName(userInfo.getNickName());
|
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;
|
return recordPage;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue