Merge branch 'rem_scenic_device'

This commit is contained in:
2025-09-09 01:37:52 +08:00
23 changed files with 546 additions and 74 deletions

View File

@@ -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<PageInfo<ProfitSharingConfigVO>> pageQuery(@RequestBody ProfitSharingConfigReqQuery req) {
PageHelper.startPage(req.getPageNum(), req.getPageSize());
List<ProfitSharingConfigVO> list = configMapper.list(req);
list.forEach(item -> {
try {
ScenicV2DTO scenicBasic = scenicRepository.getScenicBasic(item.getScenicId());
item.setScenicName(scenicBasic.getName());
} catch (Exception e) {
item.setScenicName("");
}
});
PageInfo<ProfitSharingConfigVO> pageInfo = new PageInfo<>(list);
return ApiResponse.success(pageInfo);
}

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.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<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()
.map(scenicId -> profitSharingRepository.getScenicConfig(scenicId))
.filter(item -> !Objects.isNull(item) && !Objects.isNull(item.getUsers()))

View File

@@ -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<Long, DeviceEntity> batchGetDevices(List<Long> deviceIds) {
if (deviceIds == null || deviceIds.isEmpty()) {
return new HashMap<>();
}
Map<Long, DeviceEntity> 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<String, DeviceEntity> batchGetDevicesByNo(List<String> deviceNos) {
if (deviceNos == null || deviceNos.isEmpty()) {
return new HashMap<>();
}
Map<String, DeviceEntity> 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<Long, String> batchGetDeviceNames(List<Long> deviceIds) {
if (deviceIds == null || deviceIds.isEmpty()) {
return new HashMap<>();
}
Map<Long, String> 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;
}
}

View File

@@ -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<Long, String> batchGetScenicNames(List<Long> scenicIds) {
if (scenicIds == null || scenicIds.isEmpty()) {
return new HashMap<>();
}
Map<Long, String> 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<Long, ScenicEntity> batchGetScenics(List<Long> scenicIds) {
if (scenicIds == null || scenicIds.isEmpty()) {
return new HashMap<>();
}
Map<Long, ScenicEntity> 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<Long, ScenicV2DTO> batchGetScenicBasics(List<Long> scenicIds) {
if (scenicIds == null || scenicIds.isEmpty()) {
return new HashMap<>();
}
Map<Long, ScenicV2DTO> 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;
}
}

View File

@@ -306,6 +306,8 @@ public class AppScenicServiceImpl implements AppScenicService {
}
List<DeviceRespVO> 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)) {

View File

@@ -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) {

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.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<BrokerRespVO> pageQuery(BrokerReqQuery brokerReqQuery) {
PageHelper.startPage(brokerReqQuery.getPageNum(),brokerReqQuery.getPageSize());
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);
return pageInfo;
}
@Override
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

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.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<CouponRespVO> list(CouponQueryReq 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;
}

View File

@@ -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<PageInfo<OrderRespVO>> pageQuery(OrderReqQuery query) {
PageHelper.startPage(query.getPageNum(), query.getPageSize());
List<OrderRespVO> list = orderMapper.list(query);
// 批量获取景区名称
List<Long> scenicIds = list.stream()
.map(OrderRespVO::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()));
}
if (Integer.valueOf(-1).equals(item.getType())) {
item.setGoodsName("一口价");
item.setOrderType("一口价");
@@ -181,8 +198,21 @@ public class OrderServiceImpl implements OrderService {
public ApiResponse<PageInfo<OrderRespVO>> pageQueryDetail(OrderReqQuery query) {
PageHelper.startPage(query.getPageNum(), query.getPageSize());
List<OrderRespVO> list = orderMapper.listDetail(query);
// 批量获取景区名称
List<Long> scenicIds = list.stream()
.map(OrderRespVO::getScenicId)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
Map<Long, String> scenicNames = scenicRepository.batchGetScenicNames(scenicIds);
for (OrderRespVO item : list) {
item.setPrice(item.getPayPrice());
// 设置景区名称
if (item.getScenicId() != null) {
item.setScenicName(scenicNames.get(item.getScenicId()));
}
}
PageInfo<OrderRespVO> pageInfo = new PageInfo<>(list);
return ApiResponse.success(pageInfo);
@@ -191,8 +221,21 @@ public class OrderServiceImpl implements OrderService {
@Override
public ApiResponse<List<OrderRespVO>> list(OrderReqQuery query) {
List<OrderRespVO> list = orderMapper.list(query);
// 批量获取景区名称
List<Long> scenicIds = list.stream()
.map(OrderRespVO::getScenicId)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
Map<Long, String> 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<Long> scenicIds = list.stream()
.map(OrderAppRespVO::getScenicId)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
Map<Long, String> scenicNames = scenicRepository.batchGetScenicNames(scenicIds);
// 设置景区名称
list.forEach(order -> {
if (order.getScenicId() != null) {
order.setScenicName(scenicNames.get(order.getScenicId()));
}
});
PageInfo<OrderAppRespVO> pageInfo = new PageInfo<>(list);
return ApiResponse.success(pageInfo);
}
@@ -433,6 +504,18 @@ public class OrderServiceImpl implements OrderService {
@Override
public ApiResponse<OrderAppRespVO> 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<PageInfo<OrderRespVO>> refundPageQuery(OrderReqQuery query) {
PageHelper.startPage(query.getPageNum(), query.getPageSize());
List<OrderRespVO> list = orderMapper.refundList(query);
// 批量获取景区名称
List<Long> scenicIds = list.stream()
.map(OrderRespVO::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()));
}
if (Integer.valueOf(-1).equals(item.getType())) {
item.setGoodsName("一口价");
item.setOrderType("一口价");

View File

@@ -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<PageInfo<SourceRespVO>> pageQuery(SourceReqQuery sourceReqQuery) {
PageHelper.startPage(sourceReqQuery.getPageNum(), sourceReqQuery.getPageSize());
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 -> {
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<SourceRespVO>> list(SourceReqQuery 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 -> {
// 设置景区名称
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);
}

View File

@@ -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<PageInfo<TemplateRespVO>> pageQuery(TemplateReqQuery templateReqQuery) {
PageHelper.startPage(templateReqQuery.getPageNum(), templateReqQuery.getPageSize());
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);
return ApiResponse.success(pageInfo);
}
@Override
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

View File

@@ -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<PageInfo<VideoRespVO>> pageQuery(VideoReqQuery videoReqQuery) {
PageHelper.startPage(videoReqQuery.getPageNum(), videoReqQuery.getPageSize());
List<VideoRespVO> list = videoMapper.list(videoReqQuery);
// 批量获取景区名称
List<Long> scenicIds = list.stream()
.map(VideoRespVO::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<VideoRespVO> pageInfo = new PageInfo<>(list);
return ApiResponse.success(pageInfo);
}
@Override
public ApiResponse<List<VideoRespVO>> list(VideoReqQuery videoReqQuery) {
return ApiResponse.success(videoMapper.list(videoReqQuery));
List<VideoRespVO> list = videoMapper.list(videoReqQuery);
// 批量获取景区名称
List<Long> scenicIds = list.stream()
.map(VideoRespVO::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