task.go 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  1. package services
  2. import (
  3. "fmt"
  4. "github.com/PuerkitoBio/goquery"
  5. "github.com/astaxie/beego/toolbox"
  6. "hongze/hongze_cygx/models"
  7. "hongze/hongze_cygx/utils"
  8. "html"
  9. "strconv"
  10. "strings"
  11. "time"
  12. //"github.com/astaxie/beego/cache"
  13. )
  14. func Task() {
  15. fmt.Println("start")
  16. //同步数据
  17. if utils.RunMode == "release" {
  18. //syncTacticsList := toolbox.NewTask("syncTacticsList", "0 */5 * * * *", SyncTacticsList)
  19. //toolbox.AddTask("syncTacticsList", syncTacticsList)
  20. //toolbox.StartTask()
  21. syncTacticsListAddreport := toolbox.NewTask("syncTacticsListAddreport", "0 */5 * * * *", SyncTacticsListAddreport)
  22. toolbox.AddTask("syncTacticsListAddreport", syncTacticsListAddreport)
  23. //同步纪要库中的Es
  24. syncTacticsListToEs := toolbox.NewTask("syncTacticsListToEs", "0 */30 * * * *", SyncTacticsListToEs)
  25. toolbox.AddTask("syncTacticsListToEs", syncTacticsListToEs)
  26. toolbox.StartTask()
  27. }
  28. //updateActivitySattus := toolbox.NewTask("updateActivitySattus", "0 */5 * * * *", UpdateActivitySattus)
  29. //toolbox.AddTask("updateActivitySattus", updateActivitySattus)
  30. //SyncTacticsListAddreport()
  31. //UpdateActivitySattus()
  32. updateActivitySattus := toolbox.NewTask("syncTacticsListAddreport", "0 */10 * * * *", UpdateActivitySattus)
  33. toolbox.AddTask("updateActivitySattus", updateActivitySattus)
  34. //
  35. //updateIndustrialManagementLabel := toolbox.NewTask("updateIndustrialManagementLabel", "0 */30 * * * *", UpdateIndustrialManagementLabel)
  36. //toolbox.AddTask("updateIndustrialManagementLabel", updateIndustrialManagementLabel)
  37. //UpdateIndustrialManagementSubjectNnames()
  38. sendActivityBeginMsg := toolbox.NewTask("sendActivityBeginMsg", "0 */10 * * * *", SendActivityBeginMsg) //会议前30分钟的提醒
  39. toolbox.AddTask("sendActivityBeginMsg", sendActivityBeginMsg)
  40. sendActivityBeginMsgMeeting := toolbox.NewTask("sendActivityBeginMsgMeeting", "0 */5 * * * *", SendActivityBeginMsgMeeting) //会议前15分钟的提醒
  41. toolbox.AddTask("sendActivityBeginMsgMeeting", sendActivityBeginMsgMeeting)
  42. getSummarytoEs := toolbox.NewTask("getSummarytoEs", "0 */30 * * * *", GetSummarytoEs) //同步纪要库内容到Es
  43. toolbox.AddTask("getSummarytoEs", getSummarytoEs)
  44. toolbox.StartTask()
  45. //if utils.RunMode == "debug" {
  46. // //syncTacticsList := toolbox.NewTask("syncTacticsList", "0 */5 * * * *", SyncTacticsList)
  47. // //toolbox.AddTask("syncTacticsList", syncTacticsList)
  48. // //toolbox.StartTask()
  49. // syncTacticsListAddreport := toolbox.NewTask("syncTacticsListAddreport", "0 01 01 * * *", SyncTacticsListAddreport)
  50. // toolbox.AddTask("syncTacticsListAddreport", syncTacticsListAddreport)
  51. //
  52. // //同步纪要库中的Es
  53. // syncTacticsListToEs := toolbox.NewTask("syncTacticsListToEs", "0 01 01 * * *", SyncTacticsListToEs)
  54. // toolbox.AddTask("syncTacticsListToEs", syncTacticsListToEs)
  55. // toolbox.StartTask()
  56. //}
  57. //syncTacticsListAddreport := toolbox.NewTask("syncTacticsListAddreport", "0 42 09 * * *", SyncTacticsListAddreport)
  58. //toolbox.AddTask("syncTacticsListAddreport", syncTacticsListAddreport)
  59. //toolbox.StartTask()
  60. //AddAllArticle()
  61. //SyncTacticsListToEs()
  62. fmt.Println("end")
  63. }
  64. func ElasticOption() {
  65. //SyncTacticsList()
  66. //toolbox.StartTask()
  67. //keyWord := "专家"
  68. //pageSize := 20
  69. //SearchByKeyWord(keyWord, pageSize)
  70. //SaveData()
  71. //GetIndustryMap()
  72. //解析报告
  73. //GetArticleExpert()
  74. //SearchByKeyWordQuery("")
  75. //AddMap()
  76. //同步数据
  77. //ImportData()
  78. //AddMap()
  79. //Search("光伏行业")
  80. //修复报告内容
  81. //GetArticleAll()
  82. //indexName := "article_list"
  83. // mappingJson := `{
  84. //"mappings": {
  85. // "dynamic": true,
  86. // "properties": {
  87. // "ArticleId": {
  88. // "type": "integer"
  89. // },
  90. // "Title": {
  91. // "type": "text",
  92. // "analyzer": "ik_smart"
  93. // },
  94. // "TitleEn": {
  95. // "type": "text",
  96. // "analyzer": "ik_smart"
  97. // },
  98. // "UpdateFrequency": {
  99. // "type": "text",
  100. // "analyzer": "ik_smart"
  101. // },
  102. // "CreateDate": {
  103. // "type": "text",
  104. // "analyzer": "ik_smart"
  105. // },
  106. // "PublishDate": {
  107. // "type": "text",
  108. // "analyzer": "ik_smart"
  109. // },
  110. // "Abstract": {
  111. // "type": "text",
  112. // "analyzer": "ik_smart"
  113. // },
  114. // "CategoryName": {
  115. // "type": "text",
  116. // "analyzer": "ik_smart"
  117. // },
  118. // "SubCategoryName": {
  119. // "type": "text",
  120. // "analyzer": "ik_smart"
  121. // },
  122. // "InterviewDate": {
  123. // "type": "text",
  124. // "analyzer": "ik_smart"
  125. // },
  126. // "ExpertBackground": {
  127. // "type": "text",
  128. // "analyzer": "ik_smart"
  129. // },
  130. // "ExpertNumber": {
  131. // "type": "text",
  132. // "analyzer": "ik_smart"
  133. // },
  134. // "Department": {
  135. // "type": "text",
  136. // "analyzer": "ik_smart"
  137. // },
  138. // "BodyText": {
  139. // "type": "text",
  140. // "analyzer": "ik_smart"
  141. // },
  142. // "ArticleIdMd5": {
  143. // "type": "text",
  144. // "analyzer": "ik_smart"
  145. // }
  146. // }
  147. //}
  148. //}`
  149. //EsCreateIndex(indexName,mappingJson)
  150. //插入数据
  151. //allList, err := models.GetArticleAll()
  152. //if err != nil {
  153. // fmt.Println("GetArticleAll Err:", err.Error())
  154. // return
  155. //}
  156. //
  157. //indexName := "article_list"
  158. //
  159. //for _, v := range allList {
  160. // content := html.UnescapeString(v.Body)
  161. // doc, err := goquery.NewDocumentFromReader(strings.NewReader(content))
  162. // if err != nil {
  163. // fmt.Println("create doc err:", err.Error())
  164. // return
  165. // }
  166. // bodyText := doc.Text()
  167. //
  168. // item := new(ElasticArticleDetail)
  169. // item.ArticleId = v.ArticleId
  170. // item.Title = v.Title
  171. // item.TitleEn = v.TitleEn
  172. // item.UpdateFrequency = v.UpdateFrequency
  173. // item.CreateDate = v.CreateDate
  174. // item.PublishDate = v.PublishDate
  175. // item.Abstract = v.Abstract
  176. // item.CategoryName = v.CategoryName
  177. // item.SubCategoryName = v.SubCategoryName
  178. // item.InterviewDate = v.InterviewDate
  179. // item.ExpertBackground = v.ExpertBackground
  180. // item.ExpertNumber = v.ExpertNumber
  181. // item.Department = v.Department
  182. // item.ArticleIdMd5 = v.ArticleIdMd5
  183. // item.BodyText = bodyText
  184. // EsAddOrEditData(indexName, strconv.Itoa(v.ArticleId), item)
  185. //}
  186. //fmt.Println("bm")
  187. //bm, err := cache.NewCache("file", `{"CachePath":"./cache","FileSuffix":".cache", "EmbedExpiry": "120"}`)
  188. ////
  189. //if err != nil {
  190. // fmt.Println("false",err)
  191. //}
  192. ////fmt.Println(bm)
  193. //key:="put_key_one"
  194. ////bm.Put(key,1,1*time.Second)
  195. //b:=bm.IsExist(key)
  196. //fmt.Println(b)
  197. //同步策略文章
  198. //SyncTacticsList()
  199. //indexName := "article_list"
  200. //EsDeleteData(indexName,)
  201. }
  202. /*
  203. searchItem := new(models.SearchItem)
  204. searchItem.ArticleId, _ = strconv.Atoi(v.Id)
  205. searchItem.Body = v.Highlight["BodyText"]
  206. searchItem.Title = title
  207. searchItem.PublishDate = article.PublishDate
  208. */
  209. func CreateIndex() {
  210. indexName := "cygx_article_v4" //utils.IndexName
  211. mappingJson := `{
  212. "mappings": {
  213. "dynamic": true,
  214. "properties": {
  215. "ArticleId": {
  216. "type": "integer"
  217. },
  218. "BodyText": {
  219. "type": "text",
  220. "term_vector": "with_positions_offsets",
  221. "analyzer": "ik_smart"
  222. },
  223. "PublishDate": {
  224. "type": "keyword"
  225. },
  226. "SubCategoryName": {
  227. "type": "text",
  228. "term_vector": "with_positions_offsets",
  229. "analyzer": "ik_smart"
  230. },
  231. "Title": {
  232. "type": "text",
  233. "term_vector": "with_positions_offsets",
  234. "analyzer": "ik_smart"
  235. },
  236. "TitleEn": {
  237. "type": "text",
  238. "term_vector": "with_positions_offsets"
  239. },
  240. "UpdateFrequency": {
  241. "type": "text",
  242. "term_vector": "with_positions_offsets"
  243. }
  244. }
  245. }
  246. }`
  247. EsCreateIndex(indexName, mappingJson)
  248. }
  249. func AddAllArticle() {
  250. endDate := time.Now().AddDate(0, 0, -30).Format(utils.FormatDate)
  251. //allList, err := models.GetArticleAll()
  252. allList, err := models.GetArticleAllDate(endDate)
  253. if err != nil {
  254. fmt.Println("GetArticleAll Err:", err.Error())
  255. return
  256. }
  257. indexName := utils.IndexName
  258. for _, v := range allList {
  259. content := html.UnescapeString(v.Body)
  260. doc, err := goquery.NewDocumentFromReader(strings.NewReader(content))
  261. if err != nil {
  262. fmt.Println("create doc err:", err.Error())
  263. return
  264. }
  265. bodyText := doc.Text()
  266. item := new(ElasticTestArticleDetail)
  267. item.ArticleId = v.ArticleId
  268. item.Title = v.Title
  269. item.PublishDate = v.PublishDate
  270. item.BodyText = bodyText
  271. EsAddOrEditData(indexName, strconv.Itoa(v.ArticleId), item)
  272. fmt.Println(v.ArticleId)
  273. }
  274. }
  275. func AddAllArticleV4() {
  276. allList, err := models.GetArticleAll2()
  277. if err != nil {
  278. fmt.Println("GetArticleAll Err:", err.Error())
  279. return
  280. }
  281. indexName := "cygx_article_v4"
  282. for _, v := range allList {
  283. content := html.UnescapeString(v.Body)
  284. doc, err := goquery.NewDocumentFromReader(strings.NewReader(content))
  285. if err != nil {
  286. fmt.Println("create doc err:", err.Error())
  287. return
  288. }
  289. bodyText := doc.Text()
  290. item := new(ElasticTestArticleDetailV4)
  291. item.ArticleId = v.ArticleId
  292. item.Title = v.Title
  293. item.PublishDate = v.PublishDate
  294. item.BodyText = bodyText
  295. item.IsSummary = v.IsSummary
  296. item.IsReport = v.IsReport
  297. //if v.IsReport == 1 {
  298. // item.IsReport = true
  299. //}
  300. //if v.IsSummary == 1 {
  301. // item.IsSummary = true
  302. //}
  303. EsAddOrEditDataV4(indexName, strconv.Itoa(v.ArticleId), item)
  304. fmt.Println(v.ArticleId)
  305. }
  306. }
  307. // "term_vector": "with_positions_offsets"
  308. type ElasticArticleDetail struct {
  309. ArticleId int `description:"报告id"`
  310. Title string `description:"标题"`
  311. TitleEn string `description:"英文标题 "`
  312. UpdateFrequency string `description:"更新周期"`
  313. CreateDate string `description:"创建时间"`
  314. PublishDate string `description:"发布时间"`
  315. Abstract string `description:"摘要"`
  316. CategoryName string `description:"一级分类"`
  317. SubCategoryName string `description:"二级分类"`
  318. InterviewDate string `description:"访谈时间"`
  319. ExpertBackground string `description:"专家背景"`
  320. ExpertNumber string `description:"专家编号"`
  321. Department string `description:"作者"`
  322. ArticleIdMd5 string `description:"纪要id"`
  323. BodyText string `description:"内容"`
  324. }
  325. type ElasticTestArticleDetail struct {
  326. ArticleId int `description:"报告id"`
  327. Title string `description:"标题"`
  328. BodyText string `description:"内容"`
  329. PublishDate string `description:"发布时间"`
  330. }
  331. type ElasticTestArticleDetailV4 struct {
  332. ArticleId int `description:"报告id"`
  333. Title string `description:"标题"`
  334. BodyText string `description:"内容"`
  335. PublishDate string `description:"发布时间"`
  336. IsSummary int `description:"是否属于纪要库"`
  337. IsReport int `description:"是否属于报告"`
  338. }