WH01243 1 жил өмнө
parent
commit
5859495ba5

+ 15 - 30
api/application.api

@@ -41,28 +41,16 @@ type (
 		User              []string `json:"user"`              //企业用户id
 	}
 
-	InfoOperateReq {
+	EmployOperateReq {
 		AppId      string   `header:"appId,default=10000"`
-		BaseUserId int64    `header:"	newUserId"`
+		BaseUserId int64    `header:"newUserId"`
 		PositionId int64    `header:"positionId,optional"`
 		EntUserId  int64    `header:"entUserId,optional"`
 		EntId      int64    `header:"entId,optional"`
-		InfoIdArr  []string `json:"infoIdArr"`  //信息id多条信息
+		IdArr      []string `json:"idArr"`      //信息id多条信息
 		IsEmploy   bool     `json:"isEmploy"`   //是否收录true收录 false取消收录
-		SourceType int64    `json:"sourceType"` //来源方式来源;1:标讯信息 2:拟建项目
-		EmployType int64    `json:"employType"` //收录方式类型;1:线索处理 2:机会挖掘 3:任务复盘
-	}
-
-	CompanyOperateReq {
-		AppId      string   `header:"appId,default=10000"`
-		BaseUserId int64    `header:"	newUserId"`
-		PositionId int64    `header:"positionId,optional"`
-		EntUserId  int64    `header:"entUserId,optional"`
-		EntId      int64    `header:"entId,optional"`
-		CompanyId  []string `json:"companyId"`  //企业标识
-		IsEmploy   bool     `json:"IsEmploy"`   //是否收录true收录false取消收录
-		SourceType int64    `json:"sourceType"` //来源;1:企业搜索 2:采购单位搜索
-		EmployType int64    `json:"employType"` //收录方式;1:检索 2:自动导入
+		SourceType int64    `json:"sourceType"` //收录方式类型;1:线索处理 2:机会挖掘 3:任务复盘
+		EmployType int64    `json:"employType"` //来源方式来源;1标采购搜索、2企业搜索、3采购单位搜索、4拟在建项目
 	}
 
 	TransferReq {
@@ -86,13 +74,13 @@ type (
 	}
 
 	InfoEmployinfoReq {
-		AppId      string `header:"appId,default=10000"`
-		BaseUserId int64  `header:"newUserId"`
-		PositionId int64  `header:"positionId,optional"`
-		EntUserId  int64  `header:"entUserId,optional"`
-		EntId      int64  `header:"entId,optional"`
-		EmployType int64  `json:"employType"` //1资讯收录2客户收录
-		Id         string `json:"id"`         //id
+		AppId      string   `header:"appId,default=10000"`
+		BaseUserId int64    `header:"newUserId"`
+		PositionId int64    `header:"positionId,optional"`
+		EntUserId  int64    `header:"entUserId,optional"`
+		EntId      int64    `header:"entId,optional"`
+		EmployType int64    `json:"employType"` //1标采购搜索、2企业搜索、3采购单位搜索、4拟在建项目
+		Id         []string `json:"id"`         //id
 	}
 
 	CustomAddReq {
@@ -126,12 +114,9 @@ service crmApplication {
 	@doc "创建销售机会"
 	@handler saleChanceAdd
 	post /crmApplication/saleChance/add (SaleChanceReq) returns (Reply)
-	@doc "标讯收录操作"
+	@doc "收录操作"
 	@handler infoOperate
-	post /crmApplication/infoEmploy/operate (InfoOperateReq) returns (Reply)
-	@doc "客户收录操作"
-	@handler companyOperate
-	post /crmApplication/companyEmploy/operate (CompanyOperateReq) returns (Reply)
+	post /crmApplication/employ/operate (EmployOperateReq) returns (Reply)
 	@doc "商业资讯的转办"
 	@handler transfer
 	post /crmApplication/information/transfer (TransferReq) returns (Reply)
@@ -140,7 +125,7 @@ service crmApplication {
 	post /crmApplication/ignore/operate (IgnoreOperateReq) returns (Reply)
 	@doc "收录情况"
 	@handler infoEmployinfo
-	post /crmApplication/infoEmploy/info (InfoEmployinfoReq) returns (Reply)
+	post /crmApplication/employ/info (InfoEmployinfoReq) returns (Reply)
 	@doc "创建客户"
 	@handler customAdd
 	post /crmApplication/custom/add (CustomAddReq) returns (Reply)

+ 35 - 6
api/common/initconfig.go

@@ -5,6 +5,7 @@ import (
 	"log"
 	"strings"
 
+	. "app.yhyue.com/moapp/jybase/es"
 	"app.yhyue.com/moapp/jybase/mongodb"
 	"app.yhyue.com/moapp/jybase/mysql"
 	"app.yhyue.com/moapp/jybase/redis"
@@ -17,7 +18,6 @@ import (
 var configFile = flag.String("fs", "etc/crmapplication.yaml", "the config file")
 var C config.Config
 
-//
 var logFile = flag.String("lf", "etc/logs.yaml", "the config file")
 var logc entity.Logc
 
@@ -25,10 +25,12 @@ var dbFile = flag.String("df", "etc/db.yaml", "the db file")
 var DB config.Db
 
 var (
-	MainMysql *mysql.Mysql
-	BaseMysql *mysql.Mysql
-	CrmMysql  *mysql.Mysql
-	Mgo       mongodb.MongodbSim
+	MainMysql  *mysql.Mysql
+	BaseMysql  *mysql.Mysql
+	CrmMysql   *mysql.Mysql
+	Mgo        mongodb.MongodbSim
+	MgoBidding mongodb.MongodbSim
+	MgoEnt     mongodb.MongodbSim
 )
 
 func init() {
@@ -94,7 +96,7 @@ func init() {
 		redis.InitRedisBySize(strings.Join(rm.Addr, ","), 100, 30, 300)
 	}
 	if DB.Mongo.Main.Address != "" {
-		logx.Info("--初始化 mongodb--")
+		logx.Info("--初始化 mongodb main--")
 		Mgo = mongodb.MongodbSim{
 			MongodbAddr: DB.Mongo.Main.Address,
 			Size:        DB.Mongo.Main.Size,
@@ -102,4 +104,31 @@ func init() {
 		}
 		Mgo.InitPool()
 	}
+	if DB.Mongo.Bidding.Address != "" {
+		logx.Info("--初始化 mongodb Bidding --")
+		MgoBidding = mongodb.MongodbSim{
+			MongodbAddr: DB.Mongo.Bidding.Address,
+			Size:        DB.Mongo.Bidding.Size,
+			DbName:      DB.Mongo.Bidding.DbName,
+			Password:    DB.Mongo.Bidding.Password,
+			UserName:    DB.Mongo.Bidding.UserName,
+		}
+		MgoBidding.InitPool()
+	}
+	if DB.Mongo.Ent.Address != "" {
+		logx.Info("--初始化 mongodb ent --")
+		MgoEnt = mongodb.MongodbSim{
+			MongodbAddr: DB.Mongo.Ent.Address,
+			Size:        DB.Mongo.Ent.Size,
+			DbName:      DB.Mongo.Ent.DbName,
+			Password:    DB.Mongo.Ent.Password,
+			UserName:    DB.Mongo.Ent.UserName,
+		}
+		MgoEnt.InitPool()
+	}
+	//初始化 elasticsearch
+	if DB.Es.Addr != "" {
+		log.Println("--初始化 elasticsearch--")
+		NewEs(DB.Es.Version, DB.Es.Addr, DB.Es.Size, DB.Es.UserName, DB.Es.Password)
+	}
 }

+ 2 - 1
api/etc/crmapplication.yaml

@@ -1,7 +1,8 @@
 Name: crmApplication
 Host: 0.0.0.0
 Port: 8888
+Timeout: 20000
 Gateway:
   ServerCode: crmApplication
   Etcd:
-    - 127.0.0.1:2379
+    - 127.0.0.1:2379

+ 26 - 1
api/etc/db.yaml

@@ -27,4 +27,29 @@ mongo:
     main:
         dbName: qfw
         size: 5
-        address: 192.168.3.206:27080
+        address: 192.168.3.206:27080
+    "bidding": {
+        "address": "192.168.3.206:27002",
+        "size": 5,
+        "dbName": "qfw_data",
+        "collection": "bidding",
+        "collection_change": "bidding_back",
+        "userName": "jyDevGroup",
+        "password": "jy@DevGroup"
+    }
+    "ent": {
+        "address": "192.168.3.206:27002",
+        "size": 5,
+        "dbName": "mixdata",
+        "replSet": "",
+        "collection": "qyxy",
+        "collection_change": "qyxy_change",
+        "userName": "jyDevGroup",
+        "password": "jy@DevGroup"
+    }
+es:
+    addr: http://192.168.3.241:9205
+    size: 50
+    version: v7
+    userName: ""
+    password: ""

+ 1 - 0
api/internal/config/config.go

@@ -17,4 +17,5 @@ type Db struct {
 	Mysql entity.Mysql      `json:"mysql"`
 	Redis entity.RedisStuct `json:"redis"`
 	Mongo entity.Mongo      `json:"mongo"`
+	Es    entity.EsStruct   `json:"es"`
 }

+ 0 - 28
api/internal/handler/clueaddhandler.go

@@ -1,28 +0,0 @@
-package handler
-
-import (
-	"net/http"
-
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/logic"
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/svc"
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/types"
-	"github.com/zeromicro/go-zero/rest/httpx"
-)
-
-func clueAddHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
-	return func(w http.ResponseWriter, r *http.Request) {
-		var req types.ClueAddReq
-		if err := httpx.Parse(r, &req); err != nil {
-			httpx.Error(w, err)
-			return
-		}
-
-		l := logic.NewClueAddLogic(r.Context(), svcCtx)
-		resp, err := l.ClueAdd(&req)
-		if err != nil {
-			httpx.Error(w, err)
-		} else {
-			httpx.OkJson(w, resp)
-		}
-	}
-}

+ 0 - 28
api/internal/handler/companyoperatehandler.go

@@ -1,28 +0,0 @@
-package handler
-
-import (
-	"net/http"
-
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/logic"
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/svc"
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/types"
-	"github.com/zeromicro/go-zero/rest/httpx"
-)
-
-func companyOperateHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
-	return func(w http.ResponseWriter, r *http.Request) {
-		var req types.CompanyOperateReq
-		if err := httpx.Parse(r, &req); err != nil {
-			httpx.Error(w, err)
-			return
-		}
-
-		l := logic.NewCompanyOperateLogic(r.Context(), svcCtx)
-		resp, err := l.CompanyOperate(&req)
-		if err != nil {
-			httpx.Error(w, err)
-		} else {
-			httpx.OkJson(w, resp)
-		}
-	}
-}

+ 0 - 28
api/internal/handler/customaddhandler.go

@@ -1,28 +0,0 @@
-package handler
-
-import (
-	"net/http"
-
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/logic"
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/svc"
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/types"
-	"github.com/zeromicro/go-zero/rest/httpx"
-)
-
-func customAddHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
-	return func(w http.ResponseWriter, r *http.Request) {
-		var req types.CustomAddReq
-		if err := httpx.Parse(r, &req); err != nil {
-			httpx.Error(w, err)
-			return
-		}
-
-		l := logic.NewCustomAddLogic(r.Context(), svcCtx)
-		resp, err := l.CustomAdd(&req)
-		if err != nil {
-			httpx.Error(w, err)
-		} else {
-			httpx.OkJson(w, resp)
-		}
-	}
-}

+ 0 - 28
api/internal/handler/ignoreoperatehandler.go

@@ -1,28 +0,0 @@
-package handler
-
-import (
-	"net/http"
-
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/logic"
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/svc"
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/types"
-	"github.com/zeromicro/go-zero/rest/httpx"
-)
-
-func ignoreOperateHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
-	return func(w http.ResponseWriter, r *http.Request) {
-		var req types.IgnoreOperateReq
-		if err := httpx.Parse(r, &req); err != nil {
-			httpx.Error(w, err)
-			return
-		}
-
-		l := logic.NewIgnoreOperateLogic(r.Context(), svcCtx)
-		resp, err := l.IgnoreOperate(&req)
-		if err != nil {
-			httpx.Error(w, err)
-		} else {
-			httpx.OkJson(w, resp)
-		}
-	}
-}

+ 0 - 28
api/internal/handler/infoemployinfohandler.go

@@ -1,28 +0,0 @@
-package handler
-
-import (
-	"net/http"
-
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/logic"
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/svc"
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/types"
-	"github.com/zeromicro/go-zero/rest/httpx"
-)
-
-func infoEmployinfoHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
-	return func(w http.ResponseWriter, r *http.Request) {
-		var req types.InfoEmployinfoReq
-		if err := httpx.Parse(r, &req); err != nil {
-			httpx.Error(w, err)
-			return
-		}
-
-		l := logic.NewInfoEmployinfoLogic(r.Context(), svcCtx)
-		resp, err := l.InfoEmployinfo(&req)
-		if err != nil {
-			httpx.Error(w, err)
-		} else {
-			httpx.OkJson(w, resp)
-		}
-	}
-}

+ 0 - 28
api/internal/handler/infooperatehandler.go

@@ -1,28 +0,0 @@
-package handler
-
-import (
-	"net/http"
-
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/logic"
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/svc"
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/types"
-	"github.com/zeromicro/go-zero/rest/httpx"
-)
-
-func infoOperateHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
-	return func(w http.ResponseWriter, r *http.Request) {
-		var req types.InfoOperateReq
-		if err := httpx.Parse(r, &req); err != nil {
-			httpx.Error(w, err)
-			return
-		}
-
-		l := logic.NewInfoOperateLogic(r.Context(), svcCtx)
-		resp, err := l.InfoOperate(&req)
-		if err != nil {
-			httpx.Error(w, err)
-		} else {
-			httpx.OkJson(w, resp)
-		}
-	}
-}

+ 0 - 57
api/internal/handler/routes.go

@@ -1,57 +0,0 @@
-// Code generated by goctl. DO NOT EDIT.
-package handler
-
-import (
-	"net/http"
-
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/svc"
-
-	"github.com/zeromicro/go-zero/rest"
-)
-
-func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
-	server.AddRoutes(
-		[]rest.Route{
-			{
-				Method:  http.MethodPost,
-				Path:    "/crmApplication/clue/add",
-				Handler: clueAddHandler(serverCtx),
-			},
-			{
-				Method:  http.MethodPost,
-				Path:    "/crmApplication/saleChance/add",
-				Handler: saleChanceAddHandler(serverCtx),
-			},
-			{
-				Method:  http.MethodPost,
-				Path:    "/crmApplication/infoEmploy/operate",
-				Handler: infoOperateHandler(serverCtx),
-			},
-			{
-				Method:  http.MethodPost,
-				Path:    "/crmApplication/companyEmploy/operate",
-				Handler: companyOperateHandler(serverCtx),
-			},
-			{
-				Method:  http.MethodPost,
-				Path:    "/crmApplication/information/transfer",
-				Handler: transferHandler(serverCtx),
-			},
-			{
-				Method:  http.MethodPost,
-				Path:    "/crmApplication/ignore/operate",
-				Handler: ignoreOperateHandler(serverCtx),
-			},
-			{
-				Method:  http.MethodPost,
-				Path:    "/crmApplication/infoEmploy/info",
-				Handler: infoEmployinfoHandler(serverCtx),
-			},
-			{
-				Method:  http.MethodPost,
-				Path:    "/crmApplication/custom/add",
-				Handler: customAddHandler(serverCtx),
-			},
-		},
-	)
-}

+ 0 - 28
api/internal/handler/salechanceaddhandler.go

@@ -1,28 +0,0 @@
-package handler
-
-import (
-	"net/http"
-
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/logic"
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/svc"
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/types"
-	"github.com/zeromicro/go-zero/rest/httpx"
-)
-
-func saleChanceAddHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
-	return func(w http.ResponseWriter, r *http.Request) {
-		var req types.SaleChanceReq
-		if err := httpx.Parse(r, &req); err != nil {
-			httpx.Error(w, err)
-			return
-		}
-
-		l := logic.NewSaleChanceAddLogic(r.Context(), svcCtx)
-		resp, err := l.SaleChanceAdd(&req)
-		if err != nil {
-			httpx.Error(w, err)
-		} else {
-			httpx.OkJson(w, resp)
-		}
-	}
-}

+ 0 - 28
api/internal/handler/transferhandler.go

@@ -1,28 +0,0 @@
-package handler
-
-import (
-	"net/http"
-
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/logic"
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/svc"
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/types"
-	"github.com/zeromicro/go-zero/rest/httpx"
-)
-
-func transferHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
-	return func(w http.ResponseWriter, r *http.Request) {
-		var req types.TransferReq
-		if err := httpx.Parse(r, &req); err != nil {
-			httpx.Error(w, err)
-			return
-		}
-
-		l := logic.NewTransferLogic(r.Context(), svcCtx)
-		resp, err := l.Transfer(&req)
-		if err != nil {
-			httpx.Error(w, err)
-		} else {
-			httpx.OkJson(w, resp)
-		}
-	}
-}

+ 0 - 30
api/internal/logic/companyoperatelogic.go

@@ -1,30 +0,0 @@
-package logic
-
-import (
-	"context"
-
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/svc"
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/types"
-
-	"github.com/zeromicro/go-zero/core/logx"
-)
-
-type CompanyOperateLogic struct {
-	logx.Logger
-	ctx    context.Context
-	svcCtx *svc.ServiceContext
-}
-
-func NewCompanyOperateLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CompanyOperateLogic {
-	return &CompanyOperateLogic{
-		Logger: logx.WithContext(ctx),
-		ctx:    ctx,
-		svcCtx: svcCtx,
-	}
-}
-
-func (l *CompanyOperateLogic) CompanyOperate(req *types.CompanyOperateReq) (resp *types.Reply, err error) {
-	// todo: add your logic here and delete this line
-
-	return
-}

+ 0 - 30
api/internal/logic/infoemployinfologic.go

@@ -1,30 +0,0 @@
-package logic
-
-import (
-	"context"
-
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/svc"
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/types"
-
-	"github.com/zeromicro/go-zero/core/logx"
-)
-
-type InfoEmployinfoLogic struct {
-	logx.Logger
-	ctx    context.Context
-	svcCtx *svc.ServiceContext
-}
-
-func NewInfoEmployinfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *InfoEmployinfoLogic {
-	return &InfoEmployinfoLogic{
-		Logger: logx.WithContext(ctx),
-		ctx:    ctx,
-		svcCtx: svcCtx,
-	}
-}
-
-func (l *InfoEmployinfoLogic) InfoEmployinfo(req *types.InfoEmployinfoReq) (resp *types.Reply, err error) {
-	// todo: add your logic here and delete this line
-
-	return
-}

+ 0 - 30
api/internal/logic/infooperatelogic.go

@@ -1,30 +0,0 @@
-package logic
-
-import (
-	"context"
-
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/svc"
-	"bp.jydev.jianyu360.cn/CRM/application/api/internal/types"
-
-	"github.com/zeromicro/go-zero/core/logx"
-)
-
-type InfoOperateLogic struct {
-	logx.Logger
-	ctx    context.Context
-	svcCtx *svc.ServiceContext
-}
-
-func NewInfoOperateLogic(ctx context.Context, svcCtx *svc.ServiceContext) *InfoOperateLogic {
-	return &InfoOperateLogic{
-		Logger: logx.WithContext(ctx),
-		ctx:    ctx,
-		svcCtx: svcCtx,
-	}
-}
-
-func (l *InfoOperateLogic) InfoOperate(req *types.InfoOperateReq) (resp *types.Reply, err error) {
-	// todo: add your logic here and delete this line
-
-	return
-}

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

@@ -41,30 +41,18 @@ type SaleChanceReq struct {
 	User              []string `json:"user"`              //企业用户id
 }
 
-type InfoOperateReq struct {
+type EmployOperateReq struct {
 	AppId      string   `header:"appId,default=10000"`
 	BaseUserId int64    `header:"	newUserId"`
 	PositionId int64    `header:"positionId,optional"`
 	EntUserId  int64    `header:"entUserId,optional"`
 	EntId      int64    `header:"entId,optional"`
-	InfoIdArr  []string `json:"infoIdArr"`  //信息id多条信息
+	IdArr      []string `json:"idArr"`      //信息id多条信息
 	IsEmploy   bool     `json:"isEmploy"`   //是否收录true收录 false取消收录
-	SourceType int64    `json:"sourceType"` //来源方式来源;1:标讯信息 2:拟建项目
+	SourceType int64    `json:"sourceType"` //来源方式来源;1标采购搜索、2企业搜索、3采购单位搜索、4拟在建项目
 	EmployType int64    `json:"employType"` //收录方式类型;1:线索处理 2:机会挖掘 3:任务复盘
 }
 
-type CompanyOperateReq struct {
-	AppId      string   `header:"appId,default=10000"`
-	BaseUserId int64    `header:"	newUserId"`
-	PositionId int64    `header:"positionId,optional"`
-	EntUserId  int64    `header:"entUserId,optional"`
-	EntId      int64    `header:"entId,optional"`
-	CompanyId  []string `json:"companyId"`  //企业标识
-	IsEmploy   bool     `json:"IsEmploy"`   //是否收录true收录false取消收录
-	SourceType int64    `json:"sourceType"` //来源;1:企业搜索 2:采购单位搜索
-	EmployType int64    `json:"employType"` //收录方式;1:检索 2:自动导入
-}
-
 type TransferReq struct {
 	AppId         string   `header:"appId,default=10000"`
 	BaseUserId    int64    `header:"newUserId"`
@@ -86,13 +74,13 @@ type IgnoreOperateReq struct {
 }
 
 type InfoEmployinfoReq struct {
-	AppId      string `header:"appId,default=10000"`
-	BaseUserId int64  `header:"newUserId"`
-	PositionId int64  `header:"positionId,optional"`
-	EntUserId  int64  `header:"entUserId,optional"`
-	EntId      int64  `header:"entId,optional"`
-	EmployType int64  `json:"employType"` //1资讯收录2客户收录
-	Id         string `json:"id"`         //id
+	AppId      string   `header:"appId,default=10000"`
+	BaseUserId int64    `header:"newUserId"`
+	PositionId int64    `header:"positionId,optional"`
+	EntUserId  int64    `header:"entUserId,optional"`
+	EntId      int64    `header:"entId,optional"`
+	EmployType int64    `json:"employType"` //1标采购搜索、2企业搜索、3采购单位搜索、4拟在建项目
+	Id         []string `json:"id"`         //id
 }
 
 type CustomAddReq struct {

+ 405 - 0
api/service/EmployService.go

@@ -0,0 +1,405 @@
+package service
+
+import (
+	"app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/jybase/date"
+	"app.yhyue.com/moapp/jybase/encrypt"
+	elastic "app.yhyue.com/moapp/jybase/es"
+	"app.yhyue.com/moapp/jybase/mongodb"
+	"app.yhyue.com/moapp/jypkg/ent/util"
+	"app.yhyue.com/moapp/jypkg/public"
+	MC "bp.jydev.jianyu360.cn/CRM/application/api/common"
+	"bp.jydev.jianyu360.cn/CRM/application/api/internal/types"
+	"bp.jydev.jianyu360.cn/CRM/application/entity"
+	"database/sql"
+	"fmt"
+	"github.com/RoaringBitmap/roaring"
+	"go.mongodb.org/mongo-driver/bson"
+	"time"
+)
+
+const (
+	BuyerIndex = "buyer" // 采购单位index
+	BuyerType  = "buyer"
+	query      = `{%s "query":{"bool":{"must":[%s],"must_not": [{"term": {"buyer_name": ""}}]}}}`
+)
+
+type EmPloyService struct{}
+
+// 收录情况查询
+func (e *EmPloyService) InfoEmployinfo(in *types.InfoEmployinfoReq) []map[string]interface{} {
+	data := []map[string]interface{}{}
+	for _, v := range in.Id {
+		vint := int64(0)
+		table := entity.EMPLOY_CUSTOM
+		id := ""
+		source := 0
+		if in.EmployType == 3 {
+			//判断传过来的是名字还是ID
+			//id转中文
+			if len(v) > 0 && len([]rune(v)) == len(v) {
+				//此数据是id
+				//获取中文名字
+				id = util.DecodeId(v)
+			} else {
+				//次数据传的名字
+				id = getBuyerIdByName(v)
+			}
+		} else {
+			id = util.DecodeId(v)
+		}
+		valueMap := map[string]interface{}{
+			"id": v,
+		}
+		employKey := "company_id"
+		findKey := "employ_custom_id"
+		//有收录情况
+		rb := roaring.NewBitmap()
+		bytes := []byte{}
+		byte1 := []byte{}
+		byte2 := []byte{}
+		byte3 := []byte{}
+		byte4 := []byte{}
+		MC.CrmMysql.DB.QueryRow("select   search_tencent, search_buyer, search_ent, search_nzj from employ_summary where  position_id=?", in.PositionId).Scan(&byte1, &byte2, &byte3, &byte4)
+		if byte1 != nil {
+			search_tencent := roaring.NewBitmap()
+			search_buyer := roaring.NewBitmap()
+			search_ent := roaring.NewBitmap()
+			search_nzj := roaring.NewBitmap()
+			if byte1 != nil && len(byte1) > 0 {
+				search_tencent.UnmarshalBinary(byte1)
+			}
+			if byte2 != nil && len(byte2) > 0 {
+				search_buyer.UnmarshalBinary(byte2)
+			}
+			if byte3 != nil && len(byte3) > 0 {
+				search_ent.UnmarshalBinary(byte3)
+			}
+			if byte4 != nil && len(byte4) > 0 {
+				search_nzj.UnmarshalBinary(byte4)
+			}
+			switch in.EmployType {
+			case 1:
+				bytes = byte1
+				table = entity.EMPLOY_INFO
+				employKey = "source_id"
+				findKey = "employ_info_id"
+				source = 1
+			case 2:
+				bytes = byte2
+				source = 1
+			case 3:
+				bytes = byte3
+				source = 2
+			case 4:
+				bytes = byte4
+				source = 2
+				table = entity.EMPLOY_INFO
+				employKey = "source_id"
+				findKey = "employ_info_id"
+			}
+			err := rb.UnmarshalBinary(bytes)
+			if err != nil {
+				break
+			}
+			vint = mongodb.StringTOBsonId(v).Timestamp().Unix()
+			valueMap["isEmploy"] = rb.Contains(uint32(vint))
+		}
+		if len(in.Id) == 1 {
+			//列表查询
+			//是否忽略处理
+			employData := MC.CrmMysql.FindOne(table, map[string]interface{}{
+				employKey:     id,
+				"position_id": in.PositionId,
+				"source":      source,
+			}, "", "")
+			if employData != nil && len(*employData) > 0 {
+				valueMap["isIgnore"] = common.Int64All((*employData)["is_ignore"])
+			} else {
+				valueMap["isIgnore"] = 0
+			}
+			//客户数量
+			customCount := MC.CrmMysql.Count(entity.CUSTOM, map[string]interface{}{
+				findKey:       id,
+				"position_id": in.PositionId,
+			})
+			valueMap["customCount"] = customCount
+			if in.EmployType == 1 || in.EmployType == 4 {
+				//销售线索数量
+				clueCount := MC.CrmMysql.Count(entity.SALE_CLUE, map[string]interface{}{
+					"employ_info_id": id,
+					"position_id":    in.PositionId,
+				})
+				valueMap["clueCount"] = clueCount
+				//销售机会数量
+				chanceCount := MC.CrmMysql.Count(entity.SALE_CHANCE, map[string]interface{}{
+					"employ_info_id": id,
+					"position_id":    in.PositionId,
+				})
+				valueMap["chanceCount"] = chanceCount
+			}
+		}
+		data = append(data, valueMap)
+	}
+	return data
+}
+
+// 收录操作
+func (e *EmPloyService) EmployOperate(in *types.EmployOperateReq) bool {
+	//收录汇总表
+	employSummaryData := MC.CrmMysql.FindOne(entity.EMPLOY_SUMMARY, map[string]interface{}{
+		"position_id": in.PositionId,
+	}, "", "")
+	byte1 := []byte{}
+	byte2 := []byte{}
+	byte3 := []byte{}
+	byte4 := []byte{}
+	MC.CrmMysql.DB.QueryRow("select   search_tencent, search_buyer, search_ent, search_nzj from employ_summary where  position_id=?", in.PositionId).Scan(&byte1, &byte2, &byte3, &byte4)
+	search_tencent := roaring.NewBitmap()
+	search_buyer := roaring.NewBitmap()
+	search_ent := roaring.NewBitmap()
+	search_nzj := roaring.NewBitmap()
+	if byte1 != nil && len(byte1) > 0 {
+		search_tencent.UnmarshalBinary(byte1)
+	}
+	if byte2 != nil && len(byte2) > 0 {
+		search_buyer.UnmarshalBinary(byte2)
+	}
+	if byte3 != nil && len(byte3) > 0 {
+		search_ent.UnmarshalBinary(byte3)
+	}
+	if byte4 != nil && len(byte4) > 0 {
+		search_nzj.UnmarshalBinary(byte4)
+	}
+	table := ""
+	switch in.EmployType {
+	case 1, 4:
+		table = entity.EMPLOY_INFO
+	case 2, 3:
+		table = entity.EMPLOY_CUSTOM
+	}
+	return MC.CrmMysql.ExecTx("收录操作", func(tx *sql.Tx) bool {
+		for _, v1 := range in.IdArr {
+			//id转中文
+			id := ""
+			name := ""
+			findMap := map[string]interface{}{}
+			findMap["position_id"] = in.PositionId
+			if in.EmployType == 3 {
+				//判断传过来的是名字还是ID
+				//id转中文
+				if len(v1) > 0 && len([]rune(v1)) == len(v1) {
+					//此数据是id
+					//获取中文名字
+					id = util.DecodeId(v1)
+					name = getBuyerIdByName(id)
+				} else {
+					//次数据传的名字
+					name = v1
+					id = getBuyerIdByName(v1)
+				}
+				findMap["company_id"] = id
+			} else if in.EmployType == 2 {
+				id = encrypt.DecodeArticleId2ByCheck(v1)[0]
+				findMap["company_id"] = id
+			} else {
+				id = encrypt.CommonDecodeArticle("content", v1)[0]
+				findMap["source_id"] = id
+			}
+			if in.IsEmploy {
+				if MC.CrmMysql.Count(table, findMap) > 0 {
+					MC.CrmMysql.UpdateByTx(tx, table, findMap, map[string]interface{}{
+						"status": 1,
+					})
+				} else {
+					//收录新增
+					data := map[string]interface{}{}
+					if in.EmployType == 2 {
+						data = CustomFind(id, "", in.EmployType)
+					} else if in.EmployType == 3 {
+						//id转中文
+						data = CustomFind("", name, in.EmployType)
+					} else {
+						data = InfoFind(id, in.EmployType)
+						data["type"] = in.SourceType
+						data["source"] = in.EmployType
+						data["employ_way"] = 1
+						data["jybx_url"] = "/article/content/" + v1 + ".html"
+					}
+					data["position_id"] = in.PositionId
+					data["ent_id"] = in.EntId
+					MC.CrmMysql.InsertByTx(tx, table, data)
+				}
+			} else {
+				//取消收录
+				MC.CrmMysql.UpdateByTx(tx, table, findMap, map[string]interface{}{
+					"status": -1,
+				})
+			}
+			//收录汇总表处理
+			KeyHandle(mongodb.StringTOBsonId(id).Timestamp().Unix(), in.EmployType, in.IsEmploy, search_tencent, search_buyer, search_ent, search_nzj)
+		}
+		search_tencent_byte, _ := search_tencent.ToBytes()
+		search_buyer_byte, _ := search_buyer.ToBytes()
+		search_ent_byte, _ := search_ent.ToBytes()
+		search_nzj_byte, _ := search_nzj.ToBytes()
+		if employSummaryData != nil && len(*employSummaryData) > 0 {
+			//修改
+			MC.CrmMysql.UpdateByTx(tx, entity.EMPLOY_SUMMARY, map[string]interface{}{
+				"position_id": in.PositionId,
+			}, map[string]interface{}{
+				"search_tencent": search_tencent_byte,
+				"search_buyer":   search_buyer_byte,
+				"search_ent":     search_ent_byte,
+				"search_nzj":     search_nzj_byte,
+			})
+		} else {
+			//新增
+			MC.CrmMysql.InsertByTx(tx, entity.EMPLOY_SUMMARY, map[string]interface{}{
+				"position_id ":   in.PositionId,
+				"search_tencent": search_tencent_byte,
+				"search_buyer":   search_buyer_byte,
+				"search_ent":     search_ent_byte,
+				"search_nzj":     search_nzj_byte,
+			})
+		}
+		return true
+	})
+}
+
+// 收录数据处理
+func KeyHandle(id int64, employType int64, isEmploy bool, search_tencent, search_buyer, search_ent, search_nzj *roaring.Bitmap) {
+	switch employType {
+	case 1:
+		if isEmploy {
+			search_tencent.Add(uint32(id))
+		} else {
+			search_tencent.Remove(uint32(id))
+		}
+	case 2:
+		if isEmploy {
+			search_buyer.Add(uint32(id))
+		} else {
+			search_buyer.Remove(uint32(id))
+		}
+	case 3:
+		if isEmploy {
+			search_ent.Add(uint32(id))
+		} else {
+			search_ent.Remove(uint32(id))
+		}
+	case 4:
+		if isEmploy {
+			search_nzj.Add(uint32(id))
+		} else {
+			search_nzj.Remove(uint32(id))
+		}
+
+	}
+	return
+}
+
+// 企业信息查询
+func CustomFind(id string, name string, employType int64) map[string]interface{} {
+	data := map[string]interface{}{}
+	//company_id 企业id name户名称 address 地址
+	if employType == 2 {
+		//企业详情
+		entinfo, _ := MC.MgoEnt.FindOneByField("qyxy_std", map[string]interface{}{"_id": id}, map[string]interface{}{
+			"company_address": 1, //注册地
+			"company_name":    1,
+		})
+		if entinfo != nil && len(*entinfo) > 0 {
+			data["name"] = (*entinfo)["company_name"]
+			data["address"] = (*entinfo)["company_address"]
+			data["company_id"] = (*entinfo)["id"]
+		}
+	} else {
+		//采购单位详情
+		entNameQuery := fmt.Sprintf(`{"query":{"bool":{"must":[{"term":{"buyer_name":"%s"}}]}},"size":1,"_source":["city","buyer_name","id"]}`, name)
+		rs := elastic.Get(BuyerIndex, BuyerType, entNameQuery)
+		if rs != nil && len(*rs) > 0 {
+			data["name"] = (*rs)[0]["buyer_name"]
+			data["address"] = (*rs)[0]["city"]
+			data["company_id"] = (*rs)[0]["id"]
+		}
+	}
+	data["status"] = 1
+	data["create_time"] = time.Now().Format(date.Date_Full_Layout)
+	return data
+}
+
+// 标讯信息查询
+func InfoFind(id string, employType int64) map[string]interface{} {
+	data := map[string]interface{}{}
+	//source_id  信息id、项目id- title 标题-area 省 -city 市 -subtype 信息类型二级分类
+	//buyerclass 采购单位行业 -budget 预算 -bidamount 中标金额 buyer采购单位 annex有无附件  publishtime发布时间  projectname 项目时间
+	//ownerclass  业主类型(拟在建搜索) expurasing_time 预计采购时间   jybx_url 标讯详情页
+	if employType == 1 {
+		//标讯信息
+		obj := map[string]interface{}{}
+		brobj, ok := MC.Mgo.Find("bidding_rec", bson.M{"s_id": id}, `{"l_recoverydate":-1}`, public.MgoBiddingFields, false, 0, 1)
+		if ok && (*brobj) != nil && len(*brobj) == 1 && (*brobj)[0] != nil {
+			obj = (*brobj)[0]
+		} else {
+			aobj, ok := MC.MgoBidding.FindById("bidding", id, public.MgoBiddingFields)
+			if ok && (aobj == nil || *aobj == nil || len(*aobj) == 0) {
+				aobj, ok = MC.MgoBidding.FindById("bidding_back", id, public.MgoBiddingFields)
+			}
+			obj = *aobj
+		}
+		if ok && obj != nil && len(obj) > 0 {
+			titleTmp := common.ObjToString(obj["title"])
+			if len([]rune(titleTmp)) > 100 {
+				titleTmp = string([]rune(titleTmp)[:100]) + "..."
+			}
+			titleTmp = public.ClearHtml.ReplaceAllString(titleTmp, "")
+			data["title"] = titleTmp
+			data["city"] = obj["city"]
+			data["area"] = obj["area"]
+			data["subtype"] = obj["subtype"]
+			data["buyerclass"] = obj["buyerclass"]
+			data["budget"] = obj["budget"]
+			data["bidamount"] = obj["bidamount"]
+			data["annex"] = 0
+			if obj["projectinfo"] != nil {
+				projectinfo := common.ObjToMap(obj["projectinfo"])
+				if (*projectinfo)["attachments"] != nil {
+					data["annex"] = 1
+				}
+			}
+			data["publishtime"] = time.Unix(common.Int64All(obj["publishtime"]), 0).Format(date.Date_Full_Layout)
+			data["show_time"] = time.Unix(common.Int64All(obj["publishtime"]), 0).Format(date.Date_Full_Layout)
+			data["projectname"] = obj["projectname"]
+			procurementlist, _ := obj["procurementlist"].([]interface{})
+			for _, vs := range procurementlist { //1.采购意向清单数据集打码处理
+				vsMap, _ := vs.(map[string]interface{})
+				if vsMap["expurasingtime"] != nil {
+					data["expurasing_time"] = vsMap["expurasingtime"]
+					break
+				}
+			}
+		}
+	}
+	data["status"] = 1
+	data["employ_way"] = 1
+	data["source_id"] = id
+	data["create_time"] = time.Now().Format(date.Date_Full_Layout)
+	return data
+}
+func getBuyerNameById(buyerId string) (buyerName string) {
+	r := elastic.Get(BuyerIndex, BuyerType, fmt.Sprintf(`{"query":{"bool":{"must":[{"terms":{"_id":["%s"]}}]}},"size":1,"_source":["name"]}`, buyerId))
+	if r == nil || len(*r) == 0 {
+		return
+	}
+	buyerName, _ = (*r)[0]["name"].(string)
+	return
+}
+func getBuyerIdByName(buyeName string) (buyerId string) {
+	r := elastic.Get("buyer", "buyer", fmt.Sprintf(`{"query":{"bool":{"must":[{"term":{"buyer_name":"%s"}}]}},"size":1,"_source":["city","id"]}`, buyeName))
+	if r == nil || len(*r) == 0 {
+		return
+	}
+	buyerId, _ = (*r)[0]["_id"].(string)
+	return
+}

+ 19 - 3
entity/db.go

@@ -9,7 +9,9 @@ type Mysql struct {
 	CrmService  *MysqlStruct `json:"crmService,omitempty"`
 }
 type Mongo struct {
-	Main *MongoStruct `json:"main,optional"`
+	Main    *MongoStruct `json:"main,optional"`
+	Bidding *MongoStruct `json:"bidding,optional"`
+	Ent     *MongoStruct `json:"ent,optional"`
 }
 type MongoStruct struct {
 	Address        string `json:"address"`
@@ -23,7 +25,7 @@ type MongoStruct struct {
 	MaxIdleConns   int    `json:"maxIdleConns,optional"`
 }
 
-//mysql
+// mysql
 type MysqlStruct struct {
 	DbName       string `json:"dbName"`
 	Address      string `json:"address"`
@@ -33,6 +35,20 @@ type MysqlStruct struct {
 	MaxIdleConns int    `json:"maxIdleConns"`
 }
 
+// es
+type EsStruct struct {
+	Addr     string `json:"addr"`
+	Size     int    `json:"size"`
+	Version  string `json:"version"`
+	UserName string `json:"userName"`
+	Password string `json:"password"`
+}
+
 const (
-	SALE_CLUE = "sale_clue" //销售线索表
+	SALE_CLUE      = "sale_clue" //销售线索表
+	EMPLOY_SUMMARY = "employ_summary"
+	EMPLOY_CUSTOM  = "employ_custom"
+	EMPLOY_INFO    = "employ_info"
+	SALE_CHANCE    = "sale_chance"
+	CUSTOM         = "custom"
 )

+ 66 - 14
go.mod

@@ -3,61 +3,96 @@ module bp.jydev.jianyu360.cn/CRM/application
 go 1.19
 
 require (
-	app.yhyue.com/moapp/jybase v0.0.0-20220421060131-a1001013ba46
+	app.yhyue.com/moapp/jybase v0.0.0-20230718012114-37013054344b
+	app.yhyue.com/moapp/jypkg v0.0.0-20230825092743-3bfc415bb5bb
 	bp.jydev.jianyu360.cn/BaseService/gateway v1.3.4
+	github.com/RoaringBitmap/roaring v1.4.0
 	github.com/zeromicro/go-zero v1.5.4
+	go.mongodb.org/mongo-driver v1.12.0
 )
 
 require (
+	app.yhyue.com/moapp/esv1 v0.0.0-20220414031211-3da4123e648d // indirect
+	app.yhyue.com/moapp/jyMarketing v0.0.2-0.20230304035551-21bb1eedf547 // indirect
+	app.yhyue.com/moapp/message v0.0.0-20221223100203-6402e389d9ae // indirect
+	bp.jydev.jianyu360.cn/BaseService/entManageApplication v0.0.0-20230214091519-89a98c01ab0e // indirect
+	bp.jydev.jianyu360.cn/BaseService/powerCheckCenter v0.0.0-20230222052351-9d6fad062447 // indirect
+	bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.7 // indirect
+	bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.13 // indirect
 	github.com/beorn7/perks v1.0.1 // indirect
-	github.com/cenkalti/backoff/v4 v4.2.0 // indirect
+	github.com/bits-and-blooms/bitset v1.2.0 // indirect
+	github.com/cenkalti/backoff/v4 v4.2.1 // indirect
 	github.com/cespare/xxhash/v2 v2.2.0 // indirect
 	github.com/coreos/go-semver v0.3.1 // indirect
 	github.com/coreos/go-systemd/v22 v22.5.0 // indirect
-	github.com/dchest/captcha v0.0.0-20200903113550-03f5f0333e1f // indirect
+	github.com/davecgh/go-spew v1.1.1 // indirect
+	github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
+	github.com/emicklei/go-restful/v3 v3.9.0 // indirect
 	github.com/fatih/color v1.15.0 // indirect
 	github.com/garyburd/redigo v1.6.2 // indirect
-	github.com/go-logr/logr v1.2.3 // indirect
+	github.com/go-logr/logr v1.2.4 // indirect
 	github.com/go-logr/stdr v1.2.2 // indirect
+	github.com/go-openapi/jsonpointer v0.19.6 // indirect
+	github.com/go-openapi/jsonreference v0.20.1 // indirect
+	github.com/go-openapi/swag v0.22.3 // indirect
+	github.com/go-redis/redis/v8 v8.11.5 // indirect
 	github.com/go-sql-driver/mysql v1.7.1 // indirect
 	github.com/gogo/protobuf v1.3.2 // indirect
 	github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
+	github.com/golang/mock v1.6.0 // indirect
 	github.com/golang/protobuf v1.5.3 // indirect
 	github.com/golang/snappy v0.0.4 // indirect
+	github.com/gomodule/redigo v2.0.0+incompatible // indirect
+	github.com/google/gnostic v0.5.7-v3refs // indirect
+	github.com/google/go-cmp v0.5.9 // indirect
+	github.com/google/gofuzz v1.2.0 // indirect
 	github.com/google/uuid v1.3.0 // indirect
 	github.com/grpc-ecosystem/grpc-gateway/v2 v2.15.0 // indirect
 	github.com/jinzhu/inflection v1.0.0 // indirect
 	github.com/jinzhu/now v1.1.1 // indirect
+	github.com/josharian/intern v1.0.0 // indirect
+	github.com/json-iterator/go v1.1.12 // indirect
 	github.com/klauspost/compress v1.15.15 // indirect
+	github.com/mailru/easyjson v0.7.7 // indirect
 	github.com/mattn/go-colorable v0.1.13 // indirect
 	github.com/mattn/go-isatty v0.0.17 // indirect
 	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
+	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
+	github.com/modern-go/reflect2 v1.0.2 // indirect
 	github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect
+	github.com/mschoch/smat v0.2.0 // indirect
+	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
+	github.com/nsqio/go-nsq v1.1.0 // indirect
+	github.com/olivere/elastic v6.2.37+incompatible // indirect
+	github.com/olivere/elastic/v7 v7.0.22 // indirect
 	github.com/openzipkin/zipkin-go v0.4.1 // indirect
 	github.com/pelletier/go-toml/v2 v2.0.9 // indirect
+	github.com/pkg/errors v0.9.1 // indirect
 	github.com/prometheus/client_golang v1.16.0 // indirect
 	github.com/prometheus/client_model v0.3.0 // indirect
 	github.com/prometheus/common v0.42.0 // indirect
 	github.com/prometheus/procfs v0.10.1 // indirect
 	github.com/spaolacci/murmur3 v1.1.0 // indirect
+	github.com/tealeg/xlsx v1.0.5 // indirect
+	github.com/thinxer/go-word2vec v0.0.0-20150917053916-5c19ec7379ed // indirect
 	github.com/xdg-go/pbkdf2 v1.0.0 // indirect
 	github.com/xdg-go/scram v1.1.2 // indirect
 	github.com/xdg-go/stringprep v1.0.4 // indirect
 	github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
+	github.com/ziutek/blas v0.0.0-20190227122918-da4ca23e90bb // indirect
 	go.etcd.io/etcd/api/v3 v3.5.9 // indirect
 	go.etcd.io/etcd/client/pkg/v3 v3.5.9 // indirect
 	go.etcd.io/etcd/client/v3 v3.5.9 // indirect
-	go.mongodb.org/mongo-driver v1.12.0 // indirect
-	go.opentelemetry.io/otel v1.14.0 // indirect
-	go.opentelemetry.io/otel/exporters/jaeger v1.14.0 // indirect
-	go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0 // indirect
-	go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 // indirect
-	go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0 // indirect
-	go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.14.0 // indirect
+	go.opentelemetry.io/otel v1.15.1 // indirect
+	go.opentelemetry.io/otel/exporters/jaeger v1.15.1 // indirect
+	go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.15.1 // indirect
+	go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.15.1 // indirect
+	go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.15.1 // indirect
+	go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.15.1 // indirect
 	go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.14.0 // indirect
-	go.opentelemetry.io/otel/exporters/zipkin v1.14.0 // indirect
-	go.opentelemetry.io/otel/sdk v1.14.0 // indirect
-	go.opentelemetry.io/otel/trace v1.14.0 // indirect
+	go.opentelemetry.io/otel/exporters/zipkin v1.15.1 // indirect
+	go.opentelemetry.io/otel/sdk v1.15.1 // indirect
+	go.opentelemetry.io/otel/trace v1.15.1 // indirect
 	go.opentelemetry.io/proto/otlp v0.19.0 // indirect
 	go.uber.org/atomic v1.10.0 // indirect
 	go.uber.org/automaxprocs v1.5.2 // indirect
@@ -65,13 +100,30 @@ require (
 	go.uber.org/zap v1.24.0 // indirect
 	golang.org/x/crypto v0.11.0 // indirect
 	golang.org/x/net v0.12.0 // indirect
+	golang.org/x/oauth2 v0.7.0 // indirect
 	golang.org/x/sync v0.2.0 // indirect
 	golang.org/x/sys v0.10.0 // indirect
+	golang.org/x/term v0.10.0 // indirect
 	golang.org/x/text v0.11.0 // indirect
+	golang.org/x/time v0.3.0 // indirect
+	google.golang.org/appengine v1.6.7 // indirect
 	google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect
 	google.golang.org/grpc v1.56.2 // indirect
 	google.golang.org/protobuf v1.31.0 // indirect
+	gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
+	gopkg.in/inf.v0 v0.9.1 // indirect
 	gopkg.in/yaml.v2 v2.4.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
 	gorm.io/driver/mysql v1.0.5 // indirect
 	gorm.io/gorm v1.21.3 // indirect
+	jygit.jydev.jianyu360.cn/ApplicationCenter/publicService v0.0.0-20230710093759-d9d6c68de8b1 // indirect
+	k8s.io/api v0.26.3 // indirect
+	k8s.io/apimachinery v0.27.0-alpha.3 // indirect
+	k8s.io/client-go v0.26.3 // indirect
+	k8s.io/klog/v2 v2.90.1 // indirect
+	k8s.io/kube-openapi v0.0.0-20230307230338-69ee2d25a840 // indirect
+	k8s.io/utils v0.0.0-20230209194617-a36077c30491 // indirect
+	sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
+	sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
+	sigs.k8s.io/yaml v1.3.0 // indirect
 )

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 396 - 24
go.sum


Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно