From 0cc3e8571474fdd3b065604a72ae32c7dafda636 Mon Sep 17 00:00:00 2001 From: admin Date: Sun, 10 May 2026 02:04:45 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=8D=A1=E5=AF=86=E5=88=97=E8=A1=A8=E6=95=B0=E6=8D=AE=E4=B8=8D?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Card模型添加AgentID字段 - 生成卡密时设置AgentID - handleGetCards返回正确格式的数据(包含app_name, card_type_name, code等) Co-Authored-By: Claude Opus 4.7 --- backend/internal/model/models.go | 2 ++ backend/internal/router/agent/agent.go | 46 +++++++++++++++++++++++++- 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/backend/internal/model/models.go b/backend/internal/model/models.go index d98c65b..4da4d1d 100644 --- a/backend/internal/model/models.go +++ b/backend/internal/model/models.go @@ -286,6 +286,7 @@ type Card struct { CardTypeID uint `gorm:"index;not null" json:"card_type_id"` CardKey string `gorm:"uniqueIndex;size:100" json:"card_key"` CreatorID uint `gorm:"index" json:"creator_id"` + AgentID *uint `gorm:"index" json:"agent_id"` AppUserID *uint `gorm:"index" json:"app_user_id"` Status string `gorm:"size:20;default:unused;index" json:"status"` UsedAt *time.Time `json:"used_at"` @@ -297,6 +298,7 @@ type Card struct { Application *Application `gorm:"foreignKey:ApplicationID" json:"application,omitempty"` CardType CardType `gorm:"foreignKey:CardTypeID" json:"card_type,omitempty"` Creator User `gorm:"foreignKey:CreatorID" json:"creator,omitempty"` + Agent *User `gorm:"foreignKey:AgentID" json:"agent,omitempty"` AppUser *AppUser `gorm:"foreignKey:AppUserID" json:"app_user,omitempty"` } diff --git a/backend/internal/router/agent/agent.go b/backend/internal/router/agent/agent.go index b6da1cf..76b7610 100644 --- a/backend/internal/router/agent/agent.go +++ b/backend/internal/router/agent/agent.go @@ -172,8 +172,51 @@ func handleGetCards(c *gin.Context) { database.DB.Where("agent_id = ?", userID).Order("created_at DESC").Limit(limit).Offset(offset).Find(&cards) + // 获取关联数据 + cardTypeIDs := make([]uint, 0) + appIDs := make([]uint, 0) + for _, card := range cards { + cardTypeIDs = append(cardTypeIDs, card.CardTypeID) + appIDs = append(appIDs, card.ApplicationID) + } + + cardTypeMap := make(map[uint]model.CardType) + if len(cardTypeIDs) > 0 { + var cardTypes []model.CardType + database.DB.Where("id IN ?", cardTypeIDs).Find(&cardTypes) + for _, ct := range cardTypes { + cardTypeMap[ct.ID] = ct + } + } + + appMap := make(map[uint]model.Application) + if len(appIDs) > 0 { + var apps []model.Application + database.DB.Where("id IN ?", appIDs).Find(&apps) + for _, app := range apps { + appMap[app.ID] = app + } + } + + // 构建返回数据 + cardList := make([]gin.H, 0) + for _, card := range cards { + ct := cardTypeMap[card.CardTypeID] + app := appMap[card.ApplicationID] + + cardList = append(cardList, gin.H{ + "id": card.ID, + "code": card.CardKey, + "app_name": app.Name, + "card_type_name": ct.Name, + "status": card.Status, + "created_at": card.CreatedAt, + "used_at": card.UsedAt, + }) + } + response.Success(c, gin.H{ - "cards": cards, + "cards": cardList, "total": total, }) } @@ -225,6 +268,7 @@ func handleGenerateCards(c *gin.Context) { CardTypeID: req.CardTypeID, CardKey: generateCardCode(), CreatorID: userID, + AgentID: &userID, Status: "unused", } }