——————————DescriptionStart——————————
运行环境
Java≥8、MySQL≥5.7、Node.js≥14
开发工具
后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可
❗没学过node.js的不要搞前后端分离项目
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明






基于javaweb的SpringBoot外卖点餐小程序(java+springboot+maven+mysql+redis+vue+uniapp)
后端:springboot+mysql+redis
前端小程序:uniapp
前端web管理:vue
项目后端使用springboot进行开发,其中使用redis进行缓存。使用springcache进行redis缓存时候的管理。使用shardingjdbc完成mysql主从分离的设置。使用swagger生成开发文档。
前端商家平台使用vue2.x脚手架开发,使用elementui开发前端ui。使用axios获取api,使用vue.router进行路由
前端用户界面使用uniapp开发,使用vuex做组件数据存储。
后端启动前先修改配置(用于保存上传的图片):
reggie.path
web管理员:
admin 123456
小程序用户:
13511111111 验证码为1234
——————————CodeStart——————————
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| */ @GetMapping("/TakeOut") public R<Page> TakeOut(int page, int pageSize, String phone) { Page pageInfo = new Page(page, pageSize); LambdaQueryWrapper<Orders> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(StringUtils.isNotEmpty(phone), Orders::getPhone, phone); queryWrapper.isNull(Orders::getRemark).or().eq(Orders::getRemark,"");
queryWrapper.orderByDesc(Orders::getOrderTime); Page list = orderService.page(pageInfo, queryWrapper); return R.success(list); }
@DeleteMapping("delete") public R<String> delete(Long id) { System.out.println(id); LambdaQueryWrapper<Orders> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Orders::getNumber, id); orderService.remove(queryWrapper); return R.success("删除成功"); }
@PutMapping("/update") public R<String> update(@RequestBody Orders orders) {
LambdaQueryWrapper<Orders> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Orders::getNumber, orders.getNumber()); Orders serviceOne = orderService.getOne(queryWrapper); serviceOne.setStatus(orders.getStatus()); orderService.updateById(serviceOne); return R.success("成功"); }
@GetMapping("/getById/{id}") public R<List<OrderDetail>> getById(@PathVariable Long id) {
LambdaQueryWrapper<OrderDetail> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(OrderDetail::getOrderId, id); List<OrderDetail> list = orderDetailService.list(queryWrapper); return R.success(list); } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
@RestController @RequestMapping("/user") @Slf4j @CrossOrigin public class UserController {
@Autowired private UserService userService;
@Autowired private RedisTemplate redisTemplate;
@PostMapping("/save") public R<String> save(@RequestBody User user){
LambdaQueryWrapper<User> queryWrapper=new LambdaQueryWrapper<>(); queryWrapper.eq(User::getPhone,user.getPhone());
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| @Autowired private CacheManager cacheManager;
@PostMapping @CacheEvict(value = "dish", allEntries = true) public R<String> save(@RequestBody DishDto dishDto) { dishService.saveWithFlavor(dishDto);
return R.success("新增成功"); }
@GetMapping("/page") public R<Page> page(int page, int pageSize, String name) { Page<Dish> pageInfo = new Page<>(page, pageSize); Page<DishDto> dishDtoPage = new Page<>(page, pageSize); LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.like(name != null, Dish::getName, name); queryWrapper.orderByDesc(Dish::getUpdateTime);
dishService.page(pageInfo, queryWrapper);
BeanUtils.copyProperties(pageInfo, dishDtoPage, "records"); List<Dish> records = pageInfo.getRecords(); List<DishDto> list = new ArrayList<>(); for (Dish dish : records) { DishDto dishDto = new DishDto();
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| 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); } Long dishId = item.getId(); LambdaQueryWrapper<DishFlavor> queryWrapper1 = new LambdaQueryWrapper<>(); queryWrapper1.eq(DishFlavor::getDishId, dishId); List<DishFlavor> dishFlavors = dishFlavorService.list(queryWrapper1); dishDto.setFlavors(dishFlavors); return dishDto; }).collect(Collectors.toList());
return R.success(dishDtos); }
@PostMapping("/status/{status}") @CacheEvict(value = "dish", allEntries = true) public R<String> status(@PathVariable Long status,@RequestParam List<Long> ids){ System.out.println(status); System.out.println(ids);
for (Long id:ids){ Dish dish = dishService.getById(id); dish.setStatus(status.intValue()); dishService.updateById(dish); } return R.success("修改成功"); }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| }
@DeleteMapping @CacheEvict(value = "setmealCache", allEntries = true) public R<String> delete(@RequestParam List<Long> ids) {
setmealService.removeWithDish(ids); return R.success("删除成功"); }
@GetMapping("/list") @Cacheable(value = "setmealCache", key = "#setmeal.categoryId+'_'+#setmeal.status") public R<List<Setmeal>> list(Setmeal setmeal) { LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(setmeal.getCategoryId() != null, Setmeal::getCategoryId, setmeal.getCategoryId()); queryWrapper.eq(setmeal.getStatus() != null, Setmeal::getStatus, setmeal.getStatus()); queryWrapper.orderByDesc(Setmeal::getUpdateTime);
List<Setmeal> list = setmealService.list(queryWrapper); return R.success(list); }
@PostMapping("/status/{status}") @CacheEvict(value = "setmealCache", allEntries = true) public R<String> status(@PathVariable Long status, @RequestParam List<Long> ids) {
for (Long id : ids) { Setmeal setmeal = setmealService.getById(id); setmeal.setStatus(status.intValue()); setmealService.updateById(setmeal); } ; return R.success("修改成功"); }
|
——————————PayStart——————————
项目链接:
https://javayms.github.io?id=502325071003201pu
https://javayms.pages.dev?id=502325071003201pu