package entity import ( "bp.jydev.jianyu360.cn/BaseService/fileCenter/rpc/filecenter" "log" "strings" "app.yhyue.com/moapp/jybase/mail" "encoding/json" util "app.yhyue.com/moapp/jybase/common" elastic "app.yhyue.com/moapp/jybase/es" "app.yhyue.com/moapp/jybase/mongodb" "app.yhyue.com/moapp/jybase/mysql" "app.yhyue.com/moapp/jybase/redis" "app.yhyue.com/moapp/jypkg/middleground" "github.com/nsqio/go-nsq" "github.com/zeromicro/go-zero/core/logx" "sync" ) var ( JyMysql *mysql.Mysql JyDocMysql *mysql.Mysql JyBiMysql *mysql.Mysql JyTidb *mysql.Mysql JyBiTidb *mysql.Mysql CallTidb *mysql.Mysql BiService *mysql.Mysql WorkOrder *mysql.Mysql Mgo *mongodb.MongodbSim Bidding *mongodb.MongodbSim MgoQyxy *mongodb.MongodbSim Es elastic.Es EntEs elastic.EsV7 AreaCode = map[string]string{} Hlyj *HlyjS DataLock = sync.Mutex{} DistributeLock = sync.Mutex{} ClueImportLock = sync.Mutex{} ClueImportTtLock = sync.Mutex{} CodeTrail = map[string]string{ "00": "无意向客户", "01": "商机线索", "02": "空号停机", "03": "沉睡客户", "04": "潜在客户", "05": "意向客户", "06": "高意向客户", "07": "待签署客户", "08": "成交客户", } PublicKey = "" GmailAuth []*mail.GmailAuth UpdataProjectUrl string ExportDirectory string ComFileDir string ExportUrl string ComFileUrl string ExportCount int Middleground *middleground.Middleground OssBucketName string OssUrl string FileCenterRpc filecenter.FileCenter ) type HlyjS struct { Appid string Account string Secret string TokenUrl string CallFlag int CallUrl string Integratedid string } type Handler struct { } type ProductMap struct { Product string ProductCode string PersonArr []Person } type Person struct { Name string Phone string } type SelectProductMap struct { Product []string PersonArr []Person } func InitMail(GmailAuthArr []struct { Addr string Port int Pwd string User string }) { for _, v := range GmailAuthArr { mail1 := &mail.GmailAuth{ SmtpHost: v.Addr, SmtpPort: v.Port, User: v.User, Pwd: v.Pwd, } GmailAuth = append(GmailAuth, mail1) } } func InitMysql(n, x, y, z, s, m, a, w *mysql.Mysql) { JyMysql = &mysql.Mysql{ Address: n.Address, UserName: n.UserName, PassWord: n.PassWord, DBName: n.DBName, MaxOpenConns: n.MaxOpenConns, MaxIdleConns: n.MaxIdleConns, } JyMysql.Init() JyDocMysql = &mysql.Mysql{ Address: x.Address, UserName: x.UserName, PassWord: x.PassWord, DBName: x.DBName, MaxOpenConns: x.MaxOpenConns, MaxIdleConns: x.MaxIdleConns, } JyDocMysql.Init() JyBiMysql = &mysql.Mysql{ Address: y.Address, UserName: y.UserName, PassWord: y.PassWord, DBName: y.DBName, MaxOpenConns: y.MaxOpenConns, MaxIdleConns: y.MaxIdleConns, } JyBiMysql.Init() JyTidb = &mysql.Mysql{ Address: z.Address, UserName: z.UserName, PassWord: z.PassWord, DBName: z.DBName, MaxOpenConns: z.MaxOpenConns, MaxIdleConns: z.MaxIdleConns, } JyTidb.Init() JyBiTidb = &mysql.Mysql{ Address: s.Address, UserName: s.UserName, PassWord: s.PassWord, DBName: s.DBName, MaxOpenConns: s.MaxOpenConns, MaxIdleConns: s.MaxIdleConns, } JyBiTidb.Init() CallTidb = &mysql.Mysql{ Address: m.Address, UserName: m.UserName, PassWord: m.PassWord, DBName: m.DBName, MaxOpenConns: m.MaxOpenConns, MaxIdleConns: m.MaxIdleConns, } CallTidb.Init() BiService = &mysql.Mysql{ Address: a.Address, UserName: a.UserName, PassWord: a.PassWord, DBName: a.DBName, MaxOpenConns: a.MaxOpenConns, MaxIdleConns: a.MaxIdleConns, } BiService.Init() WorkOrder = &mysql.Mysql{ Address: w.Address, UserName: w.UserName, PassWord: w.PassWord, DBName: w.DBName, MaxOpenConns: w.MaxOpenConns, MaxIdleConns: w.MaxIdleConns, } WorkOrder.Init() logx.Info("初始化mysql") } func InitMongo(addr, db string, size int) { Mgo = mongodb.NewMgo(addr, db, size) } func InitBiddingMgo(addr, db, user, pwd string, size int) { Bidding = mongodb.NewMgoWithUser(addr, db, user, pwd, size) } func InitQyxyMgo(addr, db, user, pwd string, size int) { MgoQyxy = mongodb.NewMgoWithUser(addr, db, user, pwd, size) } func InitEs(version, address, userName, password string, size int) { Es = elastic.NewEs(version, address, size, userName, password) } func InitEntEs(version, address, userName, password string, size int) { EntEs = elastic.EsV7{ Address: address, UserName: userName, Password: password, Size: size, } EntEs.Init() } func InitArea() { info := JyBiMysql.Find("d_area_code_back", nil, "", "", -1, -1) if info != nil && len(*info) > 0 { for _, m := range *info { var key string for i, v := range []string{"area", "city", "district"} { if i == 0 && util.ObjToString(m[v]) != "" { key = util.ObjToString(m[v]) } else if util.ObjToString(m[v]) != "" { key += "," + util.ObjToString(m[v]) } } AreaCode[key] = util.ObjToString(m["code"]) } } log.Println("AreaCodeLen ", len(AreaCode)) } func (h *Handler) HandleMessage(m *nsq.Message) error { defer util.Catch() if len(m.Body) == 0 { log.Println("Nsq接收到空") return nil } var msg *map[string]interface{} err := json.Unmarshal(m.Body, &msg) if err != nil { log.Println(err) return err } entPostionId := util.Int64All((*msg)["entPostionId"]) userPositionId := util.Int64All((*msg)["userPositionId"]) entId := util.Int64All((*msg)["entId"]) entUserName := util.ObjToString((*msg)["entUserName"]) entName := "" log.Println(userPositionId, entPostionId, entId, entUserName, entName) if userPositionId == 0 || entPostionId == 0 { log.Println("职位id为空") return nil } data := JyMysql.FindOne("entniche_info", map[string]interface{}{"id": entId}, "", "") if data != nil && len(*data) > 0 { entName = util.ObjToString((*data)["name"]) } ok := JyBiMysql.Update("dwd_f_report_data_baseinfo", map[string]interface{}{"position_id": userPositionId}, map[string]interface{}{"ent_id": entId, "position_type": 1, "user_name": entUserName, "company_name": entName}) if ok { log.Println("个人销售数据同步企业数据成功!!!") } else { log.Println("个人销售数据同步企业数据失败-----") } return nil } func InitConfig(directory, dir2, projectUrl, exportUrl, url1 string, count int) { ExportDirectory = directory ComFileDir = dir2 UpdataProjectUrl = projectUrl ExportUrl = exportUrl ComFileUrl = url1 ExportCount = count } // 初始化reidis func InitRedis(redisAddr []string) { redis.InitRedisBySize(strings.Join(redisAddr, ","), 100, 30, 300) } func GetHlyj(appid, account, secret, tokenUrl, callUrl, integratedid string, callFlag int) { Hlyj = &HlyjS{ Appid: appid, Account: account, Secret: secret, TokenUrl: tokenUrl, CallFlag: callFlag, CallUrl: callUrl, Integratedid: integratedid, } } func InitMiddleground(host []string, resourceCenterKey string) { Middleground = middleground.NewMiddleground(host). RegResourceCenter(resourceCenterKey) }