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 jakarta.validation.constraints.NotNull;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -382,4 +383,15 @@ public class EbikeRegionController {
List<EbikeRegionLevel> levels = levelMapper.selectListByQuery(queryWrapper); List<EbikeRegionLevel> levels = levelMapper.selectListByQuery(queryWrapper);
return JsonResult.success(levels); 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个点含闭合点") @Size(min = 3, message = "顶点列表至少需要4个点含闭合点")
private List<ReqEbikePointDto> points; 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.cdzy.ebikeoperate.model.pojo.EbikeSiteRegion;
import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService; import com.mybatisflex.core.service.IService;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List; import java.util.List;
/** /**
@ -60,4 +62,11 @@ public interface EbikeSiteRegionService extends IService<EbikeSiteRegion> {
* @return 分页列表 * @return 分页列表
*/ */
Page<ResEbikeSiteRegionPageDto> pageSite(PageParam pageParam, Long operationRegionId, String zoneId, String siteName); 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.ebike.feign.model.rsp.StaffFeign;
import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.update.UpdateChain;
import com.mybatisflex.core.util.StringUtil; import com.mybatisflex.core.util.StringUtil;
import com.mybatisflex.spring.service.impl.ServiceImpl; import com.mybatisflex.spring.service.impl.ServiceImpl;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
@ -89,47 +90,39 @@ public class EbikeSiteRegionServiceImpl extends ServiceImpl<EbikeSiteRegionMappe
siteRegion.setOrgId(staffFeign.getOrgId()); siteRegion.setOrgId(staffFeign.getOrgId());
List<ReqEbikePointDto> points = regionDto.getPoints(); List<ReqEbikePointDto> points = regionDto.getPoints();
this.mapper.insert(siteRegion); 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()); savePoints(points, operationRegionId, siteRegion.getSiteRegionId());
} }
private void saveImages(List<MultipartFile> files, Long siteRegionId) throws Exception { @Override
List<EbikeSiteImages> images = new ArrayList<>(); public Long saveImages(MultipartFile file) throws Exception {
for (MultipartFile file : files) {
EbikeSiteImages image = new EbikeSiteImages(); EbikeSiteImages image = new EbikeSiteImages();
InputStream inputStream = file.getInputStream(); InputStream inputStream = file.getInputStream();
String fileName = file.getOriginalFilename(); String fileName = file.getOriginalFilename();
String fileUniqueKey = UUID.randomUUID() + fileName.substring(fileName.lastIndexOf(".")); String fileUniqueKey = UUID.randomUUID() + fileName.substring(fileName.lastIndexOf("."));
image.setImageName(fileUniqueKey); image.setImageName(fileUniqueKey);
image.setImageBucket(MinioUtil.BUCKET_SIT); image.setImageBucket(MinioUtil.BUCKET_SIT);
image.setSiteRegionId(siteRegionId); // image.setSiteRegionId(siteRegionId);
images.add(image);
minioUtil.uploadFile(inputStream, MinioUtil.BUCKET_SIT, fileUniqueKey); 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 { private void delImages(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);
}
QueryWrapper queryWrapper = QueryWrapper.create() QueryWrapper queryWrapper = QueryWrapper.create()
.where(EBIKE_SITE_IMAGES.SITE_REGION_ID.eq(siteRegionId)); .where(EBIKE_SITE_IMAGES.SITE_REGION_ID.eq(siteRegionId));
List<EbikeSiteImages> list = siteImagesMapper.selectListByQuery(queryWrapper); List<EbikeSiteImages> list = siteImagesMapper.selectListByQuery(queryWrapper);
for (EbikeSiteImages image : list) { for (EbikeSiteImages image : list) {
minioUtil.deleteObject(image.getImageBucket(), image.getImageName()); minioUtil.deleteObject(image.getImageBucket(), image.getImageName());
} }
siteImagesMapper.selectListByQuery(queryWrapper); siteImagesMapper.deleteByQuery(queryWrapper);
siteImagesMapper.insertBatch(images);
} }
@Override @Override
@ -149,7 +142,13 @@ public class EbikeSiteRegionServiceImpl extends ServiceImpl<EbikeSiteRegionMappe
if (points != null && !points.isEmpty()) { if (points != null && !points.isEmpty()) {
updatePoints(points, operationRegionId, regionDto.getSiteRegionId()); 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 @Override