Compare commits

...

2 Commits

Author SHA1 Message Date
7e7c84d6f4 Merge remote-tracking branch 'origin/main' 2025-05-08 09:43:36 +08:00
e94e5bd0b3 站点附件、及其相关处理 2025-05-08 09:43:28 +08:00
4 changed files with 56 additions and 31 deletions

View File

@ -29,6 +29,7 @@ import jakarta.annotation.Resource;
import jakarta.validation.constraints.NotNull;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Objects;
@ -382,4 +383,15 @@ public class EbikeRegionController {
List<EbikeRegionLevel> levels = levelMapper.selectListByQuery(queryWrapper);
return JsonResult.success(levels);
}
/**
* 站点附件上传
*
* @return 等级列表
*/
@PostMapping("siteImagesUpload")
public JsonResult<?> siteImagesUpload(MultipartFile file) throws Exception {
Long imageId = siteRegionService.saveImages(file);
return JsonResult.success(imageId);
}
}

View File

@ -79,4 +79,9 @@ public class ReqSiteRegionDto {
@Size(min = 3, message = "顶点列表至少需要4个点含闭合点")
private List<ReqEbikePointDto> points;
/**
* 图片id
*/
private List<Long> imageIds;
}

View File

@ -8,7 +8,9 @@ import com.cdzy.ebikeoperate.model.dto.response.ResEbikeSiteRegionPageDto;
import com.cdzy.ebikeoperate.model.pojo.EbikeSiteRegion;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
/**
@ -60,4 +62,11 @@ public interface EbikeSiteRegionService extends IService<EbikeSiteRegion> {
* @return 分页列表
*/
Page<ResEbikeSiteRegionPageDto> pageSite(PageParam pageParam, Long operationRegionId, String zoneId, String siteName);
/**
* 站点附件上传
* @param file 附件
* @return
*/
Long saveImages(MultipartFile file) throws Exception;
}

View File

@ -24,6 +24,7 @@ import com.ebike.feign.clients.StaffFeignClient;
import com.ebike.feign.model.rsp.StaffFeign;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.update.UpdateChain;
import com.mybatisflex.core.util.StringUtil;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
@ -89,47 +90,39 @@ public class EbikeSiteRegionServiceImpl extends ServiceImpl<EbikeSiteRegionMappe
siteRegion.setOrgId(staffFeign.getOrgId());
List<ReqEbikePointDto> points = regionDto.getPoints();
this.mapper.insert(siteRegion);
// saveImages(files, siteRegion.getSiteRegionId());
List<Long> imageIds = regionDto.getImageIds();
if (imageIds != null && !imageIds.isEmpty()) {
UpdateChain.of(EbikeSiteImages.class)
.set(EBIKE_SITE_IMAGES.SITE_REGION_ID, siteRegion.getSiteRegionId())
.where(EBIKE_SITE_IMAGES.IMAGE_ID.in(imageIds));
}
savePoints(points, operationRegionId, siteRegion.getSiteRegionId());
}
private void saveImages(List<MultipartFile> files, Long siteRegionId) throws Exception {
List<EbikeSiteImages> images = new ArrayList<>();
for (MultipartFile file : files) {
@Override
public Long saveImages(MultipartFile file) throws Exception {
EbikeSiteImages image = new EbikeSiteImages();
InputStream inputStream = file.getInputStream();
String fileName = file.getOriginalFilename();
String fileUniqueKey = UUID.randomUUID() + fileName.substring(fileName.lastIndexOf("."));
image.setImageName(fileUniqueKey);
image.setImageBucket(MinioUtil.BUCKET_SIT);
image.setSiteRegionId(siteRegionId);
images.add(image);
// image.setSiteRegionId(siteRegionId);
minioUtil.uploadFile(inputStream, MinioUtil.BUCKET_SIT, fileUniqueKey);
}
siteImagesMapper.insertBatch(images);
siteImagesMapper.insert(image);
return image.getImageId();
}
private void updateImages(List<MultipartFile> files, Long siteRegionId) throws Exception {
List<EbikeSiteImages> images = new ArrayList<>();
for (MultipartFile file : files) {
EbikeSiteImages image = new EbikeSiteImages();
InputStream inputStream = file.getInputStream();
String fileName = file.getOriginalFilename();
String fileUniqueKey = UUID.randomUUID() + fileName.substring(fileName.lastIndexOf("."));
image.setImageName(fileUniqueKey);
image.setImageBucket(MinioUtil.BUCKET_SIT);
image.setSiteRegionId(siteRegionId);
images.add(image);
minioUtil.uploadFile(inputStream, MinioUtil.BUCKET_SIT, fileUniqueKey);
}
private void delImages(Long siteRegionId) throws Exception {
QueryWrapper queryWrapper = QueryWrapper.create()
.where(EBIKE_SITE_IMAGES.SITE_REGION_ID.eq(siteRegionId));
List<EbikeSiteImages> list = siteImagesMapper.selectListByQuery(queryWrapper);
for (EbikeSiteImages image : list) {
minioUtil.deleteObject(image.getImageBucket(), image.getImageName());
}
siteImagesMapper.selectListByQuery(queryWrapper);
siteImagesMapper.insertBatch(images);
siteImagesMapper.deleteByQuery(queryWrapper);
}
@Override
@ -149,7 +142,13 @@ public class EbikeSiteRegionServiceImpl extends ServiceImpl<EbikeSiteRegionMappe
if (points != null && !points.isEmpty()) {
updatePoints(points, operationRegionId, regionDto.getSiteRegionId());
}
// updateImages(files,regionDto.getSiteRegionId());
delImages(regionDto.getSiteRegionId());
List<Long> imageIds = regionDto.getImageIds();
if (imageIds != null && !imageIds.isEmpty()) {
UpdateChain.of(EbikeSiteImages.class)
.set(EBIKE_SITE_IMAGES.SITE_REGION_ID, ebikeSiteRegion.getSiteRegionId())
.where(EBIKE_SITE_IMAGES.IMAGE_ID.in(imageIds));
}
}
@Override