Browse Source

feat:xiugai

wangchuanjin 9 months ago
parent
commit
90e661c11d
1 changed files with 29 additions and 17 deletions
  1. 29 17
      api/internal/service/CoopHistoryService.go

+ 29 - 17
api/internal/service/CoopHistoryService.go

@@ -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
 }