report_service.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package report
  2. import (
  3. logger "eta_mini_ht_api/common/component/log"
  4. "eta_mini_ht_api/common/exception"
  5. reportService "eta_mini_ht_api/domian/report"
  6. "sync"
  7. "time"
  8. )
  9. type PublishRankedReport struct {
  10. Id int
  11. OrgId int
  12. Title string
  13. PublishedTime string
  14. }
  15. type PermissionNode struct {
  16. ID int `json:"id"`
  17. Name string `json:"name"`
  18. ParentID int `json:"parentId"`
  19. Children []*PermissionNode `json:"children"`
  20. }
  21. func GetRandedReportByPublishTime() (reports []PublishRankedReport, err error) {
  22. dtoList, err := reportService.GetListByConditionDesc("published_time", 3)
  23. if err != nil {
  24. logger.Error("获取最新发布的研报列表失败:%v", err)
  25. err = exception.New(exception.GetPublishedRandListFailed)
  26. return
  27. }
  28. reports = convertToPublishRankedReportList(dtoList)
  29. //并发获取研报的标签
  30. var wg sync.WaitGroup
  31. wg.Add(len(dtoList))
  32. for _, report := range reports {
  33. go func(report *PublishRankedReport) {
  34. defer wg.Done()
  35. _, err = getReportTags(report.OrgId)
  36. if err != nil {
  37. logger.Error("获取研报标签失败:%v", err)
  38. }
  39. }(&report)
  40. }
  41. wg.Wait()
  42. return
  43. }
  44. func getReportTags(id int) (labels []string, err error) {
  45. //reportService.getReportLabelsById(id)
  46. return
  47. }
  48. func convertToPublishRankedReportList(dtoList []reportService.ReportDTO) (reports []PublishRankedReport) {
  49. reports = []PublishRankedReport{}
  50. for _, dto := range dtoList {
  51. report := PublishRankedReport{
  52. Id: dto.ReportID,
  53. OrgId: dto.OrgId,
  54. PublishedTime: dto.PublishedTime,
  55. Title: dto.Title,
  56. }
  57. date, err := time.Parse(time.DateTime, report.PublishedTime)
  58. if err == nil {
  59. report.PublishedTime = date.Format(time.DateOnly)
  60. }
  61. reports = append(reports, report)
  62. }
  63. return
  64. }
  65. func GetPermissionList() (root *PermissionNode, err error) {
  66. list, err := reportService.GetPermissionList()
  67. if err != nil {
  68. logger.Error("获取品种列表失败:%v", err)
  69. err = exception.New(exception.GetPermissionListFailed)
  70. return
  71. }
  72. root = &PermissionNode{
  73. ID: 0,
  74. ParentID: 0,
  75. }
  76. assemblePermissionNode(list, root, 0, 2)
  77. return
  78. }
  79. func assemblePermissionNode(list []reportService.PermissionDTO, node *PermissionNode, current int, level int) {
  80. if node != nil && current < level {
  81. for _, permission := range list {
  82. if permission.ParentID == node.ID {
  83. childNode := &PermissionNode{
  84. ID: permission.ID,
  85. Name: permission.Name,
  86. ParentID: permission.ParentID,
  87. }
  88. node.Children = append(node.Children, childNode)
  89. assemblePermissionNode(list, childNode, current+1, level)
  90. }
  91. }
  92. }
  93. }