109 lines
4.3 KiB
Go
109 lines
4.3 KiB
Go
package response
|
|
|
|
import (
|
|
"encoding/json"
|
|
"time"
|
|
|
|
"git.echol.cn/loser/st/server/model/app"
|
|
)
|
|
|
|
// CharacterResponse 角色卡响应
|
|
type CharacterResponse struct {
|
|
ID uint `json:"id"`
|
|
Name string `json:"name"`
|
|
Avatar string `json:"avatar"`
|
|
Creator string `json:"creator"`
|
|
Version string `json:"version"`
|
|
Description string `json:"description"`
|
|
Personality string `json:"personality"`
|
|
Scenario string `json:"scenario"`
|
|
FirstMes string `json:"firstMes"`
|
|
MesExample string `json:"mesExample"`
|
|
CreatorNotes string `json:"creatorNotes"`
|
|
SystemPrompt string `json:"systemPrompt"`
|
|
PostHistoryInstructions string `json:"postHistoryInstructions"`
|
|
Tags []string `json:"tags"`
|
|
AlternateGreetings []string `json:"alternateGreetings"`
|
|
CharacterBook map[string]interface{} `json:"characterBook"`
|
|
Extensions map[string]interface{} `json:"extensions"`
|
|
Spec string `json:"spec"`
|
|
SpecVersion string `json:"specVersion"`
|
|
IsPublic bool `json:"isPublic"`
|
|
UseCount int `json:"useCount"`
|
|
FavoriteCount int `json:"favoriteCount"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
}
|
|
|
|
// CharacterSimpleResponse 角色卡简化响应(用于列表)
|
|
type CharacterSimpleResponse struct {
|
|
ID uint `json:"id"`
|
|
Name string `json:"name"`
|
|
Avatar string `json:"avatar"`
|
|
Description string `json:"description"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
}
|
|
|
|
// CharacterListResponse 角色卡列表响应
|
|
type CharacterListResponse struct {
|
|
List []CharacterResponse `json:"list"`
|
|
Total int64 `json:"total"`
|
|
Page int `json:"page"`
|
|
PageSize int `json:"pageSize"`
|
|
}
|
|
|
|
// ToCharacterResponse 转换为角色卡响应结构
|
|
func ToCharacterResponse(character *app.AICharacter) CharacterResponse {
|
|
resp := CharacterResponse{
|
|
ID: character.ID,
|
|
Name: character.Name,
|
|
Avatar: character.Avatar,
|
|
Creator: character.Creator,
|
|
Version: character.Version,
|
|
Description: character.Description,
|
|
Personality: character.Personality,
|
|
Scenario: character.Scenario,
|
|
FirstMes: character.FirstMes,
|
|
MesExample: character.MesExample,
|
|
CreatorNotes: character.CreatorNotes,
|
|
SystemPrompt: character.SystemPrompt,
|
|
PostHistoryInstructions: character.PostHistoryInstructions,
|
|
Spec: character.Spec,
|
|
SpecVersion: character.SpecVersion,
|
|
IsPublic: character.IsPublic,
|
|
UseCount: character.UseCount,
|
|
FavoriteCount: character.FavoriteCount,
|
|
CreatedAt: character.CreatedAt,
|
|
UpdatedAt: character.UpdatedAt,
|
|
}
|
|
|
|
// 解析 JSON 字段
|
|
if len(character.Tags) > 0 {
|
|
json.Unmarshal(character.Tags, &resp.Tags)
|
|
}
|
|
if len(character.AlternateGreetings) > 0 {
|
|
json.Unmarshal(character.AlternateGreetings, &resp.AlternateGreetings)
|
|
}
|
|
if len(character.CharacterBook) > 0 {
|
|
json.Unmarshal(character.CharacterBook, &resp.CharacterBook)
|
|
}
|
|
if len(character.Extensions) > 0 {
|
|
json.Unmarshal(character.Extensions, &resp.Extensions)
|
|
}
|
|
|
|
return resp
|
|
}
|
|
|
|
// ToCharacterSimpleResponse 转换为角色卡简化响应结构(用于列表)
|
|
func ToCharacterSimpleResponse(character *app.AICharacter) CharacterSimpleResponse {
|
|
return CharacterSimpleResponse{
|
|
ID: character.ID,
|
|
Name: character.Name,
|
|
Avatar: character.Avatar,
|
|
Description: character.Description,
|
|
CreatedAt: character.CreatedAt,
|
|
UpdatedAt: character.UpdatedAt,
|
|
}
|
|
}
|