activity_task.go 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. package services
  2. import (
  3. "context"
  4. "crypto/tls"
  5. "encoding/json"
  6. "errors"
  7. "fmt"
  8. "hongze/hongze_cygx/models"
  9. "hongze/hongze_cygx/utils"
  10. "io/ioutil"
  11. "net/http"
  12. "strings"
  13. "time"
  14. )
  15. //专门处理活动定时任务相关的业务逻辑
  16. type VmpRobotMeeting struct {
  17. ModeID int `json:"mode_id"`
  18. PhoneNumber string `json:"phone_number"`
  19. MeetingPassword string `json:"meeting_password"`
  20. MeetingStartTime string `json:"meeting_start_time"`
  21. MeetingTitle string `json:"meeting_title"`
  22. MeetingTypeID int `json:"meeting_type_id"`
  23. ParsingMethodID int `json:"parsing_method_id"`
  24. IndustryID int `json:"industry_id"`
  25. FieldID int `json:"field_id"`
  26. Stock string `json:"stock"`
  27. Remark string `json:"remark"`
  28. ProjectID int `json:"project_id"`
  29. AuthorPhoneNumber int64 `json:"author_phone_number"`
  30. ExecutionStatusID int `json:"execution_status_id"`
  31. ParsingID int `json:"parsing_id"`
  32. SerialNumber string `json:"serial_number"`
  33. ChannelID int `json:"channel_id"`
  34. IsActive int `json:"is_active"`
  35. }
  36. type VmpRobotMeetingDataResult struct {
  37. Code int `json:"code"`
  38. Msg string `json:"msg"`
  39. Data VmpRobotMeetingResult `json:"data"`
  40. }
  41. type VmpRobotMeetingResult struct {
  42. ModeID int `json:"mode_id"`
  43. PhoneNumber string `json:"phone_number"`
  44. MeetingPassword string `json:"meeting_password"`
  45. MeetingStartTime string `json:"meeting_start_time"`
  46. MeetingTitle string `json:"meeting_title"`
  47. MeetingTypeID int `json:"meeting_type_id"`
  48. ParsingMethodID int `json:"parsing_method_id"`
  49. IndustryID int `json:"industry_id"`
  50. FieldID int `json:"field_id"`
  51. Stock string `json:"stock"`
  52. Remark string `json:"remark"`
  53. ProjectID int `json:"project_id"`
  54. AuthorPhoneNumber int64 `json:"author_phone_number"`
  55. ExecutionStatusID int `json:"execution_status_id"`
  56. ParsingID int `json:"parsing_id"`
  57. SerialNumber string `json:"serial_number"`
  58. ChannelID int `json:"channel_id"`
  59. IsActive int `json:"is_active"`
  60. VmpRobotMeetinId int `json:"id"`
  61. }
  62. //func init() {
  63. // PushVmpRobotMeeting()
  64. //}
  65. // 研选活动会前15分钟推送给上海那边的机器人
  66. func PushVmpRobotMeeting(cont context.Context) (err error) {
  67. //func PushVmpRobotMeeting() (err error) {
  68. defer func() {
  69. if err != nil {
  70. go utils.SendAlarmMsg("15分钟会议消息提醒失败", 2)
  71. fmt.Println("发送失败,Err:", err.Error())
  72. }
  73. }()
  74. postUrl := "https://vmp.hzinsights.com/v2api/meeting"
  75. authorization := "bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxNTAwMDEyMzA1NiIsInBob25lX251bWJlciI6IjE1MDAwMTIzMDU2IiwibmFtZSI6IumrmOS6puaWhyIsImVudHJhbmNlIjoicGFzc3d3b3JkIiwiaWF0IjoxNzAzODM1OTc4LCJleHAiOjE3MDM4Mzk1Nzh9.qX6EFkVPn2R0SqIQXJ4tyub--iiqKqrJnz9lbdcVetw"
  76. var condition string
  77. var pars []interface{}
  78. endDate := time.Now().Add(+time.Minute * 15).Format(utils.FormatDateTime)
  79. condition = ` AND activity_time <= ? AND activity_time >= NOW() AND publish_status = 1 AND chart_permission_id = ? AND vmp_robot_meeting_id = 0 AND active_state = 1 AND mainland_tell != '' `
  80. pars = append(pars, endDate, utils.CHART_PERMISSION_ID_YANXUAN)
  81. listActivity, e := models.GetCygxActivityList(condition, pars, 0, 10)
  82. if e != nil && e.Error() != utils.ErrNoRow() {
  83. err = errors.New("GetCygxActivityList, Err: " + e.Error())
  84. return
  85. }
  86. //fmt.Println(len(listActivity))
  87. //return
  88. if len(listActivity) == 0 {
  89. return
  90. }
  91. for _, v := range listActivity {
  92. item := new(VmpRobotMeeting)
  93. item.ModeID = 2
  94. item.PhoneNumber = utils.GetArabicNumbers(v.MainlandTell)
  95. item.MeetingPassword = utils.GetArabicNumbers(v.ParticipationCode) + "#" // 业务需求,必须带有一个#
  96. item.MeetingStartTime = v.ActivityTime
  97. item.MeetingTitle = v.ActivityName
  98. item.MeetingTypeID = 1
  99. item.ParsingMethodID = 0
  100. item.IndustryID = 13
  101. item.FieldID = 0
  102. item.Stock = ""
  103. item.Remark = v.Remarks // 处理HTML格式样式
  104. item.ProjectID = 1
  105. item.AuthorPhoneNumber = 15000123056 // 高亦文 手机号
  106. item.ExecutionStatusID = 0
  107. item.ParsingID = 0
  108. item.SerialNumber = ""
  109. item.ChannelID = -1
  110. item.IsActive = 1
  111. jsonBody, e := json.Marshal(item)
  112. if e != nil {
  113. err = errors.New("json.Marshal, Err: " + e.Error())
  114. fmt.Println("json.Marshal Err:" + err.Error())
  115. return
  116. }
  117. //fmt.Println(item)
  118. //return
  119. tr := &http.Transport{
  120. TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
  121. }
  122. client := &http.Client{Transport: tr}
  123. req, e := http.NewRequest("POST", postUrl, strings.NewReader(string(jsonBody)))
  124. if e != nil {
  125. err = e
  126. return
  127. }
  128. req.Header.Set("Content-Type", "application/json")
  129. req.Header.Set("Authorization", authorization)
  130. resp, e := client.Do(req)
  131. if e != nil {
  132. err = errors.New("client.Do Err: " + e.Error())
  133. fmt.Println("client.Do Err:" + err.Error())
  134. return
  135. }
  136. //fmt.Println(resp)
  137. defer resp.Body.Close()
  138. body, e := ioutil.ReadAll(resp.Body)
  139. if e != nil {
  140. fmt.Println("err:" + err.Error())
  141. err = e
  142. return
  143. }
  144. result := new(VmpRobotMeetingDataResult)
  145. e = json.Unmarshal(body, &result)
  146. if e != nil {
  147. fmt.Println(" json.Unmarshal Err:" + err.Error())
  148. err = errors.New("json.Unmarshal Err: " + e.Error())
  149. return
  150. }
  151. vmpRobotMeetinId := result.Data.VmpRobotMeetinId
  152. e = models.UpdateActivityVmpRobotMeetingId(vmpRobotMeetinId, v.ActivityId)
  153. if e != nil {
  154. fmt.Println("UpdateActivityVmpRobotMeetingId Err:" + err.Error())
  155. err = errors.New("UpdateActivityVmpRobotMeetingId Err: " + e.Error())
  156. return
  157. }
  158. itemlog := new(models.CygxShanghaiCompanyLog)
  159. itemlog.CreateTime = time.Now()
  160. itemlog.Url = postUrl
  161. itemlog.Body = string(jsonBody)
  162. itemlog.Result = string(body)
  163. go models.AddCygxShanghaiCompanyLog(itemlog)
  164. }
  165. return
  166. }