entity.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. package entity
  2. import (
  3. "log"
  4. "strings"
  5. "encoding/json"
  6. "sync"
  7. util "app.yhyue.com/moapp/jybase/common"
  8. elastic "app.yhyue.com/moapp/jybase/es"
  9. "app.yhyue.com/moapp/jybase/mongodb"
  10. "app.yhyue.com/moapp/jybase/mysql"
  11. "app.yhyue.com/moapp/jybase/redis"
  12. "github.com/nsqio/go-nsq"
  13. "github.com/zeromicro/go-zero/core/logx"
  14. )
  15. var (
  16. JyMysql *mysql.Mysql
  17. JyDocMysql *mysql.Mysql
  18. JyBiMysql *mysql.Mysql
  19. JyTidb *mysql.Mysql
  20. JyBiTidb *mysql.Mysql
  21. Mgo *mongodb.MongodbSim
  22. Es elastic.Es
  23. AreaCode = map[string]string{}
  24. Hlyj *HlyjS
  25. DataLock = sync.Mutex{}
  26. DistributeLock = sync.Mutex{}
  27. ClueImportLock = sync.Mutex{}
  28. CodeTrail = map[string]string{
  29. "00": "无意向客户",
  30. "01": "商机线索",
  31. "02": "空号停机",
  32. "03": "沉睡客户",
  33. "04": "潜在客户",
  34. "05": "意向客户",
  35. "06": "高意向客户",
  36. "07": "待签署客户",
  37. "08": "成交客户",
  38. }
  39. )
  40. type HlyjS struct {
  41. Appid string
  42. Account string
  43. Secret string
  44. TokenUrl string
  45. CallFlag int
  46. CallUrl string
  47. Integratedid string
  48. }
  49. type Handler struct {
  50. }
  51. func InitMysql(n, x, y, z, s *mysql.Mysql) {
  52. JyMysql = &mysql.Mysql{
  53. Address: n.Address,
  54. UserName: n.UserName,
  55. PassWord: n.PassWord,
  56. DBName: n.DBName,
  57. MaxOpenConns: n.MaxOpenConns,
  58. MaxIdleConns: n.MaxIdleConns,
  59. }
  60. JyMysql.Init()
  61. JyDocMysql = &mysql.Mysql{
  62. Address: x.Address,
  63. UserName: x.UserName,
  64. PassWord: x.PassWord,
  65. DBName: x.DBName,
  66. MaxOpenConns: x.MaxOpenConns,
  67. MaxIdleConns: x.MaxIdleConns,
  68. }
  69. JyDocMysql.Init()
  70. JyBiMysql = &mysql.Mysql{
  71. Address: y.Address,
  72. UserName: y.UserName,
  73. PassWord: y.PassWord,
  74. DBName: y.DBName,
  75. MaxOpenConns: y.MaxOpenConns,
  76. MaxIdleConns: y.MaxIdleConns,
  77. }
  78. JyBiMysql.Init()
  79. JyTidb = &mysql.Mysql{
  80. Address: z.Address,
  81. UserName: z.UserName,
  82. PassWord: z.PassWord,
  83. DBName: z.DBName,
  84. MaxOpenConns: z.MaxOpenConns,
  85. MaxIdleConns: z.MaxIdleConns,
  86. }
  87. JyTidb.Init()
  88. JyBiTidb = &mysql.Mysql{
  89. Address: s.Address,
  90. UserName: s.UserName,
  91. PassWord: s.PassWord,
  92. DBName: s.DBName,
  93. MaxOpenConns: s.MaxOpenConns,
  94. MaxIdleConns: s.MaxIdleConns,
  95. }
  96. JyBiTidb.Init()
  97. logx.Info("初始化mysql")
  98. }
  99. func InitMongo(addr, db string, size int) {
  100. Mgo = mongodb.NewMgo(addr, db, size)
  101. }
  102. func InitEs(version, address, userName, password string, size int) {
  103. Es = elastic.NewEs(version, address, size, userName, password)
  104. }
  105. func InitArea() {
  106. info := JyBiMysql.Find("d_area_code_back", nil, "", "", -1, -1)
  107. if info != nil && len(*info) > 0 {
  108. for _, m := range *info {
  109. var key string
  110. for i, v := range []string{"area", "city", "district"} {
  111. if i == 0 && util.ObjToString(m[v]) != "" {
  112. key = util.ObjToString(m[v])
  113. } else if util.ObjToString(m[v]) != "" {
  114. key += "," + util.ObjToString(m[v])
  115. }
  116. }
  117. AreaCode[key] = util.ObjToString(m["code"])
  118. }
  119. }
  120. log.Println("AreaCodeLen ", len(AreaCode))
  121. }
  122. func (h *Handler) HandleMessage(m *nsq.Message) error {
  123. defer util.Catch()
  124. if len(m.Body) == 0 {
  125. log.Println("Nsq接收到空")
  126. return nil
  127. }
  128. var msg *map[string]interface{}
  129. err := json.Unmarshal(m.Body, &msg)
  130. if err != nil {
  131. log.Println(err)
  132. return err
  133. }
  134. entPostionId := util.Int64All((*msg)["entPostionId"])
  135. userPositionId := util.Int64All((*msg)["userPositionId"])
  136. entId := util.Int64All((*msg)["entId"])
  137. entUserName := util.ObjToString((*msg)["entUserName"])
  138. entName := ""
  139. log.Println(userPositionId, entPostionId, entId, entUserName, entName)
  140. if userPositionId == 0 || entPostionId == 0 {
  141. log.Println("职位id为空")
  142. return nil
  143. }
  144. data := JyMysql.FindOne("entniche_info", map[string]interface{}{"id": entId}, "", "")
  145. if data != nil && len(*data) > 0 {
  146. entName = util.ObjToString((*data)["name"])
  147. }
  148. 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})
  149. if ok {
  150. log.Println("个人销售数据同步企业数据成功!!!")
  151. } else {
  152. log.Println("个人销售数据同步企业数据失败-----")
  153. }
  154. return nil
  155. }
  156. // 初始化reidis
  157. func InitRedis(redisAddr []string) {
  158. redis.InitRedisBySize(strings.Join(redisAddr, ","), 100, 30, 300)
  159. }
  160. func GetHlyj(appid, account, secret, tokenUrl, callUrl, integratedid string, callFlag int) {
  161. Hlyj = &HlyjS{
  162. Appid: appid,
  163. Account: account,
  164. Secret: secret,
  165. TokenUrl: tokenUrl,
  166. CallFlag: callFlag,
  167. CallUrl: callUrl,
  168. Integratedid: integratedid,
  169. }
  170. }