feat:归档页面,超管只能看到自己的帖子

This commit is contained in:
amos
2025-12-19 10:07:35 +08:00
parent fd43681979
commit afdef11ea4
3 changed files with 9 additions and 13 deletions

View File

@@ -70,7 +70,8 @@ class ArchiveViewModel : ViewModel() {
private fun loadRecentPosts() {
viewModelScope.launch {
try {
val response = ApiClient.api.getPosts(page = 1)
// 使用 search API 只获取当前用户自己的帖子
val response = ApiClient.api.search(page = 1, pageSize = 20)
if (response.isSuccessful) {
_recentPosts.value = response.body() ?: emptyList()
}

View File

@@ -22,7 +22,6 @@ func NewSearchHandler(db *sql.DB, cfg *config.Config) *SearchHandler {
func (h *SearchHandler) Search(c *gin.Context) {
userID := middleware.GetUserID(c)
isSuperAdmin, _ := c.Get("is_superadmin")
var req model.SearchRequest
if err := c.ShouldBindQuery(&req); err != nil {
@@ -38,7 +37,7 @@ func (h *SearchHandler) Search(c *gin.Context) {
}
offset := (req.Page - 1) * req.PageSize
// 构建查询
// 搜索只显示当前用户自己的帖子
query := `
SELECT p.id, p.user_id, p.content, p.created_at,
u.id, u.username, u.nickname, u.avatar_url,
@@ -47,14 +46,9 @@ func (h *SearchHandler) Search(c *gin.Context) {
(SELECT COUNT(*) FROM comments WHERE post_id = p.id) as comment_count
FROM posts p
JOIN users u ON p.user_id = u.id
WHERE 1=1
WHERE p.user_id = ?
`
args := []interface{}{userID}
// 普通用户看不到超管的帖子
if isSuperAdmin == nil || !isSuperAdmin.(bool) {
query += " AND COALESCE(u.is_superadmin, 0) = 0"
}
args := []interface{}{userID, userID}
if req.Query != "" {
query += " AND p.content LIKE ?"
@@ -102,16 +96,17 @@ func (h *SearchHandler) Search(c *gin.Context) {
c.JSON(http.StatusOK, posts)
}
// 获取热力图数据GitHub 风格)
// 获取热力图数据GitHub 风格)- 只统计当前用户自己的帖子
func (h *SearchHandler) Heatmap(c *gin.Context) {
userID := middleware.GetUserID(c)
year := c.DefaultQuery("year", "")
query := `
SELECT DATE(created_at) as date, COUNT(*) as count
FROM posts
WHERE 1=1
WHERE user_id = ?
`
args := []interface{}{}
args := []interface{}{userID}
if year != "" {
query += " AND strftime('%Y', created_at) = ?"

Binary file not shown.