entity.go 7.6 KB

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