entity.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package entity
  2. import (
  3. "log"
  4. "encoding/json"
  5. util "app.yhyue.com/moapp/jybase/common"
  6. elastic "app.yhyue.com/moapp/jybase/esv1"
  7. "app.yhyue.com/moapp/jybase/mongodb"
  8. "app.yhyue.com/moapp/jybase/mysql"
  9. "github.com/nsqio/go-nsq"
  10. "github.com/zeromicro/go-zero/core/logx"
  11. )
  12. var (
  13. JyMysql *mysql.Mysql
  14. JyDocMysql *mysql.Mysql
  15. JyBiMysql *mysql.Mysql
  16. JyTidb *mysql.Mysql
  17. JyBiTidb *mysql.Mysql
  18. Mgo *mongodb.MongodbSim
  19. Es *elastic.Elastic
  20. AreaCode = map[string]string{}
  21. )
  22. type Handler struct {
  23. }
  24. func InitMysql(n, x, y, z, s *mysql.Mysql) {
  25. JyMysql = &mysql.Mysql{
  26. Address: n.Address,
  27. UserName: n.UserName,
  28. PassWord: n.PassWord,
  29. DBName: n.DBName,
  30. MaxOpenConns: n.MaxOpenConns,
  31. MaxIdleConns: n.MaxIdleConns,
  32. }
  33. JyMysql.Init()
  34. JyDocMysql = &mysql.Mysql{
  35. Address: x.Address,
  36. UserName: x.UserName,
  37. PassWord: x.PassWord,
  38. DBName: x.DBName,
  39. MaxOpenConns: x.MaxOpenConns,
  40. MaxIdleConns: x.MaxIdleConns,
  41. }
  42. JyDocMysql.Init()
  43. JyBiMysql = &mysql.Mysql{
  44. Address: y.Address,
  45. UserName: y.UserName,
  46. PassWord: y.PassWord,
  47. DBName: y.DBName,
  48. MaxOpenConns: y.MaxOpenConns,
  49. MaxIdleConns: y.MaxIdleConns,
  50. }
  51. JyBiMysql.Init()
  52. JyTidb = &mysql.Mysql{
  53. Address: z.Address,
  54. UserName: z.UserName,
  55. PassWord: z.PassWord,
  56. DBName: z.DBName,
  57. MaxOpenConns: z.MaxOpenConns,
  58. MaxIdleConns: z.MaxIdleConns,
  59. }
  60. JyTidb.Init()
  61. JyBiTidb = &mysql.Mysql{
  62. Address: s.Address,
  63. UserName: s.UserName,
  64. PassWord: s.PassWord,
  65. DBName: s.DBName,
  66. MaxOpenConns: s.MaxOpenConns,
  67. MaxIdleConns: s.MaxIdleConns,
  68. }
  69. JyBiTidb.Init()
  70. logx.Info("初始化mysql")
  71. }
  72. func InitMongo(addr, db string, size int) {
  73. Mgo = mongodb.NewMgo(addr, db, size)
  74. }
  75. func InitEs(address string, size int) {
  76. Es = &elastic.Elastic{
  77. S_esurl: address,
  78. I_size: size,
  79. }
  80. Es.InitElasticSize()
  81. }
  82. func InitArea() {
  83. info := JyBiMysql.Find("d_area_code_back", nil, "", "", -1, -1)
  84. if info != nil && len(*info) > 0 {
  85. for _, m := range *info {
  86. var key string
  87. for i, v := range []string{"area", "city", "district"} {
  88. if i == 0 && util.ObjToString(m[v]) != "" {
  89. key = util.ObjToString(m[v])
  90. } else if util.ObjToString(m[v]) != "" {
  91. key += "," + util.ObjToString(m[v])
  92. }
  93. }
  94. AreaCode[key] = util.ObjToString(m["code"])
  95. }
  96. }
  97. log.Println("AreaCodeLen ", len(AreaCode))
  98. }
  99. func (h *Handler) HandleMessage(m *nsq.Message) error {
  100. defer util.Catch()
  101. if len(m.Body) == 0 {
  102. log.Println("Nsq接收到空")
  103. return nil
  104. }
  105. var msg *map[string]interface{}
  106. err := json.Unmarshal(m.Body, &msg)
  107. if err != nil {
  108. log.Println(err)
  109. return err
  110. }
  111. entPostionId := util.Int64All((*msg)["entPostionId"])
  112. userPositionId := util.Int64All((*msg)["userPositionId"])
  113. entId := util.Int64All((*msg)["entId"])
  114. entUserName := util.ObjToString((*msg)["entUserName"])
  115. entName := ""
  116. log.Println(userPositionId, entPostionId, entId, entUserName, entName)
  117. if userPositionId == 0 || entPostionId == 0 {
  118. log.Println("职位id为空")
  119. return nil
  120. }
  121. data := JyMysql.FindOne("entniche_info", map[string]interface{}{"id": entId}, "", "")
  122. if data != nil && len(*data) > 0 {
  123. entName = util.ObjToString((*data)["name"])
  124. }
  125. 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})
  126. if ok {
  127. log.Println("个人销售数据同步企业数据成功!!!")
  128. } else {
  129. log.Println("个人销售数据同步企业数据失败-----")
  130. }
  131. return nil
  132. }