Compare commits

...

2 Commits

Author SHA1 Message Date
cjy
e5a0e89eeb fix
All checks were successful
continuous-integration/drone/push Build is passing
2025-12-12 17:00:51 +08:00
cjy
1099d9baa2 fix: 避免封面数不合理报错
All checks were successful
continuous-integration/drone/push Build is passing
2025-12-12 16:55:51 +08:00
2 changed files with 4 additions and 52 deletions

View File

@ -27,55 +27,6 @@ func (a *AyrsharePost) Post(req *dto.PostRequest) (res *dto.PostResponse, err er
res = new(dto.PostResponse)
// 验证必填参数
if req.Post == "" {
return nil, errCommon.ReturnError(fmt.Errorf(msg.ErrPostContentEmpty), msg.ErrPostContentEmpty, "发布帖子 失败: ")
}
if len(req.Platforms) == 0 {
return nil, errCommon.ReturnError(fmt.Errorf(msg.ErrPlatformsEmpty), msg.ErrPlatformsEmpty, "发布帖子 失败: ")
}
// 验证 Instagram 配置
if req.InstagramOptions != nil {
// 验证 collaborators 最多 3 个
if len(req.InstagramOptions.Collaborators) > 3 {
return nil, errCommon.ReturnError(fmt.Errorf(msg.ErrInstagramCollaboratorsExceedLimit), msg.ErrInstagramCollaboratorsExceedLimit, "发布帖子 失败: ")
}
// 验证 altText 数量与 mediaUrls 数量匹配(如果提供了 altText
if len(req.InstagramOptions.AltText) > 0 && len(req.MediaUrls) > 0 {
if len(req.InstagramOptions.AltText) > len(req.MediaUrls) {
return nil, errCommon.ReturnError(fmt.Errorf(msg.ErrInstagramAltTextExceedMediaUrls), msg.ErrInstagramAltTextExceedMediaUrls, "发布帖子 失败: ")
}
}
// 验证 userTags 中的坐标范围(对于图片)
for _, tag := range req.InstagramOptions.UserTags {
if tag.X < 0.0 || tag.X > 1.0 || tag.Y < 0.0 || tag.Y > 1.0 {
return nil, errCommon.ReturnError(fmt.Errorf(msg.ErrInstagramUserTagsCoordinateOutOfRange), msg.ErrInstagramUserTagsCoordinateOutOfRange, "发布帖子 失败: ")
}
}
}
// 验证 TikTok 配置
if req.TikTokOptions != nil {
// 验证 visibility 值
validVisibility := map[string]bool{
"public": true,
"private": true,
"followers": true,
"friends": true,
}
if req.TikTokOptions.Visibility != "" && !validVisibility[req.TikTokOptions.Visibility] {
return nil, errCommon.ReturnError(fmt.Errorf(msg.ErrTikTokVisibilityInvalid), msg.ErrTikTokVisibilityInvalid, "发布帖子 失败: ")
}
// 验证 imageCoverIndex 范围(如果提供了 mediaUrls
if req.TikTokOptions.ImageCoverIndex != nil && len(req.MediaUrls) > 0 {
if *req.TikTokOptions.ImageCoverIndex < 0 || *req.TikTokOptions.ImageCoverIndex >= len(req.MediaUrls) {
errMsg := fmt.Sprintf(msg.ErrTikTokImageCoverIndexOutOfRange, len(req.MediaUrls)-1)
return nil, errCommon.ReturnError(fmt.Errorf(errMsg), errMsg, "发布帖子 失败: ")
}
}
}
// 构建请求URL
url := fmt.Sprintf("%s/api/post", app.ModuleClients.AryshareClient.Config.Endpoint)
@ -95,12 +46,12 @@ func (a *AyrsharePost) Post(req *dto.PostRequest) (res *dto.PostResponse, err er
// 调用 HTTP 方法
statusCode, result, err := utils.PostWithHeaders(url, reqBody, headers)
if err != nil {
return nil, errCommon.ReturnError(err, msg.ErrorPostFailed, "发布帖子失败: ")
return nil, err
}
// 检查状态码
// 检查状态码,如果第三方接口返回错误,直接返回错误响应
if statusCode != http.StatusOK {
return nil, errCommon.ReturnError(fmt.Errorf("接口返回状态码: %d, 响应结果: %s", statusCode, result), msg.ErrorPostFailed, "发布帖子 失败: ")
return nil, fmt.Errorf("第三方接口错误: 状态码 %d, 响应: %s", statusCode, result)
}
// 解析响应

View File

@ -13,6 +13,7 @@ const (
// TikTok 相关错误
ErrTikTokVisibilityInvalid = "TikTok 可见性必须是: 公开, 私密, 关注者, 或 朋友"
ErrTikTokImageCoverIndexOutOfRange = "TikTok 封面索引必须在 0 到 %d 之间"
ErrTikTokImageCoverIndexNoMedia = "TikTok 封面索引需要至少一个媒体文件"
// Analytics 相关错误
ErrorGetPostAnalyticsFailed = "获取帖子分析数据失败"