Files
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

130 lines
3.4 KiB
Go
Executable File

package bannerjumpser
import (
"time"
"91porn-server/models/cache/bannerjumpdata"
"91porn-server/models/commod"
"91porn-server/models/v/bannerjumpmod"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
)
type WebListReq struct {
commod.Page
}
type WebListRes struct {
Total int64 `json:"total"`
HasNext bool `json:"hasNext"`
List []bannerjumpmod.BannerJump `json:"list"`
}
// GetList 获取列表
func (q *WebListReq) GetList() (res WebListRes, err error) {
filter := bson.M{}
res.List, res.Total, res.HasNext, err = bannerjumpmod.GetList(filter, int64(q.Skip()), int64(q.Limit()), q.GetSort())
return
}
type WebCreateReq struct {
Position int `json:"position" form:"position" binding:"required"` // 位置 1-视频播放器下方 2-收益页 3-首页浮窗
Banner string `json:"banner" form:"banner" binding:"required"` // BANNER图片
Title string `json:"title" form:"title" binding:"required"` // 标题
Url string `json:"url" form:"url" binding:"required"` // 跳转地址
StartAt time.Time `json:"startAt" form:"startAt" binding:"required"` // 开始时间
EndAt time.Time `json:"endAt" form:"endAt" binding:"required"` // 结束时间
Weight int `json:"weight" form:"weight" binding:"required"` // 权重
Enable bool `json:"enable" form:"enable" binding:"required"` // 是否启用
}
// Create 发布数据
func (p *WebCreateReq) Create() error {
data := bannerjumpmod.BannerJump{
Position: p.Position,
Banner: p.Banner,
Title: p.Title,
Url: p.Url,
StartAt: p.StartAt,
EndAt: p.EndAt,
Weight: p.Weight,
Enable: p.Enable,
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
}
// 创建数据
if _, err := bannerjumpdata.InsertData(nil, data); err != nil {
return err
}
return nil
}
type WebUpdateReq struct {
ID primitive.ObjectID `json:"id" binding:"required"`
Position *int `json:"position"` // 位置 1-视频播放器下方 2-收益页 3-首页浮窗
Banner *string `json:"banner"` // BANNER图片
Title *string `json:"title"` // 标题
Url *string `json:"url"` // 跳转地址
StartAt *time.Time `json:"startAt"` // 开始时间
EndAt *time.Time `json:"endAt"` // 结束时间
Weight *int `json:"weight"` // 权重
Enable *bool `json:"enable"` // 是否启用
}
// Update 更新数据
func (p *WebUpdateReq) Update() error {
_, err := bannerjumpmod.GetInfo(p.ID)
if err != nil {
return err
}
data := make(map[string]interface{})
if p.Position != nil {
data["position"] = *p.Position
}
if p.Banner != nil {
data["banner"] = *p.Banner
}
if p.Title != nil {
data["title"] = *p.Title
}
if p.Url != nil {
data["url"] = *p.Url
}
if p.StartAt != nil {
data["startAt"] = *p.StartAt
}
if p.EndAt != nil {
data["endAt"] = *p.EndAt
}
if p.Weight != nil {
data["weight"] = *p.Weight
}
if p.Enable != nil {
data["enable"] = *p.Enable
}
data["updatedAt"] = time.Now()
if _, err = bannerjumpdata.UpdateData(nil, p.ID.Hex(), data); err != nil {
return err
}
return nil
}
type WebDeleteReq struct {
ID primitive.ObjectID `json:"id" binding:"required"`
}
// Delete 删除数据
func (p *WebDeleteReq) Delete() error {
if err := bannerjumpdata.DeleteData(nil, p.ID); err != nil {
return err
}
return nil
}