sync: soul-api 接口逻辑 | 原因: 后端接口逻辑修改

This commit is contained in:
卡若
2026-03-08 17:10:16 +08:00
parent 32d022086c
commit 0bfcb97b8e

View File

@@ -511,6 +511,84 @@ func CKBPlanStats(c *gin.Context) {
})
}
// DBCKBLeadList GET /api/db/ckb-leads 管理端-CKB线索明细
func DBCKBLeadList(c *gin.Context) {
db := database.DB()
mode := strings.TrimSpace(c.DefaultQuery("mode", "submitted")) // submitted|contact
matchType := strings.TrimSpace(c.Query("matchType"))
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
pageSize, _ := strconv.Atoi(c.DefaultQuery("pageSize", "20"))
if page < 1 {
page = 1
}
if pageSize < 1 || pageSize > 100 {
pageSize = 20
}
q := db.Model(&model.MatchRecord{}).Where("id LIKE 'mr_ckb_%'")
if matchType != "" {
q = q.Where("match_type = ?", matchType)
}
if mode == "contact" {
q = q.Where("((phone IS NOT NULL AND phone != '') OR (wechat_id IS NOT NULL AND wechat_id != ''))")
}
var total int64
q.Count(&total)
var records []model.MatchRecord
if err := q.Order("created_at DESC").Offset((page - 1) * pageSize).Limit(pageSize).Find(&records).Error; err != nil {
c.JSON(http.StatusOK, gin.H{"success": false, "message": err.Error()})
return
}
userIDs := make(map[string]bool)
for _, r := range records {
if r.UserID != "" {
userIDs[r.UserID] = true
}
}
ids := make([]string, 0, len(userIDs))
for id := range userIDs {
ids = append(ids, id)
}
var users []model.User
if len(ids) > 0 {
db.Where("id IN ?", ids).Find(&users)
}
userMap := make(map[string]*model.User)
for i := range users {
userMap[users[i].ID] = &users[i]
}
safeNickname := func(u *model.User) string {
if u == nil || u.Nickname == nil {
return ""
}
return *u.Nickname
}
out := make([]gin.H, 0, len(records))
for _, r := range records {
out = append(out, gin.H{
"id": r.ID,
"userId": r.UserID,
"userNickname": safeNickname(userMap[r.UserID]),
"matchType": r.MatchType,
"phone": func() string { if r.Phone == nil { return "" }; return *r.Phone }(),
"wechatId": func() string { if r.WechatID == nil { return "" }; return *r.WechatID }(),
"createdAt": r.CreatedAt,
})
}
c.JSON(http.StatusOK, gin.H{
"success": true,
"records": out,
"total": total,
"page": page,
"pageSize": pageSize,
})
}
func minInt(a, b int) int {
if a < b {
return a