获取帖子[列表]

  • 接口地址: /api/fresns/post/lists
  • 请求方式: POST
  • 请求格式: JSON

header 可选参数:

参数名公开模式(是否必传)私有模式(是否必传)
uidNOYES
midNOYES
tokenNOYES

body 参数:

参数名类型是否必传说明
searchTypeStringNO指定类型:内容类型扩展配置的参数,为空或者为 all,则输出全部内容
searchKeyStringNO搜索关键词
searchMidNumberNO指定范围:成员
searchGidStringNO指定范围:小组
searchHuriStringNO指定范围:话题
searchEssenceNumberNO指定范围:精华(留空输出全部)
essence_state 字段 1.否 2.一级精华 3.二级精华
searchStickyNumberNO指定范围:置顶(留空输出全部)
sticky_state 字段 1.否 2.小组页置顶 3.全局置顶
viewCountGtNumberNO查看数大于 view_count 字段
viewCountLtNumberNO查看数小于 view_count 字段
likeCountGtNumberNO点赞数大于 like_count 字段
likeCountLtNumberNO点赞数小于 like_count 字段
followCountGtNumberNO关注数大于 follow_count 字段
followCountLtNumberNO关注数小于 follow_count 字段
shieldCountGtNumberNO屏蔽数大于 shield_count 字段
shieldCountLtNumberNO屏蔽数小于 shield_count 字段
commentCountGtNumberNO评论数大于 comment_count 字段
commentCountLtNumberNO评论数小于 comment_count 字段
createdTimeGtStringNO发表时间大于 created_at 字段
createdTimeLtStringNO发表时间小于 created_at 字段
mapIdNumberNO地图服务商编号
longitudeStringNO地图经度(用于计算距离)
latitudeStringNO地图纬度(用于计算距离)
sortTypeStringNO排序类型 view / like / follow / shield / comment / time
默认 time
sortDirectionNumberNO排序方式 1.升序 2.降序
默认 2.降序
sortNumberNumberNO排序编号(插件专用)
pageSizeNumberNO每页显示条数(默认 30 条)
pageNumberNO页码(默认 1)

返回结果:

成功

{
    "code": 0,
    "message": "ok",
    "data": {
        "common": {
            "implants": [
                //只获取 implants > implant_type=1 的植入内容
                {
                    "implantSetting": {
                        "id": "implants > id",
                        "template": "implants > implant_template",  //根据 header 里 AppId 参数获取值
                        "name": "implants > implant_name 多语言",
                        "position": "implants > position",
                        "pageType": "implants > type",
                        "pageTarget": "implants > target",
                        "pageValue": "implants > value",
                        "pageSupport": "implants > support"
                    },
                    //其他参数同 lists 一样,输出的是帖子内容,帖子为 implants > implant_id
                }
            ]
        },
        "pagination": {
            "total": "一共有多少条数据",
            "current": "当前页码",
            "pageSize": "每页有多少条数据",
            "lastPage": "最后一页页码"
        },
        "list": [
            {
                "pid": "posts > uuid",
                "title": "posts > title",
                "content": "posts > content 需要解析内容中的“艾特”、“话题”、“链接”、“表情”四种信息。话题输出时,如果后台设置的是「单 # 号」,但是数据库存的是「双 # 号」,则在输出时,删减结尾 # 号;如果后台设置的是「双 # 号」,但是数据库存的是「单 # 号」,则在输出时,为结尾补充 # 号。",
                "brief": "posts > is_brief",
                "sticky": "posts > sticky_state",
                "essence": "posts > essence_state",
                "postName": "配置表键名 post_name 多语言",
                "likeSetting": "配置表键名 like_post_setting 布尔型",
                "likeName": "配置表键名 like_post_name 多语言",
                "likeStatus": "查询 member_likes 表。输出 0.未点赞 1.已点赞",
                "followSetting": "配置表键名 follow_post_setting 布尔型",
                "followName": "配置表键名 follow_post_name 多语言",
                "followStatus": "查询 member_follows 表。输出 0.未关注 1.已关注",
                "shieldSetting": "配置表键名 shield_post_setting 布尔型",
                "shieldName": "配置表键名 shield_post_name 多语言",
                "shieldStatus": "查询 member_shields 表。输出 0.未屏蔽 1.已屏蔽",
                "memberListStatus": "post_appends > member_list_status",
                "memberListName": "post_appends > member_list_name 多语言",
                "memberListCount": "根据 post_members 表实时计算",
                "memberListUrl": "post_appends > member_list_plugin_unikey 根据插件生成",
                "viewCount": "posts > view_count",
                "likeCount": "posts > like_count",
                "followCount": "posts > follow_count",
                "shieldCount": "posts > shield_count",
                "commentCount": "posts > comment_count",
                "commentLikeCount": "posts > comment_like_count",
                "time": "posts > created_at",
                "timeFormat": "posts > created_at 人性化格式后",
                "editTime": "posts > latest_edit_at",
                "editTimeFormat": "posts > latest_edit_at 人性化格式后",
                //帖子条件判断只做权限验证,不做内容百分比输出的处理,因为百分比处理在「编辑器>发表内容」接口的时候已经处理完了。
                "allowStatus": "posts > is_allow 基于 post_allows 表,判断当前成员和成员角色是否有权浏览,无权浏览时 files 和 extends 参数不输出",
                "allowProportion": "post_appends > allow_proportion",
                "allowBtnName": "post_appends > allow_btn_name 多语言",
                "allowBtnUrl": "post_appends > allow_plugin_unikey 根据插件生成",
                "member": {
                    "anonymous": "posts > is_anonymous 如果是匿名帖子,以下用户参数为空,头像除外",
                    "deactivate": "members > deleted_at 布尔型(停用为 true),如果该成员已经停用,或者查不到数据(已删除),以下参数为空,头像除外",
                    "mid": "posts > member_id >> members > uuid",
                    "mname": "members > name",
                    "nickname": "members > nickname",
                    "rid": "主角色的值 member_roles > id",
                    "nicknameColor": "主角色的值 member_roles > nickname_color",
                    "roleName": "主角色的值 member_roles > name 多语言",
                    "roleNameDisplay": "主角色的值 member_roles > is_display_name",
                    "roleIcon": "主角色的值 member_roles > icon_file_url",
                    "roleIconDisplay": "主角色的值 member_roles > is_display_icon",
                    "avatar": "members > avatar_file_url,成员头像为空时 default_avatar 键值,匿名头像 anonymous_avatar 键值,已注销头像 deactivate_avatar 键值",
                    "decorate": "members > decorate_file_url",
                    "gender": "members > gender",
                    "bio": "members > bio",
                    "verifiedStatus": "members > verified_status",
                    "verifiedIcon": "members > verified_file_url",
                    "verifiedDesc": "members > verified_desc",
                    "icons": [
                        {
                            "icon": "member_icons > icon_file_url",
                            "name": "member_icons > name 多语言"
                        }
                    ]
                },
                "icons": [
                    //来源 posts > more_json 字段 icons 参数
                    {
                        "name": "label",
                        "fileId": "关联字段 files > id",
                        "fileUrl": "根据规则拼接成的完整 URL 地址"
                    }
                ],
                "commentSetting": {
                    //配置表键名 post_hot 键值,评论点赞总数达到多少开启热评功能,0 代表不启用。查询 posts > comment_like_count 字段。
                    //配置表键名 post_hot 如果为 0,则不输出评论内容,status 参数值为 false
                    //如果满足条件需要输出一条评论内容,如果点赞最多的评论作者已经删除(members > deleted_at),则顺延下一条评论输出。
                    //如果评论点赞总数达不到要求,没有输出评论,status 参数值还是为 false,如果达到了,参数值为 true
                    "status": "是否有热评输出,没有输出是 false,有输出是 true",
                    "anonymous": "comments > is_anonymous 匿名状态则不输出 isAuthor、mid、mname、nickname 用户信息",
                    "isAuthor": "该条评论的作者是不是帖子作者自己",
                    "mid": "comments > member_id >> members > uuid",
                    "mname": "members > name",
                    "nickname": "members > nickname",
                    "avatar": "members > avatar_file_url,成员头像为空时 default_avatar 键值,匿名头像 anonymous_avatar 键值",
                    "cid": "comments > uuid",
                    "content": "comments > content",
                    "likeCount": "comments > like_count",
                    "attachCount": {
                        "images": 9,
                        "videos": 1,
                        "audios": 1,
                        "docs": 3,
                        "extends": 1
                    },
                    "images": [
                        //来源 comments > files
                        //type=1 专用,输出该条评论的图片链接
                        {
                            "imageRatioUrl": "",
                            "imageSquareUrl": "",
                            "imageBigUrl": ""
                        }
                    ]
                },
                "location": {
                    "isLbs": "posts > is_lbs",
                    "mapId": "posts > map_id",
                    "latitude": "posts > map_latitude",
                    "longitude": "posts > map_longitude",
                    "scale": "post_appends > map_scale",
                    "poi": "post_appends > map_poi",
                    "poiId": "post_appends > map_poi_id",
                    "distance": "如果用户传输了经纬度,则输出距离,长度单位在语言配置参数"
                },
                "attachCount": {
                    "images": 9,
                    "videos": 1,
                    "audios": 1,
                    "docs": 3,
                    "extends": 1
                },
                "files": [
                    //来源 posts > more_json 字段 files 参数
                    //帖子无权浏览时,不输出该数组参数
                    //根据 rankNum 参数升序输出
                    {
                        "fid": "files > uuid",
                        "type": "files > file_type",
                        "rankNum": "files > rank_num",
                        "name": "files > file_name",
                        "extension": "files > file_extension",
                        "mime": "file_appends > file_mime",
                        "size": "file_appends > file_size",
                        "imageWidth": "file_appends > image_width",
                        "imageHeight": "file_appends > image_height",
                        "imageLong": "图片专用:file_appends > image_is_long",
                        "imageRatioUrl": "图片专用:images_bucket_domain + 文件 file_path 字段 + images_thumb_ratio",
                        "imageSquareUrl": "图片专用:images_bucket_domain + 文件 file_path 字段 + images_thumb_square",
                        "imageBigUrl": "图片专用:images_bucket_domain + 文件 file_path 字段 + images_thumb_big",
                        "videoTime": "视频专用:file_appends > video_time",
                        "videoCover": "视频专用:videos_bucket_domain + 文件 video_cover 字段",
                        "videoGif": "视频专用:videos_bucket_domain + 文件 video_gif 字段",
                        "videoUrl": "视频专用:videos_bucket_domain + 文件 file_path 字段",
                        "audioTime": "音频专用:file_appends > audio_time",
                        "audioUrl": "音频专用:audios_bucket_domain + 文件 file_path 字段",
                        "transcodingState": "音视频专用,存储到 file_appends > transcoding_state",
                        "moreJson": {
                            // 扩展信息 file_appends > more_json
                        }
                    }
                ],
                "extends": [
                    //帖子无权浏览时,不输出该数组参数
                    {
                        "eid": "extend_linkeds > extend_id >> extends > uuid",
                        "plugin": "extends > plugin_unikey",
                        "frame": "extends > frame",
                        "position": "extends > position",
                        "content": "extends > text_content",
                        "files": [
                            //frame=1 专用
                            //来源 extends > text_files
                        ],
                        "cover": "extends > cover_file_url",
                        "title": "extends > title 多语言",
                        "titleColor": "extends > title_color",
                        "descPrimary": "extends > desc_primary 多语言",
                        "descPrimaryColor": "extends > desc_primary_color",
                        "descSecondary": "extends > desc_secondary 多语言",
                        "descSecondaryColor": "extends > desc_secondary_color",
                        "btnName": "extends > btn_name 多语言",
                        "btnColor": "extends > btn_color",
                        "type": "extends > extend_type",
                        "target": "extends > extend_target",
                        "value": "extends > extend_value 根据内容类型,输出对应的 URL",
                        "support": "extends > extend_support",
                        "moreJson": {
                            // extends > more_json
                        }
                    }
                ],
                "group": {
                    "gid": "posts > group_id >> groups > uuid",
                    "gname": "groups > name 多语言",
                    "cover": "groups > cover_file_url",
                    "allow": "groups > allow_comment 当前请求接口的成员,是否拥有该小组评论权限"
                },
                "manages": [
                    //1、 plugin_usages > type=5 + scene 字段包含 1 允许在该列表输出的条件
                    //2、 plugin_usages > is_group_admin=0
                    //2.1、 plugin_usages > member_roles 为空则全部输出。
                    //2.2、 plugin_usages > member_roles 有值,则判断当前请求成员的所有角色 ID 是否包含在其中,在则输出,不在不输出(未登录则不在)。
                    //3、 plugin_usages > is_group_admin=1
                    //3.1、判断当前请求的成员是否为小组管理员 groups > > permission > admin.members 包含请求成员 id,是管理员则输出,不是不输出。
                    {
                        "plugin": "plugin_usages > plugin_unikey",
                        "name": "plugin_usages > name 多语言",
                        "icon": "plugin_usages > icon_file_url",
                        "url": "详见 plugins 地址拼接说明"
                    }
                ],
                "editStatus": {
                    "isMe": "该篇帖子作者是否为本人",
                    "canEdit": "判断键名 post_edit 配置的条件,是否允许编辑,多长时间内可以编辑、帖子置顶后编辑权限、帖子加精后编辑权限",
                    "canDelete": "判断 post_appends > can_delete 字段规定是否可以删除",
                }
            }
        ]
    }
}
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237

失败

{
    "code": "code_messages > code",
    "message": "code_messages > message"
}
1
2
3
4

开发说明

  • 如果是私有模式,当过期后 members > expired_at,需判断到期后的状态。配置表 site_private_end 键值为 1 时,该接口不可请求;键值为 2 时,仅输出到期前的内容,到期后的新内容不输出。
  • 根据 searchType 内容类型去 plugin_usages 查询数据来源是默认(主程序)还是指定的插件,如果是指定的插件,则将请求转述给插件,由插件提供数据。
  • 如果是非公开小组的帖子,不是小组成员,不输出。
  • 过滤屏蔽对象的帖子(成员、小组、话题、帖子),屏蔽对象的帖子不输出。
  • searchKey 查询的是帖子标题 posts > title 和全量正文 post_appends > content
  • searchType 留空代表输出所有内容。内容为插件 unikey 值,用于搜索包含指定插件扩展内容的帖子。
  • searchMid 查看别人信息时,是否输出数据,根据后台配置决定,后台 > 运营 > 互动配置 > 查看别人内容设置,后台设置成禁止时,不输出数据。
    • 查看别人内容设置
    • 配置键名 it_publish_posts
    • 关闭后,仅 header mid 和 viewMid(或 viewMname 转换 mid)一致才输出
  • 帖子所属小组,小组 groupstype_mode = 2 + type_find = 2 只有当前请求接口的成员已经 follow 了该小组才输出,否则不输出在列表中。
  • 所有涉及图片的参数,需要判断是否开启了防盗链,如果开启了,不能直接使用 URL 字段值,需要获取防盗链链接。
  • 补充资料:帖子列表和详情页逻辑
searchType说明
{空}输出全部内容
all输出全部内容
text输出纯文本帖子
image输出带图片的帖子
video输出带视频的帖子
audio输出带音频的帖子
doc输出带文档的帖子
{abc}输出插件 abc 扩展内容的帖子