Files
huangguo_server/models/v/signtaskmod/web.go
T
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

88 lines
2.9 KiB
Go

package signtaskmod
import (
"time"
"91porn-server/models/commod"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo/options"
)
type AddConfigCond struct {
Title string `json:"title"` // 任务标题
Desc string `json:"desc"` // 任务描述
FinishCondition int64 `json:"finishCondition"` // 达成条件 Todo:连续签到多少天
Prizes []primitive.ObjectID `json:"prizes"` // 奖品列表
ExtraPrizes []primitive.ObjectID `json:"extraPrizes"` // 额外奖品列表
Img string `json:"img" bson:"img"` // 任务图片
Link string `json:"link" bson:"link"` // 跳转链接
Status bool `json:"status"` // 启用/禁用
}
type ModifyConfigCond struct {
ID primitive.ObjectID `json:"id"` // 任务id
Title *string `json:"title"` // 任务标题
Desc *string `json:"desc"` // 任务描述
FinishCondition *int64 `json:"finishCondition"` // 达成条件 Todo:连续签到多少天
Prizes []primitive.ObjectID `json:"prizes"` // 奖品列表
ExtraPrizes []primitive.ObjectID `json:"extraPrizes"` // 额外奖品列表
Img *string `json:"img" bson:"img"` // 任务图片
Link *string `json:"link" bson:"link"` // 跳转链接
Status *bool `json:"status"` // 启用/禁用
}
func (m *ModifyConfigCond) Cond() primitive.M {
return bson.M{"_id": m.ID}
}
func (m *ModifyConfigCond) Bson() primitive.M {
set := bson.M{"updateTime": time.Now()}
if m.FinishCondition != nil {
set["finishCondition"] = m.FinishCondition
}
if m.Title != nil {
set["title"] = m.Title
}
if m.Desc != nil {
set["desc"] = m.Desc
}
if m.FinishCondition != nil {
set["finishCondition"] = m.FinishCondition
}
if m.Prizes != nil {
set["prizes"] = m.Prizes
}
if m.ExtraPrizes != nil {
set["extraPrizes"] = m.ExtraPrizes
}
if m.Img != nil {
set["img"] = m.Img
}
if m.Link != nil {
set["link"] = m.Link
}
if m.Status != nil {
set["status"] = m.Status
}
return bson.M{"$set": set}
}
type QueryAllConfigCond struct {
Status *bool `form:"status,omitempty"` // 启用/禁用
commod.Page
}
func (q *QueryAllConfigCond) Options() *options.FindOptions {
return options.Find().SetLimit(int64(q.PageSize)).SetSkip(int64((q.PageNumber - 1) * q.PageSize)).SetSort(bson.M{"finishCondition": 1})
}
func (q *QueryAllConfigCond) Query() primitive.M {
fliter := bson.M{}
if q.Status != nil {
fliter["status"] = q.Status
}
return fliter
}