品牌型网站建设理论,国外医院网站设计,wordpress让访客停留,如何去掉一页wordpress需求分析
在后台中#xff0c;通过新增功能来添加一个新的菜品#xff0c;在添加菜品时需要选择当前菜品所属的菜品分类#xff0c;并且需要上传的菜品图片。
代码开发
需要添加的类和基本接口#xff1a;实体类DishFlavor、Mapper接口DishFlavorMapper、业务层接口Dish…需求分析
在后台中通过新增功能来添加一个新的菜品在添加菜品时需要选择当前菜品所属的菜品分类并且需要上传的菜品图片。
代码开发
需要添加的类和基本接口实体类DishFlavor、Mapper接口DishFlavorMapper、业务层接口DishFlavorService、业务层实现类DishFlavorServiceImpl、控制层DishController
页面发送ajax请求请求服务器端获取菜品分类数据并展示到下拉框中页面发送请求进行图片上传请求服务端将图片保存到服务器页面发送请求进行图片下载将上传的图片进行回显点击保存按钮发送ajax请求将菜品相关数据以json形式提交到服务端
获取菜品分类列表下拉框
// 获取菜品分类列表
const getCategoryList (params) {return $axios({url: /category/list,method: get,params})
}前端发送aiax请求的地址是/category/list所以应该在CategoryController中写这个方法 添加菜品功能通过调试前端发现查看菜品分类没有报错。 /*** 根据条件获取菜品分类列表* param category* return*/GetMapping(/list)public RListCategory list(Category category){//条件构造器LambdaQueryWrapperCategory queryWrapper new LambdaQueryWrapper();//添加条件queryWrapper.eq(category.getType() ! null,Category::getType,category.getType());//添加排序条件 优先使用sort排序 当sort相同的情况下 使用更新时间进行排序queryWrapper.orderByAsc(Category::getSort).orderByDesc(Category::getUpdateTime);ListCategory list categoryService.list(queryWrapper);return R.success(list);}
排序也是正确的
上传图片
这里我上传了两次第一次上传的图片超过了2MB所以报错了然后我只能上传大笨狗上传成功了。下图分别是上传和浏览请求成功的提示。
接受页面提交的数据
数据格式 此时save()的参数不能直接使用Dish dish因为通过前端传送的数据格式可以看到有flavors这个参数。 解决办法导入DishDto用于封装页面提交的数据 检查封装的数据是否有问题
2023-08-01 10:18:03.969 INFO 8552 --- [nio-8060-exec-2] c.s.reggie.controller.DishController : DishDto(flavors[DishFlavor(idnull, dishIdnull, name甜味, value[无糖,少糖,半糖,多糖,全糖], createTimenull, updateTimenull, createUsernull, updateUsernull, isDeletednull), DishFlavor(idnull, dishIdnull, name温度, value[热饮,常温,去冰,少冰,多冰], createTimenull, updateTimenull, createUsernull, updateUsernull, isDeletednull)], categoryNamenull, copiesnull)测试代码 PostMappingpublic RString save(RequestBody DishDto dishDto)//记得封装要加RequestBody注解{log.info(dishDto.toString());return null;}新增大笨狗成功。
/*** 菜品管理*/
RestController
RequestMapping(/dish)
Slf4j
public class DishController {Autowiredprivate DishService dishService;//菜品服务Autowiredprivate DishFlavorService dishFlavorService;//菜品口味PostMappingpublic RString save(RequestBody DishDto dishDto)//记得封装要加RequestBody注解{log.info(dishDto.toString());dishService.saveWithFlavor(dishDto);return R.success(新增菜品成功...);}package com.springboot.reggie.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.springboot.reggie.dto.DishDto;
import com.springboot.reggie.entity.Dish;
import com.springboot.reggie.entity.DishFlavor;
import com.springboot.reggie.mapper.DishMapper;
import com.springboot.reggie.service.DishFlavorService;
import com.springboot.reggie.service.DishService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import java.util.List;
import java.util.stream.Collectors;Service
Slf4jpublic class DishServiceImpl extends ServiceImplDishMapper, Dish implements DishService {Autowiredprivate DishFlavorService dishFlavorService;/*** 新增菜品 同时保存对应的口味* param dishDto*/Transactional //需要加上事务控制 因为涉及到多张表的操作public void saveWithFlavor(DishDto dishDto){//保存菜品的基本信息到菜品表this.save(dishDto);Long dishId dishDto.getId();//给菜品id赋值//菜品口味ListDishFlavor flavors dishDto.getFlavors();flavors flavors.stream().map((item)-{item.setDishId(dishId);return item;}).collect(Collectors.toList());//保存菜品口味数据到菜品口味表dishFlavorService.saveBatch(flavors);}}