diff --git a/src/main/java/com/ycwl/basic/profitsharing/controller/ProfitSharingConfigController.java b/src/main/java/com/ycwl/basic/profitsharing/controller/ProfitSharingConfigController.java index bc0bcce..7652a00 100644 --- a/src/main/java/com/ycwl/basic/profitsharing/controller/ProfitSharingConfigController.java +++ b/src/main/java/com/ycwl/basic/profitsharing/controller/ProfitSharingConfigController.java @@ -2,12 +2,14 @@ package com.ycwl.basic.profitsharing.controller; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.ycwl.basic.integration.scenic.dto.scenic.ScenicV2DTO; import com.ycwl.basic.profitsharing.dto.ProfitSharingConfigReqQuery; import com.ycwl.basic.profitsharing.dto.ProfitSharingConfigVO; import com.ycwl.basic.profitsharing.entity.ProfitSharingConfig; import com.ycwl.basic.profitsharing.entity.ProfitSharingUser; import com.ycwl.basic.profitsharing.mapper.ProfitSharingConfigMapper; import com.ycwl.basic.profitsharing.mapper.ProfitSharingUserMapper; +import com.ycwl.basic.repository.ScenicRepository; import com.ycwl.basic.utils.ApiResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -24,11 +26,22 @@ public class ProfitSharingConfigController { private ProfitSharingConfigMapper configMapper; @Autowired private ProfitSharingUserMapper userMapper; + @Autowired + private ScenicRepository scenicRepository; + // 新增: 分页查询接口 @PostMapping("/page") public ApiResponse> pageQuery(@RequestBody ProfitSharingConfigReqQuery req) { PageHelper.startPage(req.getPageNum(), req.getPageSize()); List list = configMapper.list(req); + list.forEach(item -> { + try { + ScenicV2DTO scenicBasic = scenicRepository.getScenicBasic(item.getScenicId()); + item.setScenicName(scenicBasic.getName()); + } catch (Exception e) { + item.setScenicName(""); + } + }); PageInfo pageInfo = new PageInfo<>(list); return ApiResponse.success(pageInfo); } 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/repository/DeviceRepository.java b/src/main/java/com/ycwl/basic/repository/DeviceRepository.java index 131f803..8b6f3b5 100644 --- a/src/main/java/com/ycwl/basic/repository/DeviceRepository.java +++ b/src/main/java/com/ycwl/basic/repository/DeviceRepository.java @@ -17,6 +17,8 @@ import lombok.extern.slf4j.Slf4j; import java.time.ZoneId; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.HashMap; import java.util.concurrent.TimeUnit; @Slf4j @@ -165,4 +167,77 @@ public class DeviceRepository { } return List.of(); } + + /** + * 批量获取设备信息 + * @param deviceIds 设备ID列表 + * @return 设备ID到设备实体的映射 + */ + public Map batchGetDevices(List deviceIds) { + if (deviceIds == null || deviceIds.isEmpty()) { + return new HashMap<>(); + } + + Map result = new HashMap<>(); + for (Long deviceId : deviceIds) { + try { + DeviceEntity device = getDevice(deviceId); + if (device != null) { + result.put(deviceId, device); + } + } catch (Exception e) { + log.warn("获取设备信息失败: {}, 错误: {}", deviceId, e.getMessage()); + } + } + return result; + } + + /** + * 批量根据设备编号获取设备信息 + * @param deviceNos 设备编号列表 + * @return 设备编号到设备实体的映射 + */ + public Map batchGetDevicesByNo(List deviceNos) { + if (deviceNos == null || deviceNos.isEmpty()) { + return new HashMap<>(); + } + + Map result = new HashMap<>(); + for (String deviceNo : deviceNos) { + try { + DeviceEntity device = getDeviceByDeviceNo(deviceNo); + if (device != null) { + result.put(deviceNo, device); + } + } catch (Exception e) { + log.warn("根据设备编号获取设备信息失败: {}, 错误: {}", deviceNo, e.getMessage()); + } + } + return result; + } + + /** + * 批量获取设备名称 + * @param deviceIds 设备ID列表 + * @return 设备ID到设备名称的映射 + */ + public Map batchGetDeviceNames(List deviceIds) { + if (deviceIds == null || deviceIds.isEmpty()) { + return new HashMap<>(); + } + + Map result = new HashMap<>(); + for (Long deviceId : deviceIds) { + try { + DeviceEntity device = getDevice(deviceId); + if (device != null) { + result.put(deviceId, device.getName()); + } + } catch (Exception e) { + log.warn("获取设备名称失败: {}, 错误: {}", deviceId, e.getMessage()); + result.put(deviceId, "未知设备"); + } + } + return result; + } } diff --git a/src/main/java/com/ycwl/basic/repository/ScenicRepository.java b/src/main/java/com/ycwl/basic/repository/ScenicRepository.java index 4125a96..d9b8f9c 100644 --- a/src/main/java/com/ycwl/basic/repository/ScenicRepository.java +++ b/src/main/java/com/ycwl/basic/repository/ScenicRepository.java @@ -25,6 +25,9 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import java.util.List; +import java.util.Map; +import java.util.HashMap; +import java.util.stream.Collectors; @Component public class ScenicRepository { @@ -359,4 +362,79 @@ public class ScenicRepository { return null; } + /** + * 批量获取景区名称 + * @param scenicIds 景区ID列表 + * @return 景区ID到景区名称的映射 + */ + public Map batchGetScenicNames(List scenicIds) { + if (scenicIds == null || scenicIds.isEmpty()) { + return new HashMap<>(); + } + + Map result = new HashMap<>(); + for (Long scenicId : scenicIds) { + try { + ScenicV2DTO scenic = getScenicBasic(scenicId); + if (scenic != null) { + result.put(scenicId, scenic.getName()); + } + } catch (Exception e) { + // 获取失败时使用默认值 + result.put(scenicId, "未知景区"); + } + } + return result; + } + + /** + * 批量获取景区完整信息 + * @param scenicIds 景区ID列表 + * @return 景区ID到景区实体的映射 + */ + public Map batchGetScenics(List scenicIds) { + if (scenicIds == null || scenicIds.isEmpty()) { + return new HashMap<>(); + } + + Map result = new HashMap<>(); + for (Long scenicId : scenicIds) { + try { + ScenicEntity scenic = getScenic(scenicId); + if (scenic != null) { + result.put(scenicId, scenic); + } + } catch (Exception e) { + // 获取失败时记录日志但不中断处理 + System.err.println("获取景区信息失败: " + scenicId + ", 错误: " + e.getMessage()); + } + } + return result; + } + + /** + * 批量获取景区基础信息DTO + * @param scenicIds 景区ID列表 + * @return 景区ID到景区DTO的映射 + */ + public Map batchGetScenicBasics(List scenicIds) { + if (scenicIds == null || scenicIds.isEmpty()) { + return new HashMap<>(); + } + + Map result = new HashMap<>(); + for (Long scenicId : scenicIds) { + try { + ScenicV2DTO scenic = getScenicBasic(scenicId); + if (scenic != null) { + result.put(scenicId, scenic); + } + } catch (Exception e) { + // 获取失败时记录日志但不中断处理 + System.err.println("获取景区基础信息失败: " + scenicId + ", 错误: " + e.getMessage()); + } + } + return result; + } + } diff --git a/src/main/java/com/ycwl/basic/service/mobile/impl/AppScenicServiceImpl.java b/src/main/java/com/ycwl/basic/service/mobile/impl/AppScenicServiceImpl.java index c608723..d85165b 100644 --- a/src/main/java/com/ycwl/basic/service/mobile/impl/AppScenicServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/mobile/impl/AppScenicServiceImpl.java @@ -306,6 +306,8 @@ public class AppScenicServiceImpl implements AppScenicService { } List extraDeviceList = extraDeviceMapper.listExtraDeviceByScenicId(scenicId); for (DeviceRespVO deviceRespVO : extraDeviceList) { + ScenicV2DTO scenicBasic = scenicRepository.getScenicBasic(deviceRespVO.getScenicId()); + deviceRespVO.setScenicName(scenicBasic.getName()); if (redisTemplate.hasKey("ext_device:online:"+deviceRespVO.getNo())) { String onlineTs = redisTemplate.opsForValue().get("ext_device:online:"+deviceRespVO.getNo()); if (!StringUtils.isNumeric(onlineTs)) { diff --git a/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java b/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java index 9cc64ad..974616c 100644 --- a/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java @@ -3,6 +3,8 @@ package com.ycwl.basic.service.mobile.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.extra.qrcode.QrCodeUtil; import cn.hutool.http.HttpUtil; +import com.ycwl.basic.integration.scenic.dto.scenic.ScenicV2DTO; +import com.ycwl.basic.model.pc.scenic.entity.ScenicEntity; import com.ycwl.basic.utils.JacksonUtil; import com.ycwl.basic.biz.CouponBiz; import com.ycwl.basic.biz.OrderBiz; @@ -117,7 +119,12 @@ public class GoodsServiceImpl implements GoodsService { GoodsPageVO goodsPageVO = new GoodsPageVO(); goodsPageVO.setGoodsName(videoRespVO.getTemplateName()); goodsPageVO.setScenicId(videoRespVO.getScenicId()); - goodsPageVO.setScenicName(videoRespVO.getScenicName()); + try { + ScenicV2DTO scenic = scenicRepository.getScenicBasic(videoRespVO.getScenicId()); + goodsPageVO.setScenicName(scenic.getName()); + } catch (Exception e) { + goodsPageVO.setScenicName(""); + } goodsPageVO.setGoodsType(0); goodsPageVO.setFaceId(videoRespVO.getFaceId()); goodsPageVO.setGoodsId(videoRespVO.getId()); @@ -206,7 +213,12 @@ public class GoodsServiceImpl implements GoodsService { goodsDetailVO.setGoodsName(goodsNamePrefix + i + " " + shootingTime); } goodsDetailVO.setScenicId(sourceRespVO.getScenicId()); - goodsDetailVO.setScenicName(sourceRespVO.getScenicName()); + try { + ScenicV2DTO scenic = scenicRepository.getScenicBasic(sourceRespVO.getScenicId()); + goodsDetailVO.setScenicName(scenic.getName()); + } catch (Exception e) { + goodsDetailVO.setScenicName(""); + } goodsDetailVO.setGoodsType(sourceType); goodsDetailVO.setFaceId(face.getId()); goodsDetailVO.setGoodsId(sourceRespVO.getId()); @@ -245,7 +257,12 @@ public class GoodsServiceImpl implements GoodsService { } goodsDetailVO.setGoodsName(videoRespVO.getTemplateName()); goodsDetailVO.setScenicId(videoRespVO.getScenicId()); - goodsDetailVO.setScenicName(videoRespVO.getScenicName()); + try { + ScenicV2DTO scenic = scenicRepository.getScenicBasic(videoRespVO.getScenicId()); + goodsDetailVO.setScenicName(scenic.getName()); + } catch (Exception e) { + goodsDetailVO.setScenicName(""); + } goodsDetailVO.setGoodsType(0); goodsDetailVO.setGoodsId(videoRespVO.getId()); goodsDetailVO.setVideoUrl(videoRespVO.getVideoUrl()); @@ -483,7 +500,12 @@ public class GoodsServiceImpl implements GoodsService { GoodsDetailVO goodsDetailVO = new GoodsDetailVO(); goodsDetailVO.setGoodsName("原片"); goodsDetailVO.setScenicId(sourceRespVO.getScenicId()); - goodsDetailVO.setScenicName(sourceRespVO.getScenicName()); + try { + ScenicV2DTO scenic = scenicRepository.getScenicBasic(sourceRespVO.getScenicId()); + goodsDetailVO.setScenicName(scenic.getName()); + } catch (Exception e) { + goodsDetailVO.setScenicName(""); + } goodsDetailVO.setGoodsType(sourceRespVO.getType()); goodsDetailVO.setGoodsId(sourceRespVO.getId()); if (sourceRespVO.getVideoUrl() != null) { 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/OrderServiceImpl.java b/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java index 606450f..7f4c04a 100644 --- a/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java @@ -53,6 +53,7 @@ import com.ycwl.basic.pay.adapter.IPayAdapter; import com.ycwl.basic.pay.entity.PayResponse; import com.ycwl.basic.repository.FaceRepository; import com.ycwl.basic.repository.PriceRepository; +import com.ycwl.basic.repository.ScenicRepository; import com.ycwl.basic.repository.TemplateRepository; import com.ycwl.basic.repository.VideoRepository; import com.ycwl.basic.repository.VideoTaskRepository; @@ -129,6 +130,8 @@ public class OrderServiceImpl implements OrderService { @Autowired private ScenicService scenicService; @Autowired + private ScenicRepository scenicRepository; + @Autowired private VideoMapper videoMapper; @Autowired private IVoucherService iVoucherService; @@ -139,7 +142,21 @@ public class OrderServiceImpl implements OrderService { public ApiResponse> pageQuery(OrderReqQuery query) { PageHelper.startPage(query.getPageNum(), query.getPageSize()); List list = orderMapper.list(query); + + // 批量获取景区名称 + List scenicIds = list.stream() + .map(OrderRespVO::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())); + } + if (Integer.valueOf(-1).equals(item.getType())) { item.setGoodsName("一口价"); item.setOrderType("一口价"); @@ -181,8 +198,21 @@ public class OrderServiceImpl implements OrderService { public ApiResponse> pageQueryDetail(OrderReqQuery query) { PageHelper.startPage(query.getPageNum(), query.getPageSize()); List list = orderMapper.listDetail(query); + + // 批量获取景区名称 + List scenicIds = list.stream() + .map(OrderRespVO::getScenicId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + Map scenicNames = scenicRepository.batchGetScenicNames(scenicIds); + for (OrderRespVO item : list) { item.setPrice(item.getPayPrice()); + // 设置景区名称 + if (item.getScenicId() != null) { + item.setScenicName(scenicNames.get(item.getScenicId())); + } } PageInfo pageInfo = new PageInfo<>(list); return ApiResponse.success(pageInfo); @@ -191,8 +221,21 @@ public class OrderServiceImpl implements OrderService { @Override public ApiResponse> list(OrderReqQuery query) { List list = orderMapper.list(query); + + // 批量获取景区名称 + List scenicIds = list.stream() + .map(OrderRespVO::getScenicId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + Map scenicNames = scenicRepository.batchGetScenicNames(scenicIds); + for (OrderRespVO item : list) { item.setPrice(item.getPayPrice()); + // 设置景区名称 + if (item.getScenicId() != null) { + item.setScenicName(scenicNames.get(item.getScenicId())); + } } return ApiResponse.success(list); } @@ -307,6 +350,18 @@ public class OrderServiceImpl implements OrderService { } }); order.setGoodsList(goodsList); + + // 设置景区名称 + if (order.getScenicId() != null) { + try { + String scenicName = scenicRepository.batchGetScenicNames(List.of(order.getScenicId())) + .get(order.getScenicId()); + order.setScenicName(scenicName); + } catch (Exception e) { + log.warn("获取景区名称失败: {}", order.getScenicId(), e); + } + } + return ApiResponse.success(order); } @@ -426,6 +481,22 @@ public class OrderServiceImpl implements OrderService { } }); }); + + // 批量获取景区名称 + List scenicIds = list.stream() + .map(OrderAppRespVO::getScenicId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + Map scenicNames = scenicRepository.batchGetScenicNames(scenicIds); + + // 设置景区名称 + list.forEach(order -> { + if (order.getScenicId() != null) { + order.setScenicName(scenicNames.get(order.getScenicId())); + } + }); + PageInfo pageInfo = new PageInfo<>(list); return ApiResponse.success(pageInfo); } @@ -433,6 +504,18 @@ public class OrderServiceImpl implements OrderService { @Override public ApiResponse appDetail(Long id) { OrderAppRespVO orderAppRespVO = orderMapper.appDetail(id); + + // 设置景区名称 + if (orderAppRespVO != null && orderAppRespVO.getScenicId() != null) { + try { + String scenicName = scenicRepository.batchGetScenicNames(List.of(orderAppRespVO.getScenicId())) + .get(orderAppRespVO.getScenicId()); + orderAppRespVO.setScenicName(scenicName); + } catch (Exception e) { + log.warn("获取景区名称失败: {}", orderAppRespVO.getScenicId(), e); + } + } + return ApiResponse.success(orderAppRespVO); } @@ -473,7 +556,21 @@ public class OrderServiceImpl implements OrderService { public ApiResponse> refundPageQuery(OrderReqQuery query) { PageHelper.startPage(query.getPageNum(), query.getPageSize()); List list = orderMapper.refundList(query); + + // 批量获取景区名称 + List scenicIds = list.stream() + .map(OrderRespVO::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())); + } + if (Integer.valueOf(-1).equals(item.getType())) { item.setGoodsName("一口价"); item.setOrderType("一口价"); 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..d5adf26 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 @@ -3,6 +3,7 @@ package com.ycwl.basic.service.pc.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.ycwl.basic.exception.BaseException; +import com.ycwl.basic.integration.scenic.dto.scenic.ScenicV2DTO; import com.ycwl.basic.mapper.SourceMapper; import com.ycwl.basic.model.pc.device.entity.DeviceEntity; import com.ycwl.basic.model.pc.scenic.entity.ScenicEntity; @@ -28,6 +29,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 +56,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 +103,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()); @@ -116,6 +162,12 @@ public class SourceServiceImpl implements SourceService { sourceRespVO.setVideoUrl(sourceRespVO.getVideoUrl()); } } + try { + ScenicV2DTO scenicBasic = scenicRepository.getScenicBasic(sourceRespVO.getScenicId()); + sourceRespVO.setScenicName(scenicBasic.getName()); + } catch (Exception e) { + sourceRespVO.setScenicName(""); + } return ApiResponse.success(sourceRespVO); } 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 diff --git a/src/main/java/com/ycwl/basic/service/pc/impl/VideoServiceImpl.java b/src/main/java/com/ycwl/basic/service/pc/impl/VideoServiceImpl.java index 6d26229..78c6d65 100644 --- a/src/main/java/com/ycwl/basic/service/pc/impl/VideoServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/pc/impl/VideoServiceImpl.java @@ -5,12 +5,16 @@ import com.github.pagehelper.PageInfo; import com.ycwl.basic.mapper.VideoMapper; import com.ycwl.basic.model.pc.video.req.VideoReqQuery; import com.ycwl.basic.model.pc.video.resp.VideoRespVO; +import com.ycwl.basic.repository.ScenicRepository; import com.ycwl.basic.service.pc.VideoService; import com.ycwl.basic.utils.ApiResponse; 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 VideoServiceImpl implements VideoService { @Autowired private VideoMapper videoMapper; + @Autowired + private ScenicRepository scenicRepository; @Override public ApiResponse> pageQuery(VideoReqQuery videoReqQuery) { PageHelper.startPage(videoReqQuery.getPageNum(), videoReqQuery.getPageSize()); List list = videoMapper.list(videoReqQuery); + + // 批量获取景区名称 + List scenicIds = list.stream() + .map(VideoRespVO::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(VideoReqQuery videoReqQuery) { - return ApiResponse.success(videoMapper.list(videoReqQuery)); + List list = videoMapper.list(videoReqQuery); + + // 批量获取景区名称 + List scenicIds = list.stream() + .map(VideoRespVO::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 diff --git a/src/main/resources/mapper/BrokerMapper.xml b/src/main/resources/mapper/BrokerMapper.xml index c2a56f7..ce05c2d 100644 --- a/src/main/resources/mapper/BrokerMapper.xml +++ b/src/main/resources/mapper/BrokerMapper.xml @@ -42,7 +42,7 @@ (select min(r.create_time) from broker_record r where r.broker_id = b.id) as first_broker_date, (select max(r.create_time) from broker_record r where r.broker_id = b.id) as last_broker_date, b.create_at, b.update_at - from broker b left join scenic s on b.scenic_id = s.id + from broker b and b.scenic_id = #{scenicId} @@ -65,8 +65,8 @@ \ No newline at end of file diff --git a/src/main/resources/mapper/CouponMapper.xml b/src/main/resources/mapper/CouponMapper.xml index 46f2450..a08b155 100644 --- a/src/main/resources/mapper/CouponMapper.xml +++ b/src/main/resources/mapper/CouponMapper.xml @@ -10,13 +10,12 @@ select d.id, d.ident as no, d.scenic_id, d.name, d.status, s.name as scenic_name from extra_device d - left join scenic s on d.scenic_id = s.id + where d.scenic_id = #{scenicId} and d.status = 1 diff --git a/src/main/resources/mapper/OrderMapper.xml b/src/main/resources/mapper/OrderMapper.xml index 502b05d..c1a2a34 100644 --- a/src/main/resources/mapper/OrderMapper.xml +++ b/src/main/resources/mapper/OrderMapper.xml @@ -110,8 +110,7 @@ oi.order_id AS orderId, oi.goods_id, msd.source_id, - sc.id AS scenic_id, - sc.name AS scenic_name, + o.scenic_id AS scenic_id, CASE oi.goods_type WHEN '0' THEN mvd.cover_url WHEN '3' THEN mpd.url @@ -147,7 +146,6 @@ END AS imgUrl FROM order_item oi LEFT JOIN `order` o ON oi.order_id = o.id - LEFT JOIN scenic sc ON o.scenic_id = sc.id LEFT JOIN member_video_data mvd ON o.face_id = mvd.face_id AND oi.goods_id = mvd.video_id LEFT JOIN member_source_data msd ON o.face_id = msd.face_id AND oi.goods_id = msd.face_id AND msd.type = oi.goods_type LEFT JOIN member_photo_data mpd ON oi.goods_id = mpd.id AND mpd.type = oi.goods_type @@ -238,13 +236,12 @@ delete from `order` where id = #{id} - select p.*, s.name as scenic_name from price_config p - left join scenic s on s.id = p.scenic_id + select p.* from price_config p where p.id = #{id} diff --git a/src/main/resources/mapper/ProfitSharingConfigMapper.xml b/src/main/resources/mapper/ProfitSharingConfigMapper.xml index 0bf0333..86bd598 100644 --- a/src/main/resources/mapper/ProfitSharingConfigMapper.xml +++ b/src/main/resources/mapper/ProfitSharingConfigMapper.xml @@ -2,9 +2,9 @@ - SELECT r.*, s.name as scenic_name + SELECT r.* FROM profit_sharing_record r - LEFT JOIN scenic s ON s.id = r.scenic_id delete_time is null @@ -65,9 +64,8 @@ GROUP BY order_id @@ -163,7 +163,7 @@ select so.id, ms.face_id, ms.scenic_id, ms.type, so.url, ms.is_free, so.create_time, so.update_time,sc.`name` as scenicName, ms.is_buy from member_source ms left join source so on ms.source_id = so.id - left join scenic sc on sc.id = so.scenic_id + where ms.member_id = #{memberId} and so.id and ms.face_id = #{faceId} diff --git a/src/main/resources/mapper/TemplateMapper.xml b/src/main/resources/mapper/TemplateMapper.xml index fd0fa00..5d3e01f 100644 --- a/src/main/resources/mapper/TemplateMapper.xml +++ b/src/main/resources/mapper/TemplateMapper.xml @@ -77,8 +77,8 @@ delete from template_config where id = #{id} @@ -114,10 +114,10 @@ order by sort diff --git a/src/main/resources/mapper/VideoMapper.xml b/src/main/resources/mapper/VideoMapper.xml index ac8ca0e..d8eebaa 100644 --- a/src/main/resources/mapper/VideoMapper.xml +++ b/src/main/resources/mapper/VideoMapper.xml @@ -77,9 +77,8 @@ select v.id, v.scenic_id, template_id, task_id, worker_id, video_url, v.create_time, v.update_time, t.name templateName,t.price templatePrice, t.cover_url templateCoverUrl, t.slash_price slashPrice, - s.name scenicName, v.height, v.width, v.duration + v.height, v.width, v.duration from video v - left join scenic s on v.scenic_id = s.id left join template t on v.template_id = t.id where v.id = #{id} @@ -110,10 +108,9 @@