Files
huangguo_server/models/v/usermod/list.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

219 lines
4.1 KiB
Go

package usermod
import (
"91porn-server/common/pageopt"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo/options"
)
type Matcher = pageopt.Matcher
const districtCode = "districtCode"
// DistrictCodeGtMatch
type DistrictCodeGtMatch struct {
GT *string
}
func (s *DistrictCodeGtMatch) New() Matcher {
return pageopt.NewGTMatch(districtCode, s.GT)
}
// DistrictCodeMatch
type DistrictCodeMatch struct {
DistrictCode *string
}
func (s *DistrictCodeMatch) New() Matcher {
return pageopt.NewAssignMatch(districtCode, s.DistrictCode)
}
// DistrictCodeINMatch
type DistrictCodeINMatch struct {
DistrictCodeList []string
}
func (d *DistrictCodeINMatch) New() Matcher {
return pageopt.NewInMatch(districtCode, d.DistrictCodeList)
}
// PromSeqeMatch
type PromSeqeMatch struct {
Seqe *string
}
func (d *PromSeqeMatch) New() Matcher {
return pageopt.NewAssignMatch("promSeqe", d.Seqe)
}
// SysTypeMatch
type SysTypeMatch struct {
SysType *string
}
func (s *SysTypeMatch) New() Matcher {
return pageopt.NewAssignMatch("sysType", s.SysType)
}
// IsDirectMatch
type IsDirectMatch struct {
IsDirect *bool
}
func (b *IsDirectMatch) New() Matcher {
return pageopt.NewAssignMatch("isDirect", b.IsDirect)
}
// DevIDRegexMatch
type DevIDRegexMatch struct {
DevID *string
}
func (d *DevIDRegexMatch) New() Matcher {
return pageopt.NewRegexMatch("devID", d.DevID, "i")
}
// VipLevelMatch
type VipLevelMatch struct {
VipLevel *int
}
func (v *VipLevelMatch) New() Matcher {
return pageopt.NewAssignMatch("vipLevel", v.VipLevel)
}
// NameRegexMatch
type NameRegexMatch struct {
Name *string
}
func (n *NameRegexMatch) New() Matcher {
return pageopt.NewRegexMatch("name", n.Name, "i")
}
// MobileMatch
type MobileMatch struct {
Mobile *string
}
func (m *MobileMatch) New() Matcher {
return pageopt.NewAssignMatch("mobile", m.Mobile)
}
// PromotionCodeMatch
type PromotionCodeMatch struct {
PromotionCode *string
}
func (p *PromotionCodeMatch) New() Matcher {
return pageopt.NewAssignMatch("promotionCode", p.PromotionCode)
}
// HasPromotionCodeMatch
type HasPromotionCodeMatch struct {
IsExisted *bool
}
func (h *HasPromotionCodeMatch) New() Matcher {
return pageopt.NewExistsMatch("promotionCode", h.IsExisted)
}
// AutoFollowMatch
type AutoFollowMatch struct {
AutoFollow *bool
}
func (l *AutoFollowMatch) New() Matcher {
return pageopt.NewAssignMatch("autoFollow", l.AutoFollow)
}
// LockedMatch
type LockedMatch struct {
Locked *bool
}
func (l *LockedMatch) New() Matcher {
return pageopt.NewAssignMatch("hasLocked", l.Locked)
}
// BannedMatch
type BannedMatch struct {
Banned *bool
}
func (b *BannedMatch) New() Matcher {
return pageopt.NewAssignMatch("hasBanned", b.Banned)
}
// CanUploadMatch
type ForbidUploadMatch struct {
ForbidUpload *bool
}
func (c *ForbidUploadMatch) New() Matcher {
return pageopt.NewAssignMatch("forbidUpload", c.ForbidUpload)
}
// TrueScoreGTEMatch
type TrueScoreGTEMatch struct {
GTE *int64
}
func (b *TrueScoreGTEMatch) New() Matcher {
return pageopt.NewGTEMatch("trueScore", b.GTE)
}
// TrueScoreMatch
type TrueScoreMatch struct {
TrueScore *int64
}
func (b *TrueScoreMatch) New() Matcher {
return pageopt.NewAssignMatch("trueScore", b.TrueScore)
}
type RegisterIpMatch struct {
RegisterIp *string
}
func (b *RegisterIpMatch) New() Matcher {
return pageopt.NewAssignMatch("registerIP", b.RegisterIp)
}
// CreatedAtGTEAndLTMatch
type CreatedAtGTEAndLTMatch = pageopt.CreatedAtGTEAndLTMatch
// UIDInMatch
type UIDInMatch = pageopt.UIDInMatch
// UIDMatch
type UIDMatch = pageopt.UIDMatch
type Sort = bson.D
var Sort_CreatedAt_n1 = Sort{{Key: "createdAt", Value: -1}}
type UserSlice []User
func List(sort bson.D, skip, limit *int64, matchs ...Matcher) (UserSlice, error) {
opt := (&options.FindOptions{})
if len(sort) != 0 {
opt.SetSort(sort)
}
if skip != nil {
opt.SetSkip(*skip)
}
if limit != nil {
opt.SetLimit(*limit)
}
filter := pageopt.MergeM(matchs)
userList := UserSlice{}
return userList, coll(nil).Find(&userList, filter, opt)
}
func Count(matchs ...Matcher) (int64, error) {
filter := pageopt.MergeM(matchs)
return coll(nil).Count(filter)
}