wangchuanjin 1 年間 前
コミット
58ed7433db
1 ファイル変更59 行追加36 行削除
  1. 59 36
      api/internal/service/owner.go

+ 59 - 36
api/internal/service/owner.go

@@ -6,6 +6,7 @@ import (
 	"fmt"
 	"sort"
 	"strings"
+	"sync"
 	"time"
 
 	elastic "app.yhyue.com/moapp/jybase/es"
@@ -1116,6 +1117,10 @@ func (t *OwnerService) CandidateChannel() (*ResultDatas, int, int, int, int) {
 			}
 		}
 		ltcs1, ltcs2 := LastTimeCoopBath(buyerIds, winners, agency)
+		pool := make(chan bool, 3)
+		wait := &sync.WaitGroup{}
+		lock := &sync.Mutex{}
+		maxByIdCount := 0
 		for buyerId := range *dataMap {
 			if ltcs1[buyerId] != nil {
 				for _, m := range rs1[buyerId] {
@@ -1163,47 +1168,65 @@ func (t *OwnerService) CandidateChannel() (*ResultDatas, int, int, int, int) {
 					returnData = append(returnData, &tmp)
 				}
 			}
-			// 中间人可介绍业主
-			var r3 []map[string]interface{}
-			r3 = FindMiddleman([]string{fmt.Sprintf("'%s'", buyerId)}, t.PositionId, r3)
-			if r3 != nil && len(r3) > 0 {
-				for _, m := range r3 {
-					tmp := ResultData{
-						SourceType:   "middleman",
-						EntName:      common.ObjToString(m["b_name"]),
-						EntPerson:    common.ObjToString(m["personName"]),
-						Relationship: "业主的关系人",
-						EntId:        common.ObjToString(m["b_id"]),
-						BuyerId:      buyerId,
-					}
-					if tmp.EntId == "" || tmp.BuyerId == "" {
-						continue
-					}
-					a3++
-					returnData = append(returnData, &tmp)
-				}
+			maxByIdCount++
+			if maxByIdCount > 50 {
+				break
 			}
-			// 关联单位
-			var r4 []map[string]interface{}
-			r4 = Findfirstparty([]string{fmt.Sprintf("'%s'", buyerId)}, r4)
-			if r4 != nil && len(r4) > 0 {
-				for _, m := range r4 {
-					tmp := ResultData{
-						SourceType:   "sup_sub",
-						EntName:      common.ObjToString(m["b_name"]),
-						EntPerson:    common.ObjToString(m["personName"]),
-						Relationship: common.ObjToString(m["relationship"]),
-						EntId:        common.ObjToString(m["b_id"]),
-						BuyerId:      buyerId,
+			pool <- true
+			wait.Add(1)
+			go func(byId string) {
+				defer common.Catch()
+				defer func() {
+					<-pool
+					wait.Done()
+				}()
+				// 中间人可介绍业主
+				var r3 []map[string]interface{}
+				r3 = FindMiddleman([]string{fmt.Sprintf("'%s'", byId)}, t.PositionId, r3)
+				lock.Lock()
+				if r3 != nil && len(r3) > 0 {
+					for _, m := range r3 {
+						tmp := ResultData{
+							SourceType:   "middleman",
+							EntName:      common.ObjToString(m["b_name"]),
+							EntPerson:    common.ObjToString(m["personName"]),
+							Relationship: "业主的关系人",
+							EntId:        common.ObjToString(m["b_id"]),
+							BuyerId:      byId,
+						}
+						if tmp.EntId == "" || tmp.BuyerId == "" {
+							continue
+						}
+						a3++
+						returnData = append(returnData, &tmp)
 					}
-					if tmp.EntId == "" || tmp.BuyerId == "" {
-						continue
+				}
+				lock.Unlock()
+				// 关联单位
+				var r4 []map[string]interface{}
+				r4 = Findfirstparty([]string{fmt.Sprintf("'%s'", byId)}, r4)
+				lock.Lock()
+				if r4 != nil && len(r4) > 0 {
+					for _, m := range r4 {
+						tmp := ResultData{
+							SourceType:   "sup_sub",
+							EntName:      common.ObjToString(m["b_name"]),
+							EntPerson:    common.ObjToString(m["personName"]),
+							Relationship: common.ObjToString(m["relationship"]),
+							EntId:        common.ObjToString(m["b_id"]),
+							BuyerId:      byId,
+						}
+						if tmp.EntId == "" || tmp.BuyerId == "" {
+							continue
+						}
+						a4++
+						returnData = append(returnData, &tmp)
 					}
-					a4++
-					returnData = append(returnData, &tmp)
 				}
-			}
+				lock.Unlock()
+			}(buyerId)
 		}
+		wait.Wait()
 	}
 	//状态处理
 	result := &ResultDatas{}