简介
这是一个用于毕业设计的点餐平台,完全免费开源。编程不易,希望大家多多star。
后台管理页面展示
前台页面展示
1.登录
代码
@PostMapping("/login")
public R<User> login(@RequestBody Map map, HttpSession session){
// 1.获取手机号和验证码
String phone = map.get("phone").toString();
String code = map.get("code").toString();
// 判断验证码是否过期
LocalDateTime nowTime = LocalDateTime.now();
LocalDateTime oldTime = (LocalDateTime) session.getAttribute("now");
if (oldTime !=null && nowTime.toEpochSecond(ZoneOffset.of("+8")) - oldTime.toEpochSecond(ZoneOffset.of("+8")) > 60) {
// 验证码过期
return R.error("验证码已经过期!");
}
// 2. 获取session中保存的验证码
Object SessionSavedCode = session.getAttribute("code");
// 3.比对提交的验证码和session中验证码比对
if (SessionSavedCode !=null && SessionSavedCode.equals(code)){
// 登录成功
// 4.如果比对成功判断手机号是否在用户表中,如果不在就直接加入用户表
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper();
wrapper.eq(User::getPhone, phone);
User user = userService.getOne(wrapper);
if (user==null){
user = new User(phone,phone);
// 新用户保存进表
userService.save(user);
}
session.setAttribute("user", user.getId());
return R.success(user);
}
return R.error("登录失败验证码错误");
}
2.登录成功主页面
代码
@GetMapping("/list")
public R<List<DishDto>> list (Dish dish){
LambdaQueryWrapper<Dish> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(dish.getCategoryId() != null,Dish::getCategoryId,dish.getCategoryId());
// 添加排序条件
wrapper.orderByDesc(Dish::getSort);
wrapper.eq(Dish::getStatus,1).eq(Dish::getIsDeleted,0);
List<Dish> dishList = dishService.list(wrapper);
List<DishDto> dtoList = null;
dtoList = dishList.stream().map((item)->{
DishDto dishDto = new DishDto();
BeanUtils.copyProperties(item, dishDto);
Long id = item.getId();// 拿到菜品id
LambdaQueryWrapper<DishFlavor> wrapper1 = new LambdaQueryWrapper<>();
wrapper1.eq(DishFlavor::getDishId,id);
List<DishFlavor> list = dishFlavorService.list(wrapper1);// 通过菜品id查到对应的口味
dishDto.setFlavors(list);
return dishDto;
}).collect(Collectors.toList());
return R.success(dtoList);
3.点菜下单
代码
public void submit(Orders orders) {
// 1.获取用户id
long currentId = BaseContext.getCurrentId();
// 2.查询用户购物车中的商品
LambdaQueryWrapper<ShoppingCart> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ShoppingCart::getUserId,currentId);
List<ShoppingCart> list = shoopingCartService.list(wrapper);
if (list == null || list.size() == 0) {
throw new CustomException("购物车为空");
}
// 查询用户数据
User user = userService.getById(currentId);
// 查询地址信息
AddressBook addressBook = addressBookService.getById(orders.getAddressBookId());
if (addressBook == null) {
throw new CustomException("地址信息为空");
}
// 3.向订单表插入数据,一条数据
long orderId = IdWorker.getId();
AtomicInteger amount = new AtomicInteger(0);// 用来计算累加总价
4.支付成功生成订单
5.我的信息
总结
话不多说,直接来实际的。希望大家多多支持天枢工作室,多多点赞收藏
仓库地址:仓库 - 协助者-D (Yang_Pengasd) - Gitee.com