57 lines
1.5 KiB
Go
57 lines
1.5 KiB
Go
package plant
|
|
|
|
import (
|
|
"sundynix-go/global"
|
|
"sundynix-go/model/plant"
|
|
"sundynix-go/model/plant/request"
|
|
)
|
|
|
|
type BannerService struct{}
|
|
|
|
func (s *BannerService) Create(req plant.Banner) error {
|
|
return global.DB.Create(&req).Error
|
|
}
|
|
|
|
func (s *BannerService) Delete(id string) error {
|
|
return global.DB.Where("id = ?", id).Delete(&plant.Banner{}).Error
|
|
}
|
|
|
|
func (s *BannerService) Update(req plant.Banner) error {
|
|
return global.DB.Model(&plant.Banner{}).Where("id = ?", req.Id).Updates(map[string]interface{}{
|
|
"title": req.Title,
|
|
"image_id": req.ImageId,
|
|
"sort": req.Sort,
|
|
"is_active": req.IsActive,
|
|
"target_url": req.TargetUrl,
|
|
}).Error
|
|
}
|
|
|
|
func (s *BannerService) GetList(req request.BannerPageReq) (list interface{}, total int64, err error) {
|
|
limit := req.PageSize
|
|
offset := req.PageSize * (req.Current - 1)
|
|
db := global.DB.Model(&plant.Banner{}).Preload("Image")
|
|
if req.Title != "" {
|
|
db = db.Where("title LIKE ?", "%"+req.Title+"%")
|
|
}
|
|
if req.IsActive != nil {
|
|
db = db.Where("is_active = ?", *req.IsActive)
|
|
}
|
|
|
|
var banners []plant.Banner
|
|
err = db.Count(&total).Error
|
|
if err != nil {
|
|
return
|
|
}
|
|
err = db.Order("sort asc, created_at desc").Limit(limit).Offset(offset).Find(&banners).Error
|
|
return banners, total, err
|
|
}
|
|
|
|
func (s *BannerService) GetActiveList() ([]plant.Banner, error) {
|
|
var banners []plant.Banner
|
|
err := global.DB.Model(&plant.Banner{}).Preload("Image").
|
|
Where("is_active = 1").
|
|
Order("sort asc, created_at desc").
|
|
Find(&banners).Error
|
|
return banners, err
|
|
}
|