71 lines
1.8 KiB
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 + "/"
|
|
}
|