快捷餐饮之店家后台厨艺秀实现

  • j3_liuliang
  • 经过前期的一系列的准备之后,现在终于是到了开发业务功能的时候了,本篇开始开发和文件上传相关的厨艺秀图片相关功能

项目相关文章导航:

  1. 快捷点餐项目简介
  2. 餐饮系统设计概括
  3. 餐饮系统店家后端基础功能构建
  4. 快捷餐饮之店家后台OSS文件管理实现
  5. 快捷餐饮之店家后台厨艺秀实现
  6. 快捷餐饮之店家后台菜品分类及菜品管理实现
  7. 快捷餐饮之店家后台评论管理及餐桌管理实现
  8. 下期实现订单相关功能

项目Git地址: 点这里哦!

由于前期我们做过了代码生成器,所以本项目的相关控制器,业务类及mapper都创建完成了,我们现在需要做的就是在里面实现我们自己相关的业务逻辑就可以了;

一、创建用于显示到前端的厨艺秀DTO

名称:CookingSkillImagesDTO

/**
 * @Package: cn.liuliang.quickdinesysstore.entity.dto
 * @Author: liuliang
 * @CreateTime: 2020/10/28 - 13:56
 * @Description: 厨艺秀展示dto
 */
@Data
@ApiModel(value="厨艺秀展示dto", description="")
public class CookingSkillImagesDTO implements Serializable {

    private static final long serialVersionUID=1L;

    @ApiModelProperty(value = "ID")
    private Long id;

    @ApiModelProperty(value = "照片url")
    private String imageUrl;
}

在这里插入图片描述

二、编写Controller

名称:CookingSkillImagesController

/**
 * <p>
 * 前端控制器:图片秀管理控制器
 * </p>
 *
 * @author j3_liuliang
 * @since 2020-10-24
 */
@Api(value = "厨艺秀图片管理", tags = "厨艺秀图片管理")
@CrossOrigin
@RestController
@RequestMapping("/cooking-skill-images")
public class CookingSkillImagesController {

    @Autowired
    private CookingSkillImagesService cookingSkillImagesService;

    @ApiOperation(value = "分页查看所有厨艺秀图片", notes = "分页查看所有厨艺秀图片")
    @ApiResponses({@ApiResponse(code = 200, message = "请求成功!", response = CookingSkillImagesDTO.class)})
    @GetMapping("/select-all")
    public ResultDTO selectAllCookingSkillImages(
        @ApiParam("当前页码") @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
        @ApiParam("每页显示条数") @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
        return cookingSkillImagesService.selectPage(pageNum, pageSize);
    }


    @ApiOperation(value = "添加厨艺秀照片", notes = "添加厨艺秀照片")
    @PostMapping("/add")
    public ResultDTO addCookingSkillImages(
        @ApiParam("图片url数组") @RequestParam(value = "imageUrls", required = true) String[] imageUrls) {
        return cookingSkillImagesService.addCookingSkillImages(imageUrls);
    }

    @ApiOperation(value = "删除厨艺秀照片", notes = "删除厨艺秀照片")
    @PostMapping("/delete")
    public ResultDTO delete(
        @ApiParam("图片id") @RequestParam(value = "id", required = true) Long id,
        @ApiParam("图片url") @RequestParam(value = "url", required = true) String url) {
        return cookingSkillImagesService.delete(id, url);
    }


}

在这里插入图片描述

三、编写Service

名称:CookingSkillImagesService

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author j3_liuliang
 * @since 2020-10-24
 */
public interface CookingSkillImagesService extends IService<CookingSkillImages> {

    /**
     * 分页查询厨艺秀图片列表
     * @param pageNum   当前页
     * @param pageSize  每页数量
     * @return
     */
    ResultDTO selectPage(Integer pageNum, Integer pageSize);

    /**
     * 添加图片url数组
     * @param imageUrls 图片url数组
     * @return
     */
    ResultDTO addCookingSkillImages(String[] imageUrls);

    /**
     * 删除图片
     * @param id    图片id
     * @param url   图片url
     * @return
     */
    ResultDTO delete(Long id, String url);

}

实现类:CookingSkillImagesServiceImpl

/**
 * <p>
 * 服务实现类
 * </p>
 *
 * @author j3_liuliang
 * @since 2020-10-24
 */
@Service
public class CookingSkillImagesServiceImpl extends ServiceImpl<CookingSkillImagesMapper, CookingSkillImages> implements CookingSkillImagesService {

    @Autowired
    private CookingSkillImagesMapper cookingSkillImagesMapper;

    @Autowired
    private OSSFileService ossFileService;


    @Override
    public ResultDTO selectPage(Integer pageNum, Integer pageSize) {
        // 定义分页
        Page<CookingSkillImages> cookingSkillImagesPage = new Page<>(pageNum, pageSize);
        // 开始分页查询
        IPage<CookingSkillImages> cookingSkillImagesPageModel = cookingSkillImagesMapper.selectPage(cookingSkillImagesPage, null);
        // 获取分页数据和总条数
        List<CookingSkillImages> records = cookingSkillImagesPageModel.getRecords();
        long total = cookingSkillImagesPageModel.getTotal();
        // 转化数据传输对象
        List<CookingSkillImagesDTO> cookingSkillImagesDTOList = new ArrayList<>(records.size());
        records.forEach(CookingSkillImages -> {
            CookingSkillImagesDTO cookingSkillImagesDTO = new CookingSkillImagesDTO();
            BeanUtils.copyProperties(CookingSkillImages, cookingSkillImagesDTO);
            cookingSkillImagesDTOList.add(cookingSkillImagesDTO);
        });
        // 返回结果
        return ResultDTO.success().data("tital", total).data("rows", cookingSkillImagesDTOList);
    }

    @Override
    public ResultDTO addCookingSkillImages(String[] imageUrls) {
        // 遍历url数组,依次插入数据库中
        Arrays.asList(imageUrls).forEach(imageUrl -> {
            CookingSkillImages cookingSkillImages = new CookingSkillImages();
            cookingSkillImages.setImageUrl(imageUrl);
            cookingSkillImagesMapper.insert(cookingSkillImages);
        });
        return ResultDTO.success();
    }

    @Override
    public ResultDTO delete(Long id, String url) {
        // 先删除数据库中的图片
        cookingSkillImagesMapper.deleteById(id);
        // 再删除OSS服务器上的图片
        ossFileService.removeFile(url);
        return ResultDTO.success();
    }
}

在这里插入图片描述

四、编写mapper及相关mapper映射文件

名称:CookingSkillImagesMapper

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author j3_liuliang
 * @since 2020-10-24
 */
public interface CookingSkillImagesMapper extends BaseMapper<CookingSkillImages> {

}

名称:CookingSkillImagesMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.liuliang.quickdinesysstore.mapper.CookingSkillImagesMapper">

</mapper>

在这里插入图片描述

这里面持久成都不用编写相关的代码,是因为用来MyBatisPlus可以简化我们很多的简单访问数据库操作,实我们可以更多的关注到业务逻辑上而不是持久化上

五、启动项目swagger测试

访问:http://localhost:9110/swagger-ui.html#!

厨艺秀的相关功能就写的差不多了,下次开始些菜品管理相关的内容

结束语

  • 由于博主才疏学浅,难免会有纰漏,假如你发现了错误或偏见的地方,还望留言给我指出来,我会对其加以修正。
  • 如果你觉得文章还不错,你的转发、分享、点赞、留言就是对我最大的鼓励。
  • 感谢您的阅读,十分欢迎并感谢您的关注。
    在这里插入图片描述
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

J3code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值