|
@@ -2,20 +2,23 @@ package service
|
|
|
|
|
|
import (
|
|
|
"database/sql"
|
|
|
+ "fmt"
|
|
|
"strings"
|
|
|
|
|
|
+ . "app.yhyue.com/moapp/jybase/common"
|
|
|
. "app.yhyue.com/moapp/jybase/date"
|
|
|
+ . "app.yhyue.com/moapp/jybase/es"
|
|
|
. "bp.jydev.jianyu360.cn/CRM/application/api/common"
|
|
|
"bp.jydev.jianyu360.cn/CRM/application/api/internal/types"
|
|
|
)
|
|
|
|
|
|
-var VarNetwork = &Network{}
|
|
|
+var Network = &network{}
|
|
|
|
|
|
-type Network struct {
|
|
|
+type network struct {
|
|
|
}
|
|
|
|
|
|
//人脉库-添加/修改人脉
|
|
|
-func (n *Network) AddOrUpdate(in *types.AddOrUpdateReq) *types.Reply {
|
|
|
+func (n *network) AddOrUpdate(in *types.AddOrUpdateReq) *types.Reply {
|
|
|
reply := &types.Reply{}
|
|
|
itype := 0
|
|
|
//firstparty:甲方 supplier:供应商 adiffb:同甲异业 middleman:中间人 agency:招标代理机构
|
|
@@ -46,14 +49,14 @@ func (n *Network) AddOrUpdate(in *types.AddOrUpdateReq) *types.Reply {
|
|
|
}
|
|
|
var r3 int64
|
|
|
if len(values) > 0 {
|
|
|
- _, r3 = CrmMysql.InsertBatchByTx(tx, "connection_introduce", []string{"position_id", "ent_id", "ent_dept_id", "ent_user_id", "connection_id", "relate_id", "relate_name", "itype", "create_time"}, values)
|
|
|
+ _, r3 = CrmMysql.InsertBatchByTx(tx, "crm.connection_introduce", []string{"position_id", "ent_id", "ent_dept_id", "ent_user_id", "connection_id", "relate_id", "relate_name", "itype", "create_time"}, values)
|
|
|
}
|
|
|
return r3
|
|
|
}
|
|
|
if in.Id > 0 {
|
|
|
if CrmMysql.ExecTx("更新人脉", func(tx *sql.Tx) bool {
|
|
|
- r1 := CrmMysql.UpdateOrDeleteBySqlByTx(tx, `update connection set company_name=?,company_id=?,contact_person=?,contact_phone=?,update_time=? where id=? and position_id=?`, in.Company_name, in.Company_id, in.Contact_person, in.Contact_phone, nowFormat, in.Id, in.PositionId)
|
|
|
- r2 := CrmMysql.UpdateOrDeleteBySqlByTx(tx, `delete from connection_introduce where connection_id=? and position_id=?`, in.Id, in.PositionId)
|
|
|
+ r1 := CrmMysql.UpdateOrDeleteBySqlByTx(tx, `update crm.connection set company_name=?,company_id=?,contact_person=?,contact_phone=?,update_time=? where id=? and position_id=?`, in.Company_name, in.Company_id, in.Contact_person, in.Contact_phone, nowFormat, in.Id, in.PositionId)
|
|
|
+ r2 := CrmMysql.UpdateOrDeleteBySqlByTx(tx, `delete from crm.connection_introduce where connection_id=? and position_id=?`, in.Id, in.PositionId)
|
|
|
return r1 > 0 && r2 >= 0 && saveIntroduce(tx, in.Id) >= 0
|
|
|
}) {
|
|
|
reply.Data = map[string]interface{}{
|
|
@@ -67,7 +70,7 @@ func (n *Network) AddOrUpdate(in *types.AddOrUpdateReq) *types.Reply {
|
|
|
} else {
|
|
|
id := 0
|
|
|
if CrmMysql.ExecTx("新增人脉", func(tx *sql.Tx) bool {
|
|
|
- _, r1 := CrmMysql.InsertBatchByTx(tx, "connection", []string{"position_id", "ent_id", "ent_dept_id", "ent_user_id", "itype", "company_name", "company_id", "contact_person", "contact_phone", "status", "create_time", "update_time"}, []interface{}{in.PositionId, in.EntId, in.EntDeptId, in.EntUserId, itype, in.Company_name, in.Company_id, in.Contact_person, in.Contact_phone, 1, nowFormat, nowFormat})
|
|
|
+ _, r1 := CrmMysql.InsertBatchByTx(tx, "crm.connection", []string{"position_id", "ent_id", "ent_dept_id", "ent_user_id", "itype", "company_name", "company_id", "contact_person", "contact_phone", "status", "create_time", "update_time"}, []interface{}{in.PositionId, in.EntId, in.EntDeptId, in.EntUserId, itype, in.Company_name, in.Company_id, in.Contact_person, in.Contact_phone, 1, nowFormat, nowFormat})
|
|
|
return r1 > 0 && saveIntroduce(tx, r1) >= 0
|
|
|
}) {
|
|
|
reply.Data = map[string]interface{}{
|
|
@@ -84,16 +87,42 @@ func (n *Network) AddOrUpdate(in *types.AddOrUpdateReq) *types.Reply {
|
|
|
}
|
|
|
|
|
|
//人脉库-业主名称联想
|
|
|
-func (n *Network) Associate(in *types.AssociateReq) *types.Reply {
|
|
|
- return nil
|
|
|
+func (n *network) Associate(in *types.AssociateReq) *types.Reply {
|
|
|
+ //类型;firstparty:甲方 supplier:供应商 adiffb:同甲异业 middleman:中间人 middleman_owner:中间人-业主 middleman_project:中间人-项目 agency:招标代理机构
|
|
|
+ res := []map[string]interface{}{}
|
|
|
+ must := []string{fmt.Sprintf(`{"multi_match":{"query":"%s","type":"phrase","fields":["company_name"]}}`, in.Name)}
|
|
|
+ switch in.Type {
|
|
|
+ case "firstparty":
|
|
|
+ must = append(must, fmt.Sprintf(`{"terms":{"company_label":["%s"]}}`, strings.Join(NetworkCom.GetEntTagSeat(2), `","`)))
|
|
|
+ must = append(must, `{"terms":{"company_unit_type":[1,2]}}`)
|
|
|
+ case "supplier":
|
|
|
+ must = append(must, fmt.Sprintf(`{"terms":{"company_label":["%s"]}}`, strings.Join(NetworkCom.GetEntTagSeat(2), `","`)))
|
|
|
+ must = append(must, `{"term":{"company_unit_type":3}}`)
|
|
|
+ case "middleman_owner":
|
|
|
+ must = append(must, `{"terms":{"company_unit_type":[1,2]}}`)
|
|
|
+ case "agency":
|
|
|
+ must = append(must, `{"term":{"company_unit_type":4}}`)
|
|
|
+ }
|
|
|
+ datas := VarEs.Get("ent_info", "ent_info", fmt.Sprintf(`{"query":{"bool":{"must":[%s]}},"size":10,"_source":["id","company_name"]}`, strings.Join(must, ",")))
|
|
|
+ if datas != nil {
|
|
|
+ for _, v := range *datas {
|
|
|
+ res = append(res, map[string]interface{}{
|
|
|
+ "company_name": ObjToString(v["company_name"]),
|
|
|
+ "company_id": ObjToString(v["id"]),
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return &types.Reply{
|
|
|
+ Data: datas,
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//人脉库-全部人脉项目
|
|
|
-func (n *Network) Allproject(in *types.AllprojectReq) *types.Reply {
|
|
|
+func (n *network) Allproject(in *types.AllprojectReq) *types.Reply {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
//人脉库-列表
|
|
|
-func (n *Network) List(in *types.NetWorkListReq) *types.Reply {
|
|
|
+func (n *network) List(in *types.NetWorkListReq) *types.Reply {
|
|
|
return nil
|
|
|
}
|