Files
opencatd-open/internal/dto/team/team.go
2025-04-16 18:01:27 +08:00

84 lines
1.8 KiB
Go

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"`
}