123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- package report
- import (
- logger "eta_mini_ht_api/common/component/log"
- "eta_mini_ht_api/common/exception"
- reportService "eta_mini_ht_api/domian/report"
- "sync"
- "time"
- )
- type PublishRankedReport struct {
- Id int
- OrgId int
- Title string
- PublishedTime string
- }
- type PermissionNode struct {
- ID int `json:"id"`
- Name string `json:"name"`
- ParentID int `json:"parentId"`
- Children []*PermissionNode `json:"children"`
- }
- func GetRandedReportByPublishTime() (reports []PublishRankedReport, err error) {
- dtoList, err := reportService.GetListByConditionDesc("published_time", 3)
- if err != nil {
- logger.Error("获取最新发布的研报列表失败:%v", err)
- err = exception.New(exception.GetPublishedRandListFailed)
- return
- }
- reports = convertToPublishRankedReportList(dtoList)
- //并发获取研报的标签
- var wg sync.WaitGroup
- wg.Add(len(dtoList))
- for _, report := range reports {
- go func(report *PublishRankedReport) {
- defer wg.Done()
- _, err = getReportTags(report.OrgId)
- if err != nil {
- logger.Error("获取研报标签失败:%v", err)
- }
- }(&report)
- }
- wg.Wait()
- return
- }
- func getReportTags(id int) (labels []string, err error) {
- //reportService.getReportLabelsById(id)
- return
- }
- func convertToPublishRankedReportList(dtoList []reportService.ReportDTO) (reports []PublishRankedReport) {
- reports = []PublishRankedReport{}
- for _, dto := range dtoList {
- report := PublishRankedReport{
- Id: dto.ReportID,
- OrgId: dto.OrgId,
- PublishedTime: dto.PublishedTime,
- Title: dto.Title,
- }
- date, err := time.Parse(time.DateTime, report.PublishedTime)
- if err == nil {
- report.PublishedTime = date.Format(time.DateOnly)
- }
- reports = append(reports, report)
- }
- return
- }
- func GetPermissionList() (root *PermissionNode, err error) {
- list, err := reportService.GetPermissionList()
- if err != nil {
- logger.Error("获取品种列表失败:%v", err)
- err = exception.New(exception.GetPermissionListFailed)
- return
- }
- root = &PermissionNode{
- ID: 0,
- ParentID: 0,
- }
- assemblePermissionNode(list, root, 0, 2)
- return
- }
- func assemblePermissionNode(list []reportService.PermissionDTO, node *PermissionNode, current int, level int) {
- if node != nil && current < level {
- for _, permission := range list {
- if permission.ParentID == node.ID {
- childNode := &PermissionNode{
- ID: permission.ID,
- Name: permission.Name,
- ParentID: permission.ParentID,
- }
- node.Children = append(node.Children, childNode)
- assemblePermissionNode(list, childNode, current+1, level)
- }
- }
- }
- }
|