YiTao/service/file_service.go

61 lines
1.5 KiB
Go

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
file.State = model.FileStateNormal
file.Url = "/upload/item/img/" + file.Key + ".jpg"
file.SystemPath = "./public" + file.Url
model.DB.Create(file)
if file.ID == 0 {
return nil, ecode.File(ecode.FILE_CREATE_ERR)
}
return file, ecode.OK()
}
// 设置文件状态
func (s *FileService) SetFileState(id uint, status string) *ecode.Ecode {
file := new(model.FileModel)
model.DB.First(file, id)
if file.ID == 0 {
return ecode.File(ecode.FILE_NOT_FOUND)
}
file.State = status
model.DB.Save(file)
return ecode.OK()
}
// 获取文件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()
}
// 批量验证文件是否存在
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()
}