소스 검색

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	api/internal/types/types.go
#	api/networkmanage.api
WH01243 9 달 전
부모
커밋
5efc1d6bb2

+ 29 - 0
api/internal/handler/prcollectlisthandler.go

@@ -0,0 +1,29 @@
+package handler
+
+import (
+	"net/http"
+
+	"bp.jydev.jianyu360.cn/CRM/networkManage/api/internal/logic"
+	"bp.jydev.jianyu360.cn/CRM/networkManage/api/internal/svc"
+	"bp.jydev.jianyu360.cn/CRM/networkManage/api/internal/types"
+	"github.com/zeromicro/go-zero/rest/httpx"
+)
+
+// 公关渠道-标讯收藏项目找人脉
+func PrCollectListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+	return func(w http.ResponseWriter, r *http.Request) {
+		var req types.PrCollectListReq
+		if err := httpx.Parse(r, &req); err != nil {
+			httpx.ErrorCtx(r.Context(), w, err)
+			return
+		}
+
+		l := logic.NewPrCollectListLogic(r.Context(), svcCtx)
+		resp, err := l.PrCollectList(&req)
+		if err != nil {
+			httpx.ErrorCtx(r.Context(), w, err)
+		} else {
+			httpx.OkJsonCtx(r.Context(), w, resp)
+		}
+	}
+}

+ 29 - 0
api/internal/handler/prmonitorlisthandler.go

@@ -0,0 +1,29 @@
+package handler
+
+import (
+	"net/http"
+
+	"bp.jydev.jianyu360.cn/CRM/networkManage/api/internal/logic"
+	"bp.jydev.jianyu360.cn/CRM/networkManage/api/internal/svc"
+	"bp.jydev.jianyu360.cn/CRM/networkManage/api/internal/types"
+	"github.com/zeromicro/go-zero/rest/httpx"
+)
+
+// 公关渠道-业主监控项目找人脉
+func PrMonitorListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+	return func(w http.ResponseWriter, r *http.Request) {
+		var req types.PrMonitorListReq
+		if err := httpx.Parse(r, &req); err != nil {
+			httpx.ErrorCtx(r.Context(), w, err)
+			return
+		}
+
+		l := logic.NewPrMonitorListLogic(r.Context(), svcCtx)
+		resp, err := l.PrMonitorList(&req)
+		if err != nil {
+			httpx.ErrorCtx(r.Context(), w, err)
+		} else {
+			httpx.OkJsonCtx(r.Context(), w, resp)
+		}
+	}
+}

+ 48 - 24
api/internal/handler/routes.go

@@ -13,64 +13,88 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
 	server.AddRoutes(
 		[]rest.Route{
 			{
+				// 情报详情
 				Method:  http.MethodPost,
-				Path:    "/networkManage/owner/list",
-				Handler: ownerListHandler(serverCtx),
+				Path:    "/networkManage/infomation/detail",
+				Handler: infoDetailHandler(serverCtx),
 			},
 			{
+				// 人脉库-添加/修改人脉
 				Method:  http.MethodPost,
-				Path:    "/networkManage/network/project/list",
-				Handler: projectListHandler(serverCtx),
+				Path:    "/networkManage/network/addOrUpdate",
+				Handler: addOrUpdateHandler(serverCtx),
 			},
 			{
+				// 人脉库-全部人脉项目
 				Method:  http.MethodPost,
-				Path:    "/networkManage/pr/pname/ass",
-				Handler: PrPnameAssHandler(serverCtx),
+				Path:    "/networkManage/network/allProject",
+				Handler: allProjectHandler(serverCtx),
 			},
 			{
+				// 人脉库-业主名称联想
 				Method:  http.MethodPost,
-				Path:    "/networkManage/pr/project/analyse",
-				Handler: CoopHistoryListHandler(serverCtx),
+				Path:    "/networkManage/network/associate",
+				Handler: associateHandler(serverCtx),
 			},
 			{
+				// 人脉库-列表
 				Method:  http.MethodPost,
-				Path:    "/networkManage/network/addOrUpdate",
-				Handler: addOrUpdateHandler(serverCtx),
+				Path:    "/networkManage/network/networkList",
+				Handler: networkListHandler(serverCtx),
 			},
 			{
+				// 人脉可达商机列表
 				Method:  http.MethodPost,
-				Path:    "/networkManage/network/associate",
-				Handler: associateHandler(serverCtx),
+				Path:    "/networkManage/network/project/list",
+				Handler: projectListHandler(serverCtx),
 			},
 			{
+				// 可介绍业主合作次数
 				Method:  http.MethodPost,
-				Path:    "/networkManage/network/allProject",
-				Handler: allProjectHandler(serverCtx),
+				Path:    "/networkManage/owner/cooperate",
+				Handler: ownerCooperateHandler(serverCtx),
 			},
 			{
+				// 人脉可达潜客业主列表
 				Method:  http.MethodPost,
-				Path:    "/networkManage/network/networkList",
-				Handler: networkListHandler(serverCtx),
+				Path:    "/networkManage/owner/list",
+				Handler: ownerListHandler(serverCtx),
 			},
 			{
+				// 可介绍业主路径
 				Method:  http.MethodPost,
-				Path:    "/networkManage/infomation/detail",
-				Handler: infoDetailHandler(serverCtx),
+				Path:    "/networkManage/owner/route",
+				Handler: ownerRouteHandler(serverCtx),
 			},
 			{
+				// 公关渠道-标讯收藏项目找人脉
 				Method:  http.MethodPost,
-				Path:    "/networkManage/pr/project/history",
-				Handler: projectHistoryHandler(serverCtx),
+				Path:    "/networkManage/pr/collect/list",
+				Handler: PrCollectListHandler(serverCtx),
 			},
 			{
+				// 公关渠道-业主监控项目找人脉
 				Method:  http.MethodPost,
-				Path:    "/networkManage/owner/route",
-				Handler: ownerRouteHandler(serverCtx),
+				Path:    "/networkManage/pr/monitor/list",
+				Handler: PrMonitorListHandler(serverCtx),
 			},
 			{
+				// 项目公关渠道分析-项目名称联想
 				Method:  http.MethodPost,
-				Path:    "/networkManage/owner/cooperate",
-				Handler: ownerCooperateHandler(serverCtx),
+				Path:    "/networkManage/pr/pname/ass",
+				Handler: PrPnameAssHandler(serverCtx),
+			},
+			{
+				// 项目公关渠道分析-与业主合作历史
+				Method:  http.MethodPost,
+				Path:    "/networkManage/pr/project/analyse",
+				Handler: CoopHistoryListHandler(serverCtx),
+			},
+			{
+				// 人脉项目分析-业主合作历史
+				Method:  http.MethodPost,
+				Path:    "/networkManage/pr/project/history",
+				Handler: projectHistoryHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,

+ 38 - 0
api/internal/logic/prcollectlistlogic.go

@@ -0,0 +1,38 @@
+package logic
+
+import (
+	"bp.jydev.jianyu360.cn/CRM/networkManage/api/internal/service"
+	"context"
+	"fmt"
+
+	"bp.jydev.jianyu360.cn/CRM/networkManage/api/internal/svc"
+	"bp.jydev.jianyu360.cn/CRM/networkManage/api/internal/types"
+
+	"github.com/zeromicro/go-zero/core/logx"
+)
+
+type PrCollectListLogic struct {
+	logx.Logger
+	ctx    context.Context
+	svcCtx *svc.ServiceContext
+}
+
+// 公关渠道-标讯收藏项目找人脉
+func NewPrCollectListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *PrCollectListLogic {
+	return &PrCollectListLogic{
+		Logger: logx.WithContext(ctx),
+		ctx:    ctx,
+		svcCtx: svcCtx,
+	}
+}
+
+func (l *PrCollectListLogic) PrCollectList(req *types.PrCollectListReq) (resp *types.Reply, err error) {
+	logx.Info(fmt.Sprintf("%+v", req))
+	resp = &types.Reply{}
+	list, count := service.GetCollectList(req)
+	resp.Data = map[string]interface{}{
+		"list":  list,
+		"total": count,
+	}
+	return
+}

+ 38 - 0
api/internal/logic/prmonitorlistlogic.go

@@ -0,0 +1,38 @@
+package logic
+
+import (
+	"bp.jydev.jianyu360.cn/CRM/networkManage/api/internal/service"
+	"context"
+	"fmt"
+
+	"bp.jydev.jianyu360.cn/CRM/networkManage/api/internal/svc"
+	"bp.jydev.jianyu360.cn/CRM/networkManage/api/internal/types"
+
+	"github.com/zeromicro/go-zero/core/logx"
+)
+
+type PrMonitorListLogic struct {
+	logx.Logger
+	ctx    context.Context
+	svcCtx *svc.ServiceContext
+}
+
+// 公关渠道-业主监控项目找人脉
+func NewPrMonitorListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *PrMonitorListLogic {
+	return &PrMonitorListLogic{
+		Logger: logx.WithContext(ctx),
+		ctx:    ctx,
+		svcCtx: svcCtx,
+	}
+}
+
+func (l *PrMonitorListLogic) PrMonitorList(req *types.PrMonitorListReq) (resp *types.Reply, err error) {
+	logx.Info(fmt.Sprintf("%+v", req))
+	resp = &types.Reply{}
+	list, count := service.GetMonitorList(req)
+	resp.Data = map[string]interface{}{
+		"list":  list,
+		"total": count,
+	}
+	return
+}

+ 93 - 0
api/internal/service/prListService.go

@@ -0,0 +1,93 @@
+package service
+
+import (
+	"app.yhyue.com/moapp/jybase/common"
+	elastic "app.yhyue.com/moapp/jybase/es"
+	"app.yhyue.com/moapp/jybase/mongodb"
+	T "bp.jydev.jianyu360.cn/CRM/networkManage/api/common"
+	"bp.jydev.jianyu360.cn/CRM/networkManage/api/internal/types"
+	"fmt"
+	"strings"
+)
+
+var (
+	esQ1      = `{"query": {"bool": {"must": [{"terms": {"buyer": ["%s"]}},{"terms": {"toptype": ["采购意向","预告","招标"]}}], "should": [%s], "minimum_should_match": 1}}, "_source": ["%s"], "sort": {"comeintime": {"order": "desc"}}, "from": %d, "size": %d}`
+	esQ2      = `{"query": {"bool": {"must": [{"terms": {"buyer": ["%s"]}},{"terms": {"toptype": ["采购意向","预告","招标"]}}]}}, "_source": ["%s"], "sort": {"comeintime": {"order": "desc"}}, "from": %d, "size": %d}`
+	shouldMul = `{"multi_match": {"query": "%s","type": "phrase", "fields": ["s_topscopeclass"]}}`
+	fields    = []string{"_id", "title", "publishtime", "dataweight", "toptype", "subtype", "type", "area", "city", "s_topscopeclass", "s_subscopeclass", "bidamount", "budget", "buyerclass", "buyer", "winner", "bidopentime", "buyertel", "buyerperson", "agency", "agencytel", "agencyperson", "s_winner", "winnertel", "winnerperson", "signendtime", "bidendtime", "projectinfo", "entidlist"}
+)
+
+func GetMonitorList(req *types.PrMonitorListReq) (resultList *[]map[string]interface{}, total int64) {
+
+	bList, b := T.Mgo.Find("follow_customer", map[string]string{"userId": req.MgoUserId}, `{_id: 1}`, nil, false, -1, -1)
+	if b && len(*bList) > 0 {
+		var bName []string
+		for _, v := range *bList {
+			if name := common.ObjToString(v["name"]); name != "" {
+				bName = append(bName, name)
+			}
+		}
+		pageStart := (req.PageNum - 1) * req.PageSize
+		esQuery1 := ""
+		scopeClass := FindBusiness(req.EntId)
+		if scopeClass != "" {
+			var should []string
+			for _, v := range strings.Split(scopeClass, ",") {
+				should = append(should, fmt.Sprintf(shouldMul, v))
+			}
+			esQuery1 = fmt.Sprintf(esQ1, strings.ReplaceAll(strings.Join(bName, ","), ",", `","`), should, strings.ReplaceAll(strings.Join(fields, ","), ",", `","`), pageStart, req.PageSize)
+		} else {
+			esQuery1 = fmt.Sprintf(esQ2, strings.ReplaceAll(strings.Join(bName, ","), ",", `","`), strings.ReplaceAll(strings.Join(fields, ","), ",", `","`), pageStart, req.PageSize)
+		}
+		total, resultList = elastic.GetWithCount("bidding", "bidding", "", esQuery1)
+		return
+	} else {
+		return nil, 0
+	}
+}
+
+func GetCollectList(req *types.PrCollectListReq) (resultList []map[string]interface{}, total int64) {
+	scopeClass := FindBusiness(req.EntId)
+	info := T.JianyuMysql.Find("bdcollection", map[string]interface{}{"userid": req.UserId}, "", `{id: 1}`, -1, -1)
+	var ids []interface{}
+	for _, m := range *info {
+		if bid := common.ObjToString(m["bid"]); bid != "" {
+			ids = append(ids, mongodb.StringTOBsonId(bid))
+		}
+	}
+	if len(ids) == 0 {
+		return make([]map[string]interface{}, 0), 0
+	}
+	if len(ids) > 100 {
+		ids = ids[:100]
+	}
+	fs := make(map[string]interface{})
+	for _, f := range fields {
+		fs[f] = 1
+	}
+	binfo, b := T.MgoBidding.Find("bidding", map[string]interface{}{"$in": ids}, `{_id: 1}`, fs, false, -1, -1)
+	if b && len(*binfo) > 0 {
+		for _, m := range *binfo {
+			if tp := common.ObjToString(m["toptype"]); tp == "采购意向" || tp == "预告" || tp == "招标" {
+				for _, s := range strings.Split(scopeClass, ",") {
+					if top := common.ObjToString("s_topscopeclass"); strings.Contains(top, s) {
+						resultList = append(resultList, m)
+						break
+					}
+				}
+			}
+		}
+	}
+	total = int64(len(resultList))
+	start := (req.PageNum - 1) * req.PageSize
+	end := start + req.PageSize
+
+	// 处理边界情况
+	if start >= len(resultList) {
+		return make([]map[string]interface{}, 0), total
+	}
+	if end > len(resultList) {
+		end = len(resultList)
+	}
+	return resultList[start:end], total
+}

+ 0 - 22
api/internal/types/types.go

@@ -143,25 +143,3 @@ type CooperateOwnerListReq struct {
 	CooperateType string `json:"cooperateType,optional"`
 	PositionId    int64  `header:"positionId,optional"`
 }
-
-type UpdateInitInfoReq struct {
-	BusinessType string `json:"businessType,optional"`
-	Company      string `json:"company,optional"`
-	EntId        int64  `header:"entId,optional"`
-	MgoUserId    string `header:"mgoUserId,optional"` //原userId
-	NewUserId    int64  `header:"newUserId"`
-	AccountId    int64  `header:"accountId,optional"`
-	PositionId   int64  `header:"positionId,optional"`
-	PositionType int64  `header:"positionType,optional"`
-	EntUserId    int64  `header:"entUserId,optional"`
-}
-
-type FindInitInfoReq struct {
-	EntId        int64  `header:"entId,optional"`
-	MgoUserId    string `header:"mgoUserId,optional"` //原userId
-	PositionType int64  `header:"positionType,optional"`
-	NewUserId    int64  `header:"newUserId"`
-	AccountId    int64  `header:"accountId,optional"`
-	PositionId   int64  `header:"positionId,optional"`
-	EntUserId    int64  `header:"entUserId,optional"`
-}

+ 36 - 12
api/networkmanage.api

@@ -151,57 +151,80 @@ type (
 		PositionId   int64  `header:"positionId,optional"`
 		EntUserId    int64  `header:"entUserId,optional"`
 	}
+	PrMonitorListReq {
+		MgoUserId  string `header:mgoUserId,optional`
+		PositionId int64  `header:"positionId,optional"`
+		EntId      int64  `header:"entId,optional"`
+		PageSize   int    `json:"pageSize"`
+		PageNum    int    `json:"pageNum"`
+	}
+	PrCollectListReq {
+		UserId     string `header:userId,optional`
+		MgoUserId  string `header:mgoUserId,optional`
+		PositionId int64  `header:"positionId,optional"`
+		EntId      int64  `header:"entId,optional"`
+		PageSize   int    `json:"pageSize"`
+		PageNum    int    `json:"pageNum"`
+	}
 )
 
 service networkManage {
 	@doc "人脉可达潜客业主列表"
 	@handler ownerList
 	post /networkManage/owner/list (OwnerListReq) returns (Reply)
-
+	
 	@doc "人脉可达商机列表"
 	@handler projectList
 	post /networkManage/network/project/list (ProjectListReq) returns (Reply)
-
+	
 	@doc "项目公关渠道分析-项目名称联想"
 	@handler PrPnameAss
 	post /networkManage/pr/pname/ass (PnameAssReq) returns (Reply)
-
+	
 	@doc "项目公关渠道分析-与业主合作历史"
 	@handler CoopHistoryList
 	post /networkManage/pr/project/analyse (CoopHistoryReq) returns (Reply)
-
+	
 	@doc "人脉库-添加/修改人脉"
 	@handler addOrUpdate
 	post /networkManage/network/addOrUpdate (AddOrUpdateReq) returns (Reply)
-
+	
 	@doc "人脉库-业主名称联想"
 	@handler associate
 	post /networkManage/network/associate (AssociateReq) returns (Reply)
-
+	
 	@doc "人脉库-全部人脉项目"
 	@handler allProject
 	post /networkManage/network/allProject (AllprojectReq) returns (Reply)
-
+	
 	@doc "人脉库-列表"
 	@handler networkList
 	post /networkManage/network/networkList (NetWorkListReq) returns (Reply)
-
+	
 	@doc "情报详情"
 	@handler infoDetail
 	post /networkManage/infomation/detail (InfoDetailReq) returns (Reply)
-
+	
 	@doc "人脉项目分析-业主合作历史"
 	@handler projectHistory
 	post /networkManage/pr/project/history (PrjectHistoryReq) returns (Reply)
-
+	
 	@doc "可介绍业主路径"
 	@handler ownerRoute
 	post /networkManage/owner/route (RouteOwnerListReq) returns (Reply)
-
+	
 	@doc "可介绍业主合作次数"
 	@handler ownerCooperate
 	post /networkManage/owner/cooperate (CooperateOwnerListReq) returns (Reply)
 
+	@doc "公关渠道-业主监控项目找人脉"
+	@handler PrMonitorList
+	post /networkManage/pr/monitor/list (PrMonitorListReq) returns (Reply)
+
+	@doc "公关渠道-标讯收藏项目找人脉"
+	@handler PrCollectList
+	post /networkManage/pr/collect/list (PrCollectListReq) returns (Reply)
+
 	@doc "初始化设置查看"
 	@handler findInitInfo
 	post /networkManage/init/findInitInfo (FindInitInfoReq) returns (Reply)
@@ -209,4 +232,5 @@ service networkManage {
 	@doc "初始化设置"
 	@handler updateInitInfo
 	post /networkManage/init/updateInitInfo (UpdateInitInfoReq) returns (Reply)
-}
+}
+