package com.xiaopeng.map.service; import java.io.InputStream; import java.util.List; /** * ROBOTAXI OSS 服务,用于上传 ODD 图层文件到阿里云 OSS。 * 路径格式:ROBOTAXI_ODD_layer/{区域编码}/{环境}/{车辆uuid}/{fileName} */ public interface RobotaxiOssService { /** * 上传 ODD 图层文件到 OSS * 路径:{pathPrefix}/{areaCode}/{env}/{vehicleUuid}/{fileName} * * @param data 文件内容 * @param fileName 文件名(如 map_area_data.bin、map_area_rtree.fbs) * @param areaCode 区域编码(动态) * @param vehicleUuid 车辆 UUID(动态) * @return 上传成功后的 objectKey,失败时抛异常 */ String uploadOddLayerFile(byte[] data, String fileName, String areaCode, String vehicleUuid); /** * 上传 ODD 图层文件到 OSS(InputStream 重载) * * @param inputStream 文件输入流 * @param contentLength 文件大小 * @param fileName 文件名 * @param areaCode 区域编码 * @param vehicleUuid 车辆 UUID * @return 上传成功后的 objectKey,失败时抛异常 */ String uploadOddLayerFile(InputStream inputStream, long contentLength, String fileName, String areaCode, String vehicleUuid); /** * 根据 OSS objectKey 删除单个文件 * * @param objectKey OSS 对象键,如 ROBOTAXI_ODD_layer/440100/test/vehicle-001/map_area_rtree.fbs * @return 是否删除成功 */ boolean deleteByObjectKey(String objectKey); /** * 根据 OSS objectKey 批量删除文件 * * @param objectKeys OSS 对象键列表 * @return 成功删除的对象键列表 */ List deleteByObjectKeys(List objectKeys); /** * 按前缀删除 ODD 路径下所有文件 * 路径前缀:{pathPrefix}/{areaCode}/{env}/{vehicleUuid}/ * * @param areaCode 区域编码 * @param vehicleUuid 车辆 UUID * @return 成功删除的 objectKey 列表 */ List deleteOddLayerFilesByPrefix(String areaCode, String vehicleUuid); /** * 根据 objectKey 生成文件下载临时链接(Presigned URL) * * @param objectKey OSS 对象键 * @param expireSeconds 有效期(秒) * @return 带签名的临时下载 URL */ String generatePresignedDownloadUrl(String objectKey, int expireSeconds); }