瀏覽代碼

Merge branch 'bzq/dev' of eta_mini/eta_mini_crm into debug

baoziqiang 6 月之前
父節點
當前提交
d09eaedbe6
共有 6 個文件被更改,包括 144 次插入13 次删除
  1. 1 0
      controllers/report_pdf.go
  2. 68 3
      models/report_pdf.go
  3. 5 5
      models/report_push_status.go
  4. 1 1
      scheduler/task.go
  5. 64 4
      services/task.go
  6. 5 0
      utils/constants.go

+ 1 - 0
controllers/report_pdf.go

@@ -532,6 +532,7 @@ func (this *ReportPdfController) Publish() {
 		br.ErrMsg = "发布研报失败,系统错误,Err:" + err.Error()
 		return
 	}
+
 	// 修改es
 	go func(reportPdf *models.ReportPdf) {
 		reportpdfView := reportPdf.ToView()

+ 68 - 3
models/report_pdf.go

@@ -27,7 +27,7 @@ type ReportPdf struct {
 	Uv                 int       `description:"uv"`
 	SysUserId          int       `description:"创建人id"`
 	SysRealName        string    `description:"创建人姓名"`
-	State              int       `description:"状态"`
+	State              int       `description:"状态,1:已发布;2:未发布"`
 }
 
 type ReportPdfView struct {
@@ -50,7 +50,7 @@ type ReportPdfView struct {
 	Uv                 int       `description:"uv"`
 	SysUserId          int       `description:"创建人id"`
 	SysRealName        string    `description:"创建人姓名"`
-	State              int       `description:"状态"`
+	State              int       `description:"状态,1:已发布;2:未发布"`
 }
 
 func (r *ReportPdf) Insert() (insertId int64, err error) {
@@ -93,8 +93,66 @@ func (r *ReportPdf) ToView() (item *ReportPdfView) {
 }
 
 func (r *ReportPdf) Update(cols []string) (err error) {
+	reportPushStatus := new(ReportPushStatus)
 	o := orm.NewOrm()
-	_, err = o.Update(r, cols...)
+	sql := `SELECT * FROM report_pdf WHERE report_pdf_id=? AND report_type=?`
+	err = o.Raw(sql, r.ReportPdfId, utils.ReportTypePdf).QueryRow(&reportPushStatus)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return
+	}
+
+	tx, err := o.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			tx.Rollback()
+		} else {
+			tx.Commit()
+		}
+
+	}()
+	_, err = tx.Update(r, cols...)
+	if err != nil {
+		return
+	}
+	if (reportPushStatus == nil || err.Error() == utils.ErrNoRow()) && r.State == 1 {
+		insertPushStatus := &ReportPushStatus{
+			ReportId:           r.ReportPdfId,
+			State:              0,
+			Title:              r.Title,
+			Abstract:           r.Abstract,
+			Stage:              r.Stage,
+			ClassifyIdFirst:    r.ClassifyIdFirst,
+			ClassifyNameFirst:  r.ClassifyNameFirst,
+			ClassifyIdSecond:   r.ClassifyIdSecond,
+			ClassifyNameSecond: r.ClassifyNameSecond,
+			ClassifyIdThird:    r.ClassifyIdThird,
+			ClassifyNameThird:  r.ClassifyNameThird,
+			Author:             r.Author,
+			ReportType:         utils.ReportTypePdf,
+			PublishTime:        r.PublishTime,
+			CreateTime:         time.Now(),
+			ModifyTime:         time.Now(),
+		}
+		_, err = tx.Insert(insertPushStatus)
+	} else {
+		reportPushStatus.Title = r.Title
+		reportPushStatus.Abstract = r.Abstract
+		reportPushStatus.Stage = r.Stage
+		reportPushStatus.ClassifyIdFirst = r.ClassifyIdFirst
+		reportPushStatus.ClassifyNameFirst = r.ClassifyNameFirst
+		reportPushStatus.ClassifyIdSecond = r.ClassifyIdSecond
+		reportPushStatus.ClassifyNameSecond = r.ClassifyNameSecond
+		reportPushStatus.ClassifyIdThird = r.ClassifyIdThird
+		reportPushStatus.ClassifyNameThird = r.ClassifyNameThird
+		reportPushStatus.Author = r.Author
+		reportPushStatus.PublishTime = r.PublishTime
+		reportPushStatus.ModifyTime = time.Now()
+		_, err = tx.Update(reportPushStatus)
+	}
+
 	return
 }
 
@@ -134,3 +192,10 @@ func GetReportPdfById(id int) (item *ReportPdf, err error) {
 	err = o.Raw(sql, id).QueryRow(&item)
 	return
 }
+
+func GetBatchPdfReport(maxId, batchSize int) (items []*ReportPdf, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM report_pdf WHERE report_pdf_id>? AND state=1 LIMIT ?`
+	_, err = o.Raw(sql, maxId, batchSize).QueryRows(&items)
+	return
+}

+ 5 - 5
models/report_push_status.go

@@ -21,7 +21,7 @@ type ReportPushStatus struct {
 	ClassifyIdThird    int       `description:"三级分类id"`
 	ClassifyNameThird  string    `description:"三级分类名称"`
 	Author             string    `description:"报告作者"`
-	ReportType         int       `description:"报告类型:1-eta报告"`
+	ReportType         int       `description:"报告类型:1-eta报告 2-pdf报告"`
 	PublishTime        time.Time `description:"报告发布时间"`
 	CreateTime         time.Time `description:"创建时间"`
 	ModifyTime         time.Time `description:"修改时间"`
@@ -62,7 +62,7 @@ type ReportPushView struct {
 	State              int    `description:"报告状态:0-未推送,1-已推送"`
 	PushTime           string `description:"推送时间"`
 	PublishTime        string `description:"报告发布时间"`
-	ReportType         int    `description:"报告类型:1-eta报告"`
+	ReportType         int    `description:"报告类型:1-eta报告 2-pdf报告"`
 	CreateTime         string `description:"创建时间"`
 	ModifyTime         string `description:"修改时间"`
 }
@@ -102,13 +102,13 @@ func GetReportPushStatusByReportIdAndState(reportId []int, state int) (items []*
 	return
 }
 
-func GetReportPushStatusByReportIds(reportId []int) (items []*ReportPushStatus, err error) {
+func GetReportPushStatusByReportIds(reportType int, reportId []int) (items []*ReportPushStatus, err error) {
 	if len(reportId) == 0 {
 		return
 	}
 	o := orm.NewOrm()
-	sql := `SELECT * FROM report_push_status WHERE report_id IN (` + utils.GetOrmReplaceHolder(len(reportId)) + `) `
-	_, err = o.Raw(sql, reportId).QueryRows(&items)
+	sql := `SELECT * FROM report_push_status WHERE report_type=? AND report_id IN (` + utils.GetOrmReplaceHolder(len(reportId)) + `) `
+	_, err = o.Raw(sql, reportType, reportId).QueryRows(&items)
 	return
 }
 

+ 1 - 1
scheduler/task.go

@@ -44,7 +44,7 @@ func SyncReportPushStatus(ctx context.Context) (err error) {
 	for _, v := range reportList {
 		reportIds = append(reportIds, v.Id)
 	}
-	reportPushList, err := models.GetReportPushStatusByReportIds(reportIds)
+	reportPushList, err := models.GetReportPushStatusByReportIds(utils.ReportTypeEta, reportIds)
 	if err != nil {
 		return
 	}

+ 64 - 4
services/task.go

@@ -13,7 +13,9 @@ func InitTask() {
 	// 创建Es索引
 	CreateIndex()
 	// 初始化研报推送状态
-	InitReportPushStatus()
+	InitEtaReportPushStatus()
+	// 初始化pdf报告推送状态
+	InitPdfReportPushStatus()
 	// 初始化系统用户权限
 	InitSystemUserPermission()
 	fmt.Println("end task!")
@@ -58,7 +60,7 @@ func CreateIndex() {
 	}
 }
 
-func InitReportPushStatus() {
+func InitEtaReportPushStatus() {
 	for {
 		maxId, err := models.GetMaxSyncIdReportPush(1)
 		fmt.Println("同步研报开始, maxId:", maxId)
@@ -73,7 +75,7 @@ func InitReportPushStatus() {
 		for _, v := range reportList {
 			reportIds = append(reportIds, v.Id)
 		}
-		reportPushList, err := models.GetReportPushStatusByReportIds(reportIds)
+		reportPushList, err := models.GetReportPushStatusByReportIds(utils.ReportTypeEta, reportIds)
 		if err != nil {
 			return
 		}
@@ -97,7 +99,7 @@ func InitReportPushStatus() {
 					ClassifyIdThird:    v.ClassifyIdThird,
 					ClassifyNameThird:  v.ClassifyNameThird,
 					Author:             v.Author,
-					ReportType:         1,
+					ReportType:         utils.ReportTypeEta,
 					PublishTime:        v.PublishTime,
 					CreateTime:         time.Now(),
 					ModifyTime:         time.Now(),
@@ -115,6 +117,64 @@ func InitReportPushStatus() {
 	}
 }
 
+// 初始化pdf报告的推送状态
+func InitPdfReportPushStatus() {
+	for {
+		maxId, err := models.GetMaxSyncIdReportPush(2)
+		fmt.Println("同步pdf研报开始, maxId:", maxId)
+		if err != nil {
+			fmt.Println("同步研pdf报失败, Err:", err)
+		}
+		reportList, err := models.GetBatchPdfReport(maxId, 100)
+		if err != nil {
+			fmt.Println("同步pdf研报失败, Err:", err)
+		}
+		var reportIds []int
+		for _, v := range reportList {
+			reportIds = append(reportIds, v.ReportPdfId)
+		}
+		reportPushList, err := models.GetReportPushStatusByReportIds(utils.ReportTypePdf, reportIds)
+		if err != nil {
+			return
+		}
+		reportPushMap := make(map[int]struct{})
+		for _, v := range reportPushList {
+			reportPushMap[v.ReportId] = struct{}{}
+		}
+		var insertReportPushList []*models.ReportPushStatus
+		for _, v := range reportList {
+			if _, ok := reportPushMap[v.ReportPdfId]; !ok {
+				insertReportPushList = append(insertReportPushList, &models.ReportPushStatus{
+					ReportId:           v.ReportPdfId,
+					State:              0,
+					Title:              v.Title,
+					Abstract:           v.Abstract,
+					Stage:              v.Stage,
+					ClassifyIdFirst:    v.ClassifyIdFirst,
+					ClassifyNameFirst:  v.ClassifyNameFirst,
+					ClassifyIdSecond:   v.ClassifyIdSecond,
+					ClassifyNameSecond: v.ClassifyNameSecond,
+					ClassifyIdThird:    v.ClassifyIdThird,
+					ClassifyNameThird:  v.ClassifyNameThird,
+					Author:             v.Author,
+					ReportType:         utils.ReportTypePdf,
+					PublishTime:        v.PublishTime,
+					CreateTime:         time.Now(),
+					ModifyTime:         time.Now(),
+				})
+			}
+		}
+		err = models.BatchAddReportPushStatus(insertReportPushList)
+		if err != nil {
+			return
+		}
+		if len(reportList) != 100 {
+			fmt.Println("同步pdf研报完成")
+			return
+		}
+	}
+}
+
 func InitSystemUserPermission() {
 	menuList, err := models.GetSysMenuItemsByCondition("", []interface{}{}, []string{"sys_menu_id"}, "")
 	if err != nil {

+ 5 - 0
utils/constants.go

@@ -60,6 +60,11 @@ const (
 	ReportStatusDown = 2 // 研报未发布
 )
 
+const (
+	ReportTypeEta = 1 // eta研报
+	ReportTypePdf = 2 // pdf研报
+)
+
 const (
 	STORAGESOURCE_OSS_NAME   = "oss"
 	STORAGESOURCE_MINIO_NAME = "minio"