|
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.citu.framework.common.pojo.PageResult;
|
|
|
import com.citu.framework.common.util.object.BeanUtils;
|
|
|
import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
|
+import com.citu.framework.tenant.core.job.TenantJob;
|
|
|
import com.citu.module.menduner.system.api.user.MendunerUserApi;
|
|
|
import com.citu.module.menduner.system.api.user.UserInfoRespDTO;
|
|
|
import com.citu.module.promotion.api.luck.LuckRaffleReqDTO;
|
|
@@ -22,6 +23,8 @@ import com.citu.module.promotion.dal.dataobject.luck.LuckPrizeDO;
|
|
|
import com.citu.module.promotion.dal.dataobject.luck.LuckUserTargetDO;
|
|
|
import com.citu.module.promotion.dal.mysql.luck.LuckLotteryRecordMapper;
|
|
|
import com.citu.module.promotion.dal.mysql.luck.LuckUserTargetMapper;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.scheduling.annotation.Scheduled;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
@@ -39,6 +42,7 @@ import static com.citu.module.promotion.enums.ErrorCodeConstants.LUCK_LOTTERY_RE
|
|
|
* @author Rayson
|
|
|
*/
|
|
|
@Service
|
|
|
+@Slf4j
|
|
|
@Validated
|
|
|
public class LuckLotteryRecordServiceImpl implements LuckLotteryRecordService {
|
|
|
|
|
@@ -308,6 +312,20 @@ public class LuckLotteryRecordServiceImpl implements LuckLotteryRecordService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @DSTransactional
|
|
|
+ public void giveUp(Long id) {
|
|
|
+ LuckLotteryRecordDO record = luckLotteryRecordMapper.selectById(id);
|
|
|
+ if (null == record) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 解冻数量
|
|
|
+ luckPrizeService.unfreeze(record.getPrizeId(), 1);
|
|
|
+ // 删除抽奖记录
|
|
|
+ luckLotteryRecordMapper.deleteById(record.getId());
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public LuckLotteryRecordDetailRespVO getLast(Long lotteryId, Long userId) {
|
|
|
LuckLotteryRecordDO record = luckLotteryRecordMapper.getLast(lotteryId, userId);
|
|
@@ -376,4 +394,32 @@ public class LuckLotteryRecordServiceImpl implements LuckLotteryRecordService {
|
|
|
|
|
|
return resultMap;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 处理超过10天未领取的抽奖记录
|
|
|
+ * 每10分钟检测一次,自动放弃未领取的记录
|
|
|
+ */
|
|
|
+ @TenantJob
|
|
|
+ @Scheduled(cron = "0 */10 * * * *") // 每10分钟执行一次
|
|
|
+ public void handleUnclaimedRecord() {
|
|
|
+ // 查询超过10天未领取的抽奖记录
|
|
|
+ List<LuckLotteryRecordDO> unclaimedRecords = luckLotteryRecordMapper.selectUnclaimedRecordsOlderThan10Days();
|
|
|
+ if (CollUtil.isEmpty(unclaimedRecords)) {
|
|
|
+ log.info("未找到超过10天未领取的抽奖记录");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 遍历未领取的记录,逐一放弃
|
|
|
+ for (LuckLotteryRecordDO record : unclaimedRecords) {
|
|
|
+ try {
|
|
|
+ log.info("开始处理未领取的记录,记录ID:{},用户ID:{},创建时间:{}",
|
|
|
+ record.getId(), record.getUserId(), record.getCreateTime());
|
|
|
+ giveUp(record.getId()); // 放弃该记录
|
|
|
+ log.info("成功放弃记录,记录ID:{}", record.getId());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("放弃记录失败,记录ID:{},错误信息:{}", record.getId(), e.getMessage(), e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|