From 4a28184ee117fa3aa5bf150d3e97698fd6c3e13c Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期三, 29 四月 2026 20:35:40 +0800
Subject: [PATCH] feat:冒烟修改
---
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TExchangeCodePackageServiceImpl.java | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 54 insertions(+), 0 deletions(-)
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TExchangeCodePackageServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TExchangeCodePackageServiceImpl.java
index 8a22735..f6c5449 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TExchangeCodePackageServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TExchangeCodePackageServiceImpl.java
@@ -61,6 +61,7 @@
private static final Integer USE_RECORD_TYPE_EXCHANGE = 1;
private static final Integer USE_RECORD_TYPE_CONSUME = 2;
private static final Integer USE_RECORD_TYPE_REFUND = 3;
+ private static final String EXPIRE_INVALID_REASON = "领取截止日期已过期";
private static final DateTimeFormatter BATCH_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
@Resource
@@ -112,6 +113,35 @@
}
@Override
+ public void updatePackageStatus(Long id, Integer status) {
+ if (id == null) {
+ throw new ServiceException("卡包ID不能为空");
+ }
+ if (!STATUS_ENABLE.equals(status) && !STATUS_DISABLE.equals(status)) {
+ throw new ServiceException("启用状态不正确");
+ }
+ TExchangeCodePackage old = this.getById(id);
+ if (old == null) {
+ throw new ServiceException("卡包不存在");
+ }
+ TExchangeCodePackage entity = new TExchangeCodePackage();
+ entity.setId(id);
+ entity.setStatus(status);
+ this.updateById(entity);
+ }
+
+ @Override
+ public void refreshExpiredPackageCodes() {
+ List<TExchangeCodePackage> expiredPackages = this.list(new QueryWrapper<TExchangeCodePackage>()
+ .isNotNull("expire_time")
+ .lt("expire_time", LocalDateTime.now())
+ .eq("del_flag", 0));
+ for (TExchangeCodePackage exchangePackage : expiredPackages) {
+ refreshExpiredPackageCodes(exchangePackage.getId());
+ }
+ }
+
+ @Override
@Transactional(rollbackFor = Exception.class)
public void deletePackage(String ids) {
if (!StringUtils.hasText(ids)) {
@@ -142,6 +172,7 @@
if (entity == null) {
throw new ServiceException("卡包不存在");
}
+ refreshExpiredPackageCodes(id);
refreshPackageStats(id);
entity = this.getById(id);
ExchangeCodePackageDetailVO detailVO = new ExchangeCodePackageDetailVO();
@@ -171,6 +202,7 @@
@Override
public PageInfo<ExchangeCodeDetailVO> codePage(ExchangeCodeDetailQuery query) {
+ refreshExpiredPackageCodes(query.getPackageId());
PageInfo<ExchangeCodeDetailVO> pageInfo = new PageInfo<>(query.getPageCurr(), query.getPageSize());
List<ExchangeCodeDetailVO> records = codeDetailMapper.pageList(pageInfo, query);
pageInfo.setRecords(records);
@@ -179,6 +211,7 @@
@Override
public List<ExchangeCodeDetailVO> exportCodes(ExchangeCodeDetailQuery query) {
+ refreshExpiredPackageCodes(query.getPackageId());
return codeDetailMapper.exportList(query);
}
@@ -255,6 +288,7 @@
throw new ServiceException("卡包已下架");
}
if (exchangePackage.getExpireTime() != null && exchangePackage.getExpireTime().isBefore(LocalDateTime.now())) {
+ refreshExpiredPackageCodes(exchangePackage.getId());
throw new ServiceException("已失效");
}
if (Objects.equals(detail.getStatus(), CODE_STATUS_INVALID)) {
@@ -657,6 +691,26 @@
this.baseMapper.updateById(entity);
}
+ private void refreshExpiredPackageCodes(Long packageId) {
+ if (packageId == null) {
+ return;
+ }
+ TExchangeCodePackage exchangePackage = this.getById(packageId);
+ if (exchangePackage == null || exchangePackage.getExpireTime() == null
+ || !exchangePackage.getExpireTime().isBefore(LocalDateTime.now())) {
+ return;
+ }
+ TExchangeCodeDetail detail = new TExchangeCodeDetail();
+ detail.setStatus(CODE_STATUS_INVALID);
+ detail.setInvalidTime(LocalDateTime.now());
+ detail.setInvalidReason(EXPIRE_INVALID_REASON);
+ codeDetailMapper.update(detail, new QueryWrapper<TExchangeCodeDetail>()
+ .eq("package_id", packageId)
+ .eq("status", CODE_STATUS_UNBOUND)
+ .eq("del_flag", 0));
+ refreshPackageStats(packageId);
+ }
+
private String generateCode(Long packageId, int seq) {
return "CD" + packageId + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss")) + String.format("%03d", seq);
}
--
Gitblit v1.7.1