catface_backend_go/app/http/controller/web/encounter_controller.go

86 lines
3.2 KiB
Go
Raw Normal View History

2024-10-17 22:43:20 +08:00
package web
import (
2024-10-20 12:10:17 +08:00
"catface/app/global/consts"
2024-10-20 21:01:12 +08:00
"catface/app/global/errcode"
2024-10-20 11:50:26 +08:00
"catface/app/global/variable"
"catface/app/http/validator/core/data_transfer"
2024-10-20 17:33:28 +08:00
"catface/app/model"
2024-10-20 21:01:12 +08:00
"catface/app/service/encounter/curd"
2024-10-20 12:10:17 +08:00
"catface/app/service/upload_file"
"catface/app/utils/response"
"path/filepath"
2024-10-20 12:16:35 +08:00
"strconv"
2024-10-20 11:50:26 +08:00
2024-10-17 22:43:20 +08:00
"github.com/gin-gonic/gin"
2024-11-02 11:51:12 +08:00
2024-10-17 22:43:20 +08:00
)
type Encounters struct {
}
2024-10-18 10:04:01 +08:00
func (e *Encounters) Create(context *gin.Context) {
2024-10-20 11:50:26 +08:00
photos := data_transfer.GetStringSlice(context, "photos")
if len(photos) > 0 {
2024-10-20 12:16:35 +08:00
userId := strconv.Itoa(int(context.GetFloat64(consts.ValidatorPrefix + "user_id")))
2024-10-20 11:50:26 +08:00
avatar := photos[0]
avatarWidth := variable.ConfigYml.GetFloat64("FileUploadSetting.AvatarWidth")
2024-10-17 22:43:20 +08:00
2024-10-20 12:30:12 +08:00
srcPath := filepath.Join(variable.BasePath, variable.ConfigYml.GetString("FileUploadSetting.UploadFileSavePath"), "encounterPhotos", "hum_"+userId, avatar)
2024-10-20 22:09:04 +08:00
dstPath := filepath.Join(variable.BasePath, variable.ConfigYml.GetString("FileUploadSetting.UploadFileSavePath"), "encounterAvatar", avatar)
2024-10-20 12:10:17 +08:00
avatarHeight, err := upload_file.ResizeImage(srcPath, dstPath, int(avatarWidth))
if err != nil {
response.Fail(context, consts.FilesUploadFailCode, consts.FilesUploadFailMsg, "")
return
}
context.Set(consts.ValidatorPrefix+"avatar", avatar)
2024-10-20 17:54:37 +08:00
context.Set(consts.ValidatorPrefix+"avatar_height", float64(avatarHeight))
context.Set(consts.ValidatorPrefix+"avatar_width", float64(avatarWidth))
2024-10-20 11:50:26 +08:00
}
2024-10-20 17:33:28 +08:00
// 将 Array 转化为 string 类型
if res, err := data_transfer.ConvertSliceToString(photos); err == nil {
context.Set(consts.ValidatorPrefix+"photos", res)
} else {
response.Fail(context, consts.ValidatorParamsCheckFailCode, consts.ValidatorParamsCheckFailMsg, "")
return
}
2024-11-02 11:51:12 +08:00
// Real Insert - 1: ENC
2024-11-02 11:49:49 +08:00
animals_id := data_transfer.GetFloat64Slice(context, "animals_id") // 由于是 Slice 就交给 EAlink 内部遍历时处理。
2024-11-02 11:51:12 +08:00
// Real Insert - 2: EA LINK
2024-11-02 11:49:49 +08:00
if encounter_id, ok := model.CreateEncounterFactory("").InsertDate(context); ok && encounter_id > 0 {
if !model.CreateEncounterAnimalLinkFactory("").Insert(int64(encounter_id), animals_id) {
2024-11-02 11:49:49 +08:00
response.Fail(context, errcode.ErrEaLinkInstert, errcode.ErrMsg[errcode.ErrEaLinkInstert], "")
return
}
2024-10-20 17:33:28 +08:00
response.Success(context, consts.CurdStatusOkMsg, "")
} else {
2024-11-02 11:49:49 +08:00
response.Fail(context, consts.CurdCreatFailCode, consts.CurdCreatFailMsg+", 新增错误", "")
2024-10-20 17:33:28 +08:00
}
2024-10-17 22:43:20 +08:00
}
2024-10-20 21:01:12 +08:00
func (e *Encounters) List(context *gin.Context) {
num := context.GetFloat64(consts.ValidatorPrefix + "num")
skip := context.GetFloat64(consts.ValidatorPrefix + "skip")
2024-10-21 01:24:01 +08:00
user_id := context.GetFloat64(consts.ValidatorPrefix + "user_id")
2024-11-02 11:06:27 +08:00
mode := context.GetString(consts.ValidatorPrefix + "mode")
2024-10-20 21:01:12 +08:00
2024-11-02 11:06:27 +08:00
encounters := curd.CreateEncounterCurdFactory().List(int(num), int(skip), int(user_id), mode)
2024-10-20 21:01:12 +08:00
if encounters != nil {
response.Success(context, consts.CurdStatusOkMsg, encounters)
} else {
response.Fail(context, errcode.ErrDataNoFound, errcode.ErrMsg[errcode.ErrDataNoFound], "")
}
}
2024-10-21 16:16:03 +08:00
func (e *Encounters) Detail(context *gin.Context) {
encounterId := context.Param("encounter_id")
encounters := curd.CreateEncounterCurdFactory().Detail(encounterId)
if encounters != nil {
response.Success(context, consts.CurdStatusOkMsg, encounters)
} else {
response.Fail(context, errcode.ErrDataNoFound, errcode.ErrMsg[errcode.ErrDataNoFound], "")
}
}