yidong.go 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718
  1. package services
  2. import (
  3. "context"
  4. "encoding/json"
  5. "fmt"
  6. "hongze/hongze_cygx/models"
  7. "hongze/hongze_cygx/utils"
  8. "io/ioutil"
  9. "net/http"
  10. "strings"
  11. "time"
  12. )
  13. // GetActivityTypeIdWithYiDong 根据易董同步过来的活动类型,自动匹配行业
  14. func GetActivityTypeIdWithYiDong(industrySwName string) (chartPermissionId int) {
  15. mapIndustrySwName := map[string]int{
  16. "家用电器": utils.XIAO_FEI_ID,
  17. "纺织服饰": utils.XIAO_FEI_ID,
  18. "休闲服务": utils.XIAO_FEI_ID,
  19. "食品饮料": utils.XIAO_FEI_ID,
  20. "美容护理": utils.XIAO_FEI_ID,
  21. //消费
  22. "汽车": utils.ZHI_ZAO_ID,
  23. "机械设备": utils.ZHI_ZAO_ID,
  24. "电力设备": utils.ZHI_ZAO_ID,
  25. //智造
  26. "电子": utils.KE_JI_ID,
  27. "计算机": utils.KE_JI_ID,
  28. "通信": utils.KE_JI_ID,
  29. //科技
  30. "医药生物": utils.YI_YAO_ID,
  31. //医药
  32. "策略": utils.CE_LUE_ID,
  33. //策略
  34. "非银金融": utils.CHART_PERMISSION_ID_YANXUAN,
  35. "建筑装饰": utils.CHART_PERMISSION_ID_YANXUAN,
  36. "基础化工": utils.CHART_PERMISSION_ID_YANXUAN,
  37. "农林牧渔": utils.CHART_PERMISSION_ID_YANXUAN,
  38. "传媒": utils.CHART_PERMISSION_ID_YANXUAN,
  39. "公用事业": utils.CHART_PERMISSION_ID_YANXUAN,
  40. "建筑材料": utils.CHART_PERMISSION_ID_YANXUAN,
  41. "房地产": utils.CHART_PERMISSION_ID_YANXUAN,
  42. "采掘": utils.CHART_PERMISSION_ID_YANXUAN,
  43. "轻工制造": utils.CHART_PERMISSION_ID_YANXUAN,
  44. "钢铁": utils.CHART_PERMISSION_ID_YANXUAN,
  45. "交通运输": utils.CHART_PERMISSION_ID_YANXUAN,
  46. "国防军工": utils.CHART_PERMISSION_ID_YANXUAN,
  47. "银行": utils.CHART_PERMISSION_ID_YANXUAN,
  48. "有色金属": utils.CHART_PERMISSION_ID_YANXUAN,
  49. "综合": utils.CHART_PERMISSION_ID_YANXUAN,
  50. "商业贸易": utils.CHART_PERMISSION_ID_YANXUAN,
  51. "宏观": utils.CHART_PERMISSION_ID_YANXUAN,
  52. "金融工程": utils.CHART_PERMISSION_ID_YANXUAN,
  53. "商贸零售": utils.CHART_PERMISSION_ID_YANXUAN,
  54. "社会服务": utils.CHART_PERMISSION_ID_YANXUAN,
  55. "煤炭": utils.CHART_PERMISSION_ID_YANXUAN,
  56. "石油石化": utils.CHART_PERMISSION_ID_YANXUAN,
  57. "环保": utils.CHART_PERMISSION_ID_YANXUAN,
  58. //研选
  59. }
  60. chartPermissionId = mapIndustrySwName[industrySwName]
  61. return
  62. }
  63. // GetActivityTypeIdWithYiDong 根据易董同步过来的活动类型,自动匹配行业
  64. func GetActivityTypeNameWithYiDong(industrySwName string) (chartPermissionName string) {
  65. mapIndustrySwName := map[string]string{
  66. "家用电器": utils.XIAO_FEI_NAME,
  67. "纺织服饰": utils.XIAO_FEI_NAME,
  68. "休闲服务": utils.XIAO_FEI_NAME,
  69. "食品饮料": utils.XIAO_FEI_NAME,
  70. "美容护理": utils.XIAO_FEI_NAME,
  71. //消费
  72. "汽车": utils.ZHI_ZAO_NAME,
  73. "机械设备": utils.ZHI_ZAO_NAME,
  74. "电力设备": utils.ZHI_ZAO_NAME,
  75. //智造
  76. "电子": utils.KE_JI_NAME,
  77. "计算机": utils.KE_JI_NAME,
  78. "通信": utils.KE_JI_NAME,
  79. //科技
  80. "医药生物": utils.YI_YAO_NAME,
  81. //医药
  82. "策略": utils.CE_LUE_NAME,
  83. //策略
  84. "非银金融": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  85. "建筑装饰": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  86. "基础化工": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  87. "农林牧渔": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  88. "传媒": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  89. "公用事业": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  90. "建筑材料": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  91. "房地产": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  92. "采掘": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  93. "轻工制造": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  94. "钢铁": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  95. "交通运输": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  96. "国防军工": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  97. "银行": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  98. "有色金属": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  99. "综合": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  100. "商业贸易": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  101. "宏观": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  102. "金融工程": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  103. "商贸零售": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  104. "社会服务": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  105. "煤炭": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  106. "石油石化": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  107. "环保": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
  108. //研选
  109. }
  110. chartPermissionName = mapIndustrySwName[industrySwName]
  111. return
  112. }
  113. // 获取易董token
  114. func GetYiDongToken() (token string, err error) {
  115. defer func() {
  116. if err != nil {
  117. fmt.Println(err)
  118. utils.FileLog.Info(err.Error())
  119. }
  120. }()
  121. cacheKey := utils.YD_TOKEN
  122. ttlTime := utils.Rc.GetRedisTTL(cacheKey)
  123. if ttlTime > 0 {
  124. token, _ = utils.Rc.RedisString(cacheKey)
  125. }
  126. if token == "" {
  127. url := utils.YiDongZhengTongYunUrl + "oauth/token?grant_type=client_credentials&response_type=token&client_id=" + utils.YiDongZhengTongYunAppid + "&client_secret=" + utils.YiDongZhengTongYunSecret
  128. method := "GET"
  129. client := &http.Client{}
  130. req, errReq := http.NewRequest(method, url, nil)
  131. if errReq != nil {
  132. err = errReq
  133. return
  134. }
  135. res, errReq := client.Do(req)
  136. if errReq != nil {
  137. err = errReq
  138. return
  139. }
  140. defer res.Body.Close()
  141. type Ydtoklen struct {
  142. Success bool `json:"success"`
  143. ExpiresIn int `json:"expires_in"`
  144. AccessToken string `json:"access_token"`
  145. }
  146. var ydtoklen Ydtoklen
  147. body, errReq := ioutil.ReadAll(res.Body)
  148. if errReq != nil {
  149. err = errReq
  150. return
  151. }
  152. errReq = json.Unmarshal(body, &ydtoklen)
  153. if errReq != nil {
  154. err = errReq
  155. return
  156. }
  157. token = ydtoklen.AccessToken
  158. utils.Rc.Put(cacheKey, ydtoklen.AccessToken, time.Second*7000)
  159. }
  160. return
  161. }
  162. // 获取易董活动列表
  163. func GetYiDongActivity(cont context.Context) (err error) {
  164. //func GetYiDongActivity() (err error) {
  165. defer func() {
  166. if err != nil {
  167. fmt.Println(err)
  168. go utils.SendAlarmMsg("获取易董活动列表失败:"+err.Error(), 2)
  169. utils.FileLog.Info(err.Error())
  170. }
  171. }()
  172. var token string
  173. token, _ = GetYiDongToken()
  174. url := utils.YiDongZhengTongYunUrl + "interact/activityManageApi/getRoadshowList?access_token=" + token
  175. method := "POST"
  176. payload := strings.NewReader(`{
  177. "meetingStatus": "0"
  178. }`)
  179. client := &http.Client{}
  180. req, err := http.NewRequest(method, url, payload)
  181. if err != nil {
  182. fmt.Println(err)
  183. utils.FileLog.Info(err.Error())
  184. return
  185. }
  186. req.Header.Add("Content-Type", "application/json")
  187. res, err := client.Do(req)
  188. if err != nil {
  189. fmt.Println(err)
  190. utils.FileLog.Info(err.Error())
  191. return
  192. }
  193. defer res.Body.Close()
  194. var ApifoxModal *models.ApifoxModal
  195. body, err := ioutil.ReadAll(res.Body)
  196. if err != nil {
  197. fmt.Println(err)
  198. utils.FileLog.Info(err.Error())
  199. return
  200. }
  201. //添加请求日志记录
  202. itemApiLog := new(models.CygxThreeApiLog)
  203. itemApiLog.CreateTime = time.Now()
  204. itemApiLog.Source = 1
  205. itemApiLog.Url = url
  206. itemApiLog.Body = utils.ReplaceSpaceAndWrap(fmt.Sprint(payload))
  207. itemApiLog.Result = string(body)
  208. go models.AddCygxThreeApiLog(itemApiLog)
  209. err = json.Unmarshal(body, &ApifoxModal)
  210. if err != nil {
  211. fmt.Println("Getres.PublicGetDate Err:", err.Error())
  212. utils.FileLog.Info(err.Error())
  213. return
  214. }
  215. OldActYIdongList, err := models.GetActivityListByYiDong()
  216. if err != nil {
  217. fmt.Println(err)
  218. utils.FileLog.Info(string(err.Error()))
  219. return
  220. }
  221. mapOldYiDong := make(map[string]string)
  222. mapOldYiDongBody := make(map[string]string)
  223. for _, v := range OldActYIdongList {
  224. mapOldYiDong[v.YidongActivityId] = v.YidongActivityId
  225. mapOldYiDongBody[v.YidongActivityId] = fmt.Sprint(v.ActivityName, v.Label, v.ChartPermissionId, v.ActivityTime, v.YidongActivityEndTime, v.DistinguishedGuest)
  226. }
  227. var itemsAdd []*models.CygxActivity
  228. if len(ApifoxModal.Result) > 0 {
  229. actList := ApifoxModal.Result
  230. for _, v := range actList {
  231. //同步有效性 1有效,0失效
  232. if v.SyncFlag == "0" {
  233. continue
  234. }
  235. var item = new(models.CygxActivity)
  236. item.YidongActivityId = v.ID
  237. item.ActivityTypeId = 3
  238. item.ActivityTypeName = "公司调研电话会"
  239. sliceCompanyInfo := strings.Split(v.CompanyInfo, "(")
  240. sliceActivityTitle := strings.Split(v.CompanyInfo, ")")
  241. companyInfo := sliceCompanyInfo[0]
  242. if len(sliceActivityTitle) > 1 {
  243. item.ActivityName = companyInfo + v.Title
  244. } else {
  245. item.ActivityName = v.Title
  246. }
  247. //fmt.Println(item.ActivityName)
  248. //return err
  249. item.LastUpdatedTime = time.Now()
  250. item.Label = companyInfo
  251. item.TemporaryLabel = companyInfo
  252. item.ChartPermissionId = GetActivityTypeIdWithYiDong(v.IndustrySwName)
  253. item.ChartPermissionName = GetActivityTypeNameWithYiDong(v.IndustrySwName)
  254. item.ChartPermissionNames = GetActivityTypeNameWithYiDong(v.IndustrySwName)
  255. item.ActivityTime = v.Start
  256. item.YidongActivityEndTime = v.End
  257. item.YidongSignUpStart = v.SignUpStart
  258. item.YidongSignUpEnd = v.SignUpEnd
  259. item.YidongActivityEndTime = v.End
  260. item.ActivityTimeText = GetActivityTextTime(v.Start)
  261. item.YidongActivityUrl = v.URL
  262. item.ActivityJoinType = v.ActivityJoinType
  263. detailYidng, err := GetYiDongActivityDetail(v.ID)
  264. if err != nil {
  265. return err
  266. }
  267. detailList := detailYidng.Resultdetail.GuestPersonList
  268. for _, vdetail := range detailList {
  269. item.DistinguishedGuest += vdetail.PersonName + " " + vdetail.JobName + ","
  270. }
  271. item.DistinguishedGuest = strings.TrimRight(item.DistinguishedGuest, ",")
  272. item.Body = "<p>" + "【" + item.ActivityName + "】" + "<p>时间:" + item.ActivityTimeText + "</p>嘉宾:" + item.DistinguishedGuest + "</p>"
  273. //fmt.Println(item.Body)
  274. //return err
  275. if mapOldYiDong[v.ID] == "" {
  276. itemsAdd = append(itemsAdd, item)
  277. newId, err := models.AddCygxActivity(item)
  278. if err != nil {
  279. fmt.Println(err)
  280. utils.FileLog.Info(string(err.Error()))
  281. return err
  282. }
  283. //把公司名称当做标的 对活动进行产业标的的关联
  284. YidongActivityGroup(companyInfo, int(newId))
  285. } else {
  286. //如果内容主体有做变更,就修改内容
  287. if mapOldYiDongBody[v.ID] != fmt.Sprint(item.ActivityName+"12", item.Label, item.ChartPermissionId, item.ActivityTime, item.YidongActivityEndTime, item.DistinguishedGuest) {
  288. updateParams := make(map[string]interface{})
  289. updateParams["ActivityName"] = item.ActivityName
  290. updateParams["Body"] = item.Body
  291. updateParams["Label"] = item.Label
  292. //updateParams["TemporaryLabel"] = item.TemporaryLabel
  293. updateParams["DistinguishedGuest"] = item.DistinguishedGuest
  294. updateParams["ChartPermissionId"] = item.ChartPermissionId
  295. updateParams["ChartPermissionName"] = item.ChartPermissionName
  296. updateParams["ChartPermissionNames"] = item.ChartPermissionNames
  297. updateParams["ActivityTime"] = item.ActivityTime
  298. updateParams["YidongActivityEndTime"] = item.YidongActivityEndTime
  299. updateParams["ActivityTimeText"] = item.ActivityTimeText
  300. updateParams["YidongActivityUrl"] = item.YidongActivityUrl
  301. updateParams["ActivityJoinType"] = item.ActivityJoinType
  302. updateParams["YidongSignUpStart"] = item.YidongSignUpStart
  303. updateParams["YidongSignUpEnd"] = item.YidongSignUpEnd
  304. updateParams["LastUpdatedTime"] = time.Now()
  305. whereParam := map[string]interface{}{"yidong_activity_id": item.YidongActivityId}
  306. err = models.UpdateByExpr(models.CygxActivity{}, whereParam, updateParams)
  307. if err != nil {
  308. return err
  309. }
  310. }
  311. }
  312. }
  313. }
  314. return
  315. }
  316. // 获取易董活动详情
  317. func GetYiDongActivityDetail(activityId string) (detail *models.ApifoxModaldetail, err error) {
  318. defer func() {
  319. if err != nil {
  320. go utils.SendAlarmMsg("获取易董活动详情失败:"+err.Error(), 2)
  321. }
  322. }()
  323. var token string
  324. token, _ = GetYiDongToken()
  325. url := utils.YiDongZhengTongYunUrl + "interact/activityManageApi/getRoadshowDetail?access_token=" + token
  326. method := "POST"
  327. payload := strings.NewReader(`{"activityId":"` + activityId + `"}`)
  328. client := &http.Client{}
  329. req, err := http.NewRequest(method, url, payload)
  330. if err != nil {
  331. fmt.Println(err)
  332. utils.FileLog.Info(err.Error())
  333. return
  334. }
  335. req.Header.Add("Content-Type", "application/json")
  336. res, err := client.Do(req)
  337. if err != nil {
  338. fmt.Println(err)
  339. utils.FileLog.Info(err.Error())
  340. return
  341. }
  342. defer res.Body.Close()
  343. var ApifoxModal *models.ApifoxModaldetail
  344. body, err := ioutil.ReadAll(res.Body)
  345. if err != nil {
  346. fmt.Println(err)
  347. utils.FileLog.Info(err.Error())
  348. return
  349. }
  350. //添加请求日志记录
  351. itemApiLog := new(models.CygxThreeApiLog)
  352. itemApiLog.CreateTime = time.Now()
  353. itemApiLog.Source = 1
  354. itemApiLog.Url = url
  355. itemApiLog.Body = utils.ReplaceSpaceAndWrap(fmt.Sprint(payload))
  356. itemApiLog.Result = string(body)
  357. go models.AddCygxThreeApiLog(itemApiLog)
  358. err = json.Unmarshal(body, &ApifoxModal)
  359. if err != nil {
  360. fmt.Println("Getres.PublicGetDate Err:", err.Error())
  361. utils.FileLog.Info(err.Error())
  362. return
  363. }
  364. detail = ApifoxModal
  365. return
  366. }
  367. // 生成用户相关信息接口 获取用户tgc
  368. func GetYiDongCreateUserInfo(user *models.WxUserItem) (userTgc string, err error) {
  369. defer func() {
  370. if err != nil {
  371. fmt.Println(err)
  372. go utils.SendAlarmMsg("生成用户相关信息接口 获取用户tgc失败:"+err.Error(), 2)
  373. utils.FileLog.Info(err.Error())
  374. }
  375. }()
  376. url := utils.YiDongHuaWeiYunUrl + "app/hz/createUserInfo"
  377. method := "POST"
  378. payload := strings.NewReader(`{
  379. "phone": "` + user.Mobile + `",
  380. "personName": "` + user.RealName + `",
  381. "companyName": "` + user.CompanyName + `",
  382. "jobName": "` + user.Position + `",
  383. "mobileCountryCode": "+` + user.CountryCode + `",
  384. "sourceFrom": "01"
  385. }`)
  386. client := &http.Client{}
  387. req, err := http.NewRequest(method, url, payload)
  388. if err != nil {
  389. fmt.Println(err)
  390. utils.FileLog.Info(err.Error())
  391. return
  392. }
  393. req.Header.Add("Content-Type", "application/json")
  394. res, err := client.Do(req)
  395. if err != nil {
  396. fmt.Println(err)
  397. utils.FileLog.Info(err.Error())
  398. return
  399. }
  400. defer res.Body.Close()
  401. var ApifoxModal *models.ApifoxModalUserTgc
  402. body, err := ioutil.ReadAll(res.Body)
  403. if err != nil {
  404. fmt.Println(err)
  405. utils.FileLog.Info(err.Error())
  406. return
  407. }
  408. err = json.Unmarshal(body, &ApifoxModal)
  409. if err != nil {
  410. fmt.Println("Getres.PublicGetDate Err:", err.Error())
  411. utils.FileLog.Info(err.Error())
  412. return
  413. }
  414. userTgc = ApifoxModal.Result.Tgc
  415. return
  416. }
  417. // GetYiDongOriginalLink 将易懂的短连接转为长链接
  418. func GetYiDongOriginalLink(item *models.ActivityDetail) (yidongLongLink string, err error) {
  419. defer func() {
  420. if err != nil {
  421. fmt.Println(err)
  422. go utils.SendAlarmMsg("将易懂的短连接转为长链接 失败:"+err.Error(), 2)
  423. utils.FileLog.Info(err.Error())
  424. }
  425. }()
  426. sliceYidongActivityUrl := strings.Split(item.YidongActivityUrl, "/")
  427. var shortLink string
  428. if len(sliceYidongActivityUrl) > 1 {
  429. shortLink = sliceYidongActivityUrl[len(sliceYidongActivityUrl)-1]
  430. }
  431. var token string
  432. token, err = GetYiDongToken()
  433. if err != nil {
  434. fmt.Println(err)
  435. return
  436. }
  437. url := utils.YiDonggetOriginalLink + shortLink + "&access_token=" + token
  438. fmt.Println(url)
  439. method := "GET"
  440. client := &http.Client{}
  441. req, err := http.NewRequest(method, url, nil)
  442. if err != nil {
  443. fmt.Println(err)
  444. return
  445. }
  446. res, err := client.Do(req)
  447. if err != nil {
  448. fmt.Println(err)
  449. return
  450. }
  451. defer res.Body.Close()
  452. var ApifoxModal *models.ApifoxgetOriginalLink
  453. body, err := ioutil.ReadAll(res.Body)
  454. if err != nil {
  455. fmt.Println(err)
  456. utils.FileLog.Info(err.Error())
  457. return
  458. }
  459. err = json.Unmarshal(body, &ApifoxModal)
  460. if err != nil {
  461. fmt.Println("Getres.PublicGetDate Err:", err.Error())
  462. utils.FileLog.Info(err.Error())
  463. return
  464. }
  465. lingLink := ApifoxModal.Result
  466. //fmt.Println(lingLink)
  467. //
  468. //slicelingLink := strings.Split(lingLink, "redirect_uri=")
  469. ////var shortLink string
  470. //if len(slicelingLink) > 1 {
  471. // lingLink = slicelingLink[len(slicelingLink)-1]
  472. //}
  473. yidongLongLink = lingLink
  474. return
  475. }
  476. // 处理易董这边过来的时间格式
  477. func GetActivityTextTime(timeYidong string) (timeText string) {
  478. strTime := timeYidong
  479. startTime := utils.StrTimeToTime(strTime)
  480. week := utils.StrDateTimeToWeek(strTime)
  481. timeStrYmd := startTime.Format(utils.FormatDate)
  482. timeStrHmm := startTime.Format(utils.FormatTime)
  483. timeYmd := utils.StrTimeToTime(timeStrYmd + " 12:00:00") //拼接当天中午12点的时间
  484. var amOrPm string
  485. if startTime.After(timeYmd) {
  486. amOrPm = " PM"
  487. } else {
  488. amOrPm = " AM"
  489. }
  490. timeText = timeStrYmd + "(" + week + ")" + timeStrHmm + amOrPm
  491. return
  492. }
  493. func init232() {
  494. //YidongActivityGroup("美团", 1623)
  495. //GetYiDongActivityMeeting()
  496. //GetYiDongActivity()
  497. //var timeText string
  498. //strTime := "2022-08-18 12:34:00"
  499. //startTime := utils.StrTimeToTime(strTime)
  500. //week := utils.StrDateTimeToWeek(strTime)
  501. //timeStrYmd := startTime.Format(utils.FormatDate)
  502. //timeStrHmm := startTime.Format(utils.FormatTime)
  503. //timeYmd := utils.StrTimeToTime(timeStrYmd + " 12:00:00") //拼接当天中午12点的时间
  504. //var amOrPm string
  505. //if startTime.After(timeYmd) {
  506. // amOrPm = " PM"
  507. //} else {
  508. // amOrPm = " AM"
  509. //}
  510. //timeText = timeStrYmd + "(" + week + ")" + timeStrHmm
  511. //fmt.Println(week)
  512. //fmt.Println(amOrPm)
  513. //fmt.Println(strTime)
  514. //fmt.Println(timeText)
  515. }
  516. // GetYiDongActivityMeeting获取易董到会详情
  517. func GetYiDongActivityMeeting(cont context.Context) (err error) {
  518. var condition string
  519. startDate := time.Now().AddDate(0, 0, -2).Format(utils.FormatDateTime)
  520. endDate := time.Now().Add(-time.Minute * 120).Format(utils.FormatDateTime)
  521. condition += ` AND activity_time > ` + "'" + startDate + "'"
  522. condition += ` AND activity_time < ` + "'" + endDate + "'"
  523. //fmt.Println(startDate)
  524. //fmt.Println(endDate)
  525. condition = ` `
  526. artivityListYidong, err := models.GetActivityListByYidong(condition)
  527. if err != nil {
  528. fmt.Println("GetActivityListByYidong Err:", err.Error())
  529. return err
  530. }
  531. //fmt.Println("artivityListYidong", artivityListYidong)
  532. //return err
  533. if len(artivityListYidong) == 0 {
  534. return err
  535. }
  536. var token string
  537. token, _ = GetYiDongToken()
  538. for _, v := range artivityListYidong {
  539. defer func() {
  540. if err != nil {
  541. go utils.SendAlarmMsg("获取易董到会详情失败:"+err.Error(), 2)
  542. }
  543. }()
  544. url := utils.YiDongZhengTongYunUrl + "interact/activityManageApi/getAttendPersonList?access_token=" + token
  545. method := "POST"
  546. payload := strings.NewReader(`{"activityId":"` + v.YidongActivityId + `"}`)
  547. client := &http.Client{}
  548. req, err := http.NewRequest(method, url, payload)
  549. if err != nil {
  550. fmt.Println(err)
  551. utils.FileLog.Info(err.Error())
  552. return err
  553. }
  554. req.Header.Add("Content-Type", "application/json")
  555. res, err := client.Do(req)
  556. if err != nil {
  557. fmt.Println(err)
  558. utils.FileLog.Info(err.Error())
  559. return err
  560. }
  561. defer res.Body.Close()
  562. var ApifoxModal *models.ApifoxModaluser
  563. body, err := ioutil.ReadAll(res.Body)
  564. if err != nil {
  565. fmt.Println(err)
  566. utils.FileLog.Info(err.Error())
  567. return err
  568. }
  569. //utils.FileLog.Info(string(body))
  570. //fmt.Println(string(body))
  571. err = json.Unmarshal(body, &ApifoxModal)
  572. if err != nil {
  573. fmt.Println("Getres.PublicGetDate Err:", err.Error())
  574. utils.FileLog.Info(err.Error())
  575. return err
  576. }
  577. //跟易董返回的用户状态修改活动以提交到会状态
  578. err = models.UpdateCygxActivitySubmitMeetingByYidong(v.YidongActivityId)
  579. if err != nil {
  580. fmt.Println("UpdateCygxActivitySubmitMeetingByYidong Err:", err.Error())
  581. return err
  582. }
  583. var mobiles []string
  584. if len(ApifoxModal.Result) > 0 {
  585. itemlog := new(models.CygxYidongActivityMeetingApiLog)
  586. itemlog.YidongActivityId = v.YidongActivityId
  587. itemlog.Data = string(body)
  588. itemlog.CreateTime = time.Now()
  589. err = models.AddCygxYidongActivityMeetingApiLog(itemlog)
  590. if err != nil {
  591. fmt.Println("AddCygxYidongActivityMeetingApiLog Err:", err.Error())
  592. return err
  593. }
  594. var itemsUpdate []*models.CygxActivitySignupDetail
  595. for _, vresult := range ApifoxModal.Result {
  596. if vresult.EndTime != "" {
  597. mobiles = append(mobiles, vresult.PersonTelephone)
  598. //err = models.UpdateCygxActivitySignupisMeet(v.ActivityId, vresult.PersonTelephone)
  599. //if err != nil {
  600. // fmt.Println("UpdateCygxActivitySignupisMeet Err:", err.Error())
  601. // return err
  602. //}
  603. var itemDetail = new(models.CygxActivitySignupDetail)
  604. itemDetail.Mobile = vresult.PersonTelephone
  605. itemDetail.OutboundMobile = vresult.PersonTelephone
  606. itemDetail.FirstMeetingTime = vresult.StartTime
  607. itemDetail.LastMeetingTime = vresult.EndTime
  608. itemDetail.Duration = vresult.Duration
  609. itemDetail.IsMeeting = 1
  610. itemDetail.ActivityId = v.ActivityId
  611. itemsUpdate = append(itemsUpdate, itemDetail)
  612. }
  613. }
  614. lenmobiles := len(mobiles)
  615. if lenmobiles > 0 {
  616. var parsYd []interface{}
  617. var conditionYd string
  618. conditionYd = ` AND mobile IN (` + utils.GetOrmInReplace(lenmobiles) + `) AND activity_id=? `
  619. parsYd = append(parsYd, mobiles, v.ActivityId)
  620. err = models.UpdateCygxActivitySignupisMeetList(conditionYd, parsYd)
  621. if err != nil {
  622. fmt.Println("UpdateCygxActivitySignupisMeetList Err:", err.Error())
  623. return err
  624. }
  625. err = models.UpdateActivitySignupDetailMultiByYiDong(itemsUpdate)
  626. if err != nil {
  627. fmt.Println("UpdateActivitySignupDetailMultiByYiDong Err:", err.Error())
  628. return err
  629. }
  630. }
  631. }
  632. }
  633. return
  634. }
  635. // YidongActivityGroup 添加活动与产业标的的关联
  636. func YidongActivityGroup(subjectName string, activityId int) (err error) {
  637. subjectList, err := models.GetCygxIndustrialSubjectList(subjectName)
  638. if err != nil {
  639. fmt.Println(err)
  640. return err
  641. }
  642. if len(subjectList) == 0 {
  643. return err
  644. }
  645. fmt.Println("去掉临时标签的活动", activityId)
  646. err = models.UpdateActivityshowSubject(activityId)
  647. if err != nil {
  648. go utils.SendAlarmMsg("UpdateActivityshowSubject :根据易董推过来的匹配信息,判断临时标签是否展示失败"+err.Error(), 2)
  649. }
  650. var industrialActivityItems []*models.CygxIndustrialActivityGroupManagement
  651. var subjectActivityItems []*models.CygxIndustrialActivityGroupSubject
  652. mapSubjectName := make(map[string]string)
  653. for _, v := range subjectList {
  654. industrialActivityItem := new(models.CygxIndustrialActivityGroupManagement)
  655. subjectActivityItem := new(models.CygxIndustrialActivityGroupSubject)
  656. industrialActivityItem.ActivityId = activityId
  657. industrialActivityItem.IndustrialManagementId = v.IndustrialManagementId
  658. industrialActivityItem.Source = 1
  659. industrialActivityItem.CreateTime = time.Now()
  660. industrialActivityItems = append(industrialActivityItems, industrialActivityItem)
  661. subjectActivityItem.ActivityId = activityId
  662. subjectActivityItem.IndustrialSubjectId = v.IndustrialSubjectId
  663. subjectActivityItem.Source = 1
  664. subjectActivityItem.CreateTime = time.Now()
  665. if mapSubjectName[v.SubjectName] == "" {
  666. subjectActivityItems = append(subjectActivityItems, subjectActivityItem)
  667. mapSubjectName[v.SubjectName] = v.SubjectName
  668. }
  669. }
  670. err = models.AddCygxActiuvityGroupMulti(industrialActivityItems, subjectActivityItems)
  671. if err != nil {
  672. go utils.SendAlarmMsg("AddCygxActiuvityGroupMulti :批量添加易董活动关联的活动标签失败"+err.Error(), 2)
  673. }
  674. return
  675. }