Files
huangguo_server/models/v/wdordmod/discStat.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

171 lines
4.5 KiB
Go

package wdordmod
import (
"strings"
"time"
"91porn-server/common/pageopt"
"91porn-server/common/ysinterface/disc"
)
// DistrictStatKey
type DistrictStatKey struct {
DiscSeqe `bson:",inline"` //商区码
DeviceType string `bson:"deviceType"` //系统类型 iOS Android
}
var (
discWithdraw = DiscWithdraw
)
func (d DistrictStatKey) GetDiscCode() string {
return d.DistrictCode
}
func (d DistrictStatKey) GetPromSeqe() string {
return d.PromSeqe
}
func (d DistrictStatKey) GetSysType() string {
return d.DeviceType
}
func (d DistrictStatKey) String() string {
if d.DiscSeqe.String() == "" {
return ""
}
return strings.ToUpper(strings.Join([]string{d.DiscSeqe.String(), d.DeviceType}, "-"))
}
// DistrictStater
type DistrictStater = disc.DistrictStater
// DistrictOrderCountMap districtCode->订单数 map
func DistrictOrderCountMap(start, end time.Time, mats ...Matcher) (map[DistrictStater]int64, error) {
mats = append(mats,
(&CreatedAtGTEAndLTMatch{&start, &end}).New(),
(&WithdrawTypeNEMatch{&discWithdraw}).New(),
)
filter := pageopt.MergeM(mats)
list := []DistrictStatKey{}
if err := coll(nil).Find(&list, filter); err != nil {
return nil, err
}
m := make(map[DistrictStater]int64, len(list))
for _, v := range list {
if v.String() != "" {
m[v] += 1
}
}
return m, nil
}
// DistrictOrderMoneyMap districtCode->订单金额 map
func DistrictOrderMoneyMap(start, end time.Time, mats ...Matcher) (map[DistrictStater]int64, error) {
mats = append(mats,
(&CreatedAtGTEAndLTMatch{&start, &end}).New(),
(&WithdrawTypeNEMatch{&discWithdraw}).New(),
)
filter := pageopt.MergeM(mats)
list := []struct {
DistrictStatKey `bson:",inline"` //商区码
Money int64 `bson:"money"` //提现金额
}{}
if err := coll(nil).Find(&list, filter); err != nil {
return nil, err
}
m := make(map[DistrictStater]int64, len(list))
for _, v := range list {
if v.String() != "" {
m[v.DistrictStatKey] += v.Money
}
}
return m, nil
}
// DistrictCompleteOrderCountMap districtCode->完成订单数 map
func DistrictCompleteOrderCountMap(start, end time.Time, mats ...Matcher) (map[DistrictStater]int64, error) {
mats = append(mats,
(&SuccessAtGTEAndLTMatch{&start, &end}).New(),
(&WithdrawTypeNEMatch{&discWithdraw}).New(),
)
filter := pageopt.MergeM(mats)
list := []DistrictStatKey{}
if err := coll(nil).Find(&list, filter); err != nil {
return nil, err
}
m := make(map[DistrictStater]int64, len(list))
for _, v := range list {
if v.String() != "" {
m[v] += 1
}
}
return m, nil
}
// DistrictCompleteOrderPayMoneyMap districtCode->完成订单的实际到账金额 map
func DistrictCompleteOrderPayMoneyMap(start, end time.Time, mats ...Matcher) (map[DistrictStater]int64, error) {
mats = append(mats,
(&SuccessAtGTEAndLTMatch{&start, &end}).New(),
(&WithdrawTypeNEMatch{&discWithdraw}).New(),
)
filter := pageopt.MergeM(mats)
list := []struct {
DistrictStatKey `bson:",inline"` //商区码
PayMoney int64 `bson:"payMoney"` //实际到账金额 李秋山确认
}{}
if err := coll(nil).Find(&list, filter); err != nil {
return nil, err
}
m := make(map[DistrictStater]int64, len(list))
for _, v := range list {
if v.String() != "" {
m[v.DistrictStatKey] += v.PayMoney
}
}
return m, nil
}
// DistrictReceivedOrderCountMap districtCode->已出款订单数 map
func DistrictReceivedOrderCountMap(start, end time.Time, mats ...Matcher) (map[DistrictStater]int64, error) {
mats = append(mats,
(&ReceivedAtGTEAndLTMatch{&start, &end}).New(),
(&WithdrawTypeNEMatch{&discWithdraw}).New(),
)
list := []DistrictStatKey{}
filter := pageopt.MergeM(mats)
if err := coll(nil).Find(&list, filter); err != nil {
return nil, err
}
m := make(map[DistrictStater]int64, len(list))
for _, v := range list {
if v.String() != "" {
m[v] += 1
}
}
return m, nil
}
// DistrictReceivedMoneyMap districtCode->已出款金额 map
func DistrictReceivedMoneyMap(start, end time.Time, mats ...Matcher) (map[DistrictStater]int64, error) {
list := []struct {
DistrictStatKey `bson:",inline"` //商区码
PayMoney int64 `bson:"payMoney"` //实际到账金额 李秋山确认
}{}
mats = append(mats,
(&ReceivedAtGTEAndLTMatch{&start, &end}).New(),
(&WithdrawTypeNEMatch{&discWithdraw}).New(),
)
filter := pageopt.MergeM(mats)
if err := coll(nil).Find(&list, filter); err != nil {
return nil, err
}
m := make(map[DistrictStater]int64, len(list))
for _, v := range list {
if v.String() != "" {
m[v.DistrictStatKey] += v.PayMoney
}
}
return m, nil
}