task.go 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. package services
  2. import (
  3. "fmt"
  4. "github.com/PuerkitoBio/goquery"
  5. "github.com/beego/beego/v2/task"
  6. "hongze/hongze_cygx/models"
  7. "hongze/hongze_cygx/utils"
  8. "html"
  9. "strconv"
  10. "strings"
  11. "time"
  12. )
  13. func Task() {
  14. fmt.Println("start")
  15. if utils.RunMode == "release" && utils.IsTask {
  16. //syncTacticsListAddreport := task.NewTask("syncTacticsListAddreport", "0 */5 * * * *", SyncTacticsListAddreport) //同步文章
  17. //task.AddTask("syncTacticsListAddreport", syncTacticsListAddreport)
  18. getSummarytoEs := task.NewTask("getSummarytoEs", "0 */30 * * * *", GetSummarytoEs) //同步纪要库内容到Es
  19. task.AddTask("getSummarytoEs", getSummarytoEs)
  20. getArticleListByApi := task.NewTask("getArticleListByApi", "0 */5 * * * *", GetArticleListByApi) //通过三方接口获取策略平台上的文章
  21. task.AddTask("getArticleListByApi", getArticleListByApi)
  22. //会议提醒模板消息推送
  23. sendActivityBeginMsg := task.NewTask("sendActivityBeginMsg", "0 */10 8-22 * * *", SendActivityBeginMsg) //会议前60分钟的提醒
  24. task.AddTask("sendActivityBeginMsg", sendActivityBeginMsg)
  25. sendActivityBeginMsgMeeting := task.NewTask("sendActivityBeginMsgMeeting", "0 */5 8-22 * * *", SendActivityBeginMsgMeeting) //会议前15分钟的提醒
  26. task.AddTask("sendActivityBeginMsgMeeting", sendActivityBeginMsgMeeting)
  27. //预约外呼名单,会前1小时自动发送邮件给专家组
  28. sendEmailFileToExpert := task.NewTask("sendEmailFileToExpert", "0 */5 8-22 * * *", SendEmailFileToExpert) //预约外呼名单,会前1小时自动发送邮件给专家组
  29. task.AddTask("sendEmailFileToExpert", sendEmailFileToExpert)
  30. sendEmailFileForAskMsgResearch := task.NewTask("sendEmailFileForAskMsgResearch", "0 */5 8-22 * * *", SendEmailFileForAskMsgResearch) //研选系列专家电话会,会前1小时将问题列表发送给邮箱
  31. task.AddTask("sendEmailFileForAskMsgResearch", sendEmailFileForAskMsgResearch)
  32. sendEmailFileForAskMsg := task.NewTask("sendEmailFileForAskMsg", "0 */5 8-22 * * *", SendEmailFileForAskMsg) //非研选系列专家电话会,根据主持人姓名,会前15分钟将问题列表发送给至该主持人对应邮箱
  33. task.AddTask("sendEmailFileForAskMsg", sendEmailFileForAskMsg)
  34. sendEmailUserWhiteListChange := task.NewTask("sendEmailUserWhiteListChange", "0 00 17 * * *", SendEmailUserWhiteListChange) //新增 和冻结的客户白名单
  35. task.AddTask("sendEmailUserWhiteListChange", sendEmailUserWhiteListChange)
  36. }
  37. if utils.IsTask {
  38. //修改任务状
  39. updateActivitySattus := task.NewTask("syncTacticsListAddreport", "0 */1 8-22 * * *", UpdateActivitySattus)
  40. task.AddTask("updateActivitySattus", updateActivitySattus)
  41. //更新深 和新的标签
  42. updateIndustrialManagementLabel := task.NewTask("updateIndustrialManagementLabel", "0 */30 * * * *", UpdateIndustrialManagementLabel)
  43. task.AddTask("updateIndustrialManagementLabel", updateIndustrialManagementLabel)
  44. //更改对应产业的文章阅读数量
  45. chageIndustrialArticleNum := task.NewTask("chageIndustrialArticleNum", "0 01 00 * * *", ChageIndustrialArticleNum) //更改对应产业的文章阅读数量
  46. task.AddTask("chageIndustrialArticleNum", chageIndustrialArticleNum)
  47. //activityAttendanceDetail := task.NewTask("activityAttendanceDetail", "0 00 3 * * *", ActivityAttendanceDetail) //同步进门财经的路演信息
  48. //task.AddTask("sendEmailUserWhiteListChange", activityAttendanceDetail)
  49. }
  50. //ActivityAttendanceDetail()
  51. //SynchronizationArthistory()//同步原有的阅读记录
  52. //GetAddpArticle() //同步日度点评数据
  53. //SendEmailAllUserWithRAI() //发送当前所有权益用户到沈大爷的邮箱
  54. //SendEmailAllUserWithCompany() //发送这些公司下的用户到沈大爷的邮箱
  55. task.StartTask()
  56. //StatisticalReport()//导出报表
  57. fmt.Println("end")
  58. }
  59. ////白名单发送
  60. //sendEmailUserWhiteList := task.NewTask("sendEmailUserWhiteList", "0 27 17 * * *", SendEmailUserWhiteList) //白名单发送
  61. //task.AddTask("sendEmailUserWhiteList", sendEmailUserWhiteList)
  62. //editOutboundMobile := task.NewTask("editOutboundMobile", "0 */1 8-22 * * *", EditOutboundMobile) //同步外呼号码与手机号
  63. //task.AddTask("sendEmailFileToExpert", editOutboundMobile)
  64. //editUserOutboundMobile := task.NewTask("editUserOutboundMobile", "0 27 14 * * * ", EditUserOutboundMobile) //同步外呼号码与手机号
  65. //task.AddTask("editUserOutboundMobile", editUserOutboundMobile)
  66. func CreateIndex() {
  67. indexName := "cygx_article_v1" //utils.IndexName
  68. mappingJson := `{
  69. "mappings": {
  70. "dynamic": true,
  71. "properties": {
  72. "ArticleId": {
  73. "type": "integer"
  74. },
  75. "BodyText": {
  76. "type": "text",
  77. "term_vector": "with_positions_offsets",
  78. "analyzer": "ik_smart"
  79. },
  80. "PublishDate": {
  81. "type": "keyword"
  82. },
  83. "SubCategoryName": {
  84. "type": "text",
  85. "term_vector": "with_positions_offsets",
  86. "analyzer": "ik_smart"
  87. },
  88. "Title": {
  89. "type": "text",
  90. "term_vector": "with_positions_offsets",
  91. "analyzer": "ik_smart"
  92. },
  93. "TitleEn": {
  94. "type": "text",
  95. "term_vector": "with_positions_offsets"
  96. },
  97. "UpdateFrequency": {
  98. "type": "text",
  99. "term_vector": "with_positions_offsets"
  100. },
  101. "ExpertBackground": {
  102. "type": "text",
  103. "term_vector": "with_positions_offsets"
  104. }
  105. }
  106. }
  107. }`
  108. EsCreateIndex(indexName, mappingJson)
  109. AddAllArticle()
  110. }
  111. func AddAllArticle() {
  112. endDate := time.Now().AddDate(0, 0, -30).Format(utils.FormatDate)
  113. //allList, err := models.GetArticleAll()
  114. allList, err := models.GetArticleAllDate(endDate)
  115. if err != nil {
  116. fmt.Println("GetArticleAll Err:", err.Error())
  117. return
  118. }
  119. indexName := utils.IndexName
  120. for _, v := range allList {
  121. content := html.UnescapeString(v.Body)
  122. doc, err := goquery.NewDocumentFromReader(strings.NewReader(content))
  123. if err != nil {
  124. fmt.Println("create doc err:", err.Error())
  125. return
  126. }
  127. bodyText := doc.Text()
  128. item := new(ElasticTestArticleDetail)
  129. item.ArticleId = v.ArticleId
  130. item.Title = v.Title
  131. item.PublishDate = v.PublishDate
  132. item.BodyText = bodyText
  133. item.ExpertBackground = v.ExpertBackground
  134. EsAddOrEditData(indexName, strconv.Itoa(v.ArticleId), item)
  135. fmt.Println(v.ArticleId)
  136. }
  137. }
  138. func AddAllArticleV4() {
  139. allList, err := models.GetArticleAll2()
  140. if err != nil {
  141. fmt.Println("GetArticleAll Err:", err.Error())
  142. return
  143. }
  144. indexName := "cygx_article_v4"
  145. for _, v := range allList {
  146. content := html.UnescapeString(v.Body)
  147. doc, err := goquery.NewDocumentFromReader(strings.NewReader(content))
  148. if err != nil {
  149. fmt.Println("create doc err:", err.Error())
  150. return
  151. }
  152. bodyText := doc.Text()
  153. item := new(ElasticTestArticleDetailV4)
  154. item.ArticleId = v.ArticleId
  155. item.Title = v.Title
  156. item.PublishDate = v.PublishDate
  157. item.BodyText = bodyText
  158. item.IsSummary = v.IsSummary
  159. item.IsReport = v.IsReport
  160. //if v.IsReport == 1 {
  161. // item.IsReport = true
  162. //}
  163. //if v.IsSummary == 1 {
  164. // item.IsSummary = true
  165. //}
  166. EsAddOrEditDataV4(indexName, strconv.Itoa(v.ArticleId), item)
  167. fmt.Println(v.ArticleId)
  168. }
  169. }
  170. // "term_vector": "with_positions_offsets"
  171. type ElasticArticleDetail struct {
  172. ArticleId int `description:"报告id"`
  173. Title string `description:"标题"`
  174. TitleEn string `description:"英文标题 "`
  175. UpdateFrequency string `description:"更新周期"`
  176. CreateDate string `description:"创建时间"`
  177. PublishDate string `description:"发布时间"`
  178. Abstract string `description:"摘要"`
  179. CategoryName string `description:"一级分类"`
  180. SubCategoryName string `description:"二级分类"`
  181. InterviewDate string `description:"访谈时间"`
  182. ExpertBackground string `description:"专家背景"`
  183. ExpertNumber string `description:"专家编号"`
  184. Department string `description:"作者"`
  185. ArticleIdMd5 string `description:"纪要id"`
  186. BodyText string `description:"内容"`
  187. }
  188. type ElasticTestArticleDetail struct {
  189. ArticleId int `description:"报告id"`
  190. Title string `description:"标题"`
  191. BodyText string `description:"内容"`
  192. PublishDate string `description:"发布时间"`
  193. ExpertBackground string `description:"专家背景"`
  194. }
  195. type ElasticTestArticleDetailV4 struct {
  196. ArticleId int `description:"报告id"`
  197. Title string `description:"标题"`
  198. BodyText string `description:"内容"`
  199. PublishDate string `description:"发布时间"`
  200. IsSummary int `description:"是否属于纪要库"`
  201. IsReport int `description:"是否属于报告"`
  202. }
  203. func GetAddpArticle() {
  204. list, err := models.GetReportList()
  205. for _, v := range list {
  206. var articleId int
  207. maxArticleIdArticleInfo, errMax := models.GetMaxArticleIdInfo()
  208. if errMax != nil {
  209. fmt.Println(errMax)
  210. return
  211. }
  212. articleId = maxArticleIdArticleInfo.ArticleId + 1
  213. item := new(models.CygxArticle)
  214. item.Title = v.Title
  215. item.ArticleId = articleId
  216. item.SellerAndMobile = v.Author
  217. item.PublishDate = v.PublishTime
  218. item.Abstract = v.Abstract
  219. item.Body = html.UnescapeString(v.Content)
  220. item.BodyText, _ = GetReportContentTextSub(v.Content)
  221. item.IsReport = 1
  222. item.Source = 1
  223. item.ArticleIdMd5 = utils.MD5(strconv.Itoa(articleId))
  224. item.Department = "弘则产品组"
  225. item.ArticleType = "lyjh"
  226. item.IsClass = 1
  227. item.CreateDate = v.CreateTime
  228. item.UpdateFrequency = "unknow"
  229. item.CategoryId = 100 // 100是路演精华对应ID
  230. item.SubCategoryName = "路演精华"
  231. item.HavePublish = 1
  232. item.PublishStatus = 1
  233. item.Periods = strconv.Itoa(v.Stage)
  234. item.VideoUrl = v.VideoUrl
  235. item.VideoName = v.VideoName
  236. item.VideoPlaySeconds = v.VideoPlaySeconds
  237. newId, _ := models.AddCygxArticles(item)
  238. fmt.Println(articleId)
  239. fmt.Println(newId)
  240. fmt.Println(item.ArticleIdMd5)
  241. }
  242. fmt.Println(err)
  243. fmt.Println(list)
  244. }
  245. func SynchronizationArthistory() {
  246. go SynchronizationArtclehistory()
  247. }