场景复现
分析:
其实这是两给表,一个内容表,一个图片表,一对多的关系。
解决思路:
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);}
@Overridepublic 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);// 批量添加idids.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);}
/*** @param: ExFeedback , MultipartFile* @return:void* @Date:2024/5/12 反馈内容模块添加数据 & 图片*/@Overridepublic R<Void> insertInfo(ExFeedback exFeedback) {// 添加反馈内容表数据int insert = exFeedbackMapper.insert(exFeedback);// 图标的list集合idList<Integer> ids = exFeedback.getIds();ids.forEach(re -> {// 查出的每条数据ExImg exImg = exImgMapper.selectById(re);// 每条数据set 反馈内容idexImg.setFeedbackId(exFeedback.getId());// 保存idexImgMapper.updateById(exImg);});return R.success();}
(注意内容表实体类有List<Integer> ids 字段)