entity.go 5.5 KB

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