瀏覽代碼

晨报和周报无权限,修改查询章节部分

xiexiaoyuan 3 年之前
父節點
當前提交
56ae381e3c

+ 3 - 16
models/tables/chart_permission_chapter_mapping/query.go

@@ -4,23 +4,10 @@ import (
 	"hongze/hongze_yb/global"
 )
 
-// GetOtherReportIdsByPermisssionIds 根据权限ID筛选除了晨报和周报以外的报告ID
-func GetOtherReportIdsByPermisssionIds(permissionIds []int) (reportIds []int, err error)  {
+// GetReportIdsByPermisssionIds 根据权限ID筛选报告ID, rddp 类型表示新后台新增的报告,区分老后台
+func GetReportIdsByPermisssionIds(permissionIds []int) (reportIds []int, err error)  {
 	var charPermissionMapping []*ChartPermissionChapterMapping
-	err = global.DEFAULT_MYSQL.Model(ChartPermissionChapterMapping{}).Where("chart_permission_id in (?) AND research_type not in ('day', 'week') ", permissionIds).Scan(&charPermissionMapping).Error
-	if err != nil {
-		return
-	}
-	for _, v := range charPermissionMapping {
-		reportIds = append(reportIds, v.ReportChapterTypeId)
-	}
-	return
-}
-
-// GetDayReportIdsByPermisssionIds 根据权限ID筛选晨报和周报的报告ID
-func GetDayReportIdsByPermisssionIds(permissionIds []int) (reportIds []int, err error)  {
-	var charPermissionMapping []*ChartPermissionChapterMapping
-	err = global.DEFAULT_MYSQL.Model(ChartPermissionChapterMapping{}).Where("chart_permission_id in (?) AND research_type in ('day', 'week') ", permissionIds).Scan(&charPermissionMapping).Error
+	err = global.DEFAULT_MYSQL.Model(ChartPermissionChapterMapping{}).Where("chart_permission_id in (?) AND research_type = 'rddp' ", permissionIds).Scan(&charPermissionMapping).Error
 	if err != nil {
 		return
 	}

+ 2 - 1
models/tables/rddp/report/query.go

@@ -10,7 +10,8 @@ func GetLatestClassReportsByIDs(reportIDs []int) (reportList []*Report, err erro
 	title,
 	classify_id_second,
 	classify_name_second,
-	id 
+	id,
+	stage
 FROM
 	report 
 WHERE

+ 10 - 9
models/tables/rddp/report_chapter/query.go

@@ -2,7 +2,7 @@ package report_chapter
 
 import "hongze/hongze_yb/global"
 
-func GetLatestClassReportChapterByIDs(reportIDs []int) (reportChapterList []*ReportChapter, err error) {
+func GetLatestChapterByReportId(reportID int, typeIds []int) (reportChapter *ReportChapter, err error) {
 	sql := `SELECT
 	max( publish_time ) as publish_time,
 	classify_id_first,
@@ -12,13 +12,14 @@ func GetLatestClassReportChapterByIDs(reportIDs []int) (reportChapterList []*Rep
 	type_name,
 	report_chapter_id
 FROM
-	report_chapter
+	report_chapter_type
 WHERE
-	publish_state = 2 
-	AND report_chapter_id	IN (?) 
-GROUP BY
-	classify_id_first`
-	err = global.MYSQL["rddp"].Raw(sql, reportIDs).Scan(&reportChapterList).Error
-
+	report_id = ?
+	AND type_id IN (?) 
+	AND publish_state = 2 
+	AND edit = 1
+ORDER BY
+	publish_time desc`
+	err = global.MYSQL["rddp"].Raw(sql, reportID, typeIds).First(&reportChapter).Error
 	return
-}
+}

+ 17 - 0
models/tables/report_chapter_type/query.go

@@ -0,0 +1,17 @@
+package report_chapter_type
+
+import "hongze/hongze_yb/global"
+
+func GetEffectTypeID() (chapterIds []int, err error ) {
+	var chapterList []*ReportChapterType
+	err = global.DEFAULT_MYSQL.Model(ReportChapterType{}).Select("report_chapter_type_id").Where("is_show=1").Scan(&chapterList).Error
+	if err != nil {
+		return
+	}
+	if len(chapterList) > 0 {
+		for _, v := range chapterList {
+			chapterIds = append(chapterIds, int(v.ReportChapterTypeId))
+		}
+	}
+	return
+}

+ 28 - 0
models/tables/report_chapter_type/report_chapter_type.go

@@ -0,0 +1,28 @@
+package report_chapter_type
+
+import "time"
+
+type ReportChapterType struct {
+	ReportChapterTypeId    uint64    	  `gorm:"primaryKey;column:report_chapter_type_id;type:bigint(20) unsigned;not null" json:"-"`        //研究报告章节id
+	ReportChapterTypeKey   string         `gorm:"column:report_chapter_type_key;type:varchar(32)" json:"report_chapter_type_key"`            //章节key
+	ReportChapterTypeThumb string         `gorm:"column:report_chapter_type_thumb;type:varchar(512)" json:"report_chapter_type_thumb"`        //H5展示的图片
+	BannerUrl              string         `gorm:"column:banner_url;type:varchar(512)" json:"banner_url"`                                      //banner显示图片
+	ReportChapterTypeName  string         `gorm:"column:report_chapter_type_name;type:varchar(32)" json:"report_chapter_type_name"`          //报告章节类型名称
+	Sort                   int            `gorm:"column:sort;type:int(10);not null;default:0" json:"sort"`                                  //排序字段
+	Enabled                int            `gorm:"column:enabled;type:tinyint(1)" json:"enabled"`                                            //报告类型状态
+	CreatedTime            time.Time      `gorm:"column:created_time;type:datetime" json:"created_time"`                                  //创建时间
+	LastUpdatedTime        time.Time      `gorm:"column:last_updated_time;type:datetime" json:"last_updated_time"`                        //更新时间
+	ResearchType           string         `gorm:"column:research_type;type:varchar(30)" json:"research_type"`                                //研报类型
+	SelectedImage          string         `gorm:"column:selected_image;type:varchar(512)" json:"selected_image"`                              //选中时的图片
+	UnselectedImage        string         `gorm:"column:unselected_image;type:varchar(512)" json:"unselected_image"`                          //没选中时的图片
+	EditImgUrl             string         `gorm:"column:edit_img_url;type:varchar(512)" json:"edit_img_url"`                                  //管理后台编辑时选用的图
+	TickerTitle            string         `gorm:"column:ticker_title;type:varchar(128)" json:"ticker_title"`                                  //指标列的标题
+	IsShow                 int            `gorm:"column:is_show;type:tinyint(1);default:1" json:"is_show"`                                    //是否显示
+	PauseStartTime         time.Time      `gorm:"column:pause_start_time;type:datetime" json:"pause_start_time"`                          //暂停开始日期
+	PauseEndTime           time.Time      `gorm:"column:pause_end_time;type:datetime" json:"pause_end_time"`                              //暂停结束日期
+	IsSet                  int            `gorm:"column:is_set;type:tinyint(4);default:0" json:"is_set"`                                         //是否设置:0为设置,1已设置
+}
+
+func (r *ReportChapterType) TableName() string {
+	return "report_chapter_type"
+}

+ 29 - 53
services/report/report.go

@@ -6,81 +6,57 @@ import (
 	"hongze/hongze_yb/models/tables/chart_permission_chapter_mapping"
 	"hongze/hongze_yb/models/tables/rddp/report"
 	"hongze/hongze_yb/models/tables/rddp/report_chapter"
+	"hongze/hongze_yb/models/tables/report_chapter_type"
 )
 
 func GetLatestClassReport(permissionIds []int) (purchaseList []*purchase.PurchaseListItem, err error)  {
-	//获取除了晨报和周报以外的报告信息
-	otherReportIds, err := chart_permission_chapter_mapping.GetOtherReportIdsByPermisssionIds(permissionIds)
+	//获取所有和权限绑定的报告
+	reportIds, err := chart_permission_chapter_mapping.GetReportIdsByPermisssionIds(permissionIds)
 	if err != nil {
 		return
 	}
-
-	if len(otherReportIds) > 0 {
-		otherReports, tErr := report.GetLatestClassReportsByIDs(otherReportIds)
-		if tErr != nil {
-			err = tErr
-			return
-		}
-
-		for _, v := range otherReports {
-			temp := new(purchase.PurchaseListItem)
-			temp.ReportId = v.Id
-			temp.ClassifyIdFirst = v.ClassifyIdFirst
-			temp.ClassifyNameFirst = v.ClassifyNameFirst
-			temp.Stage = v.Stage
-			temp.Title = v.Title
-			temp.ClassifyIdSecond = v.ClassifyIdSecond
-			temp.ClassifyNameSecond = v.ClassifyNameSecond
-			if temp.ClassifyIdSecond > 0 {     //包含二级分类
-				temp.Content = fmt.Sprintf("【第%d期|FICC| %s】%s", v.Stage, v.ClassifyNameSecond, v.ClassifyNameFirst)
-			} else {                   //无二级分类
-				temp.Content = fmt.Sprintf("【第%d期|FICC】%s", v.Stage, v.ClassifyNameFirst)
-			}
-			temp.Time = v.PublishTime
-			purchaseList = append(purchaseList, temp)
-		}
-	}
-
-	//获取晨报和周报的章节相关信息
-	reportIds, err := chart_permission_chapter_mapping.GetDayReportIdsByPermisssionIds(permissionIds)
-	if err != nil {
-		return
-	}
-
 	if len(reportIds) > 0 {
-		reportChapters, tErr := report_chapter.GetLatestClassReportChapterByIDs(reportIds)
-
+		reports, tErr := report.GetLatestClassReportsByIDs(reportIds)
 		if tErr != nil {
 			err = tErr
 			return
 		}
-		var ids []int
-		for _, v := range reportChapters {
-			ids = append(ids, v.ReportId)
-		}
-		reports, tErr := report.GetByIds(ids)
+		//查询有效的章节
+		var chapter *report_chapter.ReportChapter
+		typeIds, tErr := report_chapter_type.GetEffectTypeID()
 		if tErr != nil {
 			err = tErr
 			return
 		}
-		reportMap := make(map[int]*report.Report, 0)
 		for _, v := range reports {
-			reportMap[v.Id] = v
-		}
-
-		for _, v := range reportChapters {
 			temp := new(purchase.PurchaseListItem)
-			ids = append(ids, v.ReportId)
-			temp.ReportId = v.ReportId
-			temp.ReportChapterId = v.ReportChapterId
+			temp.ReportId = v.Id
 			temp.ClassifyIdFirst = v.ClassifyIdFirst
 			temp.ClassifyNameFirst = v.ClassifyNameFirst
-			temp.Stage = reportMap[v.ReportId].Stage
+			temp.Stage = v.Stage
 			temp.Title = v.Title
-			temp.Content = fmt.Sprintf("【第%d期|FICC|%s】%s", temp.Stage, v.TypeName, v.ClassifyNameFirst)
+			temp.ClassifyIdSecond = v.ClassifyIdSecond
+			temp.ClassifyNameSecond = v.ClassifyNameSecond
+			if temp.ClassifyNameFirst == "晨报" || temp.ClassifyNameFirst == "周报" {  //晨报或者周报,查询最新的章节信息
+				if len(typeIds) <= 0 {
+					continue
+				}
+				chapter, err = report_chapter.GetLatestChapterByReportId(v.Id, typeIds)
+				if err != nil {
+					return
+				}
+				temp.Content = fmt.Sprintf("【第%d期|FICC|%s】%s", temp.Stage, chapter.TypeName, temp.ClassifyNameFirst)
+			}else{
+				if temp.ClassifyIdSecond > 0 {     //包含二级分类
+					temp.Content = fmt.Sprintf("【第%d期|FICC| %s】%s", temp.Stage, temp.ClassifyNameSecond, temp.ClassifyNameFirst)
+				} else {                   //无二级分类
+					temp.Content = fmt.Sprintf("【第%d期|FICC】%s", temp.Stage, temp.ClassifyNameFirst)
+				}
+			}
+
 			temp.Time = v.PublishTime
 			purchaseList = append(purchaseList, temp)
-		}
+			}
 	}
 	return
 }