blog/BlogFileService/internal/service/FileService.go

61 lines
1.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package service
import (
"BlogFile/internal/model/admin"
"BlogFile/internal/model/vo"
"BlogFile/third_party/database"
"Common/consts"
"context"
"log"
"time"
)
type fileService struct {
}
var FileService fileService
func (*fileService) GetFile(id string) (vo.CommonFiles, error) {
ctx := context.Background()
var file vo.CommonFiles
var bytes []byte
err := database.RedisTemplate.Get(ctx, consts.REDIS_FILE+id).Scan(&file)
//如果缓存不存在则查数据库并存入Redis
if err != nil || file.Id == "" {
database.GormTemplate.Table("common_files").Where("id = ?", id).First(&file)
bytes = file.Data
err = database.RedisTemplate.Set(ctx, consts.REDIS_FILE+id, &file, time.Duration(0)).Err()
if err != nil {
log.Println(err)
}
err = database.RedisTemplate.Set(ctx, consts.REDIS_FILE_BYTES+id, bytes, time.Duration(0)).Err()
if err != nil {
log.Println(err)
}
return file, nil
}
bytes, err = database.RedisTemplate.Get(ctx, consts.REDIS_FILE_BYTES+id).Bytes()
file.Data = bytes
return file, err
}
func (*fileService) PageSysFiles(page int, itemsPerPage int) vo.Page[admin.SysFile] {
var content []admin.SysFile
var totalElements int64
database.GormTemplate.Table("common_files").Count(&totalElements)
database.GormTemplate.Table("common_files").
Where("del != ?", 1).
Offset((page - 1) * itemsPerPage).
Limit(itemsPerPage).
Order("create_time DESC").
Find(&content)
pre := int(totalElements) % itemsPerPage
if pre > 0 {
pre = 1
}
var totalPages int = int(totalElements)/itemsPerPage + pre
return vo.Page[admin.SysFile]{TotalElements: totalElements, TotalPages: totalPages, Number: page, Content: content}
}