基于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的结合,我们可以快速构建一个校园点餐平台。本项目不仅实现了基本的点餐功能,还可以根据校园的实际需要进行扩展,如增加用户评价、推荐菜品等功能。希望这个项目能为校园生活带来便利,提高学生的就餐体验。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部