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 }