feat:归档页面,超管只能看到自己的帖子
This commit is contained in:
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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.
Reference in New Issue
Block a user