diff --git a/models/Image.go b/models/Image.go index 9f54d26..d91433d 100644 --- a/models/Image.go +++ b/models/Image.go @@ -38,6 +38,7 @@ type Image struct { Public bool `json:"public"` // 是否公开 UserID int `json:"user_id"` // 用户ID ModelID int `json:"model_id"` // 模型ID + Preview string `json:"preview" gorm:"-"` // 实时预览 base64 CreatedAt time.Time `json:"created_at" gorm:"autoCreateTime"` UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"` } diff --git a/models/Model.go b/models/Model.go index 18f9f30..1f9068c 100644 --- a/models/Model.go +++ b/models/Model.go @@ -176,11 +176,14 @@ func (model *Model) Inference(image_list []Image, callback func(Image)) { image_list[index].Format = "webp" image_list[index].Status = "success" image_list[index].Progress = 100 + //image_list[index].Preview = img callback(image_list[index]) } log.Println("推理完成:", model.ID, model.Name) } +// 加入推理任务 + // 将base64编码的图片保存到本地webp func SaveBase64Image(base64Str string, filename string) error { // 解码base64图片 diff --git a/routers/images.go b/routers/images.go index 0789982..dda1115 100644 --- a/routers/images.go +++ b/routers/images.go @@ -87,6 +87,35 @@ func ImagesGet(w http.ResponseWriter, r *http.Request) { var image_list []models.Image db := configs.ORMDB() + if r.URL.Query().Get("task") != "" { + db = db.Where("task = ?", r.URL.Query().Get("task")) + } + if r.URL.Query().Get("user_id") != "" { + db = db.Where("user_id = ?", r.URL.Query().Get("user_id")) + } + if r.URL.Query().Get("status") != "" { + db = db.Where("status = ?", r.URL.Query().Get("status")) + } + if r.URL.Query().Get("from_image") != "" { + db = db.Where("from_image = ?", r.URL.Query().Get("from_image")) + } + if r.URL.Query().Get("prompt") != "" { + db = db.Where("prompt LIKE ?", "%"+r.URL.Query().Get("prompt")+"%") + } + if r.URL.Query().Get("negative_prompt") != "" { + db = db.Where("negative_prompt LIKE ?", "%"+r.URL.Query().Get("negative_prompt")+"%") + } + + // 获取指定用户喜欢的图片 + if r.URL.Query().Get("like") != "" { + list, err := models.LikeImage.GetA(r.URL.Query().Get("like")) + if err != nil { + log.Println(err) + return + } + db = db.Where("id IN (?)", list) + } + db.Offset((listview.Page - 1) * listview.PageSize).Limit(listview.PageSize).Find(&image_list) for _, image := range image_list { listview.List = append(listview.List, image) @@ -286,12 +315,17 @@ func ImagesItemPatch(w http.ResponseWriter, r *http.Request) { w.Write(utils.ToJSON(image)) } +// 删除一条图片 func ImagesItemDelete(w http.ResponseWriter, r *http.Request) { image := models.Image{ID: utils.ParamInt(mux.Vars(r)["id"], 0)} if err := configs.ORMDB().Delete(&image).Error; err != nil { log.Println(err) return } + // TODO: 删除本地文件 + // 删除所有喜欢此图片的记录(双向解绑, A是user, B是image) + models.LikeImage.RemoveB(strconv.Itoa(image.ID)) + w.Header().Set("Content-Type", "application/json; charset=utf-8") w.Write(utils.ToJSON(image)) }