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

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


一、创建用于显示到前端的厨艺秀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;
}


image.png


二、编写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);
    }
}


image.png


三、编写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();
    }
}


image.png


四、编写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>


image.png


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


五、启动项目swagger测试


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


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


结束语


  • 由于博主才疏学浅,难免会有纰漏,假如你发现了错误或偏见的地方,还望留言给我指出来,我会对其加以修正。
  • 如果你觉得文章还不错,你的转发、分享、点赞、留言就是对我最大的鼓励。
  • 感谢您的阅读,十分欢迎并感谢您的关注。


目录
相关文章
|
人工智能 搜索推荐
AIGC工具——堆友
【1月更文挑战第11天】AIGC工具——堆友
947 9
AIGC工具——堆友
|
域名解析 JSON 测试技术
常见移动端APP测试场景
常见移动端APP测试场景
293 0
|
SQL 缓存 分布式计算
阿里云连续五年入选Gartner®分析和商业智能平台魔力象限,中国唯一
Gartner® 正式发布《分析与商业智能平台魔力象限》报告(Magic Quadrant™ for Analytics and Business Intelligence Platforms),阿里云成为唯一入围该报告的中国厂商,被评为“挑战者”(Challengers)。这也是阿里云连续五年入选该报告。
|
安全 网络安全 数据安全/隐私保护
|
人工智能 知识图谱
成熟的AI要学会自己搞研究!MIT推出科研特工
MIT推出科研特工SciAgents,结合生成式AI、本体表示和多代理建模,实现科学发现的自动化。通过大规模知识图谱和多代理系统,SciAgents能探索新领域、识别复杂模式,加速新材料发现,展现跨学科创新潜力。
205 12
|
机器学习/深度学习 运维 监控
开源日志分析Kibana
【10月更文挑战第22天】
326 3
|
自然语言处理 Python
通义灵码个人使用体验
我是一位Python初学者,使用通义灵码进行代码生成与解析,学习更便捷高效。具体流程包括:1. 安装与配置插件;2. 输入需求,描述代码功能或优化目标;3. 点击生成,自动获得代码片段或优化建议。
|
并行计算 Java 大数据
Java函数式编程:一场编程范式的革命,让你的代码焕发新生!
【8月更文挑战第30天】Java函数式编程是一种基于数学函数理论的编程范式,强调数据处理的不可变性和纯函数使用,通过将函数视为第一类对象,实现更简洁、易读的代码结构,在数据流处理与并行计算中尤为突出。与命令式编程关注执行步骤不同,函数式编程侧重描述计算目标而非具体操作流程,减少了状态变化,使代码更清晰易维护。在Java中,函数式编程通过降低副作用和状态依赖简化了复杂度,并提高了代码质量和测试性,尤其是在Java 8的Stream API中得到了充分体现,能够自动优化多核处理器上的并行处理性能。
227 3
|
人工智能
思维链 llm
【8月更文挑战第5】
484 3
|
SQL 存储 数据库
如何在SQLServer中创建数据库
在SQL Server中创建数据库,可通过SSMS的图形界面或T-SQL语句。在SSMS中,连接到服务器,右键“数据库”选择“新建数据库”,配置属性后点击确定。使用T-SQL,连接到服务器,编写CREATE DATABASE语句指定数据库名称、文件路径及大小信息,执行查询完成创建。确保有足够磁盘空间,并注意权限设置。