内容与图像一对多问题解决

发布于:2024-05-17 ⋅ 阅读:(137) ⋅ 点赞:(0)

场景复现

 分析:

其实这是两给表,一个内容表,一个图片表,一对多的关系。

解决思路:

1. 先上传图片拿到图片的List集合ids,返回值是集合的ids,给到前端

2. 再添加内容表的数据生成了id,遍历查询拿到的图片集合ids,再对象里面,设置内容id,保存对象。

业务层

图片上传

    /***
     *  返回数组图片的 集合 id
     * @param file
     * @return
     */
    @PostMapping("/insertImg")
    public R<List<Integer>> insertImg(MultipartFile[] file) {
        return exFeedbackService.insertImg(file);
    }
    @Override
    public R<List<Integer>> insertImg(MultipartFile[] file) {
        ArrayList<Integer> ids = new ArrayList<>();
        // 循环遍历删除,添加图片数据
        for (MultipartFile files : file) {
            String fileName = files.getOriginalFilename();

            try {
                MinIOUtils.uploadFile(minIOConfig.getBucketName(), fileName, files.getInputStream());
            } catch (Exception e) {
                throw new RuntimeException("上传minio图片失败");
            }

            // 图片url路径
            String imgUrl = MinIOUtils.getBasisUrl() + fileName;

            // 添加图片数据
            ExImg exImg = new ExImg();
            exImg.setImgUrl(imgUrl);
            exImg.setImgName(fileName);
            // 循环添加数据
            exImgMapper.insert(exImg);
            // 批量添加id
            ids.add(exImg.getId());
        }
        return R.success(ids);
    }

内容保存

    /**
     * @param: ExFeedback , MultipartFile
     * @return:void
     * @Date:2024/5/12 反馈内容模块添加数据
     */
    @PostMapping("/insertInfo")
    public R<Void> insertInfo(@RequestBody ExFeedback exFeedback) {
        return exFeedbackService.insertInfo(exFeedback);
    }
    @Override
    public R<Void> insertInfo(ExFeedback exFeedback) {
        // 添加反馈内容表数据
        exFeedbackMapper.insert(exFeedback);
        // 图标的list集合id
        List<Integer> ids = exFeedback.getIds();
            // 拿去集合id对应的图片多条数据
            List<ExImg> exImgs = exImgMapper.selectList(Wrappers.<ExImg>lambdaQuery()
                    .in(ExImg::getId, ids));
            // 循环设置内容表关联id
            Optional.ofNullable(exImgs).ifPresent(r -> {
                r.forEach(w -> {
                    w.setFeedbackId(exFeedback.getId());
                });
                // 保存/修改数据
                exImgService.saveOrUpdateBatch(exImgs);
            });
        return R.success();
    }

(注意内容表实体类有List<Integer> ids 字段)


网站公告

今日签到

点亮在社区的每一天
去签到