✨作者主页:IT研究室✨
个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。
☑文末获取源码☑
精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目
一、前言
随着科技的发展和互联网的普及,外卖行业正在迅速崛起,成为餐饮业中的重要组成部分。据统计,全球外卖市场年增长速度已经超过百分之十,显示出其巨大的潜力和机遇。然而,随着外卖行业的快速发展,如何提高外卖点餐工作的效率和质量,以及如何实现餐厅信息、菜品信息、订单管理等功能的实时监控和管理,成为了亟待解决的问题。因此,本研究旨在设计并实现一个便捷的外卖点餐系统,以解决现有外卖点餐工作中存在的问题,提高工作效率和质量,增进外卖行业的健康发展。
目前,虽然已有一些外卖点餐系统可供使用,但它们仍存在一些问题。首先,餐厅信息录入过程复杂,需要人工逐一填写,效率低下且容易出错。其次,菜品信息管理缺乏分类和检索机制,导致用户难以找到所需的菜品。再次,订单管理功能较弱,无法实现实时监控和管理,一旦出现订单错误或配送问题,处理效率低下。因此,需要一种新的外卖点餐系统来解决这些问题。
本开题旨在设计并实现一个便捷的外卖点餐系统,以解决现有外卖点餐工作中存在的问题。该系统将具备以下功能:
餐厅信息录入:通过简单的操作流程,快速准确地录入餐厅信息。
菜品信息管理:建立分类和检索机制,使用户能够轻松查找所需的菜品。
订单管理:实时监控和管理订单状态,及时处理异常情况,提高订单处理的效率和准确性。
数据统计与分析:通过对历史数据的统计和分析,为餐厅提供营销策略的依据。
本课题的意义在于提高外卖点餐工作的效率和质量,增进外卖行业的健康发展。通过便捷的外卖点餐系统,用户可以更加方便快捷地进行点餐操作,同时餐厅也可以更加便捷的进行订单处理和营销策略制定。这将有助于提升用户体验,提高外卖行业的效率和品质水平,进一步推动外卖行业的健康发展。此外,该研究还可以为其他类似行业提供有价值的参考和启示,推动整个社会的数字化转型和发展。
二、开发环境
- 开发语言:Java
- 数据库:MySQL
- 系统架构:B/S
- 后端:SpringBoot
- 前端:Vue
三、系统界面展示
- 便捷外卖点餐系统界面展示:
四、代码参考
- Java项目实战代码参考:
/**
* 地址簿管理
*/
@Slf4j
@RestController
@RequestMapping("/addressBook")
public class AddressBookController {
@Resource
private AddressBookService addressBookService;
/**
* 新增
*/
@PostMapping
public R<AddressBook> save(@RequestBody AddressBook addressBook) {
addressBook.setUserId(BaseContext.getCurrentId());
log.info("addressBook:{}", addressBook);
addressBookService.save(addressBook);
return R.success(addressBook);
}
/**
* 设置默认地址
*/
@PutMapping("default")
public R<AddressBook> setDefault(@RequestBody AddressBook addressBook) {
log.info("addressBook:{}", addressBook);
LambdaUpdateWrapper<AddressBook> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(AddressBook::getUserId, BaseContext.getCurrentId());
wrapper.set(AddressBook::getIsDefault, 0);
//SQL:update address_book set is_default = 0 where user_id = ?
addressBookService.update(wrapper);
addressBook.setIsDefault(1);
//SQL:update address_book set is_default = 1 where id = ?
addressBookService.updateById(addressBook);
return R.success(addressBook);
}
/**
* 根据id查询地址
*/
@GetMapping("/{id}")
public R get(@PathVariable Long id) {
AddressBook addressBook = addressBookService.getById(id);
if (addressBook != null) {
return R.success(addressBook);
} else {
return R.error("没有找到该对象");
}
}
/**
* 查询默认地址
*/
@GetMapping("default")
public R<AddressBook> getDefault() {
LambdaQueryWrapper<AddressBook> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(AddressBook::getUserId, BaseContext.getCurrentId());
queryWrapper.eq(AddressBook::getIsDefault, 1);
//SQL:select * from address_book where user_id = ? and is_default = 1
AddressBook addressBook = addressBookService.getOne(queryWrapper);
if (null == addressBook) {
return R.error("没有找到该对象");
} else {
return R.success(addressBook);
}
}
/**
* 查询指定用户的全部地址
*/
@GetMapping("/list")
public R<List<AddressBook>> list(AddressBook addressBook, HttpSession session) {
long userid = (long) session.getAttribute("user");
addressBook.setUserId(userid);
log.info("addressBook:{}", addressBook);
//条件构造器
LambdaQueryWrapper<AddressBook> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(AddressBook::getUserId,userid);
queryWrapper.orderByDesc(AddressBook::getUpdateTime);
List<AddressBook> list= addressBookService.list(queryWrapper);
//SQL:select * from address_book where user_id = ? order by update_time desc
return R.success(list);
}
/**
* 修改地址
*/
@PutMapping
public R<String> put(@RequestBody AddressBook addressBook){
if (addressBook!=null){
addressBookService.updateById(addressBook);
}
return R.success("ok");
}
@DeleteMapping
public R<String> delete(Long ids){
addressBookService.removeById(ids);
return R.success("ok");
}
}
/**
* 分类管理
*/
@RestController
@RequestMapping("/category")
public class CategoryController {
@Resource
private CategoryService categoryService;
@Resource
private DishService dishService;
@Resource
private SetmealService setmealService;
/**
* 新增菜品分类
* @param category
* @return
*/
@PostMapping
public R<String>category(@RequestBody Category category){
System.out.println(category);
if (category==null) {
return R.error("添加异常!");
}
categoryService.save(category);
return R.success("添加成功!");
}
/**
* 分页查询
* @param page
* @param pageSize
* @return
*/
@GetMapping("/page")
public R<Page> page(int page,int pageSize) {
Page<Category> pa = new Page<>(page,pageSize);
LambdaQueryWrapper<Category>wrap=new LambdaQueryWrapper<>();
wrap.orderByAsc(Category ::getSort);
categoryService.page(pa,wrap);
return R.success(pa);
}
/**
* 根据id删除分类
* @param
* @return
*/
@DeleteMapping
public R<String> delete( Long ids) {
Category category = categoryService.getById(ids);
if (category.getType()==2){
List<Setmeal> setmeal = setmealService.list(new LambdaQueryWrapper<Setmeal>().eq(Setmeal::getCategoryId, ids));
if (setmeal.size()> 0) {
return R.error("删除失败,套餐还有绑定套餐");
}
setmealService.removeById(ids);
}else if (category.getType() == 1){
List<Dish> dishList = dishService.list(new LambdaQueryWrapper<Dish>().eq(Dish::getCategoryId, ids));
if (dishList.size() > 0){
return R.error("删除失败,菜品还有绑定菜品");
}
dishService.removeById(ids);
}
return R.error("删除成功!");
}
/**
* 根据id修改分类信息
* @param category
* @return
*/
@PutMapping
public R<String> updateCategory(@RequestBody Category category){
if (category == null) {
return R.error("修改异常");
}
categoryService.updateById(category);
return R.success("修改成功!");
}
/**
*
* 根据条件查询分类数据
*/
@GetMapping("/list")
public R<List<Category>> list(Category category) {
LambdaQueryWrapper<Category>wrapper = new LambdaQueryWrapper<>();
if (category.getType()!=null){
wrapper.eq(Category ::getType,category.getType());
}
List<Category> list = categoryService.list(wrapper);
return R.success(list);
}
}
/**
菜品
*/
@RestController
@Slf4j
@RequestMapping("/dish")
public class DishController {
@Resource
private DishService dishService;
@Resource
private DishFlavorService dishFlavorService;
@Resource
private CategoryService categoryService;
@Resource
private SetmealService setmealService;
@Resource
private SetmealDishService setmealDishService;
/**
* 菜品管理展示
*/
@GetMapping("/page")
public R<Page> page(int page,int pageSize,String name){
Page<Dish> p=new Page<>(page, pageSize);
Page<DishDto>p1=new Page<>();
LambdaQueryWrapper<Dish> wrapper = new LambdaQueryWrapper<>();
if (name != null) {
wrapper.like(Dish::getName,name);
}
wrapper.orderByDesc(Dish::getPrice);
dishService.page(p,wrapper);
//对象拷贝
BeanUtils.copyProperties(p,p1,"records");
List<Dish> records = p.getRecords();
List<DishDto> list= records.stream().map((item)->{
DishDto dishDto = new DishDto();
BeanUtils.copyProperties(item,dishDto);
//分类id
Long categoryId = item.getCategoryId();
Category category = categoryService.getById(categoryId);
if (category != null) {
String name1 = category.getName();
dishDto.setCategoryName(name1);
}
return dishDto;
}).collect(Collectors.toList());
p1.setRecords(list);
return R.success(p1);
}
/**
* 添加菜品
*/
@PostMapping
public R<String> save(@RequestBody DishDto dishDto) {
dishService.saveWithDishFlavor(dishDto);
return R.success("新增菜品成功!");
}
/**
* 添加菜品
*/
@PutMapping
public R<String> update(@RequestBody DishDto dishDto) {
Dish dish = new Dish();
dishService.updateById(dishDto);
LambdaQueryWrapper<DishFlavor> lambda = new LambdaQueryWrapper<>();
lambda.eq(DishFlavor::getDishId, dishDto.getId());
dishFlavorService.remove(lambda);
List<DishFlavor> flavors = dishDto.getFlavors();
flavors = flavors.stream().map((item) -> {
item.setDishId(dishDto.getId());
return item;
}).collect(Collectors.toList());
dishFlavorService.saveBatch(flavors);
return R.success("修改成功!");
}
/**
* 批量删除
*/
@DeleteMapping
public R<String> delete(long[] ids) {
for (long id : ids) {
dishService.removeById(id);
}
return R.success("批量删除成功!");
}
/**
*
* 批量停售和批量起售
*/
@PostMapping("/status/{status}")
public R<String> status(long [] ids,@PathVariable int status){
for (long id : ids) {
LambdaQueryWrapper<Dish> eq =new LambdaQueryWrapper<>();
eq.eq(Dish::getId,id);
Dish dish = dishService.getOne(eq);
dish.setStatus(status);
dishService.updateById(dish);
LambdaQueryWrapper<SetmealDish>wrapper=new LambdaQueryWrapper<>();
wrapper.eq(SetmealDish::getDishId,dish.getId());
List<SetmealDish> setmealDishes = setmealDishService.list(wrapper);
setmealDishes.forEach(dish11 -> {
Setmeal setmeal = setmealService.getById(dish11.getSetmealId());
if (setmeal != null) {
setmeal.setStatus(status);
setmealService.updateById(setmeal);
}
});
}
return R.success("批量修改成功!");
}
/**
* id查询菜品返回前端
*/
@GetMapping("/{id}")
public R<DishDto> id(@PathVariable long id) {
DishDto dishDto= dishService.getDishDto(id);
return R.success(dishDto);
}
/**
* 根据分类id查询所以的菜品
*/
//@GetMapping("/list")
// public R<List<Dish>> list(Dish dish){
// List<Dish> list = dishService.list(new QueryWrapper<Dish>().eq("category_id",
// dish.getCategoryId()).eq("status",1));
// return R.success(list);
//}
/**
* 根据分类id查询所以的菜品
*/
@GetMapping("/list")
public R<List<DishDto>> list(Dish dish){
List<Dish> list = dishService.list(new QueryWrapper<Dish>().eq("category_id",
dish.getCategoryId()).eq("status",1));
List<DishDto>dtoList=null;
dtoList=list.stream().map((item)->{
DishDto dishDto = new DishDto();
BeanUtils.copyProperties(item,dishDto);
Long categoryId = item.getCategoryId();
Category category = categoryService.getById(categoryId);
if (category != null) {
String categoryName = category.getName();
dishDto.setCategoryName(categoryName);
}
//菜品id
Long dishId = item.getId();
List<DishFlavor> flavorList =
dishFlavorService.list(new LambdaQueryWrapper<DishFlavor>().eq(DishFlavor::getDishId, dishId));
dishDto.setFlavors(flavorList);
return dishDto;
}).collect(Collectors.toList());
return R.success(dtoList);
}
}
五、论文参考
- 计算机毕业设计选题推荐-便捷外卖点餐系统论文参考:
六、系统视频
便捷外卖点餐系统项目视频:
计算机毕业设计选题推荐-便捷外卖点餐系统-Java项目实战
结语
计算机毕业设计选题推荐-便捷外卖点餐系统-Java项目实战
大家可以帮忙点赞、收藏、关注、评论啦~
源码获取:私信我