Files
huangguo_server/models/commod/disc.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

94 lines
1.8 KiB
Go

package commod
import (
"strings"
"time"
"91porn-server/common/pageopt"
)
type DiscSeqe struct {
DistrictCode string `json:"districtCode" bson:"districtCode"` //商区码
PromSeqe string `json:"promSeqe" bson:"promSeqe"` //推广序列
}
func (d *DiscSeqe) String() string {
if d.PromSeqe == "" {
return d.DistrictCode
}
return strings.ToUpper(strings.Join([]string{d.DistrictCode, d.PromSeqe}, "-"))
}
func (p *DiscSeqe) From(s string) *DiscSeqe {
p.Clean()
list := strings.Split(s, "-")
if len(list) > 0 {
p.DistrictCode = list[0]
}
if len(list) > 1 {
p.PromSeqe = list[1]
}
return p
}
func (p *DiscSeqe) Clean() {
p.DistrictCode = ""
p.PromSeqe = ""
}
type DiscDoc struct {
//商区码和推广序列
DiscSeqe `bson:",inline"`
//true:是直推用户
IsDirect bool `json:"isDirect" bson:"isDirect"`
//商区绑定时间
DiscBindAt time.Time `bson:"discBindAt"`
}
func NewDiscDoc(discSeqe DiscSeqe, isDirect bool, discBindAt time.Time) DiscDoc {
return DiscDoc{
discSeqe,
isDirect, //直推:推广链接没有推广码, 否则是分裂,
discBindAt,
}
}
type Matcher = pageopt.Matcher
// IsDirectMatch
type IsDirectMatch struct {
IsDirect *bool
}
func (b *IsDirectMatch) New() Matcher {
return pageopt.NewAssignMatch("isDirect", b.IsDirect)
}
// DistrictCodeMatch
type DistrictCodeMatch struct {
DistrictCode *string
}
func (s *DistrictCodeMatch) New() Matcher {
return pageopt.NewAssignMatch("districtCode", s.DistrictCode)
}
// DistrictCodeInMatch
type DistrictCodeInMatch struct {
Codes []string
}
func (s *DistrictCodeInMatch) New() Matcher {
return pageopt.NewInMatch("districtCode", s.Codes)
}
// DiscBindAtGTEAndLTMatch
type DiscBindAtGTEAndLTMatch struct {
GTE *time.Time
LT *time.Time
}
func (c *DiscBindAtGTEAndLTMatch) New() Matcher {
return pageopt.NewGTEAndLTMatch("discBindAt", c.GTE, c.LT)
}