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