|
@@ -653,32 +653,54 @@ func GetDataExportSelectReallyCountFromMongo(bid mg.MongodbSim, biddingName stri
|
|
|
if ids == nil || len(ids) == 0 {
|
|
|
return 0
|
|
|
}
|
|
|
- var queryIds []interface{}
|
|
|
- for _, idStr := range ids {
|
|
|
- queryIds = append(queryIds, mg.StringTOBsonId(idStr))
|
|
|
- }
|
|
|
- lenNum := int64(len(ids))
|
|
|
- num1, err1 := sess.DB(biddingName).C("bidding").Find(map[string]interface{}{"_id": map[string]interface{}{
|
|
|
- "$in": queryIds,
|
|
|
- }}).Count()
|
|
|
- if err1 == nil {
|
|
|
- if num1 == lenNum {
|
|
|
- return lenNum
|
|
|
- }
|
|
|
- num2, err2 := sess.DB(biddingName).C("bidding_back").Find(map[string]interface{}{"_id": map[string]interface{}{
|
|
|
- "$in": queryIds,
|
|
|
- }}).Count()
|
|
|
- if err2 == nil {
|
|
|
- if num2+num1 == lenNum {
|
|
|
- return lenNum
|
|
|
- } else if num1+num2 > lenNum {
|
|
|
- return lenNum
|
|
|
- } else if num1+num2 < lenNum {
|
|
|
- return num1 + num2
|
|
|
+
|
|
|
+ var (
|
|
|
+ count int64
|
|
|
+ lock sync.Mutex
|
|
|
+ )
|
|
|
+ pool := make(chan bool, 10)
|
|
|
+ wait := &sync.WaitGroup{}
|
|
|
+
|
|
|
+ for _, i2 := range SplitArray(ids, 200) {
|
|
|
+ pool <- true
|
|
|
+ wait.Add(1)
|
|
|
+ go func(arr []string) {
|
|
|
+ defer func() {
|
|
|
+ wait.Done()
|
|
|
+ <-pool
|
|
|
+ }()
|
|
|
+ lenNum := int64(len(arr))
|
|
|
+ var (
|
|
|
+ queryIds []interface{}
|
|
|
+ num1, num2 int64
|
|
|
+ err error
|
|
|
+ )
|
|
|
+ for _, idStr := range arr {
|
|
|
+ queryIds = append(queryIds, mg.StringTOBsonId(idStr))
|
|
|
}
|
|
|
- }
|
|
|
+ num1, err = sess.DB(biddingName).C("bidding").Find(map[string]interface{}{"_id": map[string]interface{}{
|
|
|
+ "$in": queryIds,
|
|
|
+ }}).Count()
|
|
|
+ if err == nil {
|
|
|
+ if num1 == lenNum {
|
|
|
+ lock.Lock()
|
|
|
+ count += num1
|
|
|
+ lock.Unlock()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ num2, err = sess.DB(biddingName).C("bidding_back").Find(map[string]interface{}{"_id": map[string]interface{}{
|
|
|
+ "$in": queryIds,
|
|
|
+ }}).Count()
|
|
|
+ if err == nil {
|
|
|
+ lock.Lock()
|
|
|
+ count += qutil.If(num2+num1 >= lenNum, lenNum, num2+num1).(int64)
|
|
|
+ lock.Unlock()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }(i2)
|
|
|
}
|
|
|
- return -2
|
|
|
+ wait.Wait()
|
|
|
+ return qutil.If(count > 0, count, -2).(int64)
|
|
|
}
|
|
|
|
|
|
func GetDataExportSelectResultFromEs(bidding mg.MongodbSim, biddingName string, scd *SieveCondition, dataType string, checkCount int) (*[]map[string]interface{}, error) {
|