liujie
2026-06-09 c96fbe6b0aeb413a17c429133ee6d81d138144b9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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}/{env}/{vehicleUuid}/{fileName}
     *
     * @param data        文件内容
     * @param fileName    文件名(如 map_area_data.bin、map_area_rtree.fbs)
     * @param vehicleUuid 车辆 UUID(动态)
     * @return 上传成功后的 objectKey,失败时抛异常
     */
    String uploadOddLayerFile(byte[] data, String fileName, String vehicleUuid);
 
    /**
     * 上传 ODD 图层文件到 OSS(InputStream 重载)
     *
     * @param inputStream   文件输入流
     * @param contentLength 文件大小
     * @param fileName      文件名
     * @param vehicleUuid   车辆 UUID
     * @return 上传成功后的 objectKey,失败时抛异常
     */
    String uploadOddLayerFile(InputStream inputStream, long contentLength, String fileName,
                             String vehicleUuid);
 
    /**
     * 根据 OSS objectKey 删除单个文件
     *
     * @param objectKey OSS 对象键,如 ROBOTAXI_ODD_layer/test/vehicle-001/map_area_rtree.fbs
     * @return 是否删除成功
     */
    boolean deleteByObjectKey(String objectKey);
 
    /**
     * 根据 OSS objectKey 批量删除文件
     *
     * @param objectKeys OSS 对象键列表
     * @return 成功删除的对象键列表
     */
    List<String> deleteByObjectKeys(List<String> objectKeys);
 
    /**
     * 按前缀删除 ODD 路径下所有文件
     * 路径前缀:{pathPrefix}/{env}/{vehicleUuid}/
     *
     * @param vehicleUuid 车辆 UUID
     * @return 成功删除的 objectKey 列表
     */
    List<String> deleteOddLayerFilesByPrefix(String vehicleUuid);
 
    /**
     * 根据 objectKey 生成文件下载临时链接(Presigned URL)
     *
     * @param objectKey     OSS 对象键
     * @param expireSeconds 有效期(秒)
     * @return 带签名的临时下载 URL
     */
    String generatePresignedDownloadUrl(String objectKey, int expireSeconds);
 
}