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

场景复现

 分析:

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

解决思路:

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 字段)

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值