```sql -- 商品表扩展 ALTER TABLE products ADD COLUMN production_date DATE; ALTER TABLE products ADD COLUMN shelf_life_days INT; -- 保质期天数 ALTER TABLE products ADD COLUMN expiration_date DATE GENERATED ALWAYS AS (DATE_ADD(production_date, INTERVAL shelf_life_days DAY)) STORED;
-- 临期商品提醒表 CREATE TABLE expiration_alerts ( id INT AUTO_INCREMENT PRIMARY KEY, product_id INT NOT NULL, alert_level ENUM(warning, urgent) NOT NULL, -- 提醒级别 alert_date DATETIME DEFAULT CURRENT_TIMESTAMP, is_handled BOOLEAN DEFAULT FALSE, handled_date DATETIME NULL, handled_by VARCHAR(50) NULL, notes TEXT NULL, FOREIGN KEY (product_id) REFERENCES products(id) ); ```
2. 核心功能模块
2.1 临期商品计算服务
```java public class ExpirationAlertService {
private final ProductRepository productRepository; private final AlertRepository alertRepository; private final int warningDays = 7; // 提前7天提醒 private final int urgentDays = 3; // 提前3天紧急提醒
public void checkAndGenerateAlerts() { LocalDate today = LocalDate.now(); List products = productRepository.findAll();
for (Product product : products) { if (product.getExpirationDate() == null) continue;
long daysUntilExpiration = ChronoUnit.DAYS.between(today, product.getExpirationDate());