lckt-server/plugin/picturelibrary/service/service.go

71 lines
1.8 KiB
Go

package service
import (
"git.echol.cn/loser/lckt/global"
picModel "git.echol.cn/loser/lckt/plugin/picturelibrary/model"
"github.com/gin-gonic/gin"
"strings"
)
type PictureLibraryService struct{}
func (e *PictureLibraryService) PlugService() (err error) {
// 写你的业务逻辑
return nil
}
func (e *PictureLibraryService) GetFileRecordInfoList(info picModel.PageInfo, c *gin.Context) (list interface{}, total int64, err error) {
limit := info.Limit
offset := info.Limit * (info.Page - 1)
keyword := info.Keyword
cid := info.Cid
db := global.GVA_DB.Model(&picModel.SysAttachment{})
var fileLists []picModel.SysAttachment
if len(keyword) > 0 {
db = db.Where("`name` LIKE ?", "%"+keyword+"%")
}
if cid > 0 {
db = db.Where("cat_id = ?", cid)
}
err = db.Count(&total).Error
if err != nil {
return
}
err = db.Limit(limit).Offset(offset).Order("created_at desc").Find(&fileLists).Error
urlHost := e.GetUrlHost(c)
for k, v := range fileLists {
if !strings.HasPrefix(v.Url, "http://") && !strings.HasPrefix(v.Url, "https://") {
v.Url = urlHost + "api/" + v.Url
fileLists[k] = v
}
}
return fileLists, total, err
}
// 构建树形结构
func (e *PictureLibraryService) BuildTree(categories []picModel.SysAttachmentCategory, parentID uint) []*picModel.SysAttachmentCategory {
var tree []*picModel.SysAttachmentCategory
for _, category := range categories {
if category.Pid == parentID {
children := e.BuildTree(categories, category.Id)
category.Children = children
tree = append(tree, &category)
}
}
return tree
}
func (e *PictureLibraryService) GetUrlHost(c *gin.Context) string {
host := c.Request.Host
scheme := "http"
if c.Request.TLS != nil {
scheme = "https"
}
referer := c.Request.Referer()
if referer != "" {
return referer
}
return scheme + "://" + host + "/"
}