Files
2026-04-27 11:26:01 +08:00

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
}