entity.go 4.8 KB

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