2024-11-09 14:59:27 +08:00
|
|
|
package service
|
|
|
|
|
|
|
|
import (
|
|
|
|
"mime/multipart"
|
|
|
|
"yitao/ecode"
|
|
|
|
"yitao/model"
|
|
|
|
"yitao/util"
|
|
|
|
)
|
|
|
|
|
|
|
|
type FileService struct{}
|
|
|
|
|
|
|
|
// UploadItemImg 上传商品图片
|
|
|
|
func (s *FileService) UploadItemImg(header *multipart.FileHeader) (*model.FileModel, *ecode.Ecode) {
|
|
|
|
file := new(model.FileModel)
|
|
|
|
file.Type = model.FileTypeItemImg
|
|
|
|
file.Name = header.Filename
|
|
|
|
file.Key = util.RandString(12)
|
|
|
|
file.Size = header.Size
|
2024-11-09 16:36:28 +08:00
|
|
|
file.State = model.FileStateNormal
|
2024-11-09 14:59:27 +08:00
|
|
|
file.Url = "/upload/item/img/" + file.Key + ".jpg"
|
|
|
|
file.SystemPath = "./public" + file.Url
|
|
|
|
model.DB.Create(file)
|
2024-11-21 21:52:35 +08:00
|
|
|
if file.ID == 0 {
|
|
|
|
return nil, ecode.File(ecode.FILE_CREATE_ERR)
|
|
|
|
}
|
2024-11-09 14:59:27 +08:00
|
|
|
|
|
|
|
return file, ecode.OK()
|
|
|
|
}
|
|
|
|
|
|
|
|
// 设置文件状态
|
2024-11-09 16:36:28 +08:00
|
|
|
func (s *FileService) SetFileState(id uint, status string) *ecode.Ecode {
|
2024-11-09 14:59:27 +08:00
|
|
|
file := new(model.FileModel)
|
|
|
|
model.DB.First(file, id)
|
|
|
|
if file.ID == 0 {
|
|
|
|
return ecode.File(ecode.FILE_NOT_FOUND)
|
|
|
|
}
|
2024-11-09 16:36:28 +08:00
|
|
|
file.State = status
|
2024-11-09 14:59:27 +08:00
|
|
|
model.DB.Save(file)
|
|
|
|
return ecode.OK()
|
|
|
|
}
|
2024-11-09 16:36:28 +08:00
|
|
|
|
|
|
|
// 获取文件Id
|
|
|
|
func (s *FileService) GetFileId(key string) (uint, *ecode.Ecode) {
|
|
|
|
file := new(model.FileModel)
|
|
|
|
model.DB.Where("`key`=?", key).Where("status=?", model.FileStateNormal).First(file)
|
|
|
|
if file.ID == 0 {
|
|
|
|
return 0, ecode.File(ecode.FILE_NOT_FOUND)
|
|
|
|
}
|
|
|
|
return file.ID, ecode.OK()
|
|
|
|
}
|
2024-11-21 21:52:35 +08:00
|
|
|
|
|
|
|
// 批量验证文件是否存在
|
|
|
|
func (s *FileService) CheckFiles(keys []string) *ecode.Ecode {
|
|
|
|
files := make([]model.FileModel, 0)
|
|
|
|
model.DB.Where("`key` in (?)", keys).Find(&files)
|
|
|
|
if len(files) != len(keys) {
|
|
|
|
return ecode.File(ecode.FILE_NOT_FOUND)
|
|
|
|
}
|
|
|
|
return ecode.OK()
|
|
|
|
}
|