苍穹外卖03

今天试着开始早起了,调整作息,说不定状态会变好

完成任务:

新增菜品(根据类型查询分类+文件上传+新增菜品

菜品分页查询

删除菜品(根据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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值