restrict v6
This commit is contained in:
+21
-10
@@ -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],
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user