基于SpringBoot + uni-app 微信小程序校园点餐平台的详细设计与实现
一、项目背景
随着生活水平的提高,大学生对饮食的需求日益增强,传统的校园餐饮服务往往无法满足学生的需求。基于此,我们设计并实现一个校园点餐平台,利用SpringBoot作为后端服务框架,uni-app作为前端小程序,提供一个便捷的点餐服务。
二、技术架构
本项目主要使用以下技术:
- 后端:SpringBoot框架,提供RESTful API
- 前端:uni-app,构建微信小程序
- 数据库:MySQL,存储用户与订单信息
- 开发工具:IDEA、HBuilderX
三、系统设计
1. 数据库设计
我们需要设计几个主要的数据库表,包括用户表(users)、餐品表(dishes)和订单表(orders)。
-- 用户表
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) UNIQUE NOT NULL,
password VARCHAR(100) NOT NULL,
role ENUM('student', 'admin') DEFAULT 'student'
);
-- 餐品表
CREATE TABLE dishes (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
price DECIMAL(5, 2) NOT NULL,
description TEXT,
image_url VARCHAR(255)
);
-- 订单表
CREATE TABLE orders (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
dish_id INT NOT NULL,
quantity INT NOT NULL,
order_time DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (dish_id) REFERENCES dishes(id)
);
2. 后端实现
2.1 项目结构
src/main/java/com/example/campusfood
├── controller
│ └── DishController.java
├── model
│ ├── Dish.java
│ └── User.java
├── repository
│ └── DishRepository.java
├── service
│ └── DishService.java
└── CampusFoodApplication.java
2.2 示例代码
DishController.java
@RestController
@RequestMapping("/api/dishes")
public class DishController {
@Autowired
private DishService dishService;
@GetMapping
public List<Dish> getAllDishes() {
return dishService.getAllDishes();
}
@PostMapping
public ResponseEntity<Dish> createDish(@RequestBody Dish dish) {
return ResponseEntity.ok(dishService.createDish(dish));
}
}
DishService.java
@Service
public class DishService {
@Autowired
private DishRepository dishRepository;
public List<Dish> getAllDishes() {
return dishRepository.findAll();
}
public Dish createDish(Dish dish) {
return dishRepository.save(dish);
}
}
3. 前端实现
在uni-app中,使用Vue.js语法来构建组件,以下是获取菜品列表的示例代码。
<template>
<view>
<view v-for="dish in dishes" :key="dish.id">
<text>{{ dish.name }}</text>
<text>{{ dish.price }}元</text>
<button @click="orderDish(dish.id)">点餐</button>
</view>
</view>
</template>
<script>
export default {
data() {
return {
dishes: []
};
},
onLoad() {
this.fetchDishes();
},
methods: {
fetchDishes() {
uni.request({
url: 'http://localhost:8080/api/dishes',
success: (res) => {
this.dishes = res.data;
}
});
},
orderDish(dishId) {
// 点餐逻辑
console.log(`点餐: ${dishId}`);
}
}
};
</script>
四、总结
通过SpringBoot和uni-app的结合,我们可以快速构建一个校园点餐平台。本项目不仅实现了基本的点餐功能,还可以根据校园的实际需要进行扩展,如增加用户评价、推荐菜品等功能。希望这个项目能为校园生活带来便利,提高学生的就餐体验。