feat(service): 批量设置景区名称

- 在多个服务实现类中添加批量获取景区名称的方法- 优化了景区名称的设置逻辑,提高了查询效率
-涉及的服务包括:
  - ProfitSharingRecordServiceImpl
  - BrokerServiceImpl
  - CouponServiceImpl - SourceServiceImpl
  - TemplateServiceImpl
This commit is contained in:
2025-09-07 12:12:22 +08:00
parent 5a89a7c60a
commit e9e59cd33e
5 changed files with 169 additions and 9 deletions

View File

@@ -12,6 +12,7 @@ import com.ycwl.basic.profitsharing.entity.ProfitSharingUser;
import com.ycwl.basic.profitsharing.mapper.ProfitSharingRecordMapper; import com.ycwl.basic.profitsharing.mapper.ProfitSharingRecordMapper;
import com.ycwl.basic.profitsharing.repository.ProfitSharingRepository; import com.ycwl.basic.profitsharing.repository.ProfitSharingRepository;
import com.ycwl.basic.profitsharing.service.ProfitSharingRecordService; import com.ycwl.basic.profitsharing.service.ProfitSharingRecordService;
import com.ycwl.basic.repository.ScenicRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -29,6 +30,8 @@ public class ProfitSharingRecordServiceImpl implements ProfitSharingRecordServic
private ProfitSharingRecordMapper profitSharingRecordMapper; private ProfitSharingRecordMapper profitSharingRecordMapper;
@Autowired @Autowired
private ProfitSharingRepository profitSharingRepository; private ProfitSharingRepository profitSharingRepository;
@Autowired
private ScenicRepository scenicRepository;
@Override @Override
@@ -42,7 +45,19 @@ public class ProfitSharingRecordServiceImpl implements ProfitSharingRecordServic
return respVo; return respVo;
} }
List<ProfitSharingRecordRespVO> recordList = profitSharingRecordMapper.listByOrderIds(list.stream().map(ProfitSharingRecordGroupVO::getOrderId).collect(Collectors.toList())); List<ProfitSharingRecordRespVO> recordList = profitSharingRecordMapper.listByOrderIds(list.stream().map(ProfitSharingRecordGroupVO::getOrderId).collect(Collectors.toList()));
List<Long> scenicList = recordList.stream().map(ProfitSharingRecordRespVO::getScenicId).distinct().collect(Collectors.toList());
// 批量获取景区名称
List<Long> scenicIds = recordList.stream().map(ProfitSharingRecordRespVO::getScenicId).distinct().collect(Collectors.toList());
Map<Long, String> scenicNames = scenicRepository.batchGetScenicNames(scenicIds);
// 设置景区名称
recordList.forEach(item -> {
if (item.getScenicId() != null) {
item.setScenicName(scenicNames.get(item.getScenicId()));
}
});
List<Long> scenicList = scenicIds;
List<ProfitSharingConfig> scenicConfig = scenicList.stream() List<ProfitSharingConfig> scenicConfig = scenicList.stream()
.map(scenicId -> profitSharingRepository.getScenicConfig(scenicId)) .map(scenicId -> profitSharingRepository.getScenicConfig(scenicId))
.filter(item -> !Objects.isNull(item) && !Objects.isNull(item.getUsers())) .filter(item -> !Objects.isNull(item) && !Objects.isNull(item.getUsers()))

View File

@@ -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.entity.BrokerEntity;
import com.ycwl.basic.model.pc.broker.req.BrokerReqQuery; import com.ycwl.basic.model.pc.broker.req.BrokerReqQuery;
import com.ycwl.basic.model.pc.broker.resp.BrokerRespVO; import com.ycwl.basic.model.pc.broker.resp.BrokerRespVO;
import com.ycwl.basic.repository.ScenicRepository;
import com.ycwl.basic.service.pc.BrokerService; import com.ycwl.basic.service.pc.BrokerService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* @Author:longbinbin * @Author:longbinbin
@@ -21,18 +25,53 @@ public class BrokerServiceImpl implements BrokerService {
@Autowired @Autowired
private BrokerMapper brokerMapper; private BrokerMapper brokerMapper;
@Autowired
private ScenicRepository scenicRepository;
@Override @Override
public PageInfo<BrokerRespVO> pageQuery(BrokerReqQuery brokerReqQuery) { public PageInfo<BrokerRespVO> pageQuery(BrokerReqQuery brokerReqQuery) {
PageHelper.startPage(brokerReqQuery.getPageNum(),brokerReqQuery.getPageSize()); PageHelper.startPage(brokerReqQuery.getPageNum(),brokerReqQuery.getPageSize());
List<BrokerRespVO> list = brokerMapper.list(brokerReqQuery); List<BrokerRespVO> list = brokerMapper.list(brokerReqQuery);
// 批量获取景区名称
List<Long> scenicIds = list.stream()
.map(BrokerRespVO::getScenicId)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
Map<Long, String> scenicNames = scenicRepository.batchGetScenicNames(scenicIds);
// 设置景区名称
list.forEach(item -> {
if (item.getScenicId() != null) {
item.setScenicName(scenicNames.get(item.getScenicId()));
}
});
PageInfo<BrokerRespVO> pageInfo = new PageInfo(list); PageInfo<BrokerRespVO> pageInfo = new PageInfo(list);
return pageInfo; return pageInfo;
} }
@Override @Override
public List<BrokerRespVO> list(BrokerReqQuery brokerReqQuery) { public List<BrokerRespVO> list(BrokerReqQuery brokerReqQuery) {
return brokerMapper.list(brokerReqQuery); List<BrokerRespVO> list = brokerMapper.list(brokerReqQuery);
// 批量获取景区名称
List<Long> scenicIds = list.stream()
.map(BrokerRespVO::getScenicId)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
Map<Long, String> scenicNames = scenicRepository.batchGetScenicNames(scenicIds);
// 设置景区名称
list.forEach(item -> {
if (item.getScenicId() != null) {
item.setScenicName(scenicNames.get(item.getScenicId()));
}
});
return list;
} }
@Override @Override

View File

@@ -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.entity.CouponEntity;
import com.ycwl.basic.model.pc.coupon.req.CouponQueryReq; import com.ycwl.basic.model.pc.coupon.req.CouponQueryReq;
import com.ycwl.basic.model.pc.coupon.resp.CouponRespVO; import com.ycwl.basic.model.pc.coupon.resp.CouponRespVO;
import com.ycwl.basic.repository.ScenicRepository;
import com.ycwl.basic.service.pc.CouponService; import com.ycwl.basic.service.pc.CouponService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
@Service @Service
public class CouponServiceImpl implements CouponService { public class CouponServiceImpl implements CouponService {
@Autowired @Autowired
private CouponMapper couponMapper; private CouponMapper couponMapper;
@Autowired
private ScenicRepository scenicRepository;
@Override @Override
public Integer add(CouponEntity coupon) { public Integer add(CouponEntity coupon) {
@@ -38,6 +44,22 @@ public class CouponServiceImpl implements CouponService {
@Override @Override
public List<CouponRespVO> list(CouponQueryReq query) { public List<CouponRespVO> list(CouponQueryReq query) {
List<CouponRespVO> list = couponMapper.selectByQuery(query); List<CouponRespVO> list = couponMapper.selectByQuery(query);
// 批量获取景区名称
List<Long> scenicIds = list.stream()
.map(CouponRespVO::getScenicId)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
Map<Long, String> scenicNames = scenicRepository.batchGetScenicNames(scenicIds);
// 设置景区名称
list.forEach(item -> {
if (item.getScenicId() != null) {
item.setScenicName(scenicNames.get(item.getScenicId()));
}
});
return list; return list;
} }

View File

@@ -28,6 +28,9 @@ import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.util.Collections; import java.util.Collections;
import java.util.List; 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; import static com.ycwl.basic.constant.StorageConstant.PHOTO_PATH;
@@ -52,14 +55,31 @@ public class SourceServiceImpl implements SourceService {
public ApiResponse<PageInfo<SourceRespVO>> pageQuery(SourceReqQuery sourceReqQuery) { public ApiResponse<PageInfo<SourceRespVO>> pageQuery(SourceReqQuery sourceReqQuery) {
PageHelper.startPage(sourceReqQuery.getPageNum(), sourceReqQuery.getPageSize()); PageHelper.startPage(sourceReqQuery.getPageNum(), sourceReqQuery.getPageSize());
List<SourceRespVO> list = sourceMapper.list(sourceReqQuery); List<SourceRespVO> list = sourceMapper.list(sourceReqQuery);
// 批量获取景区名称
List<Long> scenicIds = list.stream()
.map(SourceRespVO::getScenicId)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
Map<Long, String> scenicNames = scenicRepository.batchGetScenicNames(scenicIds);
// 批量获取设备名称
List<Long> deviceIds = list.stream()
.map(SourceRespVO::getDeviceId)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
Map<Long, String> deviceNames = deviceRepository.batchGetDeviceNames(deviceIds);
list.forEach(sourceRespVO -> { list.forEach(sourceRespVO -> {
ScenicEntity scenic = scenicRepository.getScenic(sourceRespVO.getScenicId()); // 设置景区名称
if (scenic != null) { if (sourceRespVO.getScenicId() != null) {
sourceRespVO.setScenicName(scenic.getName()); sourceRespVO.setScenicName(scenicNames.get(sourceRespVO.getScenicId()));
} }
DeviceEntity device = deviceRepository.getDevice(sourceRespVO.getDeviceId()); // 设置设备名称
if (device != null) { if (sourceRespVO.getDeviceId() != null) {
sourceRespVO.setDeviceName(device.getName()); sourceRespVO.setDeviceName(deviceNames.get(sourceRespVO.getDeviceId()));
} }
if (sourceRespVO.getVideoUrl() != null) { if (sourceRespVO.getVideoUrl() != null) {
try { try {
@@ -82,7 +102,32 @@ public class SourceServiceImpl implements SourceService {
@Override @Override
public ApiResponse<List<SourceRespVO>> list(SourceReqQuery sourceReqQuery) { public ApiResponse<List<SourceRespVO>> list(SourceReqQuery sourceReqQuery) {
List<SourceRespVO> list = sourceMapper.list(sourceReqQuery); List<SourceRespVO> list = sourceMapper.list(sourceReqQuery);
// 批量获取景区名称
List<Long> scenicIds = list.stream()
.map(SourceRespVO::getScenicId)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
Map<Long, String> scenicNames = scenicRepository.batchGetScenicNames(scenicIds);
// 批量获取设备名称
List<Long> deviceIds = list.stream()
.map(SourceRespVO::getDeviceId)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
Map<Long, String> deviceNames = deviceRepository.batchGetDeviceNames(deviceIds);
list.forEach(sourceRespVO -> { 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) { if (sourceRespVO.getVideoUrl() != null) {
try { try {
URL url = new URL(sourceRespVO.getVideoUrl()); URL url = new URL(sourceRespVO.getVideoUrl());

View File

@@ -11,6 +11,7 @@ import com.ycwl.basic.pricing.enums.ProductType;
import com.ycwl.basic.pricing.service.IPricingManagementService; import com.ycwl.basic.pricing.service.IPricingManagementService;
import com.ycwl.basic.service.pc.TemplateService; import com.ycwl.basic.service.pc.TemplateService;
import com.ycwl.basic.repository.TemplateRepository; import com.ycwl.basic.repository.TemplateRepository;
import com.ycwl.basic.repository.ScenicRepository;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.SnowFlakeUtil; import com.ycwl.basic.utils.SnowFlakeUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -18,8 +19,11 @@ import org.springframework.stereotype.Service;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
/** /**
* @Author:longbinbin * @Author:longbinbin
@@ -33,19 +37,54 @@ public class TemplateServiceImpl implements TemplateService {
@Autowired @Autowired
private TemplateRepository templateRepository; private TemplateRepository templateRepository;
@Autowired @Autowired
private ScenicRepository scenicRepository;
@Autowired
private IPricingManagementService pricingManagementService; private IPricingManagementService pricingManagementService;
@Override @Override
public ApiResponse<PageInfo<TemplateRespVO>> pageQuery(TemplateReqQuery templateReqQuery) { public ApiResponse<PageInfo<TemplateRespVO>> pageQuery(TemplateReqQuery templateReqQuery) {
PageHelper.startPage(templateReqQuery.getPageNum(), templateReqQuery.getPageSize()); PageHelper.startPage(templateReqQuery.getPageNum(), templateReqQuery.getPageSize());
List<TemplateRespVO> list = templateMapper.list(templateReqQuery); List<TemplateRespVO> list = templateMapper.list(templateReqQuery);
// 批量获取景区名称
List<Long> scenicIds = list.stream()
.map(TemplateRespVO::getScenicId)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
Map<Long, String> scenicNames = scenicRepository.batchGetScenicNames(scenicIds);
// 设置景区名称
list.forEach(item -> {
if (item.getScenicId() != null) {
item.setScenicName(scenicNames.get(item.getScenicId()));
}
});
PageInfo<TemplateRespVO> pageInfo = new PageInfo<>(list); PageInfo<TemplateRespVO> pageInfo = new PageInfo<>(list);
return ApiResponse.success(pageInfo); return ApiResponse.success(pageInfo);
} }
@Override @Override
public ApiResponse<List<TemplateRespVO>> list(TemplateReqQuery templateReqQuery) { public ApiResponse<List<TemplateRespVO>> list(TemplateReqQuery templateReqQuery) {
return ApiResponse.success(templateMapper.list(templateReqQuery)); List<TemplateRespVO> list = templateMapper.list(templateReqQuery);
// 批量获取景区名称
List<Long> scenicIds = list.stream()
.map(TemplateRespVO::getScenicId)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
Map<Long, String> scenicNames = scenicRepository.batchGetScenicNames(scenicIds);
// 设置景区名称
list.forEach(item -> {
if (item.getScenicId() != null) {
item.setScenicName(scenicNames.get(item.getScenicId()));
}
});
return ApiResponse.success(list);
} }
@Override @Override