94 lines
1.8 KiB
Go
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)
|
|
}
|