mirror of https://github.com/IoTcat/auxpi.git
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.
116 lines
2.4 KiB
116 lines
2.4 KiB
package models |
|
|
|
import ( |
|
"github.com/auxpi/auxpiAll" |
|
) |
|
|
|
type Distribution struct { |
|
Model |
|
|
|
Hash string `gorm:"INDEX;" json:"hash"` |
|
Url string `json:"url"` |
|
IP string `json:"ip"` |
|
Short string `json:"short"` |
|
DispatchUrl string `json:"dispatch_url"` |
|
|
|
StoreID int `json:"store_id"` |
|
Store Store `json:"store"` |
|
|
|
UserID int `json:"user_id"` |
|
User User `json:"user"` |
|
|
|
RootID int `json:"root_id"` |
|
Root Store `gorm:"ForeignKey:RootID";json:"root"` |
|
RootUrl string `json:"root_url"` |
|
Number int `json:"number"` |
|
} |
|
|
|
func CreateDistribution(distribution Distribution) bool { |
|
err := db.Create(&Distribution{ |
|
Hash: distribution.Hash, |
|
Url: distribution.Url, |
|
IP: distribution.IP, |
|
StoreID: distribution.StoreID, |
|
RootID: distribution.RootID, |
|
Short: distribution.Short, |
|
RootUrl: distribution.RootUrl, |
|
Number: 0, |
|
}).Error |
|
return modelsError(auxpi.ErrorToString(err)) |
|
} |
|
|
|
func ChangeUrl(hash string, url string, storeId int) bool { |
|
var d = &Distribution{} |
|
err := db.Model(&Distribution{}). |
|
Where("hash=?", hash). |
|
First(d).Error |
|
|
|
if d.ID <= 0 { |
|
return false |
|
} |
|
|
|
d.Number++ |
|
d.Url = url |
|
d.StoreID = storeId |
|
err = db.Save(d).Error |
|
|
|
return modelsError(auxpi.ErrorToString(err)) |
|
} |
|
|
|
//图片回源处理 |
|
func BackToSource(hash string) bool { |
|
var d = &Distribution{} |
|
err := db.Model(&Distribution{}). |
|
Where("hash=?", hash). |
|
First(d).Error |
|
|
|
if d.ID <= 0 { |
|
return false |
|
} |
|
|
|
d.Number = -1 |
|
d.Url = d.RootUrl |
|
d.StoreID = d.RootID |
|
err = db.Save(d).Error |
|
|
|
return modelsError(auxpi.ErrorToString(err)) |
|
} |
|
|
|
func GetUrlByHash(hash string) (dis Distribution, s bool) { |
|
err := db.Model(&Distribution{}). |
|
Where("hash=?", hash). |
|
First(&dis). |
|
Error |
|
if dis.ID <= 0 { |
|
s = false |
|
return |
|
} |
|
s = modelsError(auxpi.ErrorToString(err)) |
|
return |
|
} |
|
|
|
//分页获取列表 |
|
func GetDistributionList(pageNum int, pageSize int, maps interface{}, sort string) (distribution []Distribution, count int) { |
|
db.Preload("User"). |
|
Preload("Store"). |
|
Preload("Root"). |
|
Model(&Distribution{}). |
|
Where(maps). |
|
Order("`ID` " + sort). |
|
Count(&count). |
|
Offset(pageNum). |
|
Limit(pageSize). |
|
Find(&distribution) |
|
return |
|
} |
|
|
|
func MigrateDistribution() error { |
|
if db.HasTable(&Distribution{}) { |
|
err := db.DropTable(&Distribution{}).Error |
|
err = db.CreateTable(&Distribution{}).Error |
|
return err |
|
} else { |
|
err := db.CreateTable(&Distribution{}).Error |
|
return err |
|
} |
|
}
|
|
|