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

172 lines
4.9 KiB
Go

package activitymod
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"
)
// ActReq 活动请求,公告跳转到活动页面
type ActReq struct {
Token string `form:"token" json:"token"`
Type string `form:"type" json:"type"`
}
// 新增活动
type AddCond struct {
Title string `json:"title"` // 活动名称
Desc string `json:"desc"` // 活动注意事项
StartTime time.Time `json:"startTime"` // 活动开始时间
EndTime time.Time `json:"endTime"` // 活动结束时间
}
// 修改活动
type ModifyCond struct {
ID primitive.ObjectID `json:"id" binding:"required"` // 文档ID
Title *string `json:"title"` // 活动名称
Desc *string `json:"desc"` // 活动注意事项
Status *bool `json:"status"` // 状态---启用/禁用
StartTime *time.Time `json:"startTime"` // 活动开始时间
EndTime *time.Time `json:"endTime"` // 活动结束时间
}
func (m *ModifyCond) Cond() primitive.M {
return bson.M{"_id": m.ID}
}
func (m *ModifyCond) Bson() primitive.M {
set := bson.M{"updatedAt": time.Now()}
if m.Title != nil {
set["title"] = m.Title
}
if m.Desc != nil {
set["desc"] = m.Desc
}
if m.Status != nil {
set["status"] = m.Status
}
if m.StartTime != nil {
set["startTime"] = m.StartTime
}
if m.EndTime != nil {
set["endTime"] = m.EndTime
}
return bson.M{"$set": set}
}
// 查询活动列表
type QueryAllCond struct {
Status *bool `form:"status"` // 状态---启用/禁用
commod.Page
}
func (q *QueryAllCond) Options() *options.FindOptions {
return options.Find().SetLimit(int64(q.PageSize)).SetSkip(int64((q.PageNumber - 1) * q.PageSize)).SetSort(bson.M{"createdAt": -1})
}
func (q *QueryAllCond) Query() primitive.M {
fliter := bson.M{}
if q.Status != nil {
fliter["status"] = q.Status
}
return fliter
}
// 新增活动奖池
type AddPrizePoolCond struct {
ActivityID primitive.ObjectID `json:"activityId" binding:"required"` // 活动ID
Model PrizePoolModel `json:"model"` // 奖池模式
EstimatedIncome int64 `json:"estimatedIncome"` // 当日预计收益
Price int64 `json:"price"` // 单次抽奖金额
FreeCount int32 `json:"freeCount"` // 免费次数
}
// 修改活动奖池
type ModifyPrizePoolCond struct {
ID primitive.ObjectID `json:"id" binding:"required"` // 文档ID
ActivityID *primitive.ObjectID `json:"activityId"` // 活动ID
Model *PrizePoolModel `json:"model"` // 奖池模式
EstimatedIncome *int64 `json:"estimatedIncome"` // 当日预计收益
Price *int64 `json:"price"` // 单次抽奖金额
FreeCount *int32 `json:"freeCount"` // 免费次数
}
func (m *ModifyPrizePoolCond) Cond() primitive.M {
return bson.M{"_id": m.ID}
}
func (m *ModifyPrizePoolCond) Bson() primitive.M {
set := bson.M{"updatedAt": time.Now()}
if m.ActivityID != nil {
set["activityId"] = m.ActivityID
}
if m.Model != nil {
set["model"] = m.Model
}
if m.EstimatedIncome != nil {
set["estimatedIncome"] = m.EstimatedIncome
}
if m.Price != nil {
set["price"] = m.Price
}
if m.FreeCount != nil {
set["freeCount"] = m.FreeCount
}
return bson.M{"$set": set}
}
// 查询活动奖池列表
type QueryAllPrizePoolCond struct {
Model *PrizePoolModel `form:"model"` // 奖池模式
ActivityID *string `form:"activityId"` // 活动ID
commod.Page
}
func (q *QueryAllPrizePoolCond) Options() *options.FindOptions {
return options.Find().SetLimit(int64(q.PageSize)).SetSkip(int64((q.PageNumber - 1) * q.PageSize)).SetSort(bson.M{"createdAt": -1})
}
func (q *QueryAllPrizePoolCond) Query() primitive.M {
fliter := bson.M{}
if q.Model != nil {
fliter["model"] = q.Model
}
if q.ActivityID != nil {
id, _ := primitive.ObjectIDFromHex(*q.ActivityID)
fliter["activityId"] = id
}
return fliter
}
// 查询活动参与记录列表
type QueryAllRecordCond struct {
ActivityID *string `form:"activityId"` // 活动ID
UID *string `form:"uid"` // 活动ID
commod.Page
}
func (q *QueryAllRecordCond) Options() *options.FindOptions {
return options.Find().SetLimit(int64(q.PageSize)).SetSkip(int64((q.PageNumber - 1) * q.PageSize)).SetSort(bson.M{"createTime": -1})
}
func (q *QueryAllRecordCond) Query() primitive.M {
fliter := bson.M{}
if q.UID != nil {
fliter["uid"] = q.UID
}
if q.ActivityID != nil {
id, _ := primitive.ObjectIDFromHex(*q.ActivityID)
fliter["activityId"] = id
}
return fliter
}
type OpenBotDrawCond struct {
ID primitive.ObjectID `json:"id" binding:"required"` // 活动ID
Status bool
}