package dto import ( "opencatd-open/internal/model" "opencatd-open/internal/utils" ) type UserInfo struct { ID int64 `json:"id"` Name string `json:"name"` Token string `json:"token"` Status *bool `json:"status,omitempty"` } func (u UserInfo) HasNameUpdate() bool { return u.Name != "" } func (u UserInfo) HasTokenUpdate() bool { return u.Token != "" } func (u UserInfo) HasStatusUpdate() bool { return u.Status != nil } type ApiKeyInfo struct { ID int `json:"id,omitempty"` Key string `json:"key,omitempty"` Name string `json:"name,omitempty"` ApiType string `json:"api_type,omitempty"` Endpoint string `json:"endpoint,omitempty"` Status *bool `json:"status,omitempty"` } // 添加辅助方法判断字段是否需要更新 func (k ApiKeyInfo) HasNameUpdate() bool { return k.Name != "" } func (k ApiKeyInfo) HasKeyUpdate() bool { return k.Key != "" } func (k ApiKeyInfo) HasStatusUpdate() bool { return k.Status != nil } func (k ApiKeyInfo) HasApiTypeUpdate() bool { return k.ApiType != "" } // 辅助函数:统一处理字段更新 func (update *ApiKeyInfo) UpdateFields(existing *model.ApiKey) *model.ApiKey { result := &model.ApiKey{ ID: existing.ID, Name: existing.Name, // 默认保持原值 ApiType: existing.ApiType, // 默认保持原值 ApiKey: existing.ApiKey, // 默认保持原值 Active: existing.Active, // 默认保持原值 } if update.HasNameUpdate() { result.Name = utils.ToPtr(update.Name) } if update.HasKeyUpdate() { result.ApiKey = utils.ToPtr(update.Key) } if update.HasStatusUpdate() { result.Active = update.Status } if update.HasApiTypeUpdate() { result.ApiType = utils.ToPtr(update.ApiType) } return result } type UsageInfo struct { UserId int `json:"userId"` TotalUnit int `json:"totalUnit"` Cost string `json:"cost"` }