|
@@ -16,6 +16,7 @@ import (
|
|
|
"eta/eta_mini_ht_api/models/ht"
|
|
|
reportDao "eta/eta_mini_ht_api/models/report"
|
|
|
"github.com/google/uuid"
|
|
|
+ "math/rand"
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
"time"
|
|
@@ -49,7 +50,7 @@ type ESReport struct {
|
|
|
Author string `json:"author"`
|
|
|
Source reportDao.ReportSource `json:"source"`
|
|
|
Abstract string `json:"abstract"`
|
|
|
- CoverSrc string `json:"coverSrc"`
|
|
|
+ CoverSrc int `json:"coverSrc"`
|
|
|
Status reportDao.ReportStatus `json:"status"`
|
|
|
PublishedTime string `json:"publishedTime"`
|
|
|
}
|
|
@@ -67,7 +68,7 @@ type ReportDTO struct {
|
|
|
PermissionNames interface{} `json:"permissionNames,omitempty"`
|
|
|
Highlight []string `json:"highlight,omitempty"`
|
|
|
Detail json.RawMessage `json:"detail,omitempty"`
|
|
|
- CoverSrc string `json:"coverSrc"`
|
|
|
+ CoverSrc int `json:"coverSrc"`
|
|
|
}
|
|
|
|
|
|
type Detail struct {
|
|
@@ -261,7 +262,49 @@ func GetETALatestReportId() (id int, err error) {
|
|
|
func GetHTLatestReportId() (id int, err error) {
|
|
|
return reportDao.GetLatestReportIdBySource(reportDao.SourceHT)
|
|
|
}
|
|
|
+func InitETAReportList(list []eta.ETAReport) (err error) {
|
|
|
+ logger.Info("同步研报数量%d", len(list))
|
|
|
+ var reports []reportDao.Report
|
|
|
+ for _, etaRp := range list {
|
|
|
+ authorNames := strings.Split(etaRp.Author, ",")
|
|
|
+ authorNamesWithOutEmpty := stringUtils.RemoveEmptyStrings(authorNames)
|
|
|
+ for _, authorName := range authorNamesWithOutEmpty {
|
|
|
+ var permissions []etaDao.ChartPermission
|
|
|
+ permissions, err = etaDao.GetSecondPermissionsByClassifyID(etaRp.ClassifyID)
|
|
|
+ permissionsId := permissions[0].ChartPermissionID
|
|
|
+ if err != nil {
|
|
|
+ coverSrc = 0
|
|
|
+ } else {
|
|
|
+ var ids []int
|
|
|
+ ids, err = models.GetImageIdByPermissionId(permissionsId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "上传视频失败"
|
|
|
+ br.ErrMsg = "获取封面图片失败"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if ids == nil || len(ids) == 0 {
|
|
|
+ coverSrc = 0
|
|
|
+ } else {
|
|
|
+ rand.Seed(time.Now().UnixNano())
|
|
|
+ // 从切片中随机选择一个元素
|
|
|
+ randomIndex := rand.Intn(len(ids))
|
|
|
+ coverSrc = ids[randomIndex]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ destRp := convertEtaReport(etaRp)
|
|
|
+ destRp.Author = authorName
|
|
|
+ reports = append(reports, destRp)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ err = reportDao.BatchInsertReport(&reports)
|
|
|
+ if err != nil {
|
|
|
+ logger.Error("同步ETA研报失败:%v", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
+ return syncES(reports)
|
|
|
+
|
|
|
+}
|
|
|
func SyncETAReportList(list []eta.ETAReport) (err error) {
|
|
|
logger.Info("同步研报数量%d", len(list))
|
|
|
var reports []reportDao.Report
|
|
@@ -379,6 +422,85 @@ func syncESAndSendMessage(reports []reportDao.Report) (err error) {
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+func syncES(reports []reportDao.Report) (err error) {
|
|
|
+ var esReports []es.ESBase
|
|
|
+ for _, etaRp := range reports {
|
|
|
+ esRp := convertEsReport(etaRp)
|
|
|
+ esReports = append(esReports, esRp)
|
|
|
+ }
|
|
|
+ //同步es
|
|
|
+ err = elastic().BulkInsert(htConfig.GetReportIndex(), esReports)
|
|
|
+ if err != nil {
|
|
|
+ logger.Error("同步ETA研报到es失败:%v", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ ////生产meta信息
|
|
|
+ //logger.Info("生成推送META信息")
|
|
|
+ //for _, report := range reports {
|
|
|
+ // userIds := userService.GetPostUser(report.Author, report.PublishedTime)
|
|
|
+ // var author analystService.FinancialAnalystDTO
|
|
|
+ // author, err = analystService.GetAnalystByName(report.Author)
|
|
|
+ // if err != nil {
|
|
|
+ // logger.Error("获取研报作者失败:%v", err)
|
|
|
+ // continue
|
|
|
+ // }
|
|
|
+ // if len(userIds) > 0 {
|
|
|
+ // usersStr := stringUtils.IntToStringSlice(userIds)
|
|
|
+ // Meta := userService.MetaData{
|
|
|
+ // AuthorName: report.Author,
|
|
|
+ // AuthorId: author.Id,
|
|
|
+ // SourceId: report.ID,
|
|
|
+ // PublishedTime: report.PublishedTime,
|
|
|
+ // }
|
|
|
+ // metaStr, _ := json.Marshal(Meta)
|
|
|
+ // toStr := strings.Join(usersStr, ",")
|
|
|
+ // UUID := uuid.New()
|
|
|
+ // uuidStr := UUID.String()
|
|
|
+ // metaContent := userService.MetaInfoDTO{
|
|
|
+ // From: "HT",
|
|
|
+ // Uid: "report:" + uuidStr,
|
|
|
+ // Meta: string(metaStr),
|
|
|
+ // MetaType: "USER_NOTICE",
|
|
|
+ // SourceType: "REPORT",
|
|
|
+ // To: toStr,
|
|
|
+ // }
|
|
|
+ // err = userService.CreateMetaInfo(metaContent)
|
|
|
+ // if err != nil {
|
|
|
+ // logger.Error("创建Meta信息失败:%v", err)
|
|
|
+ // return err
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ return
|
|
|
+}
|
|
|
+func InitHTReportList(list []ht.HTReport) (err error) {
|
|
|
+ logger.Info("同步研报数量%d", len(list))
|
|
|
+ var reports []reportDao.Report
|
|
|
+ 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(htRp)
|
|
|
+ destRp.Author = authorName
|
|
|
+ reports = append(reports, destRp)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ err = reportDao.BatchInsertReport(&reports)
|
|
|
+ if err != nil {
|
|
|
+ logger.Error("同步HT研报失败:%v", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return syncES(reports)
|
|
|
+}
|
|
|
func SyncHTReportList(list []ht.HTReport) (err error) {
|
|
|
logger.Info("同步研报数量%d", len(list))
|
|
|
var reports []reportDao.Report
|
|
@@ -459,6 +581,7 @@ func convertEtaReport(etaRp eta.ETAReport) reportDao.Report {
|
|
|
Title: etaRp.Title,
|
|
|
Abstract: etaRp.Abstract,
|
|
|
Author: etaRp.Author,
|
|
|
+ CoverSrc: 0,
|
|
|
PublishedTime: etaRp.PublishTime,
|
|
|
Source: reportDao.SourceETA,
|
|
|
SendStatus: reportDao.UNSEND,
|