Files
Mycontent/soul-api/internal/handler/miniprogram_super_stats.go
卡若 b5f5180654 chore: 以本地工作区为准全量快照同步 GitHub
包含小程序、管理端、soul-api、脚本与静态资源等当前本地全部已跟踪与新增文件(排除 .DS_Store 与 .obsidian)。

Made-with: Cursor
2026-04-13 11:49:38 +08:00

43 lines
1.1 KiB
Go

package handler
import (
"net/http"
"strings"
"soul-api/internal/database"
"soul-api/internal/model"
"github.com/gin-gonic/gin"
)
// MiniprogramMySuperStats GET /api/miniprogram/my/super-stats?userId=
// 返回当前 VIP 用户的超级个体获客数和头像点击数(小程序「我的」页展示用)。
func MiniprogramMySuperStats(c *gin.Context) {
userID := strings.TrimSpace(c.Query("userId"))
if userID == "" {
c.JSON(http.StatusOK, gin.H{"success": true, "data": nil})
return
}
db := database.DB()
clicks := batchSuperIndividualClicks(db, []string{userID})
leads := batchSuperIndividualLeads(db, []string{userID})
var person model.Person
hasPerson := db.Where("user_id = ?", userID).First(&person).Error == nil
isVip, _ := isVipEffective(db, userID)
isSuperIndividual := isVip && hasPerson
c.JSON(http.StatusOK, gin.H{
"success": true,
"data": gin.H{
"clickCount": clicks[userID],
"leadCount": leads[userID],
"hasPerson": hasPerson,
"isSuperIndividual": isSuperIndividual,
"isPinned": hasPerson && person.IsPinned,
"personName": person.Name,
},
})
}