Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
6159ed6785
@ -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;
|
||||
@ -183,8 +184,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<MultipartFile> files) throws Exception {
|
||||
siteRegionService.createSiteRegion(regionDto,files);
|
||||
return JsonResult.success();
|
||||
}
|
||||
|
||||
@ -218,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<MultipartFile> files) throws Exception {
|
||||
siteRegionService.updateSiteRegion(regionDto,files);
|
||||
return JsonResult.success();
|
||||
}
|
||||
|
||||
@ -249,7 +250,7 @@ public class EbikeRegionController {
|
||||
*/
|
||||
@GetMapping("getRegion")
|
||||
public JsonResult<?> getRegion(@RequestParam(value = "regionId", required = false) Long regionId) {
|
||||
List<EbikeSiteRegion> list = siteRegionService.listByToken(regionId);
|
||||
List<ResEbikeSiteRegionPageDto> list = siteRegionService.listByToken(regionId);
|
||||
return JsonResult.success(list);
|
||||
}
|
||||
|
||||
|
||||
@ -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<EbikeSiteImages> {
|
||||
|
||||
}
|
||||
@ -26,6 +26,8 @@ public class ReqSiteRegionDto {
|
||||
*/
|
||||
private String siteName;
|
||||
|
||||
private String describe;
|
||||
|
||||
/**
|
||||
* 站点地址
|
||||
*/
|
||||
|
||||
@ -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<EbikePoint> points;
|
||||
|
||||
@RelationOneToMany(selfField = "siteRegionId",targetField = "siteRegionId")
|
||||
private List<EbikeSiteImages> images;
|
||||
|
||||
}
|
||||
|
||||
@ -103,4 +103,6 @@ public class EbikeOperationRegion implements Serializable {
|
||||
*/
|
||||
private Integer operationLevel;
|
||||
|
||||
private String describe;
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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,13 +24,13 @@ public interface EbikeSiteRegionService extends IService<EbikeSiteRegion> {
|
||||
* 生成站点
|
||||
* @param regionDto 站点信息
|
||||
*/
|
||||
void createSiteRegion(ReqSiteRegionDto regionDto);
|
||||
void createSiteRegion(ReqSiteRegionDto regionDto,List<MultipartFile> files) throws Exception;
|
||||
|
||||
/**
|
||||
* 修改站点
|
||||
* @param regionDto 站点信息
|
||||
*/
|
||||
void updateSiteRegion(ReqSiteRegionDto regionDto);
|
||||
void updateSiteRegion(ReqSiteRegionDto regionDto,List<MultipartFile> files) throws Exception;
|
||||
|
||||
/**
|
||||
* 批量删除站点
|
||||
@ -42,7 +43,7 @@ public interface EbikeSiteRegionService extends IService<EbikeSiteRegion> {
|
||||
* @param regionId 运营区ID
|
||||
* @return 站点列表
|
||||
*/
|
||||
List<EbikeSiteRegion> listByToken(Long regionId);
|
||||
List<ResEbikeSiteRegionPageDto> listByToken(Long regionId);
|
||||
|
||||
/**
|
||||
* 获取站点详情
|
||||
|
||||
@ -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,8 +15,10 @@ 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;
|
||||
import com.cdzy.ebikeoperate.utils.RedisUtil;
|
||||
import com.ebike.feign.clients.StaffFeignClient;
|
||||
import com.ebike.feign.model.rsp.StaffFeign;
|
||||
@ -27,16 +30,20 @@ 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;
|
||||
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;
|
||||
|
||||
@ -61,9 +68,15 @@ public class EbikeSiteRegionServiceImpl extends ServiceImpl<EbikeSiteRegionMappe
|
||||
@Resource
|
||||
private EbikeOperationRegionMapper operationRegionMapper;
|
||||
|
||||
@Resource
|
||||
private EbikeSiteImagesMapper siteImagesMapper;
|
||||
|
||||
@Resource
|
||||
private MinioUtil minioUtil;
|
||||
|
||||
|
||||
@Override
|
||||
public void createSiteRegion(ReqSiteRegionDto regionDto) {
|
||||
public void createSiteRegion(ReqSiteRegionDto regionDto, List<MultipartFile> files) throws Exception {
|
||||
Long operationRegionId = regionDto.getOperationRegionId();
|
||||
EbikeOperationRegion operationRegion = operationRegionMapper.selectOneById(operationRegionId);
|
||||
if (Objects.isNull(operationRegion)) {
|
||||
@ -76,11 +89,51 @@ public class EbikeSiteRegionServiceImpl extends ServiceImpl<EbikeSiteRegionMappe
|
||||
siteRegion.setOrgId(staffFeign.getOrgId());
|
||||
List<ReqEbikePointDto> points = regionDto.getPoints();
|
||||
this.mapper.insert(siteRegion);
|
||||
saveImages(files, siteRegion.getSiteRegionId());
|
||||
savePoints(points, operationRegionId, siteRegion.getSiteRegionId());
|
||||
}
|
||||
|
||||
private void saveImages(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);
|
||||
}
|
||||
siteImagesMapper.insertBatch(images);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateSiteRegion(ReqSiteRegionDto regionDto) {
|
||||
public void updateSiteRegion(ReqSiteRegionDto regionDto, List<MultipartFile> files) throws Exception {
|
||||
Long operationRegionId = regionDto.getOperationRegionId();
|
||||
EbikeOperationRegion operationRegion = operationRegionMapper.selectOneById(operationRegionId);
|
||||
if (Objects.isNull(operationRegion)) {
|
||||
@ -96,26 +149,27 @@ public class EbikeSiteRegionServiceImpl extends ServiceImpl<EbikeSiteRegionMappe
|
||||
if (points != null && !points.isEmpty()) {
|
||||
updatePoints(points, operationRegionId, regionDto.getSiteRegionId());
|
||||
}
|
||||
updateImages(files,regionDto.getSiteRegionId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delSite(ReqBatchRegionDto delRegionDto) {
|
||||
List<EbikeSiteRegion> siteRegions = this.mapper.selectListByIds(delRegionDto.getIds());
|
||||
siteRegions.forEach(region ->
|
||||
delPoints(region.getOperationRegionId(), region.getSiteRegionId())
|
||||
delPoints(region.getOperationRegionId(), region.getSiteRegionId())
|
||||
);
|
||||
this.mapper.deleteBatchByIds(delRegionDto.getIds());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<EbikeSiteRegion> listByToken(Long regionId) {
|
||||
public List<ResEbikeSiteRegionPageDto> 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
|
||||
|
||||
@ -18,6 +18,11 @@ public class MinioUtil {
|
||||
*/
|
||||
public final static String BUCKET_OPERATE = "operate-bucket";
|
||||
|
||||
/**
|
||||
*站点附件
|
||||
*/
|
||||
public final static String BUCKET_SIT = "site-images";
|
||||
|
||||
@Resource
|
||||
private MinioClient minioClient;
|
||||
|
||||
|
||||
@ -20,7 +20,7 @@ public class MybatisFlexGenCode {
|
||||
private static final String mapperPath="D:/Project/克能单车/resources/mapper";
|
||||
private static final String packageName ="com.cdzy.ebikeoperate";
|
||||
private static final String[] tables= new String[]{
|
||||
"ebike_site_type"
|
||||
"ebike_region_level"
|
||||
};
|
||||
|
||||
@Test
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user