diff --git a/flash-sale-frontend/src/api/modules/flashsale.ts b/flash-sale-frontend/src/api/modules/flashsale.ts
index fa35e96..ff6ef30 100644
--- a/flash-sale-frontend/src/api/modules/flashsale.ts
+++ b/flash-sale-frontend/src/api/modules/flashsale.ts
@@ -6,6 +6,7 @@ const flashSaleStatusToCode = (status?: string) => {
if (status === 'UPCOMING') return 1
if (status === 'ACTIVE') return 2
if (status === 'ENDED') return 3
+ if (status === 'PAUSED') return 4
return undefined
}
diff --git a/flash-sale-frontend/src/components/business/FlashSaleCard.vue b/flash-sale-frontend/src/components/business/FlashSaleCard.vue
index 3ae082a..5daea4a 100644
--- a/flash-sale-frontend/src/components/business/FlashSaleCard.vue
+++ b/flash-sale-frontend/src/components/business/FlashSaleCard.vue
@@ -61,6 +61,7 @@ const statusType = computed(() => {
case 'UPCOMING': return 'warning'
case 'ACTIVE': return 'danger'
case 'ENDED': return 'info'
+ case 'PAUSED': return 'warning'
default: return 'info'
}
})
@@ -70,6 +71,7 @@ const statusText = computed(() => {
case 'UPCOMING': return '即将开始'
case 'ACTIVE': return '秒杀中'
case 'ENDED': return '已结束'
+ case 'PAUSED': return '已暂停'
default: return '未知'
}
})
diff --git a/flash-sale-frontend/src/pages/admin/flashsales.vue b/flash-sale-frontend/src/pages/admin/flashsales.vue
index 12033d3..dc62d10 100644
--- a/flash-sale-frontend/src/pages/admin/flashsales.vue
+++ b/flash-sale-frontend/src/pages/admin/flashsales.vue
@@ -43,6 +43,7 @@
+
搜索
@@ -88,8 +89,8 @@
编辑
发布
暂停
- 恢复
- 结束
+ 恢复
+ 结束
删除
@@ -253,6 +254,7 @@ const getStatusText = (status: string) => {
const map: Record = {
UPCOMING: '即将开始',
ACTIVE: '进行中',
+ PAUSED: '已暂停',
ENDED: '已结束',
}
return map[status] || status
@@ -262,6 +264,7 @@ const getStatusType = (status: string) => {
const map: Record = {
UPCOMING: 'warning',
ACTIVE: 'danger',
+ PAUSED: 'warning',
ENDED: 'info',
}
return map[status] || 'info'
diff --git a/flash-sale-frontend/src/types/api.d.ts b/flash-sale-frontend/src/types/api.d.ts
index 750f910..8520b18 100644
--- a/flash-sale-frontend/src/types/api.d.ts
+++ b/flash-sale-frontend/src/types/api.d.ts
@@ -83,7 +83,7 @@ export interface FlashSale {
remainingStock: number
startTime: string
endTime: string
- status: 'UPCOMING' | 'ACTIVE' | 'ENDED'
+ status: 'UPCOMING' | 'ACTIVE' | 'ENDED' | 'PAUSED'
limitPerUser: number
description?: string
createdAt: string
diff --git a/flash-sale-frontend/src/utils/normalizers.ts b/flash-sale-frontend/src/utils/normalizers.ts
index 02d261a..716fb11 100644
--- a/flash-sale-frontend/src/utils/normalizers.ts
+++ b/flash-sale-frontend/src/utils/normalizers.ts
@@ -59,6 +59,7 @@ export const mapFlashSaleStatus = (status: number | string): FlashSale['status']
if (value === 'UPCOMING' || value === 1) return 'UPCOMING'
if (value === 'ACTIVE' || value === 2) return 'ACTIVE'
if (value === 'ENDED' || value === 3) return 'ENDED'
+ if (value === 'PAUSED' || value === 4) return 'PAUSED'
return 'UPCOMING'
}
diff --git a/src/main/java/com/org/flashsalesystem/repository/FlashSaleRepository.java b/src/main/java/com/org/flashsalesystem/repository/FlashSaleRepository.java
index 0f195e4..83efe97 100644
--- a/src/main/java/com/org/flashsalesystem/repository/FlashSaleRepository.java
+++ b/src/main/java/com/org/flashsalesystem/repository/FlashSaleRepository.java
@@ -71,6 +71,11 @@ public interface FlashSaleRepository extends JpaRepository {
@Query("SELECT f FROM FlashSale f WHERE f.endTime <= :now OR f.status = 3")
Page findEndedFlashSales(@Param("now") LocalDateTime now, Pageable pageable);
+ /**
+ * 按状态分页查找秒杀活动
+ */
+ Page findByStatus(Integer status, Pageable pageable);
+
/**
* 更新秒杀库存
*/
diff --git a/src/main/java/com/org/flashsalesystem/service/FlashSaleService.java b/src/main/java/com/org/flashsalesystem/service/FlashSaleService.java
index c2f42ef..c89bb75 100644
--- a/src/main/java/com/org/flashsalesystem/service/FlashSaleService.java
+++ b/src/main/java/com/org/flashsalesystem/service/FlashSaleService.java
@@ -326,19 +326,7 @@ public class FlashSaleService {
} else {
// 根据状态查询
if (queryDTO.getStatus() != null) {
- switch (queryDTO.getStatus()) {
- case 1: // 未开始
- flashSalePage = flashSaleRepository.findUpcomingFlashSales(now, pageable);
- break;
- case 2: // 进行中
- flashSalePage = flashSaleRepository.findActiveFlashSales(now, pageable);
- break;
- case 3: // 已结束
- flashSalePage = flashSaleRepository.findEndedFlashSales(now, pageable);
- break;
- default:
- flashSalePage = flashSaleRepository.findAll(pageable);
- }
+ flashSalePage = flashSaleRepository.findByStatus(queryDTO.getStatus(), pageable);
} else {
flashSalePage = flashSaleRepository.findAll(pageable);
}
@@ -753,10 +741,16 @@ public class FlashSaleService {
FlashSale flashSale = flashSaleOpt.get();
+ // 更新状态为进行中 (status = 2)
+ flashSaleRepository.updateStatus(flashSaleId, 2);
+ flashSale.setStatus(2);
+
// 预热缓存
preloadFlashSale(flashSaleId);
+ // 更新缓存
Product product = productRepository.findById(flashSale.getProductId()).orElse(null);
+ cacheFlashSaleInfo(flashSale, product);
log.info("秒杀活动发布成功: ID={}", flashSaleId);