entity.go 7.3 KB

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