From 31d031e94456833e6eb231c6503c3077fdd9cf11 Mon Sep 17 00:00:00 2001 From: attiya <2413103649@qq.com> Date: Wed, 7 May 2025 15:11:10 +0800 Subject: [PATCH 1/2] =?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 | 11 ++++++++--- .../model/dto/request/ReqSiteRegionDto.java | 2 ++ .../model/pojo/EbikeOperationRegion.java | 2 ++ .../service/EbikeSiteRegionService.java | 5 +++-- .../impl/EbikeSiteRegionServiceImpl.java | 18 ++++++++++++++---- .../com/cdzy/ebikeoperate/utils/MinioUtil.java | 5 +++++ .../cdzy/ebikeoperate/MybatisFlexGenCode.java | 2 +- 7 files changed, 35 insertions(+), 10 deletions(-) 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 64721c16..86fa1dbb 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,6 +18,7 @@ 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; @@ -29,6 +30,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; @@ -70,6 +72,9 @@ public class EbikeRegionController { @Resource private EbikeRegionLevelMapper levelMapper; + @Resource + private MinioUtil minioUtil; + /** * 添加运营区。 * @@ -183,8 +188,8 @@ public class EbikeRegionController { * @return {@code 200} 添加成功,{@code 500} 添加失败 */ @PostMapping("saveSite") - public JsonResult saveSite(@RequestBody @Validated ReqSiteRegionDto regionDto) { - siteRegionService.createSiteRegion(regionDto); + public JsonResult saveSite(@RequestBody @Validated ReqSiteRegionDto regionDto, List files) throws Exception { + siteRegionService.createSiteRegion(regionDto,files); return JsonResult.success(); } @@ -249,7 +254,7 @@ public class EbikeRegionController { */ @GetMapping("getRegion") public JsonResult getRegion(@RequestParam(value = "regionId", required = false) Long regionId) { - List list = siteRegionService.listByToken(regionId); + List list = siteRegionService.listByToken(regionId); return JsonResult.success(list); } diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqSiteRegionDto.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqSiteRegionDto.java index 9edf876b..cf191a4c 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqSiteRegionDto.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqSiteRegionDto.java @@ -26,6 +26,8 @@ public class ReqSiteRegionDto { */ private String siteName; + private String describe; + /** * 站点地址 */ diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeOperationRegion.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeOperationRegion.java index 67f9f20c..8ad9f3f8 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeOperationRegion.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeOperationRegion.java @@ -103,4 +103,6 @@ public class EbikeOperationRegion implements Serializable { */ private Integer operationLevel; + private String describe; + } 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 553bb073..9ddfde86 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 @@ -8,6 +8,7 @@ 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.util.List; @@ -23,7 +24,7 @@ public interface EbikeSiteRegionService extends IService { * 生成站点 * @param regionDto 站点信息 */ - void createSiteRegion(ReqSiteRegionDto regionDto); + void createSiteRegion(ReqSiteRegionDto regionDto,List files) throws Exception; /** * 修改站点 @@ -42,7 +43,7 @@ public interface EbikeSiteRegionService extends IService { * @param regionId 运营区ID * @return 站点列表 */ - List listByToken(Long regionId); + List listByToken(Long regionId); /** * 获取站点详情 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 b53f1df0..2e4f811a 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 @@ -16,6 +16,7 @@ import com.cdzy.ebikeoperate.model.pojo.EbikeOperationRegion; import com.cdzy.ebikeoperate.model.pojo.EbikePoint; import com.cdzy.ebikeoperate.model.pojo.EbikeSiteRegion; import com.cdzy.ebikeoperate.service.EbikeSiteRegionService; +import com.cdzy.ebikeoperate.utils.MinioUtil; import com.cdzy.ebikeoperate.utils.RedisUtil; import com.ebike.feign.clients.StaffFeignClient; import com.ebike.feign.model.rsp.StaffFeign; @@ -27,7 +28,9 @@ import jakarta.annotation.Resource; import org.locationtech.jts.geom.Coordinate; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; +import java.io.InputStream; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -61,9 +64,12 @@ public class EbikeSiteRegionServiceImpl extends ServiceImpl files) throws Exception { Long operationRegionId = regionDto.getOperationRegionId(); EbikeOperationRegion operationRegion = operationRegionMapper.selectOneById(operationRegionId); if (Objects.isNull(operationRegion)) { @@ -75,6 +81,10 @@ 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); savePoints(points, operationRegionId, siteRegion.getSiteRegionId()); } @@ -108,14 +118,14 @@ public class EbikeSiteRegionServiceImpl extends ServiceImpl listByToken(Long regionId) { + public List listByToken(Long regionId) { StaffFeign staffFeign = getStaff(); QueryWrapper queryWrapper = QueryWrapper.create() .leftJoin(EBIKE_OPERATION_REGION).on(EBIKE_SITE_REGION.OPERATION_REGION_ID.eq(EBIKE_OPERATION_REGION.OPERATION_REGION_ID)) .leftJoin(EBIKE_STAFF_REGION).on(EBIKE_STAFF_REGION.REGION_ID.eq(EBIKE_OPERATION_REGION.OPERATION_REGION_ID)) .where(EBIKE_STAFF_REGION.STAFF_ID.eq(staffFeign.getStaffId())) .where(EBIKE_STAFF_REGION.REGION_ID.eq(regionId, regionId != null)); - return this.mapper.selectListByQuery(queryWrapper); + return this.mapper.selectListWithRelationsByQueryAs(queryWrapper,ResEbikeSiteRegionPageDto.class); } @Override @@ -185,7 +195,7 @@ public class EbikeSiteRegionServiceImpl extends ServiceImpl Date: Wed, 7 May 2025 15:36:58 +0800 Subject: [PATCH 2/2] =?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