今天试着开始早起了,调整作息,说不定状态会变好
完成任务:
新增菜品(根据类型查询分类+文件上传+新增菜品)
菜品分页查询
删除菜品(根据Ids集合查询菜品+删除菜品)
修改菜品(查询分类+文件上传+根据id查询菜品+修改菜品)
思路
新增菜品
这里仍然是传统的3层,但因为新增菜品中涉及到了两个表:菜品表与口味表,所以在mapper中除了DishMapper额外也增加了一个DishFlavorMapper接口,他们两个都是在DishService中使用,在插入dish表的一条数据时,通过在sql中获取到dishId,然后再dishi_flavor中也插入了几条相关的口味数据表
获取disid:
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
insert into dish(name, category_id, price, image, description, create_time, update_time, create_user, update_user,status)
values
(#{name},#{categoryId},#{price},#{image},#{description},#{createTime},#{updateTime},#{createUser},#{updateUser},#{status})
</insert>
菜品分页查询
和原来的分页查询思路一样,这里后端传给前端的数据用VO封装
public PageResult pageQuery(DishPageQueryDTO dishPageQueryDTO) {
PageHelper.startPage(dishPageQueryDTO.getPage(),dishPageQueryDTO.getPageSize());
Page<DishVO> page = dishMapper.pageQuery(dishPageQueryDTO);
return new PageResult(page.getTotal(),page.getResult());
}
}
收获
相关注解
@ConfigurationProperties(prefix = "sky.alioss")
指定配置属性类的注解要读取的是yml中的哪些属性
@Transactional //事务注解,当改方法涉及到多个表时,加上保证原子性
文件上传
也就是将图片上传给阿里云OSS→后端接受OSS返回图片的url→返回给前端
后端的思路:在配置文件中创建一个创建AliOssUtil对象,返回四个相关属性,然后在创建相关接口,其中使用UUID来对文件进行随机的重命名,防止在OSS中文件名重复
@PostMapping("/upload")
@ApiOperation("文件上传")
public Result<String> upload(MultipartFile file){
log.info("文件上传:{}",file);
try {
//原始文件名
String originalFilename = file.getOriginalFilename();
//获取原始文件名的后缀 dkjfh.png
String extension =originalFilename.substring(originalFilename.lastIndexOf("."));
//构造新文件名
String objectName=UUID.randomUUID().toString()+extension;
String filePath = aliOssUtil.upload(file.getBytes(), objectName);
return Result.success(filePath);
} catch (IOException e) {
log.info("文件上传失败:{}",e);
}
return null;
}
通过配置文件中声明oss的四个参数,但因为开发过后可能会使用其他的oss的地址和id,所以选择在dev配置中声明
在application.yml
spring:
profiles:
active: dev
alioss:
endpoint: ${sky.alioss.endpoint}
access-key-id: ${sky.alioss.access-key-id}
access-key-secret: ${sky.alioss.access-key-secret}
bucket-name: ${sky.alioss.bucket-name}
在application-dev.yml
sky:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
host: localhost
port: 3306
database: sky_take_out
username: root
password: 1234
alioss:
endpoint: oss-cn-beijing.aliyuncs.com
access-key-id: ****
access-key-secret: ****
bucket-name: dr-sky-itcast