基于Java+springboot的点餐系统
创建一个简单的点餐系统可以包括以下几个步骤:
- 创建菜品实体(Dish)。
- 创建菜品服务接口(DishService)和实现类(DishServiceImpl)。
- 创建点餐控制器(OrderController)。
- 创建主类(FoodOrderApplication)来启动Spring Boot应用。
以下是一个简化版的代码示例:
// Dish.java
public class Dish {
private Long id;
private String name;
private Double price;
// 省略getter和setter方法
}
// DishService.java
import java.util.List;
import java.util.Optional;
public interface DishService {
List<Dish> findAllDishes();
Optional<Dish> findDishById(Long id);
Dish saveDish(Dish dish);
// 省略其他业务方法
}
// DishServiceImpl.java
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@Service
public class DishServiceImpl implements DishService {
private static List<Dish> dishes = new ArrayList<>();
static {
dishes.add(new Dish(1L, "菜品A", 10.99));
dishes.add(new Dish(2L, "菜品B", 12.99));
// 省略其他菜品
}
@Override
public List<Dish> findAllDishes() {
return dishes;
}
@Override
public Optional<Dish> findDishById(Long id) {
return dishes.stream().filter(d -> d.getId().equals(id)).findFirst();
}
@Override
public Dish saveDish(Dish dish) {
if (dish.getId() == null) {
Long newId = dishes.stream().map(Dish::getId).max(Long::compare).orElse(0L) + 1;
dish.setId(newId);
}
dishes.removeIf(d -> d.getId().equals(dish.getId()));
dishes.add(dish);
return dish;
}
// 省略其他业务方法的实现
}
// OrderController.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/orders")
public class OrderController {
@Autowired
private DishService dishService;
@GetMapping("/dishes")
public List<Dish> getAllDishes() {
return dishService.findAllDishes();
}
@PostMapping("/dishes/{id}")
public Dish orderDish(@PathVariable Long id) {
Optional<Dish> dish = dishService.findDishById(id);
return dish.map(d -> {
Dish orderedDish = new Dish();
orderedDish.setId(d.getId());
orderedDish.setName(d.getName());
orderedDish.setPrice(d.getPrice());
// 这里可以添加点餐操作的逻辑,例如保存到数据库等
return dis
评论已关闭