You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

174 lines
3.4 KiB

package models
import (
"os"
"github.com/auxpi/auxpiAll"
"github.com/auxpi/bootstrap"
"github.com/astaxie/beego"
)
type Image struct {
Model
Name string `json:"name"`
Link string `json:"link" `
//属于
StoreID int `gorm:"INDEX" json:"store_id"`
UserID int `gorm:"INDEX" json:"user_id"`
IP string `json:"ip"`
//本地,CC ,SM 可以使用
Delete string `gorm:"size:255;" json:"delete"`
//本地储存位置 仅本地可用
Path string `json:"path"`
//获取外键
User User `json:"user"`
Store Store `json:"store"`
}
//首页统计各个图床占比返回
type AllImageStore struct {
Sid uint `json:"-"`
Name string `json:"name"`
Total int `json:"value"`
}
func AddImage(image *auxpi.ImageJson) bool {
db.Create(&Image{
Name: image.Name,
Link: image.Url,
UserID: image.UserID,
StoreID: image.StoreID,
Delete: image.Delete,
Path: image.Path,
})
return true
}
func GetStoreNameByImageID(id int) string {
var s Store
db.Select("name").Where("id=?", id).First(&s)
return s.Name
}
func GetImages(pageNum int, pageSize int, maps interface{}, sort string) (images []Image, count int) {
db.Preload("User").
Preload("Store").
Model(&Image{}).
Where(maps).
Order("`ID` " + sort).
Count(&count).
Offset(pageNum).
Limit(pageSize).
Find(&images)
return
}
func GetImagesByUserId(pageNum int, pageSize int, maps interface{}, sort string) (image []Image, count int) {
err := db.Preload("User").
Preload("Store").
Model(&Image{}).
Where(maps).
Count(&count).
Offset(pageNum).
Limit(pageSize).
Order("`ID` " + sort).
Find(&image).Error
modelsError(auxpi.ErrorToString(err))
return
}
func GetAllImagesStoreNumber() (result []AllImageStore) {
err := db.Model(&Image{}).
Select("`store_id` AS `sid`, store.`name` as `name` , count(*) as `total`").
Joins("left join `" +
bootstrap.SiteConfig.DbOption.TablePrefix +
"store` AS `store` on store.`id`=" +
bootstrap.SiteConfig.DbOption.TablePrefix +
"image.`store_id` ").
Group("store_id").
Scan(&result).Error
modelsError(auxpi.ErrorToString(err))
return
}
func GetAllImagesReport() (report []Report) {
err := db.Model(&Image{}).
Select("COUNT(*) AS `number` , created_day AS `date`").
Order("`created_day` DESC").
Group("`created_day`").
Limit(7).
Scan(&report).Error
modelsError(auxpi.ErrorToString(err))
return
}
func GetLocalImageReport() (report []Report) {
err := db.Model(&Image{}).
Select("COUNT(*) AS `number` , created_day AS `date`").
Where("store_id=?", 12).
Order("`created_day` DESC ").
Group("`created_day`").
Limit(7).
Scan(&report).Error
modelsError(auxpi.ErrorToString(err))
return
}
func DelImageByPath(ids []int) (images []Image) {
err := db.Model(&Image{}).Select("path").Where(ids).Find(&images).Error
if err != nil {
beego.Alert("[Delete Image Record From DataBase Error]:", err)
return
}
//删除图片
for _, value := range images {
if value.Path != "" {
err := os.Remove(value.Path)
beego.Alert("remove :? )")
if err != nil {
AddLog("IMAGE_DELETE", auxpi.ErrorToString(err), "SYSTEM", "ERROR")
beego.Alert("[Delete Images localStore Error]:", err)
}
}
}
return
}
func DelImages(ids []int) error {
DelImageByPath(ids)
return db.
Where(ids).
Delete(&Image{}).
Error
}
func MigrateImages() error {
err := db.DropTableIfExists(&Image{}).Error
if err != nil {
return err
}
err = db.CreateTable(&Image{}).Error
return err
}