Browse Source

Merge branch 'cygx_8.3'

# Conflicts:
#	controllers/report.go
ziwen 2 years ago
parent
commit
94f372663e
3 changed files with 223 additions and 2 deletions
  1. 135 2
      controllers/report.go
  2. 81 0
      models/report.go
  3. 7 0
      models/tactics.go

+ 135 - 2
controllers/report.go

@@ -408,6 +408,7 @@ func (this *ReportController) IndustryList() {
 // @Title 产业下所关联的文章分类列表
 // @Description 产业下所关联的文章分类列表接口
 // @Param   IndustrialManagementId   query   int  true       "产业ID"
+// @Param   ShowTimeLine   query   int  true       "是否展示时间线 0不展示,1展示"
 // @Success 200 {object} models.IndustrialToArticleCategoryListRep
 // @router /toArticleCategoryList [get]
 func (this *ReportController) ArticleCategoryList() {
@@ -428,6 +429,7 @@ func (this *ReportController) ArticleCategoryList() {
 		br.Msg = "请输入分类ID"
 		return
 	}
+	showTimeLine, _ := this.GetInt("ShowTimeLine", 0)
 
 	detail, err := models.GetIndustrialManagementDetail(industrialManagementId)
 	if err != nil {
@@ -516,6 +518,24 @@ func (this *ReportController) ArticleCategoryList() {
 			videoSimple.ResourceUrl = ""
 		}
 	}
+
+	//detail, err := models.GetIndustrialManagementDetail(industrialManagementId)
+	//if err != nil {
+	//	br.Msg = "获取信息失败"
+	//	br.ErrMsg = "获取信息失败,Err:" + err.Error()
+	//	return
+	//}
+
+	//时间线
+	if showTimeLine == 1{
+		timeLineItem := models.IndustrialToArticleCategoryRep{
+			CategoryId:    99999,
+			MatchTypeName: "时间线",
+		}
+
+		list = append([]*models.IndustrialToArticleCategoryRep{&timeLineItem}, list...)
+	}
+
 	resp := new(models.IndustrialToArticleCategoryListRep)
 	resp.List = list
 	resp.LayoutTime = utils.TimeRemoveHms(detail.LayoutTime)
@@ -568,7 +588,7 @@ func (this *ReportController) List() {
 	startSize = paging.StartIndex(currentIndex, pageSize)
 	var pars []interface{}
 	var total int
-	resp := new(models.TacticsListResp)
+
 	page := paging.GetPaging(currentIndex, pageSize, total)
 
 	if categoryId < 1 {
@@ -579,7 +599,9 @@ func (this *ReportController) List() {
 		br.Msg = "请输入产业ID"
 		return
 	}
-	//获取该产业下所对应的行业图片
+	if categoryId != 99999 {
+		resp := new(models.TacticsListResp)
+		//获取该产业下所对应的行业图片
 	detail, errCategory := models.GetdetailByCategoryIdOne(categoryId)
 	if errCategory != nil {
 		br.Msg = "获取信息失败"
@@ -666,6 +688,117 @@ func (this *ReportController) List() {
 	br.Success = true
 	br.Msg = "获取成功"
 	br.Data = resp
+	} else {
+		//获取该产业下所对应的行业图片
+		//因为时间线不属于数据表里的二级分类,所以图片Id用产业id查到的list中的任意一个categoryId取到的图片替代
+		categoryList, err := models.IndustrialToArticleCategoryNew(industrialManagementId)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+			return
+		}
+		var timeLineCategoryId int
+		if len(categoryList) > 0{
+			timeLineCategoryId = categoryList[0].CategoryId
+		}
+
+		var detail *models.ReportMapping
+		var errCategory error
+
+		if timeLineCategoryId >0 {
+			detail, errCategory = models.GetdetailByCategoryIdOne(timeLineCategoryId)
+			if errCategory != nil {
+				br.Msg = "获取信息失败"
+				br.ErrMsg = "获取信息失败,Err:" + errCategory.Error() + "categoryID 不存在:" + strconv.Itoa(categoryId)
+				return
+			}
+		}
+
+		//对应行业的图片
+		detailChartPermissionUrl, err := models.GetConfigByCode("category_chart_permissionimg_url")
+		if err != nil {
+			br.Msg = "获取数据失败"
+			br.ErrMsg = "行业配置信息失败,Err:" + err.Error()
+			return
+		}
+		chartPermissionUrlList := strings.Split(detailChartPermissionUrl.ConfigValue, "{|}")
+		mapChartPermission := make(map[string]string)
+		var permissionName string
+		var imgUrlChartPermission string
+		for _, v := range chartPermissionUrlList {
+			vslice := strings.Split(v, "_")
+			permissionName = vslice[0]
+			imgUrlChartPermission = vslice[len(vslice)-1]
+			mapChartPermission[permissionName] = imgUrlChartPermission
+		}
+
+		total, err := models.GetTimeLineReportIndustrialCount(industrialManagementId)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取帖子总数失败,Err:" + err.Error()
+			return
+		}
+		page = paging.GetPaging(currentIndex, pageSize, total)
+		list, err := models.GetTimeLineReportIndustrialList(industrialManagementId, startSize, pageSize)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取帖子数据失败,Err:" + err.Error()
+			return
+		}
+		//对应分类的所图片
+		detailCategoryUrl, err := models.GetConfigByCode("category_map_img_url")
+		if err != nil {
+			br.Msg = "获取数据失败"
+			br.ErrMsg = "行业配置信息失败,Err:" + err.Error()
+			return
+		}
+		categoryUrlList := strings.Split(detailCategoryUrl.ConfigValue, "{|}")
+		mapCategoryUrl := make(map[string]string)
+		var categoryIdStr string
+		var imgUrlChart string
+		for _, v := range categoryUrlList {
+			vslice := strings.Split(v, "_")
+			categoryIdStr = vslice[0]
+			imgUrlChart = vslice[len(vslice)-1]
+			mapCategoryUrl[categoryIdStr] = imgUrlChart
+		}
+
+		//lenList := len(list)
+		//for i := 0; i < lenList; i++ {
+		//	item := list[i]
+		//	list[i].Content, _ = services.GetReportContentTextSub(item.Content)
+		//	//list[i].Abstract = html.UnescapeString(item.Abstract)
+		//	//list[i].Abstract, _ = services.GetReportContentTextSub(item.Abstract)
+		//}
+
+		for k, v := range list {
+			//if v.Readnum == 0 && user.CreatedTime.Before(utils.StrTimeToTime(v.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(v.PublishDate)) {
+			//	list[k].IsRed = true
+			//}
+			if v.VideoUrl != "" {
+				list[k].IsHaveVideo = true
+			}
+			id := strconv.Itoa(timeLineCategoryId)
+			list[k].ImgUrlPc = mapCategoryUrl[id]
+
+			if mapCategoryUrl[id] == "" {
+				if detail.ChartPermissionId == utils.YI_YAO_ID {
+					list[k].ImgUrlPc = utils.YI_YAO_QI_TA
+				}
+			}
+		}
+
+
+		resp := new(models.TimeLineReportListResp)
+		resp.CategoryImgUrlPc = mapChartPermission[detail.ChartPermissionName]
+
+		resp.List = list
+		resp.Paging = page
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+		br.Data = resp
+	}
 }
 
 // @Title 置顶/取消置顶

+ 81 - 0
models/report.go

@@ -820,3 +820,84 @@ func GetReportPvBillboardList(pars []interface{}, condition string) (items []*Ar
 	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }
+
+//获取产业报告+晨会点评数量
+func GetTimeLineReportIndustrialCount(industrialManagementId int) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT SUM(count) AS count FROM (
+SELECT
+	COUNT( 1 ) count 
+FROM
+	cygx_article AS a
+	INNER JOIN cygx_industrial_article_group_management AS man_g ON man_g.article_id = a.article_id 
+WHERE
+	a.publish_status = 1 
+	AND a.is_class = 1 
+	AND man_g.industrial_management_id = ?
+	UNION ALL
+	SELECT
+	COUNT( 1 ) count 
+	FROM
+	cygx_morning_meeting_review_chapter AS mmc
+	INNER JOIN cygx_morning_meeting_reviews AS mm
+	WHERE
+	mm.id = mmc.meeting_id
+	AND mm.status = 1
+	AND mmc.industry_id = ? ) AS t `
+	err = o.Raw(sql, industrialManagementId, industrialManagementId).QueryRow(&count)
+	return
+}
+
+type TimeLineReportItem struct {
+	Id              int    `description:"文章或晨报点评id"`
+	Title           string `description:"标题"`
+	PublishTime     string `description:"发布时间"`
+	Content         string `description:"内容"`
+	VideoUrl        string `description:"视频链接"`
+	IsHaveVideo     bool   `description:"是否包含视频"`
+	ImgUrlPc        string `description:"pc图片"`
+	SubCategoryName string `description:"二级分类"`
+}
+
+//获取产业报告+晨会点评列表
+func GetTimeLineReportIndustrialList(industrialManagementId, startSize, pageSize int) (items []*TimeLineReportItem, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+	* 
+FROM
+	(
+		SELECT
+		a.article_id AS id,
+		a.title,
+		a.publish_date AS publish_time,
+		a.video_url,
+		a.sub_category_name,
+		'' AS content 
+	FROM
+		cygx_article AS a
+		INNER JOIN cygx_industrial_article_group_management AS man_g ON man_g.article_id = a.article_id 
+	WHERE
+		a.publish_status = 1 
+		AND a.is_class = 1 
+		AND man_g.industrial_management_id = ? GROUP BY id UNION ALL
+	SELECT
+		mmc.id,
+		'' AS title,
+		mm.meeting_time AS publish_time,
+		'' AS video_url,
+		'时间线' AS sub_category_name,
+		mmc.content 
+	FROM
+		cygx_morning_meeting_review_chapter AS mmc
+		INNER JOIN cygx_morning_meeting_reviews AS mm 
+	WHERE
+		mm.id = mmc.meeting_id 
+		AND mm.STATUS = 1 
+		AND mmc.industry_id = ? 
+	) AS t 
+`
+	sql += ` ORDER BY 
+	t.publish_time DESC LIMIT ?,? `
+	_, err = o.Raw(sql, industrialManagementId, industrialManagementId, startSize, pageSize).QueryRows(&items)
+	return
+}

+ 7 - 0
models/tactics.go

@@ -132,3 +132,10 @@ func GetReportTacticsList(condition string, pars []interface{}, userId, startSiz
 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
 	return
 }
+
+type TimeLineReportListResp struct {
+	Paging           *paging.PagingItem
+	MatchTypeName    string `description:"匹配类型"`
+	CategoryImgUrlPc string `description:"图片"`
+	List             []*TimeLineReportItem
+}