From 1f88b110bfca3168fbb371e7fdb316cb53ee0cd0 Mon Sep 17 00:00:00 2001 From: Havoc412 <2993167370@qq.com> Date: Sun, 20 Oct 2024 16:30:29 +0800 Subject: [PATCH] back, but don't link --- .../controller/web/encounter_controller.go | 25 +++++++++++++++---- .../core/data_transfer/data_transfer.go | 14 +++++++++++ app/model/encounter.go | 8 +++--- test/{usersModel_test.go => models_test.go} | 10 ++++++++ 4 files changed, 48 insertions(+), 9 deletions(-) rename test/{usersModel_test.go => models_test.go} (58%) diff --git a/app/http/controller/web/encounter_controller.go b/app/http/controller/web/encounter_controller.go index cdd6b0b..e61acff 100644 --- a/app/http/controller/web/encounter_controller.go +++ b/app/http/controller/web/encounter_controller.go @@ -4,6 +4,7 @@ import ( "catface/app/global/consts" "catface/app/global/variable" "catface/app/http/validator/core/data_transfer" + "catface/app/model" "catface/app/service/upload_file" "catface/app/utils/response" "path/filepath" @@ -34,10 +35,24 @@ func (e *Encounters) Create(context *gin.Context) { context.Set(consts.ValidatorPrefix+"avatar_height", avatarHeight) context.Set(consts.ValidatorPrefix+"avatar_width", int(avatarWidth)) } + // 将 Array 转化为 string 类型 + animals_id := data_transfer.GetIntSlice(context, "animals_id") + if res, err := data_transfer.ConvertSliceToString(animals_id); err == nil { + context.Set(consts.ValidatorPrefix+"animals_id", res) + } else { + response.Fail(context, consts.ValidatorParamsCheckFailCode, consts.ValidatorParamsCheckFailMsg, "") + return + } + if res, err := data_transfer.ConvertSliceToString(photos); err == nil { + context.Set(consts.ValidatorPrefix+"photos", res) + } else { + response.Fail(context, consts.ValidatorParamsCheckFailCode, consts.ValidatorParamsCheckFailMsg, "") + return + } // Real Insert - // if model.CreateEncounterFactory("").InsertDate(context) { - // response.Success(context, consts.CurdStatusOkMsg, "") - // } else { - // response.Fail(context, consts.CurdCreatFailCode, consts.CurdCreatFailMsg+",新增错误", "") - // } + if model.CreateEncounterFactory("").InsertDate(context) { + response.Success(context, consts.CurdStatusOkMsg, "") + } else { + response.Fail(context, consts.CurdCreatFailCode, consts.CurdCreatFailMsg+",新增错误", "") + } } diff --git a/app/http/validator/core/data_transfer/data_transfer.go b/app/http/validator/core/data_transfer/data_transfer.go index 9f10d50..80095f6 100644 --- a/app/http/validator/core/data_transfer/data_transfer.go +++ b/app/http/validator/core/data_transfer/data_transfer.go @@ -5,7 +5,9 @@ import ( "catface/app/global/variable" "catface/app/http/validator/core/interf" "encoding/json" + "fmt" "reflect" + "strings" "time" "github.com/gin-gonic/gin" @@ -73,3 +75,15 @@ func GetIntSlice(context *gin.Context, key string) (ss []int) { context.Set(consts.ValidatorPrefix+key, ss) return } + +// ConvertSliceToString 是一个泛型函数,可以接受任何类型的切片 +func ConvertSliceToString[T any](slice []T) (string, error) { + var strBuilder strings.Builder + for i, v := range slice { + if i > 0 { + strBuilder.WriteString(",") + } + strBuilder.WriteString(fmt.Sprintf("%v", v)) + } + return strBuilder.String(), nil +} diff --git a/app/model/encounter.go b/app/model/encounter.go index 5b4a6fb..aa6a1e2 100644 --- a/app/model/encounter.go +++ b/app/model/encounter.go @@ -15,11 +15,11 @@ func CreateEncounterFactory(sqlType string) *Encounter { type Encounter struct { // Encounter 或者称为 post,指的就是 Human 单次的记录。 BaseModel // TAG 外键关联 - UserId int - UsersModel UsersModel - AnimalsId string `gorm:"size:20"` // TODO 关联对象存在上限 + UsersModelId int `gorm:"column:user_id" json:"user_id"` + UsersModel UsersModel + AnimalsId string `gorm:"size:20"` // TODO 关联对象存在上限 - Title string `gorm:"size:20"` + Title string `gorm:"size:20;column:title"` Content string // Time 从 CreatedAt 中解析 diff --git a/test/usersModel_test.go b/test/models_test.go similarity index 58% rename from test/usersModel_test.go rename to test/models_test.go index 1fe3f2a..da4d738 100644 --- a/test/usersModel_test.go +++ b/test/models_test.go @@ -15,3 +15,13 @@ func TestUsers(t *testing.T) { t.Error(err) } } + +func TestEncouner(t *testing.T) { + Init() + + encounter := model.Encounter{} + err := DB.AutoMigrate(&encounter) + if err != nil { + t.Error(err) + } +}