package prizemod import ( "time" "91porn-server/models/commod" "github.com/shopspring/decimal" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo/options" ) // 新增活动奖品 type AddPrizeCond struct { ActivityID primitive.ObjectID `json:"activityId"` // 活动ID VIPCardID primitive.ObjectID `json:"vipCardId"` // 会员卡ID Name string `json:"name" binding:"required"` // 奖品名称 Type PrizeType `json:"type" binding:"required"` // 奖品类型 Count int32 `json:"count"` // 奖品数量 Price int64 `json:"price"` // 奖品价值 Sort int32 `json:"sort"` // 奖品排序 Desc string `json:"desc"` // 奖品描述 Value int64 `json:"value"` // 折扣率/活跃值 Weights decimal.Decimal `json:"weights"` // 中奖权重 Level PrizeLevel `json:"level"` // 奖品等级 Status bool `json:"status"` // 启用/禁用 ValidityTime int64 `json:"validityTime"` // 奖品有效期 单位: 天 Image string `json:"image"` // 图片地址 } // 修改活动奖品 type ModifyPrizeCond struct { ID primitive.ObjectID `json:"id" binding:"required"` // 文档ID ActivityID *primitive.ObjectID `json:"activityId"` // 活动ID VIPCardID *primitive.ObjectID `json:"vipCardId"` // 会员卡ID Name *string `json:"name"` // 奖品名称 Type *PrizeType `json:"type"` // 奖品类型 Count *int32 `json:"count"` // 奖品数量 Price *int64 `json:"price"` // 奖品价值 Sort *int32 `json:"sort"` // 奖品排序 Desc *string `json:"desc"` // 奖品描述 Value *int64 `json:"value"` // 折扣率/活跃值 Weights *decimal.Decimal `json:"weights"` // 中奖权重 Level *PrizeLevel `json:"level"` // 奖品等级 Status *bool `json:"status"` // 启用/禁用 ValidityTime *int64 `json:"validityTime"` // 奖品有效期 单位: 天 Image *string `json:"image"` // 图片地址 } func (m *ModifyPrizeCond) Cond() primitive.M { return bson.M{"_id": m.ID} } func (m *ModifyPrizeCond) Bson() primitive.M { set := bson.M{"updatedAt": time.Now()} if m.ActivityID != nil { set["activityId"] = m.ActivityID } if m.VIPCardID != nil { set["vipCardId"] = m.VIPCardID } if m.Name != nil { set["name"] = m.Name } if m.Type != nil { set["type"] = m.Type } if m.Price != nil { set["price"] = m.Price } if m.Value != nil { set["value"] = m.Value } if m.Count != nil { set["count"] = m.Count } if m.Sort != nil { set["sort"] = m.Sort } if m.Desc != nil { set["desc"] = m.Desc } if m.Weights != nil { set["weights"] = m.Weights } if m.Level != nil { set["level"] = m.Level } if m.Status != nil { set["status"] = m.Status } if m.ValidityTime != nil { set["validityTime"] = m.ValidityTime } if m.Image != nil { set["image"] = m.Image } return bson.M{"$set": set} } // 查询活动奖品列表 type QueryAllPrizeCond struct { Status *bool `form:"status"` // 状态---启用/禁用 Type *PrizeType `form:"type"` // 奖品类型 ActivityID *string `form:"activityId"` // 活动ID commod.Page } func (q *QueryAllPrizeCond) Options() *options.FindOptions { return options.Find().SetLimit(int64(q.PageSize)).SetSkip(int64((q.PageNumber - 1) * q.PageSize)).SetSort(bson.M{"createdAt": -1}) } func (q *QueryAllPrizeCond) Query() primitive.M { fliter := bson.M{} if q.Status != nil { fliter["status"] = q.Status } if q.Type != nil { fliter["type"] = q.Type } if q.ActivityID != nil { id, _ := primitive.ObjectIDFromHex(*q.ActivityID) fliter["activityId"] = id } return fliter }