功能概述 临期商品提示功能旨在帮助用户识别即将过期的商品,减少食物浪费,提升购物体验。该功能可以显示商品剩余保质期天数,并对临近保质期的商品进行特别提示。 系统架构设计 1.数据库设计 ```sql --商品表扩展 ALTERTABLEproductsADDCOL
功能概述
临期商品提示功能旨在帮助用户识别即将过期的商品,减少食物浪费,提升购物体验。该功能可以显示商品剩余保质期天数,并对临近保质期的商品进行特别提示。
系统架构设计
1. 数据库设计
```sql
-- 商品表扩展
ALTER TABLE products ADD COLUMN
production_date DATE COMMENT 生产日期,
expiry_date DATE COMMENT 保质期截止日期,
shelf_life_days INT COMMENT 保质期天数(天);
-- 用户购物车表扩展(可选)
ALTER TABLE shopping_cart ADD COLUMN
remaining_days INT COMMENT 剩余保质期天数(计算字段);
```
2. 核心功能模块
商品管理模块
- 商品录入时强制填写生产日期和保质期
- 自动计算保质期截止日期
- 商品详情页显示保质期信息
临期判断逻辑
```python
def check_expiring_soon(product, days_threshold=3):
"""
检查商品是否临近保质期
:param product: 商品对象
:param days_threshold: 临期阈值(天),默认3天
:return: (是否临期, 剩余天数)
"""
if not product.expiry_date:
return False, None
today = datetime.now().date()
remaining_days = (product.expiry_date - today).days
return remaining_days <= days_threshold, remaining_days
```
前端展示逻辑
```javascript
// 示例React组件
function ProductCard({ product }) {
const [isExpiringSoon, remainingDays] = checkExpiringSoon(product);
return (
{product.name}
价格: ¥{product.price}
{isExpiringSoon && (
⚠️ 仅剩{remainingDays}天到期
)}
保质期至: {formatDate(product.expiry_date)}
);
}
```
详细实现步骤
1. 后端实现
API接口设计
```
GET /api/products/{id}/expiry-info
响应示例:
{
"productId": 123,
"remainingDays": 2,
"isExpiringSoon": true,
"expiryDate": "2023-12-31"
}
```
定时任务(可选)
```python
每日凌晨运行,检查所有商品保质期状态
def daily_expiry_check():
products = Product.objects.all()
for product in products:
is_expiring, remaining = check_expiring_soon(product)
if is_expiring:
发送通知给相关人员或更新商品状态
send_expiry_notification(product)
```
2. 前端实现
商品列表页
- 在商品卡片上显示保质期信息
- 临期商品添加特殊样式(如红色边框、警告图标)
- 可按保质期排序或筛选
商品详情页
- 详细显示生产日期和保质期截止日期
- 添加临期警告横幅
- 可设置临期提醒阈值(用户偏好设置)
购物车页面
- 显示每个商品的剩余保质期
- 对临期商品进行高亮显示
- 结算前提醒用户有临期商品
3. 用户设置(可选)
允许用户自定义临期提醒阈值:
```
我的设置 → 通知偏好 → 临期商品提醒
[ ] 开启临期商品提醒
[ 3 ] 天前提醒我(可调整数字)
```
技术挑战与解决方案
1. 时区问题
- 解决方案:统一使用服务器时区或用户时区进行计算
2. 批量商品处理性能
- 解决方案:对商品按保质期建立索引,使用缓存存储临期商品列表
3. 移动端适配
- 解决方案:使用响应式设计,确保临期提示在各种屏幕尺寸上清晰可见
4. 多语言支持
- 解决方案:将临期相关文本提取为可翻译字符串
测试方案
1. 单元测试
- 测试不同日期场景下的临期判断逻辑
- 测试阈值设置变化时的行为
2. 集成测试
- 测试从商品录入到前端展示的完整流程
- 测试临期商品在购物车和结算流程中的行为
3. 用户测试
- 收集用户对临期提示的反馈
- 测试不同用户设置下的表现
扩展功能建议
1. 临期商品专区:在首页或分类页添加临期商品专区
2. 折扣自动计算:根据剩余保质期自动计算折扣
3. 订阅提醒:允许用户订阅特定商品的临期提醒
4. 保质期预警邮件/短信:向商家发送临期商品库存预警
通过实现这一功能,小象买菜系统可以提升用户体验,减少食物浪费,同时可能增加临期商品的销售转化率。