entity.go 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. package entity
  2. import (
  3. "log"
  4. "strings"
  5. "app.yhyue.com/moapp/jybase/mail"
  6. "encoding/json"
  7. "sync"
  8. util "app.yhyue.com/moapp/jybase/common"
  9. elastic "app.yhyue.com/moapp/jybase/es"
  10. "app.yhyue.com/moapp/jybase/mongodb"
  11. "app.yhyue.com/moapp/jybase/mysql"
  12. "app.yhyue.com/moapp/jybase/redis"
  13. "github.com/nsqio/go-nsq"
  14. "github.com/zeromicro/go-zero/core/logx"
  15. )
  16. var (
  17. JyMysql *mysql.Mysql
  18. JyDocMysql *mysql.Mysql
  19. JyBiMysql *mysql.Mysql
  20. JyTidb *mysql.Mysql
  21. JyBiTidb *mysql.Mysql
  22. CallTidb *mysql.Mysql
  23. BiService *mysql.Mysql
  24. Mgo *mongodb.MongodbSim
  25. Bidding *mongodb.MongodbSim
  26. MgoQyxy *mongodb.MongodbSim
  27. Es elastic.Es
  28. EntEs elastic.EsV7
  29. AreaCode = map[string]string{}
  30. Hlyj *HlyjS
  31. DataLock = sync.Mutex{}
  32. DistributeLock = sync.Mutex{}
  33. ClueImportLock = sync.Mutex{}
  34. ClueImportTtLock = sync.Mutex{}
  35. CodeTrail = map[string]string{
  36. "00": "无意向客户",
  37. "01": "商机线索",
  38. "02": "空号停机",
  39. "03": "沉睡客户",
  40. "04": "潜在客户",
  41. "05": "意向客户",
  42. "06": "高意向客户",
  43. "07": "待签署客户",
  44. "08": "成交客户",
  45. }
  46. PublicKey = ""
  47. GmailAuth []*mail.GmailAuth
  48. UpdataProjectUrl string
  49. ExportDirectory string
  50. ComFileDir string
  51. ExportUrl string
  52. ComFileUrl string
  53. ExportCount int
  54. )
  55. type HlyjS struct {
  56. Appid string
  57. Account string
  58. Secret string
  59. TokenUrl string
  60. CallFlag int
  61. CallUrl string
  62. Integratedid string
  63. }
  64. type Handler struct {
  65. }
  66. func InitMail(GmailAuthArr []struct {
  67. Addr string
  68. Port int
  69. Pwd string
  70. User string
  71. }) {
  72. for _, v := range GmailAuthArr {
  73. mail1 := &mail.GmailAuth{
  74. SmtpHost: v.Addr,
  75. SmtpPort: v.Port,
  76. User: v.User,
  77. Pwd: v.Pwd,
  78. }
  79. GmailAuth = append(GmailAuth, mail1)
  80. }
  81. }
  82. func InitMysql(n, x, y, z, s, m, a *mysql.Mysql) {
  83. JyMysql = &mysql.Mysql{
  84. Address: n.Address,
  85. UserName: n.UserName,
  86. PassWord: n.PassWord,
  87. DBName: n.DBName,
  88. MaxOpenConns: n.MaxOpenConns,
  89. MaxIdleConns: n.MaxIdleConns,
  90. }
  91. JyMysql.Init()
  92. JyDocMysql = &mysql.Mysql{
  93. Address: x.Address,
  94. UserName: x.UserName,
  95. PassWord: x.PassWord,
  96. DBName: x.DBName,
  97. MaxOpenConns: x.MaxOpenConns,
  98. MaxIdleConns: x.MaxIdleConns,
  99. }
  100. JyDocMysql.Init()
  101. JyBiMysql = &mysql.Mysql{
  102. Address: y.Address,
  103. UserName: y.UserName,
  104. PassWord: y.PassWord,
  105. DBName: y.DBName,
  106. MaxOpenConns: y.MaxOpenConns,
  107. MaxIdleConns: y.MaxIdleConns,
  108. }
  109. JyBiMysql.Init()
  110. JyTidb = &mysql.Mysql{
  111. Address: z.Address,
  112. UserName: z.UserName,
  113. PassWord: z.PassWord,
  114. DBName: z.DBName,
  115. MaxOpenConns: z.MaxOpenConns,
  116. MaxIdleConns: z.MaxIdleConns,
  117. }
  118. JyTidb.Init()
  119. JyBiTidb = &mysql.Mysql{
  120. Address: s.Address,
  121. UserName: s.UserName,
  122. PassWord: s.PassWord,
  123. DBName: s.DBName,
  124. MaxOpenConns: s.MaxOpenConns,
  125. MaxIdleConns: s.MaxIdleConns,
  126. }
  127. JyBiTidb.Init()
  128. CallTidb = &mysql.Mysql{
  129. Address: m.Address,
  130. UserName: m.UserName,
  131. PassWord: m.PassWord,
  132. DBName: m.DBName,
  133. MaxOpenConns: m.MaxOpenConns,
  134. MaxIdleConns: m.MaxIdleConns,
  135. }
  136. CallTidb.Init()
  137. BiService = &mysql.Mysql{
  138. Address: a.Address,
  139. UserName: a.UserName,
  140. PassWord: a.PassWord,
  141. DBName: a.DBName,
  142. MaxOpenConns: a.MaxOpenConns,
  143. MaxIdleConns: a.MaxIdleConns,
  144. }
  145. BiService.Init()
  146. logx.Info("初始化mysql")
  147. }
  148. func InitMongo(addr, db string, size int) {
  149. Mgo = mongodb.NewMgo(addr, db, size)
  150. }
  151. func InitBiddingMgo(addr, db, user, pwd string, size int) {
  152. Bidding = mongodb.NewMgoWithUser(addr, db, user, pwd, size)
  153. }
  154. func InitQyxyMgo(addr, db, user, pwd string, size int) {
  155. MgoQyxy = mongodb.NewMgoWithUser(addr, db, user, pwd, size)
  156. }
  157. func InitEs(version, address, userName, password string, size int) {
  158. Es = elastic.NewEs(version, address, size, userName, password)
  159. }
  160. func InitEntEs(version, address, userName, password string, size int) {
  161. EntEs = elastic.EsV7{
  162. Address: address,
  163. UserName: userName,
  164. Password: password,
  165. Size: size,
  166. }
  167. EntEs.Init()
  168. }
  169. func InitArea() {
  170. info := JyBiMysql.Find("d_area_code_back", nil, "", "", -1, -1)
  171. if info != nil && len(*info) > 0 {
  172. for _, m := range *info {
  173. var key string
  174. for i, v := range []string{"area", "city", "district"} {
  175. if i == 0 && util.ObjToString(m[v]) != "" {
  176. key = util.ObjToString(m[v])
  177. } else if util.ObjToString(m[v]) != "" {
  178. key += "," + util.ObjToString(m[v])
  179. }
  180. }
  181. AreaCode[key] = util.ObjToString(m["code"])
  182. }
  183. }
  184. log.Println("AreaCodeLen ", len(AreaCode))
  185. }
  186. func (h *Handler) HandleMessage(m *nsq.Message) error {
  187. defer util.Catch()
  188. if len(m.Body) == 0 {
  189. log.Println("Nsq接收到空")
  190. return nil
  191. }
  192. var msg *map[string]interface{}
  193. err := json.Unmarshal(m.Body, &msg)
  194. if err != nil {
  195. log.Println(err)
  196. return err
  197. }
  198. entPostionId := util.Int64All((*msg)["entPostionId"])
  199. userPositionId := util.Int64All((*msg)["userPositionId"])
  200. entId := util.Int64All((*msg)["entId"])
  201. entUserName := util.ObjToString((*msg)["entUserName"])
  202. entName := ""
  203. log.Println(userPositionId, entPostionId, entId, entUserName, entName)
  204. if userPositionId == 0 || entPostionId == 0 {
  205. log.Println("职位id为空")
  206. return nil
  207. }
  208. data := JyMysql.FindOne("entniche_info", map[string]interface{}{"id": entId}, "", "")
  209. if data != nil && len(*data) > 0 {
  210. entName = util.ObjToString((*data)["name"])
  211. }
  212. 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})
  213. if ok {
  214. log.Println("个人销售数据同步企业数据成功!!!")
  215. } else {
  216. log.Println("个人销售数据同步企业数据失败-----")
  217. }
  218. return nil
  219. }
  220. func InitConfig(directory, dir2, projectUrl, exportUrl, url1 string, count int) {
  221. ExportDirectory = directory
  222. ComFileDir = dir2
  223. UpdataProjectUrl = projectUrl
  224. ExportUrl = exportUrl
  225. ComFileUrl = url1
  226. ExportCount = count
  227. }
  228. // 初始化reidis
  229. func InitRedis(redisAddr []string) {
  230. redis.InitRedisBySize(strings.Join(redisAddr, ","), 100, 30, 300)
  231. }
  232. func GetHlyj(appid, account, secret, tokenUrl, callUrl, integratedid string, callFlag int) {
  233. Hlyj = &HlyjS{
  234. Appid: appid,
  235. Account: account,
  236. Secret: secret,
  237. TokenUrl: tokenUrl,
  238. CallFlag: callFlag,
  239. CallUrl: callUrl,
  240. Integratedid: integratedid,
  241. }
  242. }