Parcourir la source

增加一期研报同步

kobe6258 il y a 7 mois
Parent
commit
41c57afa99

+ 2 - 3
controllers/report/report_controller.go

@@ -9,7 +9,6 @@ import (
 	reportService "eta/eta_mini_ht_api/domian/report"
 	"eta/eta_mini_ht_api/service/report"
 	"eta/eta_mini_ht_api/service/user"
-	"fmt"
 )
 
 type ReportController struct {
@@ -108,6 +107,7 @@ func (r *ReportController) HotRanked(permissionIds string, limit int) {
 		}
 		result = r.InitWrapData("获取本周最热报告列表失败")
 		list, err := report.GetRandedReportByWeeklyHot(limit)
+		//二级品种
 		permissionIdList, err := r.TransPermissionIds(permissionIds)
 		if err != nil {
 			logger.Error("品种列表解析错误:%v", err)
@@ -119,7 +119,7 @@ func (r *ReportController) HotRanked(permissionIds string, limit int) {
 		if len(permissionIdList) > 0 {
 			for _, item := range list {
 				for _, permissionId := range permissionIdList {
-					if _, ok := item.Permissions[permissionId]; ok {
+					if _, ok := item.SecondPermissions[permissionId]; ok {
 						filterList = append(filterList, item)
 						break
 					}
@@ -216,7 +216,6 @@ func (r *ReportController) Count() {
 func (r *ReportController) GetReport(reportId int) {
 	controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) {
 		result = r.InitWrapData("获取研报详情失败")
-		fmt.Println(reportId)
 		reportDetail, err := report.GetReportById(reportId)
 		if err != nil {
 			err = exception.New(exception.GetReportFailed)

+ 12 - 0
domian/report/permission_service.go

@@ -32,9 +32,11 @@ func GetFirstPermissionsByIds(ids []int) (permissionDTOS []PermissionDTO, err er
 	return
 }
 
+// 获取一级品种(海通的板块)
 func GetReportPermissionsById(id int, source string) (permissionIds []PermissionDTO) {
 	switch source {
 	case SourceETA:
+		//展示一级品种
 		return getETAReportFirstPermissions(id)
 	case SourceHT:
 		return []PermissionDTO{}
@@ -42,6 +44,16 @@ func GetReportPermissionsById(id int, source string) (permissionIds []Permission
 	return
 }
 
+func GetReportSecondPermissionsById(id int, source string) (permissionIds []PermissionDTO) {
+	switch source {
+	case SourceETA:
+		//展示一级品种
+		return getETAReportSecondPermissions(id)
+	case SourceHT:
+		return []PermissionDTO{}
+	}
+	return
+}
 func convertPermissionDTO(node etaDao.ChartPermission) PermissionDTO {
 	return PermissionDTO{
 		ID:       node.ChartPermissionID,

+ 44 - 18
domian/report/report_service.go

@@ -13,6 +13,7 @@ import (
 	"eta/eta_mini_ht_api/models"
 	"eta/eta_mini_ht_api/models/eta"
 	etaDao "eta/eta_mini_ht_api/models/eta"
+	"eta/eta_mini_ht_api/models/ht"
 	reportDao "eta/eta_mini_ht_api/models/report"
 	"github.com/google/uuid"
 	"strconv"
@@ -54,18 +55,19 @@ type ESReport struct {
 }
 
 type ReportDTO struct {
-	ReportID        int             `json:"reportId"`
-	OrgId           int             `json:"orgId"`
-	Title           string          `json:"title"`
-	Author          string          `json:"author"`
-	Source          string          `json:"source"`
-	Abstract        string          `json:"abstract"`
-	PublishedTime   string          `json:"publishedTime"`
-	Permissions     map[int]string  `json:"-"`
-	PermissionNames interface{}     `json:"permissionNames,omitempty"`
-	Highlight       []string        `json:"highlight,omitempty"`
-	Detail          json.RawMessage `json:"detail,omitempty"`
-	CoverSrc        string          `json:"coverSrc"`
+	ReportID         int             `json:"reportId"`
+	OrgId            int             `json:"orgId"`
+	Title            string          `json:"title"`
+	Author           string          `json:"author"`
+	Source           string          `json:"source"`
+	Abstract         string          `json:"abstract"`
+	PublishedTime    string          `json:"publishedTime"`
+	SecondPermission map[int]string  `json:"-"`
+	Permissions      map[int]string  `json:"-"`
+	PermissionNames  interface{}     `json:"permissionNames,omitempty"`
+	Highlight        []string        `json:"highlight,omitempty"`
+	Detail           json.RawMessage `json:"detail,omitempty"`
+	CoverSrc         string          `json:"coverSrc"`
 }
 
 type Detail struct {
@@ -232,6 +234,23 @@ func getETAReportFirstPermissions(id int) (permissionDTOs []PermissionDTO) {
 	}
 	return
 }
+
+func getETAReportSecondPermissions(id int) (permissionDTOs []PermissionDTO) {
+	classifyId, err := etaDao.GetReportClassifyById(id)
+	if err != nil || classifyId == 0 {
+		logger.Error("获取研报分类信息失败:%v", err)
+		return
+	}
+	permissions, err := etaDao.GetSecondPermissionsByClassifyID(classifyId)
+	if err != nil {
+		logger.Error("获取研报二级品种信息失败:%v", err)
+		return
+	}
+	for _, permission := range permissions {
+		permissionDTOs = append(permissionDTOs, convertPermissionDTO(permission))
+	}
+	return
+}
 func (es ESReport) GetId() string {
 	return strconv.Itoa(es.ReportID)
 }
@@ -360,15 +379,22 @@ func syncESAndSendMessage(reports []reportDao.Report) (err error) {
 	}
 	return
 }
-func SyncHTReportList(list []eta.HTReport) (err error) {
+func SyncHTReportList(list []ht.HTReport) (err error) {
 	logger.Info("同步研报数量%d", len(list))
 	var reports []reportDao.Report
-
-	for _, etaRp := range list {
-		authorNames := strings.Split(etaRp.Author, ",")
+	for _, htRp := range list {
+		var authorStr string
+		authorStr, err = reportDao.GetGLAuthorNames(htRp.Plate, htRp.Permission)
+		if err != nil {
+			logger.Error("获取钢联研报作者失败:%v", err)
+		}
+		if authorStr != "" {
+			htRp.Author = authorStr
+		}
+		authorNames := strings.Split(htRp.Author, ",")
 		authorNamesWithOutEmpty := stringUtils.RemoveEmptyStrings(authorNames)
 		for _, authorName := range authorNamesWithOutEmpty {
-			destRp := convertHTReport(etaRp)
+			destRp := convertHTReport(htRp)
 			destRp.Author = authorName
 			reports = append(reports, destRp)
 		}
@@ -436,7 +462,7 @@ func convertEtaReport(etaRp eta.ETAReport) reportDao.Report {
 	}
 }
 
-func convertHTReport(etaRp eta.HTReport) reportDao.Report {
+func convertHTReport(etaRp ht.HTReport) reportDao.Report {
 	return reportDao.Report{
 		OrgID:         etaRp.ID,
 		Title:         etaRp.Title,

+ 6 - 0
models/eta/eta_permission.go

@@ -36,6 +36,12 @@ func GetFirstPermissionsByClassifyID(classifyID int) (chartPermissionList []Char
 	err = doSql(sql, &chartPermissionList, classifyID)
 	return
 }
+
+func GetSecondPermissionsByClassifyID(classifyID int) (chartPermissionList []ChartPermission, err error) {
+	sql := "select chart_permission_id, permission_name from chart_permission WHERE chart_permission_id in ( select DISTINCT cpskwp.chart_permission_id from chart_permission_search_key_word_mapping cpskwp  where cpskwp.classify_id=? order by cpskwp.parent_id)"
+	err = doSql(sql, &chartPermissionList, classifyID)
+	return
+}
 func GetFirstPermissionsByIds(ids []int) (chartPermissionList []ChartPermission, err error) {
 	sql := "select chart_permission_id, permission_name from chart_permission where chart_permission_id in (select parent_id from chart_permission WHERE chart_permission_id in ?)"
 	err = doSql(sql, &chartPermissionList, ids)

+ 0 - 12
models/eta/eta_report.go

@@ -46,14 +46,6 @@ type ETAReport struct {
 	NeedSplice       bool   `gorm:"column:need_splice"`
 }
 
-type HTReport struct {
-	ID          int    `gorm:"primary_key;auto_increment"`
-	Title       string `gorm:"column:title;size:125;"`
-	Abstract    string `gorm:"column:abstract;size:255;"`
-	Author      string `gorm:"column:author;size:50;"`
-	PublishTime string `gorm:"column:publish_time"`
-}
-
 //type ReportClassify struct {
 //	ClassifyID int `gorm:"column:classify_id" json:"classify_id"`
 //	ReportPermission
@@ -74,10 +66,6 @@ func GetETAReports(id int) (reports []ETAReport, err error) {
 	return
 }
 
-func GetHTReports(id int) (reports []HTReport, err error) {
-	err = models.HT().Table("report").Select(colunms+strings.Join(classifyIds, ",")).Where("state =? or state=?", published, passed).Where("id > ?", id).Order("id asc").Limit(limit).Find(&reports).Error
-	return
-}
 func GetUpdateETAReports(id int) (reports []ETAReport, err error) {
 	duration := time.Now().Add(-1 * time.Minute)
 	err = models.ETA().Table("report").Select(colunms+strings.Join(classifyIds, ",")).Where("state =? or state=? and modify_time >=?", published, passed, duration).Where("id <= ?", id).Order("id asc").Find(&reports).Error

+ 20 - 0
models/ht/ht_report.go

@@ -0,0 +1,20 @@
+package ht
+
+import "eta/eta_mini_ht_api/models"
+
+type HTReport struct {
+	ID          int    `gorm:"primary_key;auto_increment"`
+	Plate       string `gorm:"column:plate"`
+	Author      string `gorm:"column:author"`
+	Permission  string `gorm:"column:permission"`
+	Title       string `gorm:"column:title;size:125;"`
+	Abstract    string `gorm:"column:abstract;size:255;"`
+	PublishTime string `gorm:"column:publish_time"`
+}
+
+func GetHTReports(id int) (reports []HTReport, err error) {
+	db := models.HT()
+	sql := "select * from report where   id >? order by id asc"
+	err = db.Model(&HTReport{}).Raw(sql, id).Scan(&reports).Error
+	return
+}

+ 16 - 0
models/report/gl_report_author_mappings.go

@@ -0,0 +1,16 @@
+package report
+
+import "eta/eta_mini_ht_api/models"
+
+type GLReportAuthorMappings struct {
+	ID          int    `gorm:"column:id;primary_key;comment:'id'" json:"id"`
+	Plate       int    `gorm:"column:plate;comment:'板块'" json:"plate"`
+	Permission  string `gorm:" column:permission;comment:'权限'" json:"permission"`
+	AuthorNames string `gorm:"column:author_names;comment:'作者'" json:"author_names"f`
+}
+
+func GetGLAuthorNames(plate, permission string) (names string, err error) {
+	db := models.Main()
+	err = db.Model(&GLReportAuthorMappings{}).Select("author_names").Where("plate = ? and permission = ?", plate, permission).Scan(&names).Error
+	return
+}

+ 29 - 18
service/report/report_service.go

@@ -28,15 +28,16 @@ type PublishRankedReport struct {
 }
 
 type HotRankedReport struct {
-	Id              int            `json:"reportId"`
-	OrgId           int            `json:"orgId"`
-	Abstract        string         `json:"abstract"`
-	Count           int            `json:"count"`
-	Title           string         `json:"title"`
-	PublishedTime   string         `json:"publishedTime"`
-	Permissions     map[int]string `json:"-"`
-	PermissionNames interface{}    `json:"permissionNames,omitempty"`
-	CoverSrc        string         `json:"coverSrc"`
+	Id                int            `json:"reportId"`
+	OrgId             int            `json:"orgId"`
+	Abstract          string         `json:"abstract"`
+	Count             int            `json:"count"`
+	Title             string         `json:"title"`
+	PublishedTime     string         `json:"publishedTime"`
+	SecondPermissions map[int]string `json:"-"`
+	Permissions       map[int]string `json:"-"`
+	PermissionNames   interface{}    `json:"permissionNames,omitempty"`
+	CoverSrc          string         `json:"coverSrc"`
 }
 
 type PermissionNode struct {
@@ -71,6 +72,7 @@ func GetReportById(reportId int) (report reportService.ReportDTO, err error) {
 			return reportService.ReportDTO{}, err
 		}
 	case SourceHT:
+		//TODO
 		detail = nil
 		return
 	}
@@ -191,6 +193,7 @@ func GetRandedReportByWeeklyHot(limit int) (reports []HotRankedReport, err error
 			go func(report *reportService.ReportDTO) {
 				defer wg.Done()
 				report.Permissions = getReportPermissionsMap(report.OrgId, report.Source)
+				report.SecondPermission = getReportSecondPermissionsMap(report.OrgId, report.Source)
 				var label []string
 				for _, permission := range report.Permissions {
 					label = append(label, permission)
@@ -244,7 +247,14 @@ func getReportPermissionNames(id int, source string) (labels []string) {
 	}
 	return
 }
-
+func getReportSecondPermissionsMap(id int, source string) (permissionMap map[int]string) {
+	permissionMap = make(map[int]string)
+	permissions := reportService.GetReportSecondPermissionsById(id, source)
+	for _, permission := range permissions {
+		permissionMap[permission.ID] = permission.Name
+	}
+	return
+}
 func getReportPermissionsMap(id int, source string) (permissionMap map[int]string) {
 	permissionMap = make(map[int]string)
 	permissions := reportService.GetReportPermissionsById(id, source)
@@ -285,14 +295,15 @@ func assemblePermissionNode(list []reportService.PermissionDTO, node *Permission
 }
 func convertToHotRankedReport(dto reportService.ReportDTO) (report HotRankedReport) {
 	report = HotRankedReport{
-		Id:              dto.ReportID,
-		OrgId:           dto.OrgId,
-		Abstract:        dto.Abstract,
-		PublishedTime:   dto.PublishedTime,
-		Title:           dto.Title,
-		Permissions:     dto.Permissions,
-		PermissionNames: dto.PermissionNames,
-		CoverSrc:        dto.CoverSrc,
+		Id:                dto.ReportID,
+		OrgId:             dto.OrgId,
+		Abstract:          dto.Abstract,
+		PublishedTime:     dto.PublishedTime,
+		Title:             dto.Title,
+		SecondPermissions: dto.SecondPermission,
+		Permissions:       dto.Permissions,
+		PermissionNames:   dto.PermissionNames,
+		CoverSrc:          dto.CoverSrc,
 	}
 	return
 }

+ 3 - 2
task/report/report_task.go

@@ -6,6 +6,7 @@ import (
 	"eta/eta_mini_ht_api/common/contants"
 	"eta/eta_mini_ht_api/domian/report"
 	"eta/eta_mini_ht_api/models/eta"
+	"eta/eta_mini_ht_api/models/ht"
 	"eta/eta_mini_ht_api/task/base"
 	"sync"
 )
@@ -46,8 +47,8 @@ func (re *ReportTask) Execute(taskDetail *base.TaskDetail) error {
 	go func() {
 		defer wg.Done()
 		id, err := report.GetHTLatestReportId()
-		var htReportList []eta.HTReport
-		htReportList, err = eta.GetHTReports(id)
+		var htReportList []ht.HTReport
+		htReportList, err = ht.GetHTReports(id)
 		if err != nil {
 			logger.Error("获取ETA研报列表失败:%v", err)
 		}