|
@@ -355,19 +355,17 @@ func LastTimeCoop(buyerId, ent, stype string) (bool, int64) {
|
|
|
}
|
|
|
|
|
|
func LastTimeCoopBath(positionId int64, buyerId string, winners, agencys []string) (map[string]*Cooperate, map[string]*Cooperate) {
|
|
|
- if len(winners) > 100 {
|
|
|
- winners = winners[:100]
|
|
|
- }
|
|
|
- if len(agencys) > 100 {
|
|
|
- agencys = agencys[:100]
|
|
|
- }
|
|
|
adiffb, agency := map[string]*Cooperate{}, map[string]*Cooperate{}
|
|
|
if buyerId == "" {
|
|
|
return adiffb, agency
|
|
|
}
|
|
|
- var toSearch = func(tp int, query string, args []interface{}) {
|
|
|
+ var toSearch = func(tp int, query string, ws []string) {
|
|
|
logx.Info("LastTimeCoopBath once start ", positionId)
|
|
|
defer logx.Info("LastTimeCoopBath once over ", positionId)
|
|
|
+ wh, newArgs := T.NetworkCom.WhArgs(ws)
|
|
|
+ query = fmt.Sprintf(query, wh)
|
|
|
+ args := []interface{}{buyerId}
|
|
|
+ args = append(args, newArgs...)
|
|
|
rows, err := T.ClickhouseConn.Query(context.Background(), query, args...)
|
|
|
if err != nil {
|
|
|
logx.Error(err)
|
|
@@ -401,18 +399,32 @@ func LastTimeCoopBath(positionId int64, buyerId string, winners, agencys []strin
|
|
|
}
|
|
|
}
|
|
|
if len(winners) > 0 {
|
|
|
- wh, newArgs := T.NetworkCom.WhArgs(winners)
|
|
|
- sql := `SELECT winner_one,max(zbtime) FROM information.transaction_info ARRAY JOIN winner AS winner_one WHERE buyer_id=? AND hasAny(winner,[` + wh + `])) group by winner_one`
|
|
|
- args := []interface{}{buyerId}
|
|
|
- args = append(args, newArgs...)
|
|
|
- toSearch(1, sql, args)
|
|
|
+ sql := `SELECT winner_one,max(zbtime) FROM information.transaction_info ARRAY JOIN winner AS winner_one WHERE buyer_id=? AND hasAny(winner,[%s])) group by winner_one`
|
|
|
+ wns := []string{}
|
|
|
+ for _, v := range winners {
|
|
|
+ wns = append(wns, v)
|
|
|
+ if len(wns) == 50 {
|
|
|
+ toSearch(1, sql, wns)
|
|
|
+ wns = []string{}
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if len(wns) > 0 {
|
|
|
+ toSearch(1, sql, wns)
|
|
|
+ }
|
|
|
}
|
|
|
if len(agencys) > 0 {
|
|
|
- wh, newArgs := T.NetworkCom.WhArgs(agencys)
|
|
|
- sql := `SELECT agency,max(zbtime) FROM information.transaction_info WHERE buyer_id=? AND agency in (` + wh + `) group by agency`
|
|
|
- args := []interface{}{buyerId}
|
|
|
- args = append(args, newArgs...)
|
|
|
- toSearch(2, sql, newArgs)
|
|
|
+ sql := `SELECT agency,max(zbtime) FROM information.transaction_info WHERE buyer_id=? AND agency in (%s) group by agency`
|
|
|
+ acs := []string{}
|
|
|
+ for _, v := range agencys {
|
|
|
+ acs = append(acs, v)
|
|
|
+ if len(acs) == 50 {
|
|
|
+ toSearch(2, sql, acs)
|
|
|
+ acs = []string{}
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if len(acs) > 0 {
|
|
|
+ toSearch(2, sql, acs)
|
|
|
+ }
|
|
|
}
|
|
|
return adiffb, agency
|
|
|
}
|