From 34883e6258099b35dc6a94327eb2b344d149bda1 Mon Sep 17 00:00:00 2001 From: attiya <2413103649@qq.com> Date: Wed, 7 May 2025 15:36:58 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AB=99=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/EbikeRegionController.java | 8 +-- .../mapper/EbikeSiteImagesMapper.java | 14 +++++ .../response/ResEbikeSiteRegionInfoDto.java | 4 ++ .../model/pojo/EbikeSiteImages.java | 51 +++++++++++++++ .../service/EbikeSiteRegionService.java | 2 +- .../impl/EbikeSiteRegionServiceImpl.java | 62 ++++++++++++++++--- 6 files changed, 125 insertions(+), 16 deletions(-) create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/mapper/EbikeSiteImagesMapper.java create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeSiteImages.java diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeRegionController.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeRegionController.java index 86fa1dbb..8c94ddcd 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeRegionController.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeRegionController.java @@ -18,7 +18,6 @@ import com.cdzy.ebikeoperate.model.pojo.*; import com.cdzy.ebikeoperate.service.EbikeAdministrationZoneService; import com.cdzy.ebikeoperate.service.EbikeOperationRegionService; import com.cdzy.ebikeoperate.service.EbikeSiteRegionService; -import com.cdzy.ebikeoperate.utils.MinioUtil; import com.ebike.feign.clients.StaffFeignClient; import com.ebike.feign.model.rsp.RspBikeInfo; import com.ebike.feign.model.rsp.StaffFeign; @@ -72,9 +71,6 @@ public class EbikeRegionController { @Resource private EbikeRegionLevelMapper levelMapper; - @Resource - private MinioUtil minioUtil; - /** * 添加运营区。 * @@ -223,8 +219,8 @@ public class EbikeRegionController { * @return {@code 200} 添加成功,{@code 500} 添加失败 */ @PostMapping("updateSite") - public JsonResult updateSite(@RequestBody @Validated ReqSiteRegionDto regionDto) { - siteRegionService.updateSiteRegion(regionDto); + public JsonResult updateSite(@RequestBody @Validated ReqSiteRegionDto regionDto,List files) throws Exception { + siteRegionService.updateSiteRegion(regionDto,files); return JsonResult.success(); } diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/mapper/EbikeSiteImagesMapper.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/mapper/EbikeSiteImagesMapper.java new file mode 100644 index 00000000..12ad5383 --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/mapper/EbikeSiteImagesMapper.java @@ -0,0 +1,14 @@ +package com.cdzy.ebikeoperate.mapper; + +import com.mybatisflex.core.BaseMapper; +import com.cdzy.ebikeoperate.model.pojo.EbikeSiteImages; + +/** + * 映射层。 + * + * @author attiya + * @since 2025-05-07 + */ +public interface EbikeSiteImagesMapper extends BaseMapper { + +} diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/response/ResEbikeSiteRegionInfoDto.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/response/ResEbikeSiteRegionInfoDto.java index ed6f3a4b..e1ef50c1 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/response/ResEbikeSiteRegionInfoDto.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/response/ResEbikeSiteRegionInfoDto.java @@ -1,6 +1,7 @@ package com.cdzy.ebikeoperate.model.dto.response; import com.cdzy.ebikeoperate.model.pojo.EbikePoint; +import com.cdzy.ebikeoperate.model.pojo.EbikeSiteImages; import com.mybatisflex.annotation.RelationOneToMany; import lombok.Data; @@ -107,4 +108,7 @@ public class ResEbikeSiteRegionInfoDto { @RelationOneToMany(selfField = "siteRegionId",targetField = "regionId") private List points; + @RelationOneToMany(selfField = "siteRegionId",targetField = "siteRegionId") + private List images; + } diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeSiteImages.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeSiteImages.java new file mode 100644 index 00000000..c0e81768 --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeSiteImages.java @@ -0,0 +1,51 @@ +package com.cdzy.ebikeoperate.model.pojo; + +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.Table; +import java.io.Serializable; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 实体类。 + * + * @author attiya + * @since 2025-05-07 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("ebike_site_images") +public class EbikeSiteImages implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 图片ID + */ + @Id + private Long imageId; + + /** + * 站点ID + */ + private Long siteRegionId; + + /** + * 桶名(冗余存储 + */ + private String imageBucket; + + /** + * 图片名称 + */ + private String imageName; + +} diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeSiteRegionService.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeSiteRegionService.java index 9ddfde86..f18994e9 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeSiteRegionService.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeSiteRegionService.java @@ -30,7 +30,7 @@ public interface EbikeSiteRegionService extends IService { * 修改站点 * @param regionDto 站点信息 */ - void updateSiteRegion(ReqSiteRegionDto regionDto); + void updateSiteRegion(ReqSiteRegionDto regionDto,List files) throws Exception; /** * 批量删除站点 diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeSiteRegionServiceImpl.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeSiteRegionServiceImpl.java index 2e4f811a..2f8d0d85 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeSiteRegionServiceImpl.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeSiteRegionServiceImpl.java @@ -6,6 +6,7 @@ import com.cdzy.common.model.PageParam; import com.cdzy.ebikeoperate.enums.RegionLevelType; import com.cdzy.ebikeoperate.mapper.EbikeOperationRegionMapper; import com.cdzy.ebikeoperate.mapper.EbikePointMapper; +import com.cdzy.ebikeoperate.mapper.EbikeSiteImagesMapper; import com.cdzy.ebikeoperate.mapper.EbikeSiteRegionMapper; import com.cdzy.ebikeoperate.model.dto.request.ReqBatchRegionDto; import com.cdzy.ebikeoperate.model.dto.request.ReqEbikePointDto; @@ -14,6 +15,7 @@ import com.cdzy.ebikeoperate.model.dto.response.ResEbikeSiteRegionInfoDto; import com.cdzy.ebikeoperate.model.dto.response.ResEbikeSiteRegionPageDto; import com.cdzy.ebikeoperate.model.pojo.EbikeOperationRegion; import com.cdzy.ebikeoperate.model.pojo.EbikePoint; +import com.cdzy.ebikeoperate.model.pojo.EbikeSiteImages; import com.cdzy.ebikeoperate.model.pojo.EbikeSiteRegion; import com.cdzy.ebikeoperate.service.EbikeSiteRegionService; import com.cdzy.ebikeoperate.utils.MinioUtil; @@ -35,11 +37,13 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.UUID; import static com.cdzy.ebikeoperate.model.pojo.table.EbikeAdministrationZoneTableDef.EBIKE_ADMINISTRATION_ZONE; import static com.cdzy.ebikeoperate.model.pojo.table.EbikeOperationRegionTableDef.EBIKE_OPERATION_REGION; import static com.cdzy.ebikeoperate.model.pojo.table.EbikePointTableDef.EBIKE_POINT; import static com.cdzy.ebikeoperate.model.pojo.table.EbikeRegionLevelTableDef.EBIKE_REGION_LEVEL; +import static com.cdzy.ebikeoperate.model.pojo.table.EbikeSiteImagesTableDef.EBIKE_SITE_IMAGES; import static com.cdzy.ebikeoperate.model.pojo.table.EbikeSiteRegionTableDef.EBIKE_SITE_REGION; import static com.cdzy.ebikeoperate.model.pojo.table.EbikeStaffRegionTableDef.EBIKE_STAFF_REGION; @@ -64,12 +68,15 @@ public class EbikeSiteRegionServiceImpl extends ServiceImpl files) throws Exception { + public void createSiteRegion(ReqSiteRegionDto regionDto, List files) throws Exception { Long operationRegionId = regionDto.getOperationRegionId(); EbikeOperationRegion operationRegion = operationRegionMapper.selectOneById(operationRegionId); if (Objects.isNull(operationRegion)) { @@ -81,16 +88,52 @@ public class EbikeSiteRegionServiceImpl extends ServiceImpl points = regionDto.getPoints(); - for (MultipartFile file : files) { - InputStream inputStream = file.getInputStream(); - minioUtil.uploadFile(inputStream,MinioUtil.BUCKET_SIT,""); - } this.mapper.insert(siteRegion); + saveImages(files, siteRegion.getSiteRegionId()); savePoints(points, operationRegionId, siteRegion.getSiteRegionId()); } + private void saveImages(List files, Long siteRegionId) throws Exception { + List 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); + } + siteImagesMapper.insertBatch(images); + } + + private void updateImages(List files, Long siteRegionId) throws Exception { + List 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() + .where(EBIKE_SITE_IMAGES.SITE_REGION_ID.eq(siteRegionId)); + List list = siteImagesMapper.selectListByQuery(queryWrapper); + for (EbikeSiteImages image : list) { + minioUtil.deleteObject(image.getImageBucket(), image.getImageName()); + } + siteImagesMapper.selectListByQuery(queryWrapper); + siteImagesMapper.insertBatch(images); + } + @Override - public void updateSiteRegion(ReqSiteRegionDto regionDto) { + public void updateSiteRegion(ReqSiteRegionDto regionDto, List files) throws Exception { Long operationRegionId = regionDto.getOperationRegionId(); EbikeOperationRegion operationRegion = operationRegionMapper.selectOneById(operationRegionId); if (Objects.isNull(operationRegion)) { @@ -106,13 +149,14 @@ public class EbikeSiteRegionServiceImpl extends ServiceImpl siteRegions = this.mapper.selectListByIds(delRegionDto.getIds()); siteRegions.forEach(region -> - delPoints(region.getOperationRegionId(), region.getSiteRegionId()) + delPoints(region.getOperationRegionId(), region.getSiteRegionId()) ); this.mapper.deleteBatchByIds(delRegionDto.getIds()); } @@ -125,7 +169,7 @@ public class EbikeSiteRegionServiceImpl extends ServiceImpl