restrict v6

This commit is contained in:
tamakyi
2026-10-18 22:18:21 +08:00
parent d14d26df17
commit bd81398a06
18 changed files with 621 additions and 10 deletions
+21 -10
View File
@@ -39,6 +39,9 @@ type receivedItem struct {
QuestionID uint // 仅对普通提问有效,用于置顶操作
IsPinned bool // 仅对普通提问有效
PinLink string // 仅对普通提问有效:置顶/取消置顶操作链接
// ReportCount 仅对普通提问有效:待处理举报数。
// 只给数量、不给举报人 IP —— 箱主若能看到 IP,就有能力反查举报者,举报意愿会直接归零。
ReportCount int64
}
// QuestionList 用户后台提问列表(支持筛选与全文搜索)
@@ -163,6 +166,13 @@ func QuestionList(ctx context.Context) {
}
}
// 待处理举报数:箱主侧只展示数量。查询失败不阻断列表,仅少一个标记。
reportCounts, rErr := db.Reports.QuestionIDsByUser(ctx.Request().Context(), ctx.User.ID)
if rErr != nil {
logrus.WithContext(ctx.Request().Context()).WithError(rErr).Error("Failed to count content reports")
reportCounts = map[uint]int64{}
}
// 搜索场景下关键词已在 SQL 中匹配,但类型/状态筛选需在此统一应用,
// 使"搜索 + 筛选"可组合(完善筛选逻辑)。非搜索场景下此处与 SQL 过滤结果一致。
for _, q := range questions {
@@ -191,16 +201,17 @@ func QuestionList(ctx context.Context) {
itemType = "question_private"
}
receivedItems = append(receivedItems, receivedItem{
Type: itemType,
CreatedAt: q.CreatedAt,
Content: q.Content,
Link: "/_/" + ctx.User.Domain + "/" + fmt.Sprint(q.ID) + "?" + adminLinkQueryStr,
IsAnswered: q.Answer != "",
IsRead: isRead,
IsPrivate: q.IsPrivate,
QuestionID: q.ID,
IsPinned: q.IsPinned,
PinLink: "/_/" + ctx.User.Domain + "/" + fmt.Sprint(q.ID) + "/pin",
Type: itemType,
CreatedAt: q.CreatedAt,
Content: q.Content,
Link: "/_/" + ctx.User.Domain + "/" + fmt.Sprint(q.ID) + "?" + adminLinkQueryStr,
IsAnswered: q.Answer != "",
IsRead: isRead,
IsPrivate: q.IsPrivate,
QuestionID: q.ID,
IsPinned: q.IsPinned,
PinLink: "/_/" + ctx.User.Domain + "/" + fmt.Sprint(q.ID) + "/pin",
ReportCount: reportCounts[q.ID],
})
}