|
@@ -6,14 +6,11 @@ import (
|
|
"fmt"
|
|
"fmt"
|
|
"sort"
|
|
"sort"
|
|
"strings"
|
|
"strings"
|
|
- "sync"
|
|
|
|
"time"
|
|
"time"
|
|
|
|
|
|
- elastic "app.yhyue.com/moapp/jybase/es"
|
|
|
|
-
|
|
|
|
- "app.yhyue.com/moapp/jybase/encrypt"
|
|
|
|
-
|
|
|
|
"app.yhyue.com/moapp/jybase/common"
|
|
"app.yhyue.com/moapp/jybase/common"
|
|
|
|
+ "app.yhyue.com/moapp/jybase/encrypt"
|
|
|
|
+ elastic "app.yhyue.com/moapp/jybase/es"
|
|
. "bp.jydev.jianyu360.cn/CRM/application/api/common"
|
|
. "bp.jydev.jianyu360.cn/CRM/application/api/common"
|
|
"bp.jydev.jianyu360.cn/CRM/application/entity"
|
|
"bp.jydev.jianyu360.cn/CRM/application/entity"
|
|
"github.com/gogf/gf/v2/util/gconv"
|
|
"github.com/gogf/gf/v2/util/gconv"
|
|
@@ -1087,197 +1084,3 @@ func (t *OwnerService) OwnerCooperate() []map[string]interface{} {
|
|
}
|
|
}
|
|
return returData
|
|
return returData
|
|
}
|
|
}
|
|
-
|
|
|
|
-// 候选渠道
|
|
|
|
-func (t *OwnerService) CandidateChannel() (*ResultDatas, int, int, int, int) {
|
|
|
|
- returnData := []*ResultData{}
|
|
|
|
- dataMap := &map[string]map[string]interface{}{}
|
|
|
|
- if t.PartyA != "" || t.Supplier != "" || t.Heterotophy != "" || t.Intermediary != "" || t.Agency != "" {
|
|
|
|
- dataMap = BuyerList(t.PartyA, t.Supplier, t.Heterotophy, t.Intermediary, t.Agency,
|
|
|
|
- t.PositionId)
|
|
|
|
- }
|
|
|
|
- a1, a2, a3, a4 := 0, 0, 0, 0
|
|
|
|
- if len(*dataMap) > 0 && dataMap != nil {
|
|
|
|
- propertyForm := NetworkCom.GetMyProbusfor(t.EntAccountId)
|
|
|
|
- buyerIds := []string{}
|
|
|
|
- for buyerId := range *dataMap {
|
|
|
|
- buyerIds = append(buyerIds, buyerId)
|
|
|
|
- }
|
|
|
|
- if len(buyerIds) > 300 {
|
|
|
|
- buyerIds = buyerIds[:300]
|
|
|
|
- }
|
|
|
|
- logx.Info("CandidateChannel start ", t.PositionId)
|
|
|
|
- buyerIdsTemp := []string{}
|
|
|
|
- rs1, rs2 := map[string][]map[string]interface{}{}, map[string][]map[string]interface{}{}
|
|
|
|
- for _, v := range buyerIds {
|
|
|
|
- buyerIdsTemp = append(buyerIdsTemp, v)
|
|
|
|
- if len(buyerIdsTemp) == 50 {
|
|
|
|
- rs1Temp, rs2Temp := GetData(propertyForm, strings.Join(buyerIdsTemp, ","))
|
|
|
|
- for kk, vv := range rs1Temp {
|
|
|
|
- rs1[kk] = vv
|
|
|
|
- }
|
|
|
|
- for kk, vv := range rs2Temp {
|
|
|
|
- rs2[kk] = vv
|
|
|
|
- }
|
|
|
|
- buyerIdsTemp = []string{}
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if len(buyerIdsTemp) > 0 {
|
|
|
|
- rs1Temp, rs2Temp := GetData(propertyForm, strings.Join(buyerIdsTemp, ","))
|
|
|
|
- for kk, vv := range rs1Temp {
|
|
|
|
- rs1[kk] = vv
|
|
|
|
- }
|
|
|
|
- for kk, vv := range rs2Temp {
|
|
|
|
- rs2[kk] = vv
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- logx.Info("CandidateChannel GetData over ", t.PositionId)
|
|
|
|
- winners, agency := []string{}, []string{}
|
|
|
|
- for buyerId := range *dataMap {
|
|
|
|
- for _, m := range rs1[buyerId] {
|
|
|
|
- winners = append(winners, common.ObjToString(m["name"]))
|
|
|
|
- }
|
|
|
|
- for _, m := range rs2[buyerId] {
|
|
|
|
- agency = append(agency, common.ObjToString(m["name"]))
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- logx.Info("CandidateChannel LastTimeCoopBath start ", t.PositionId, " ", len(buyerIds), " ", len(winners), " ", len(agency))
|
|
|
|
- ltcs1, ltcs2 := LastTimeCoopBath(t.PositionId, buyerIds, winners, agency)
|
|
|
|
- logx.Info("CandidateChannel LastTimeCoopBath over ", t.PositionId)
|
|
|
|
- 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] {
|
|
|
|
- ltc := ltcs1[buyerId][common.ObjToString(m["name"])]
|
|
|
|
- if ltc == nil {
|
|
|
|
- continue
|
|
|
|
- }
|
|
|
|
- tmp := ResultData{
|
|
|
|
- SourceType: "adiffb",
|
|
|
|
- EntId: common.ObjToString(m["nameId"]),
|
|
|
|
- EntName: common.ObjToString(m["name"]),
|
|
|
|
- ProjectNum: common.IntAll(m["coop_size"]),
|
|
|
|
- TotalAmount: common.Float64All(m["coop_amount"]),
|
|
|
|
- BuyerId: buyerId,
|
|
|
|
- RecentTime: ltc.ZbTime,
|
|
|
|
- NearlyYears: ltc.Near,
|
|
|
|
- }
|
|
|
|
- if tmp.EntId == "" || tmp.BuyerId == "" {
|
|
|
|
- continue
|
|
|
|
- }
|
|
|
|
- a1++
|
|
|
|
- returnData = append(returnData, &tmp)
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if ltcs2[buyerId] != nil {
|
|
|
|
- for _, m := range rs2[buyerId] {
|
|
|
|
- ltc := ltcs1[buyerId][common.ObjToString(m["name"])]
|
|
|
|
- if ltc == nil {
|
|
|
|
- continue
|
|
|
|
- }
|
|
|
|
- tmp := ResultData{
|
|
|
|
- SourceType: "agency",
|
|
|
|
- EntName: common.ObjToString(m["name"]),
|
|
|
|
- ProjectNum: common.IntAll(m["coop_size"]),
|
|
|
|
- TotalAmount: common.Float64All(m["coop_amount"]),
|
|
|
|
- RecentTime: ltc.ZbTime,
|
|
|
|
- NearlyYears: ltc.Near,
|
|
|
|
- EntId: common.ObjToString(m["nameId"]),
|
|
|
|
- BuyerId: buyerId,
|
|
|
|
- }
|
|
|
|
- if tmp.EntId == "" || tmp.BuyerId == "" {
|
|
|
|
- continue
|
|
|
|
- }
|
|
|
|
- a2++
|
|
|
|
- returnData = append(returnData, &tmp)
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- maxByIdCount++
|
|
|
|
- if maxByIdCount > 50 {
|
|
|
|
- break
|
|
|
|
- }
|
|
|
|
- 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)
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- 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)
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- lock.Unlock()
|
|
|
|
- }(buyerId)
|
|
|
|
- }
|
|
|
|
- wait.Wait()
|
|
|
|
- }
|
|
|
|
- logx.Info("CandidateChannel over", t.PositionId)
|
|
|
|
- //状态处理
|
|
|
|
- result := &ResultDatas{}
|
|
|
|
- if len(returnData) > 0 {
|
|
|
|
- monitorMap := NetworkCom.EntMonitor(gconv.String(t.PositionId))
|
|
|
|
- _, ignoredMap, createdMap := FindStatus(t.PositionId)
|
|
|
|
- for k, value := range returnData {
|
|
|
|
- if _, ok := ignoredMap[value.EntId]; ok {
|
|
|
|
- value.IsIgnore = true
|
|
|
|
- }
|
|
|
|
- if _, ok := createdMap[value.EntId]; ok {
|
|
|
|
- value.IsCreateCustomer = true
|
|
|
|
- }
|
|
|
|
- if _, ok := monitorMap[value.EntName]; ok {
|
|
|
|
- value.IsMonitor = true
|
|
|
|
- }
|
|
|
|
- returnData[k] = value
|
|
|
|
- if t.Type != "" && t.Type != value.SourceType {
|
|
|
|
- continue
|
|
|
|
- }
|
|
|
|
- *result = append(*result, value)
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- sort.Sort(result)
|
|
|
|
- return result, a1, a2, a3, a4
|
|
|
|
-}
|
|
|