You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.8 KiB
71 lines
1.8 KiB
package ai
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/youruser/base/internal/svc"
|
|
"github.com/youruser/base/internal/types"
|
|
"github.com/youruser/base/model"
|
|
|
|
"github.com/zeromicro/go-zero/core/logx"
|
|
)
|
|
|
|
type AiSystemKeyListLogic struct {
|
|
logx.Logger
|
|
ctx context.Context
|
|
svcCtx *svc.ServiceContext
|
|
}
|
|
|
|
func NewAiSystemKeyListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AiSystemKeyListLogic {
|
|
return &AiSystemKeyListLogic{
|
|
Logger: logx.WithContext(ctx),
|
|
ctx: ctx,
|
|
svcCtx: svcCtx,
|
|
}
|
|
}
|
|
|
|
func (l *AiSystemKeyListLogic) AiSystemKeyList(req *types.AIApiKeyListRequest) (resp *types.AIApiKeyListResponse, err error) {
|
|
var keys []model.AIApiKey
|
|
var total int64
|
|
|
|
query := l.svcCtx.DB.WithContext(l.ctx).Model(&model.AIApiKey{}).Where("user_id = 0")
|
|
if err = query.Count(&total).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
offset := (req.Page - 1) * req.PageSize
|
|
if offset < 0 {
|
|
offset = 0
|
|
}
|
|
if err = query.Order("created_at DESC").Offset(int(offset)).Limit(int(req.PageSize)).Find(&keys).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
providerCache := make(map[int64]string)
|
|
list := make([]types.AIApiKeyInfo, 0, len(keys))
|
|
for _, key := range keys {
|
|
providerName := ""
|
|
if name, ok := providerCache[key.ProviderId]; ok {
|
|
providerName = name
|
|
} else {
|
|
provider, provErr := model.AIProviderFindOne(l.ctx, l.svcCtx.DB, key.ProviderId)
|
|
if provErr == nil {
|
|
providerName = provider.DisplayName
|
|
}
|
|
providerCache[key.ProviderId] = providerName
|
|
}
|
|
|
|
list = append(list, types.AIApiKeyInfo{
|
|
Id: key.Id,
|
|
ProviderId: key.ProviderId,
|
|
ProviderName: providerName,
|
|
UserId: 0,
|
|
KeyPreview: maskKey(key.KeyValue),
|
|
IsActive: key.IsActive,
|
|
Remark: key.Remark,
|
|
CreatedAt: key.CreatedAt.Format("2006-01-02 15:04:05"),
|
|
})
|
|
}
|
|
|
|
return &types.AIApiKeyListResponse{List: list, Total: total}, nil
|
|
}
|
|
|