123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- 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 Network = &network{}
- type network struct {
- }
- //人脉库-添加/修改人脉
- func (n *network) AddOrUpdate(in *types.AddOrUpdateReq) *types.Reply {
- reply := &types.Reply{}
- itype := 0
- //firstparty:甲方 supplier:供应商 adiffb:同甲异业 middleman:中间人 agency:招标代理机构
- switch in.Type {
- case "firstparty":
- itype = 1
- case "supplier:供应商":
- itype = 2
- case "adiffb":
- itype = 3
- case "middleman":
- itype = 4
- case "agency":
- itype = 5
- }
- nowFormat := NowFormat(Date_Full_Layout)
- var saveIntroduce = func(tx *sql.Tx, cid int64) int64 {
- values := []interface{}{}
- if in.Introduce_owner_id != "" {
- for k, v := range strings.Split(in.Introduce_owner_id, ",") {
- values = append(values, in.PositionId, in.EntId, in.EntDeptId, in.EntUserId, cid, v, strings.Split(in.Introduce_owner_name, ",")[k], 1, nowFormat)
- }
- }
- if in.Introduce_project_id != "" {
- for k, v := range strings.Split(in.Introduce_project_id, ",") {
- values = append(values, in.PositionId, in.EntId, in.EntDeptId, in.EntUserId, cid, v, strings.Split(in.Introduce_project_name, ",")[k], 2, nowFormat)
- }
- }
- var r3 int64
- if len(values) > 0 {
- _, 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 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{}{
- "status": 1,
- }
- } else {
- reply.Data = map[string]interface{}{
- "status": 0,
- }
- }
- } else {
- id := 0
- if CrmMysql.ExecTx("新增人脉", func(tx *sql.Tx) bool {
- _, 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{}{
- "status": 1,
- "id": id,
- }
- } else {
- reply.Data = map[string]interface{}{
- "status": 0,
- }
- }
- }
- return reply
- }
- //人脉库-业主名称联想
- 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 {
- return nil
- }
- //人脉库-列表
- func (n *network) List(in *types.NetWorkListReq) *types.Reply {
- return nil
- }
|