MrShi
11 小时以前 9eeb62c02a7b3c7b95c20678b6a9c74e7f12f943
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
package com.doumee.core.douyin.dto;
 
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
 
/**
 * 抖音生活服务接口(goodlife/v1 系列)通用响应外壳。
 * <p>所有抖音生活服务接口的响应都包在此结构下:业务数据在 {@link #data},错误信息在 {@link #extra}。
 * 判定接口是否成功统一看 {@link Extra#getErrorCode()} == 0。
 *
 * @author rk
 * @date 2026/06/22
 * @param <T> 具体接口的响应数据类型
 */
@Data
public class DouyinBaseResp<T> {
 
    /** 业务数据节点(泛型,由各接口的具体响应类型填充) */
    @JSONField(name = "data")
    private T data;
 
    /** 扩展信息节点(错误码 / 描述 / logid 等),用于判定成功与排查 */
    @JSONField(name = "extra")
    private Extra extra;
 
    /**
     * 扩展信息(error_code / description / logid 等)。
     * {@link #errorCode} 为 0 表示成功,非 0 时 {@link #description} 为错误描述。
     */
    @Data
    public static class Extra {
        /** 错误码,0 表示成功 */
        @JSONField(name = "error_code")
        private Integer errorCode;
 
        /** 错误/成功描述文案 */
        @JSONField(name = "description")
        private String description;
 
        /** 子错误码(部分错误会有更细分的子码) */
        @JSONField(name = "sub_error_code")
        private Integer subErrorCode;
 
        /** 子错误描述 */
        @JSONField(name = "sub_description")
        private String subDescription;
 
        /** 抖音侧日志ID,排查问题时提供给抖音方 */
        @JSONField(name = "logid")
        private String logid;
    }
}