From e9e59cd33e58d80bc4b1311fa9c347f16d38477d Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sun, 7 Sep 2025 12:12:22 +0800 Subject: [PATCH] =?UTF-8?q?feat(service):=20=E6=89=B9=E9=87=8F=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E6=99=AF=E5=8C=BA=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在多个服务实现类中添加批量获取景区名称的方法- 优化了景区名称的设置逻辑,提高了查询效率 -涉及的服务包括: - ProfitSharingRecordServiceImpl - BrokerServiceImpl - CouponServiceImpl - SourceServiceImpl - TemplateServiceImpl --- .../impl/ProfitSharingRecordServiceImpl.java | 17 +++++- .../service/pc/impl/BrokerServiceImpl.java | 41 ++++++++++++- .../service/pc/impl/CouponServiceImpl.java | 22 +++++++ .../service/pc/impl/SourceServiceImpl.java | 57 +++++++++++++++++-- .../service/pc/impl/TemplateServiceImpl.java | 41 ++++++++++++- 5 files changed, 169 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/ycwl/basic/profitsharing/service/impl/ProfitSharingRecordServiceImpl.java b/src/main/java/com/ycwl/basic/profitsharing/service/impl/ProfitSharingRecordServiceImpl.java index 466fc6c..a4f0796 100644 --- a/src/main/java/com/ycwl/basic/profitsharing/service/impl/ProfitSharingRecordServiceImpl.java +++ b/src/main/java/com/ycwl/basic/profitsharing/service/impl/ProfitSharingRecordServiceImpl.java @@ -12,6 +12,7 @@ import com.ycwl.basic.profitsharing.entity.ProfitSharingUser; import com.ycwl.basic.profitsharing.mapper.ProfitSharingRecordMapper; import com.ycwl.basic.profitsharing.repository.ProfitSharingRepository; import com.ycwl.basic.profitsharing.service.ProfitSharingRecordService; +import com.ycwl.basic.repository.ScenicRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -29,6 +30,8 @@ public class ProfitSharingRecordServiceImpl implements ProfitSharingRecordServic private ProfitSharingRecordMapper profitSharingRecordMapper; @Autowired private ProfitSharingRepository profitSharingRepository; + @Autowired + private ScenicRepository scenicRepository; @Override @@ -42,7 +45,19 @@ public class ProfitSharingRecordServiceImpl implements ProfitSharingRecordServic return respVo; } List recordList = profitSharingRecordMapper.listByOrderIds(list.stream().map(ProfitSharingRecordGroupVO::getOrderId).collect(Collectors.toList())); - List scenicList = recordList.stream().map(ProfitSharingRecordRespVO::getScenicId).distinct().collect(Collectors.toList()); + + // 批量获取景区名称 + List scenicIds = recordList.stream().map(ProfitSharingRecordRespVO::getScenicId).distinct().collect(Collectors.toList()); + Map scenicNames = scenicRepository.batchGetScenicNames(scenicIds); + + // 设置景区名称 + recordList.forEach(item -> { + if (item.getScenicId() != null) { + item.setScenicName(scenicNames.get(item.getScenicId())); + } + }); + + List scenicList = scenicIds; List scenicConfig = scenicList.stream() .map(scenicId -> profitSharingRepository.getScenicConfig(scenicId)) .filter(item -> !Objects.isNull(item) && !Objects.isNull(item.getUsers())) diff --git a/src/main/java/com/ycwl/basic/service/pc/impl/BrokerServiceImpl.java b/src/main/java/com/ycwl/basic/service/pc/impl/BrokerServiceImpl.java index 89301ae..795e27d 100644 --- a/src/main/java/com/ycwl/basic/service/pc/impl/BrokerServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/pc/impl/BrokerServiceImpl.java @@ -6,11 +6,15 @@ import com.ycwl.basic.mapper.BrokerMapper; import com.ycwl.basic.model.pc.broker.entity.BrokerEntity; import com.ycwl.basic.model.pc.broker.req.BrokerReqQuery; import com.ycwl.basic.model.pc.broker.resp.BrokerRespVO; +import com.ycwl.basic.repository.ScenicRepository; import com.ycwl.basic.service.pc.BrokerService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; /** * @Author:longbinbin @@ -21,18 +25,53 @@ public class BrokerServiceImpl implements BrokerService { @Autowired private BrokerMapper brokerMapper; + @Autowired + private ScenicRepository scenicRepository; @Override public PageInfo pageQuery(BrokerReqQuery brokerReqQuery) { PageHelper.startPage(brokerReqQuery.getPageNum(),brokerReqQuery.getPageSize()); List list = brokerMapper.list(brokerReqQuery); + + // 批量获取景区名称 + List scenicIds = list.stream() + .map(BrokerRespVO::getScenicId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + Map scenicNames = scenicRepository.batchGetScenicNames(scenicIds); + + // 设置景区名称 + list.forEach(item -> { + if (item.getScenicId() != null) { + item.setScenicName(scenicNames.get(item.getScenicId())); + } + }); + PageInfo pageInfo = new PageInfo(list); return pageInfo; } @Override public List list(BrokerReqQuery brokerReqQuery) { - return brokerMapper.list(brokerReqQuery); + List list = brokerMapper.list(brokerReqQuery); + + // 批量获取景区名称 + List scenicIds = list.stream() + .map(BrokerRespVO::getScenicId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + Map scenicNames = scenicRepository.batchGetScenicNames(scenicIds); + + // 设置景区名称 + list.forEach(item -> { + if (item.getScenicId() != null) { + item.setScenicName(scenicNames.get(item.getScenicId())); + } + }); + + return list; } @Override diff --git a/src/main/java/com/ycwl/basic/service/pc/impl/CouponServiceImpl.java b/src/main/java/com/ycwl/basic/service/pc/impl/CouponServiceImpl.java index 7dfbde1..2acd60e 100644 --- a/src/main/java/com/ycwl/basic/service/pc/impl/CouponServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/pc/impl/CouponServiceImpl.java @@ -3,17 +3,23 @@ import com.ycwl.basic.mapper.CouponMapper; import com.ycwl.basic.model.pc.coupon.entity.CouponEntity; import com.ycwl.basic.model.pc.coupon.req.CouponQueryReq; import com.ycwl.basic.model.pc.coupon.resp.CouponRespVO; +import com.ycwl.basic.repository.ScenicRepository; import com.ycwl.basic.service.pc.CouponService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; @Service public class CouponServiceImpl implements CouponService { @Autowired private CouponMapper couponMapper; + @Autowired + private ScenicRepository scenicRepository; @Override public Integer add(CouponEntity coupon) { @@ -38,6 +44,22 @@ public class CouponServiceImpl implements CouponService { @Override public List list(CouponQueryReq query) { List list = couponMapper.selectByQuery(query); + + // 批量获取景区名称 + List scenicIds = list.stream() + .map(CouponRespVO::getScenicId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + Map scenicNames = scenicRepository.batchGetScenicNames(scenicIds); + + // 设置景区名称 + list.forEach(item -> { + if (item.getScenicId() != null) { + item.setScenicName(scenicNames.get(item.getScenicId())); + } + }); + return list; } diff --git a/src/main/java/com/ycwl/basic/service/pc/impl/SourceServiceImpl.java b/src/main/java/com/ycwl/basic/service/pc/impl/SourceServiceImpl.java index 0455af5..3910bc6 100644 --- a/src/main/java/com/ycwl/basic/service/pc/impl/SourceServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/pc/impl/SourceServiceImpl.java @@ -28,6 +28,9 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.Collections; import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; import static com.ycwl.basic.constant.StorageConstant.PHOTO_PATH; @@ -52,14 +55,31 @@ public class SourceServiceImpl implements SourceService { public ApiResponse> pageQuery(SourceReqQuery sourceReqQuery) { PageHelper.startPage(sourceReqQuery.getPageNum(), sourceReqQuery.getPageSize()); List list = sourceMapper.list(sourceReqQuery); + + // 批量获取景区名称 + List scenicIds = list.stream() + .map(SourceRespVO::getScenicId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + Map scenicNames = scenicRepository.batchGetScenicNames(scenicIds); + + // 批量获取设备名称 + List deviceIds = list.stream() + .map(SourceRespVO::getDeviceId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + Map deviceNames = deviceRepository.batchGetDeviceNames(deviceIds); + list.forEach(sourceRespVO -> { - ScenicEntity scenic = scenicRepository.getScenic(sourceRespVO.getScenicId()); - if (scenic != null) { - sourceRespVO.setScenicName(scenic.getName()); + // 设置景区名称 + if (sourceRespVO.getScenicId() != null) { + sourceRespVO.setScenicName(scenicNames.get(sourceRespVO.getScenicId())); } - DeviceEntity device = deviceRepository.getDevice(sourceRespVO.getDeviceId()); - if (device != null) { - sourceRespVO.setDeviceName(device.getName()); + // 设置设备名称 + if (sourceRespVO.getDeviceId() != null) { + sourceRespVO.setDeviceName(deviceNames.get(sourceRespVO.getDeviceId())); } if (sourceRespVO.getVideoUrl() != null) { try { @@ -82,7 +102,32 @@ public class SourceServiceImpl implements SourceService { @Override public ApiResponse> list(SourceReqQuery sourceReqQuery) { List list = sourceMapper.list(sourceReqQuery); + + // 批量获取景区名称 + List scenicIds = list.stream() + .map(SourceRespVO::getScenicId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + Map scenicNames = scenicRepository.batchGetScenicNames(scenicIds); + + // 批量获取设备名称 + List deviceIds = list.stream() + .map(SourceRespVO::getDeviceId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + Map deviceNames = deviceRepository.batchGetDeviceNames(deviceIds); + list.forEach(sourceRespVO -> { + // 设置景区名称 + if (sourceRespVO.getScenicId() != null) { + sourceRespVO.setScenicName(scenicNames.get(sourceRespVO.getScenicId())); + } + // 设置设备名称 + if (sourceRespVO.getDeviceId() != null) { + sourceRespVO.setDeviceName(deviceNames.get(sourceRespVO.getDeviceId())); + } if (sourceRespVO.getVideoUrl() != null) { try { URL url = new URL(sourceRespVO.getVideoUrl()); diff --git a/src/main/java/com/ycwl/basic/service/pc/impl/TemplateServiceImpl.java b/src/main/java/com/ycwl/basic/service/pc/impl/TemplateServiceImpl.java index ce47950..08084f1 100644 --- a/src/main/java/com/ycwl/basic/service/pc/impl/TemplateServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/pc/impl/TemplateServiceImpl.java @@ -11,6 +11,7 @@ import com.ycwl.basic.pricing.enums.ProductType; import com.ycwl.basic.pricing.service.IPricingManagementService; import com.ycwl.basic.service.pc.TemplateService; import com.ycwl.basic.repository.TemplateRepository; +import com.ycwl.basic.repository.ScenicRepository; import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.SnowFlakeUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -18,8 +19,11 @@ import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; /** * @Author:longbinbin @@ -33,19 +37,54 @@ public class TemplateServiceImpl implements TemplateService { @Autowired private TemplateRepository templateRepository; @Autowired + private ScenicRepository scenicRepository; + @Autowired private IPricingManagementService pricingManagementService; @Override public ApiResponse> pageQuery(TemplateReqQuery templateReqQuery) { PageHelper.startPage(templateReqQuery.getPageNum(), templateReqQuery.getPageSize()); List list = templateMapper.list(templateReqQuery); + + // 批量获取景区名称 + List scenicIds = list.stream() + .map(TemplateRespVO::getScenicId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + Map scenicNames = scenicRepository.batchGetScenicNames(scenicIds); + + // 设置景区名称 + list.forEach(item -> { + if (item.getScenicId() != null) { + item.setScenicName(scenicNames.get(item.getScenicId())); + } + }); + PageInfo pageInfo = new PageInfo<>(list); return ApiResponse.success(pageInfo); } @Override public ApiResponse> list(TemplateReqQuery templateReqQuery) { - return ApiResponse.success(templateMapper.list(templateReqQuery)); + List list = templateMapper.list(templateReqQuery); + + // 批量获取景区名称 + List scenicIds = list.stream() + .map(TemplateRespVO::getScenicId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + Map scenicNames = scenicRepository.batchGetScenicNames(scenicIds); + + // 设置景区名称 + list.forEach(item -> { + if (item.getScenicId() != null) { + item.setScenicName(scenicNames.get(item.getScenicId())); + } + }); + + return ApiResponse.success(list); } @Override