Explorar el Código

更多推荐,最新资讯

ziwen hace 2 años
padre
commit
6caadf6ff7
Se han modificado 3 ficheros con 93 adiciones y 25 borrados
  1. 59 25
      controller/pc/pc.go
  2. 10 0
      models/response/pc/report.go
  3. 24 0
      models/tables/rddp/report_chapter/query.go

+ 59 - 25
controller/pc/pc.go

@@ -7,6 +7,7 @@ import (
 	"hongze/hongze_yb/models/tables/customer_comment"
 	"hongze/hongze_yb/models/tables/rddp/classify"
 	"hongze/hongze_yb/models/tables/rddp/report"
+	"hongze/hongze_yb/models/tables/rddp/report_chapter"
 	"hongze/hongze_yb/models/tables/yb_activity"
 	"hongze/hongze_yb/models/tables/yb_pc_suncode"
 	"hongze/hongze_yb/services"
@@ -159,6 +160,7 @@ func ClassifyDetailBanner(c *gin.Context) {
 // Recommend 专栏详情页更多推荐
 func Recommend(c *gin.Context) {
 	reqReportId := c.DefaultQuery("reportId", "")
+	classifyName := c.DefaultQuery("classify_name_first", "")
 	if reqReportId == "" {
 		response.Fail("请输入二级分类标识", c)
 		return
@@ -168,34 +170,66 @@ func Recommend(c *gin.Context) {
 		response.Fail("报告ID格式有误", c)
 		return
 	}
-	reportInfo, err := report.GetByReportId(reportId)
-	if err != nil {
-		response.Fail("报告查询出错", c)
-		return
-	}
-	if reportInfo.Id == 0 {
-		response.Fail("报告不存在", c)
-		return
-	}
 
-	if reportInfo.State != 2 {
-		response.Fail("报告未发布", c)
-		return
-	}
+	var recommendResp []*pcModels.RecommendResp
+	if classifyName == "周报" || classifyName == "晨报" {
+		recommendList, err := report_chapter.GetWeekRecommendList(reportId, classifyName)
+		if err != nil {
+			response.Fail("获取报告详情失败"+err.Error(), c)
+			return
+		}
+		for _, chapter := range recommendList {
+			resp := &pcModels.RecommendResp{
+				ReportId:            chapter.ReportId,
+				ReportChapterID:     chapter.ReportChapterId,
+				Title:               chapter.Title,
+				Stage:               chapter.Stage,
+				ClassifyNameFirst:   chapter.ClassifyNameFirst,
+				ClassifySecondFirst: "",
+			}
+			recommendResp = append(recommendResp, resp)
+		}
+	}else {
+		reportInfo, err := report.GetByReportId(reportId)
+		if err != nil {
+			response.Fail("报告查询出错", c)
+			return
+		}
+		if reportInfo.Id == 0 {
+			response.Fail("报告不存在", c)
+			return
+		}
 
-	reportType := 0
-	if reportInfo.ClassifyNameFirst == "权益研报" {
-		reportType = 1
-	} else {
-		reportType = 2
-	}
-	recommendList, err := pcModels.GetRecommendList(reportId, reportType, reportInfo.ClassifyIdSecond)
-	if err != nil {
-		response.Fail("获取报告详情失败"+err.Error(), c)
-		return
-	}
+		if reportInfo.State != 2 {
+			response.Fail("报告未发布", c)
+			return
+		}
 
-	response.OkData("查询成功", recommendList, c)
+		reportType := 0
+		if reportInfo.ClassifyNameFirst == "权益研报" {
+			reportType = 1
+		} else {
+			reportType = 2
+		}
+
+		recommendList, err := pcModels.GetRecommendList(reportId, reportType, reportInfo.ClassifyIdSecond)
+		if err != nil {
+			response.Fail("获取报告详情失败"+err.Error(), c)
+			return
+		}
+		for _, chapter := range recommendList {
+			resp := &pcModels.RecommendResp{
+				ReportId:            chapter.Id,
+				ReportChapterID:     0,
+				Title:               chapter.Title,
+				Stage:               chapter.Stage,
+				ClassifyNameFirst:   chapter.ClassifyNameFirst,
+				ClassifySecondFirst: chapter.ClassifyNameSecond,
+			}
+			recommendResp = append(recommendResp, resp)
+		}
+	}
+	response.OkData("查询成功", recommendResp, c)
 	return
 }
 

+ 10 - 0
models/response/pc/report.go

@@ -61,6 +61,7 @@ type LatestReport struct {
 	State              int       `description:"1:未发布,2:已发布" json:"state"`
 	PublishTime        time.Time `description:"发布时间" json:"publish_time"`
 	Stage              int       `description:"期数" json:"stage"`
+	ReportId           int
 }
 
 func GetLatestStage(classifyNames []string) (items []*LatestReport, err error) {
@@ -81,3 +82,12 @@ ORDER BY
 	err = global.MYSQL["rddp"].Raw(sql, classifyNames).Scan(&items).Error
 	return
 }
+
+type RecommendResp struct {
+	ReportId            int
+	ReportChapterID     int
+	Title               string
+	Stage               int
+	ClassifyNameFirst   string
+	ClassifySecondFirst string
+}

+ 24 - 0
models/tables/rddp/report_chapter/query.go

@@ -1,6 +1,7 @@
 package report_chapter
 
 import (
+	"fmt"
 	"hongze/hongze_yb/global"
 	"hongze/hongze_yb/utils"
 )
@@ -113,4 +114,27 @@ func GetByTypeIdsAndReportIds(typeIds []int,  reportIds []int, classifyNameFirst
 		reportIds = append(reportIds, v.ReportId)
 	}
 	return
+}
+
+func GetWeekRecommendList(reportId int, firstName string) (items []*ReportChapter, err error) {
+	sql := `SELECT * FROM (SELECT
+	report_id,
+	report_chapter_id,
+	classify_name_first,
+	title,
+	stage,
+	publish_time 
+FROM
+	report_chapter 
+WHERE
+	publish_state = 2 
+	AND report_id <> %v
+	AND classify_name_first = "%v"
+ORDER BY
+	publish_time DESC) t
+	GROUP BY report_id 
+	ORDER BY publish_time desc LIMIT 3 `
+	sql = fmt.Sprintf(sql, reportId, firstName)
+	err = global.MYSQL["rddp"].Raw(sql).Scan(&items).Error
+	return
 }