|
@@ -11,6 +11,7 @@ import (
|
|
|
|
|
|
. "app.yhyue.com/moapp/jybase/common"
|
|
|
. "app.yhyue.com/moapp/jybase/date"
|
|
|
+ "app.yhyue.com/moapp/jybase/encrypt"
|
|
|
. "app.yhyue.com/moapp/jybase/es"
|
|
|
. "app.yhyue.com/moapp/jybase/sort"
|
|
|
. "bp.jydev.jianyu360.cn/CRM/application/api/common"
|
|
@@ -39,6 +40,7 @@ type projectInfo struct {
|
|
|
ProjectCount int64
|
|
|
ProjectAmount float64
|
|
|
MonitorCount int64
|
|
|
+ ExportId []string
|
|
|
}
|
|
|
type firstpartyNetwork struct {
|
|
|
CompanyId string
|
|
@@ -324,7 +326,7 @@ func (n *network) AllProject(in *types.AllprojectReq) (reply *types.Reply) {
|
|
|
|
|
|
//人脉库-列表
|
|
|
func (n *network) List(in *types.NetWorkListReq) *types.Reply {
|
|
|
- q := `select a.company_id,a.company_name,a.itype,a.contact_person as person,a.contact_phone as phone,count(if(b.itype=1,1,null)) as buyer_count,count(if(b.itype=2,1,null)) as project_count,GROUP_CONCAT(IF(b.itype=1,relate_id,NULL)) AS relate_buyer_id,GROUP_CONCAT(IF(b.itype=2,relate_id,NULL)) AS relate_project_id,a.create_time from crm.connection a
|
|
|
+ q := `select a.company_id,a.company_name,a.itype,a.contact_person as person,a.contact_phone as phone,count(DISTINCT if(b.itype=1,b.relate_id,null)) as buyer_count,count(DISTINCT if(b.itype=2,b.relate_id,null)) as project_count,GROUP_CONCAT(IF(b.itype=1,b.relate_id,NULL)) AS relate_buyer_id,GROUP_CONCAT(IF(b.itype=2,b.relate_id,NULL)) AS relate_project_id,a.create_time from crm.connection a
|
|
|
left join crm.connection_introduce b on (a.id=b.connection_id) where a.position_id=?`
|
|
|
args := []interface{}{in.PositionId}
|
|
|
if in.Type != "" {
|
|
@@ -374,8 +376,9 @@ func (n *network) List(in *types.NetWorkListReq) *types.Reply {
|
|
|
}
|
|
|
}
|
|
|
if isGoNextSetp {
|
|
|
- entMonitor := n.EntMonitor(in.PositionId)
|
|
|
- firstparty_project := n.Introduce_Firstparty(n.FirstpartyNetwork("", firstparty_array), entMonitor, in.Project_matchme, probusfors)
|
|
|
+ entMonitor := NetworkCom.EntMonitor(in.PositionId)
|
|
|
+ fpn := n.FirstpartyNetwork("", firstparty_array)
|
|
|
+ firstparty_project := n.Introduce_Firstparty(fpn, entMonitor, in.Project_matchme, probusfors)
|
|
|
supplier_project := n.Introduce_Supplier(supplier_array, entMonitor, in.Project_matchme, probusfors)
|
|
|
adiffb_project := n.Introduce_Supplier(adiffb_array, entMonitor, in.Project_matchme, probusfors)
|
|
|
agency_project := n.Introduce_Agency(agency_array, entMonitor, in.Project_matchme, probusfors)
|
|
@@ -384,36 +387,54 @@ func (n *network) List(in *types.NetWorkListReq) *types.Reply {
|
|
|
itype := ""
|
|
|
buyer_count, project_count, expect_amount, monitor_count := int64(0), int64(0), float64(0), int64(0)
|
|
|
company_id := ObjToString(v["company_id"])
|
|
|
+ export_id := []string{}
|
|
|
+ jump_type, jump_id := "", ""
|
|
|
switch Int64All(v["itype"]) {
|
|
|
case 1:
|
|
|
itype = "甲方"
|
|
|
+ jump_type = "firstparty"
|
|
|
+ for _, vv := range fpn[company_id] {
|
|
|
+ if jump_id != "" {
|
|
|
+ jump_id += ","
|
|
|
+ }
|
|
|
+ jump_id += vv.CompanyId
|
|
|
+ }
|
|
|
firstparty_count++
|
|
|
if firstparty_project[company_id] != nil {
|
|
|
buyer_count = firstparty_project[company_id].BuyerCount
|
|
|
project_count = firstparty_project[company_id].ProjectCount
|
|
|
expect_amount = firstparty_project[company_id].ProjectAmount
|
|
|
monitor_count = firstparty_project[company_id].MonitorCount
|
|
|
+ export_id = firstparty_project[company_id].ExportId
|
|
|
}
|
|
|
case 2:
|
|
|
itype = "供应商"
|
|
|
+ jump_type = "supplier"
|
|
|
+ jump_id = company_id
|
|
|
supplier_count++
|
|
|
if supplier_project[company_id] != nil {
|
|
|
buyer_count = supplier_project[company_id].BuyerCount
|
|
|
project_count = supplier_project[company_id].ProjectCount
|
|
|
expect_amount = supplier_project[company_id].ProjectAmount
|
|
|
monitor_count = supplier_project[company_id].MonitorCount
|
|
|
+ export_id = supplier_project[company_id].ExportId
|
|
|
}
|
|
|
case 3:
|
|
|
itype = "同甲异业渠道"
|
|
|
+ jump_type = "adiffb"
|
|
|
+ jump_id = company_id
|
|
|
adiffb_count++
|
|
|
if adiffb_project[company_id] != nil {
|
|
|
buyer_count = adiffb_project[company_id].BuyerCount
|
|
|
project_count = adiffb_project[company_id].ProjectCount
|
|
|
expect_amount = adiffb_project[company_id].ProjectAmount
|
|
|
monitor_count = adiffb_project[company_id].MonitorCount
|
|
|
+ export_id = adiffb_project[company_id].ExportId
|
|
|
}
|
|
|
case 4:
|
|
|
itype = "中间人"
|
|
|
+ jump_type = "middleman"
|
|
|
+ jump_id = company_id
|
|
|
middleman_count++
|
|
|
buyer_count = Int64All(v["buyer_count"])
|
|
|
project_count = Int64All(v["project_count"])
|
|
@@ -428,7 +449,8 @@ func (n *network) List(in *types.NetWorkListReq) *types.Reply {
|
|
|
}
|
|
|
}
|
|
|
if relate_project_id := ObjToString(v["relate_project_id"]); relate_project_id != "" {
|
|
|
- for _, v := range strings.Split(relate_project_id, ",") {
|
|
|
+ export_id = strings.Split(relate_project_id, ",")
|
|
|
+ for _, v := range export_id {
|
|
|
if middleman_project[v] != nil {
|
|
|
expect_amount += middleman_project[v].ProjectAmount
|
|
|
}
|
|
@@ -439,12 +461,15 @@ func (n *network) List(in *types.NetWorkListReq) *types.Reply {
|
|
|
}
|
|
|
case 5:
|
|
|
itype = "招标代理机构"
|
|
|
+ jump_type = "agency"
|
|
|
+ jump_id = company_id
|
|
|
agency_count++
|
|
|
if agency_project[company_id] != nil {
|
|
|
buyer_count = agency_project[company_id].BuyerCount
|
|
|
project_count = agency_project[company_id].ProjectCount
|
|
|
expect_amount = agency_project[company_id].ProjectAmount
|
|
|
monitor_count = agency_project[company_id].MonitorCount
|
|
|
+ export_id = agency_project[company_id].ExportId
|
|
|
}
|
|
|
}
|
|
|
if buyer_count < in.Buyercount_start {
|
|
@@ -462,10 +487,17 @@ func (n *network) List(in *types.NetWorkListReq) *types.Reply {
|
|
|
} else if in.Project_matchme == 1 && project_count == 0 {
|
|
|
continue
|
|
|
}
|
|
|
+ exportId := ""
|
|
|
+ if len(export_id) > 0 {
|
|
|
+ exportId = encrypt.SE.EncodeStringByCheck(strings.Join(export_id, ","))
|
|
|
+ }
|
|
|
+ company_name, _ := v["company_name"].(string)
|
|
|
list = append(list, &map[string]interface{}{
|
|
|
"company_id": company_id,
|
|
|
- "company_name": v["company_name"],
|
|
|
+ "company_name": company_name,
|
|
|
"type": itype,
|
|
|
+ "jump_type": jump_type,
|
|
|
+ "jump_id": jump_id,
|
|
|
"person": v["person"],
|
|
|
"phone": v["phone"],
|
|
|
"buyer_count": buyer_count,
|
|
@@ -473,6 +505,8 @@ func (n *network) List(in *types.NetWorkListReq) *types.Reply {
|
|
|
"expect_amount": RetainDecimal(expect_amount/10000, 2),
|
|
|
"project_count": project_count,
|
|
|
"create_time": v["create_time"],
|
|
|
+ "export_id": exportId,
|
|
|
+ "url": "/swordfish/page_big_pc/unit_portrayal/" + company_name,
|
|
|
})
|
|
|
}
|
|
|
}
|
|
@@ -570,7 +604,7 @@ func (n *network) Introduce_Firstparty(fpn map[string][]*firstpartyNetwork, entM
|
|
|
}
|
|
|
}
|
|
|
wh, args := NetworkCom.WhArgs(values)
|
|
|
- q := `select buyer_id,count(project_id) AS project_count,sum(project_money) AS project_amount from information.transaction_info where buyer_id in (` + wh + `)`
|
|
|
+ q := `select buyer_id,count(project_id) AS project_count,sum(project_money) AS project_amount,groupUniqArray(project_id) from information.transaction_info where buyer_id in (` + wh + `)`
|
|
|
if matchme == 1 {
|
|
|
newWh, newArgs := NetworkCom.WhArgs(probusfors)
|
|
|
q += ` hasAny(property_form,[` + newWh + `])`
|
|
@@ -587,8 +621,9 @@ func (n *network) Introduce_Firstparty(fpn map[string][]*firstpartyNetwork, entM
|
|
|
buyer_id string
|
|
|
project_count uint64
|
|
|
project_amount decimal.Decimal
|
|
|
+ project_id []string
|
|
|
)
|
|
|
- if err := rows.Scan(&buyer_id, &project_count, &project_amount); err != nil {
|
|
|
+ if err := rows.Scan(&buyer_id, &project_count, &project_amount, &project_id); err != nil {
|
|
|
logx.Error(err)
|
|
|
continue
|
|
|
}
|
|
@@ -598,6 +633,7 @@ func (n *network) Introduce_Firstparty(fpn map[string][]*firstpartyNetwork, entM
|
|
|
vm[buyer_id].ProjectCount += int64(project_count)
|
|
|
pf, _ := project_amount.Float64()
|
|
|
vm[buyer_id].ProjectAmount += pf
|
|
|
+ vm[buyer_id].ExportId = project_id
|
|
|
}
|
|
|
rows.Close()
|
|
|
if err := rows.Err(); err != nil {
|
|
@@ -630,7 +666,7 @@ func (n *network) Introduce_Supplier(values []string, entMonitor map[string]bool
|
|
|
vm[v] = &projectInfo{}
|
|
|
}
|
|
|
wh, args := NetworkCom.WhArgs(values)
|
|
|
- q := `select a.winner_id,count(DISTINCT b.buyer_id) AS buyer_count,count(DISTINCT b.project_id) AS project_count,sum(b.project_money) AS project_amount,groupUniqArray(b.buyer) from information.transaction_info a
|
|
|
+ q := `select a.winner_id,count(DISTINCT b.buyer_id) AS buyer_count,count(DISTINCT b.project_id) AS project_count,sum(b.project_money) AS project_amount,groupUniqArray(b.buyer),groupUniqArray(b.project_id) from information.transaction_info a
|
|
|
inner join information.transaction_info b on (hasAny(a.winner_id,[` + wh + `]) and a.buyer_id<>'' and a.buyer_id=b.buyer_id`
|
|
|
if matchme == 1 {
|
|
|
newWh, newArgs := NetworkCom.WhArgs(probusfors)
|
|
@@ -650,8 +686,9 @@ func (n *network) Introduce_Supplier(values []string, entMonitor map[string]bool
|
|
|
project_count uint64
|
|
|
project_amount decimal.Decimal
|
|
|
buyers []string
|
|
|
+ project_id []string
|
|
|
)
|
|
|
- if err := rows.Scan(&winner_id, &buyer_count, &project_count, &project_amount, &buyers); err != nil {
|
|
|
+ if err := rows.Scan(&winner_id, &buyer_count, &project_count, &project_amount, &buyers, &project_id); err != nil {
|
|
|
logx.Error(err)
|
|
|
continue
|
|
|
}
|
|
@@ -663,6 +700,7 @@ func (n *network) Introduce_Supplier(values []string, entMonitor map[string]bool
|
|
|
vm[v].ProjectCount += int64(project_count)
|
|
|
pf, _ := project_amount.Float64()
|
|
|
vm[v].ProjectAmount += pf
|
|
|
+ vm[v].ExportId = project_id
|
|
|
for _, v := range buyers {
|
|
|
if entMonitor[v] {
|
|
|
vm[v].MonitorCount++
|
|
@@ -684,7 +722,7 @@ func (n *network) Introduce_Agency(values []string, entMonitor map[string]bool,
|
|
|
vm[v] = &projectInfo{}
|
|
|
}
|
|
|
wh, args := NetworkCom.WhArgs(values)
|
|
|
- q := `select a.agency_id,count(DISTINCT b.buyer_id) AS buyer_count,count(DISTINCT b.project_id) AS project_count,sum(b.project_money) AS project_amount,groupUniqArray(b.buyer) from information.transaction_info a
|
|
|
+ q := `select a.agency_id,count(DISTINCT b.buyer_id) AS buyer_count,count(DISTINCT b.project_id) AS project_count,sum(b.project_money) AS project_amount,groupUniqArray(b.buyer),groupUniqArray(b.project_id) from information.transaction_info a
|
|
|
inner join information.transaction_info b on (a.agency_id in (` + wh + `) and a.buyer_id<>'' and a.buyer_id=b.buyer_id`
|
|
|
if matchme == 1 {
|
|
|
newWh, newArgs := NetworkCom.WhArgs(probusfors)
|
|
@@ -704,6 +742,7 @@ func (n *network) Introduce_Agency(values []string, entMonitor map[string]bool,
|
|
|
project_count uint64
|
|
|
project_amount decimal.Decimal
|
|
|
buyers []string
|
|
|
+ project_id []string
|
|
|
)
|
|
|
if err := rows.Scan(&agency_id, &buyer_count, &project_count, &project_amount, &buyers); err != nil {
|
|
|
logx.Error(err)
|
|
@@ -716,6 +755,7 @@ func (n *network) Introduce_Agency(values []string, entMonitor map[string]bool,
|
|
|
vm[agency_id].ProjectCount += int64(project_count)
|
|
|
pf, _ := project_amount.Float64()
|
|
|
vm[agency_id].ProjectAmount += pf
|
|
|
+ vm[agency_id].ExportId = project_id
|
|
|
for _, v := range buyers {
|
|
|
if entMonitor[v] {
|
|
|
vm[agency_id].MonitorCount++
|
|
@@ -759,18 +799,6 @@ func (n *network) Introduce_Middleman(values []string, entMonitor map[string]boo
|
|
|
return vm
|
|
|
}
|
|
|
|
|
|
-//
|
|
|
-func (n *network) EntMonitor(positionId int64) map[string]bool {
|
|
|
- m := map[string]bool{}
|
|
|
- list := CrmMysql.SelectBySql(`select * from base_service.follow_ent_monitor where s_userid=?`, positionId)
|
|
|
- for _, v := range *list {
|
|
|
- if entName := ObjToString(v["s_entname"]); entName != "" {
|
|
|
- m[entName] = true
|
|
|
- }
|
|
|
- }
|
|
|
- return m
|
|
|
-}
|
|
|
-
|
|
|
//
|
|
|
func (n *network) TypeConvert(itype string) int {
|
|
|
//firstparty:甲方 supplier:供应商 adiffb:同甲异业 middleman:中间人 agency:招标代理机构
|