sync: soul-api 接口逻辑 | 原因: 后端接口逻辑修改
This commit is contained in:
@@ -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 {
|
func minInt(a, b int) int {
|
||||||
if a < b {
|
if a < b {
|
||||||
return a
|
return a
|
||||||
|
|||||||
Reference in New Issue
Block a user