黑马苍穹外卖day04 菜品起售停售
时间: 2025-04-26 10:04:56 浏览: 45
### 关于黑马苍穹外卖 Project Day04 菜品起售停售功能
对于黑马苍穹外卖项目的第4天课程,其中涉及到了菜品的起售与停售功能的设计与实现。此部分通常涉及到数据库设计以及前后端交互逻辑。
#### 数据库设计
为了支持菜品状态的变化(即是否可销售),一般会在菜品表中增加一个字段用于表示该商品的状态。例如,在MySQL中创建菜品表时可能会这样定义:
```sql
CREATE TABLE dishes (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
price DECIMAL(10, 2),
status TINYINT DEFAULT 1 COMMENT '1=on sale; 0=out of stock'
);
```
这里`status`列用来标记菜品当前是否处于售卖状态[^1]。
#### 前端展示控制
前端页面应当能够动态反映后台数据变化情况。当管理员更改某道菜的状态后,前台顾客看到的信息也应随之更新。可以通过AJAX请求定期向服务器查询最新菜单列表并刷新视图来达成这一目标。
#### 后台管理接口开发
针对菜品上下架操作,需要提供相应的API供管理人员调用。这些API应该接受参数如dishId和newStatus,并据此修改对应的记录项。下面是一个简单的Spring Boot风格控制器方法示例:
```java
@RestController
@RequestMapping("/admin/dishes")
public class DishAdminController {
@Autowired
private DishService dishService;
/**
* 更新指定ID菜品的状态.
*/
@PutMapping("/{id}/toggle-status")
public ResponseEntity<String> toggleDishStatus(@PathVariable Long id, @RequestParam Integer newStatus){
try {
boolean success = this.dishService.updateDishStatus(id,newStatus);
if (success){
return ResponseEntity.ok("Updated successfully");
}else{
throw new RuntimeException();
}
} catch (Exception e){
log.error(e.getMessage(),e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to update.");
}
}
}
```
上述代码片段展示了如何构建RESTful API以允许通过PUT请求改变特定菜品的状态。
#### 客户端交互逻辑优化建议
考虑到用户体验,可以在用户点击“下架”按钮前弹窗提示确认动作;另外还可以加入防抖动机制防止短时间内频繁提交相同命令造成不必要的网络流量浪费。
阅读全文
相关推荐




