Browse Source

最新文章页面

xingzai 2 years ago
parent
commit
bb19354d7b
7 changed files with 243 additions and 23 deletions
  1. 51 0
      controllers/home.go
  2. 15 0
      models/activity.go
  3. 27 22
      models/article.go
  4. 1 0
      models/industrial_management.go
  5. 138 0
      services/article.go
  6. 7 1
      services/resource_data.go
  7. 4 0
      utils/constants.go

+ 51 - 0
controllers/home.go

@@ -674,12 +674,63 @@ func (this *HomeController) NewList() {
 	startSize = paging.StartIndex(currentIndex, pageSize)
 
 	var condition string
+	var conditionInit string
 	var pars []interface{}
 	var total int
 	resp := new(models.HomeResourceDataListResp)
 
 	//condition += " AND source = 'article' "
+	//查询近一个月的数据
+	if user.CompanyId <= 1 {
+		condition += " AND source IN ('roadshow','article') "
+		startSize = 0
+		pageSize = utils.PageSize5
+	} else {
+		condition += ` AND source NOT IN ('activity','activityspecial','newchart') ` + conditionInit
+		conditionActivity, err := services.GetActivityonditionList(user, "", "", "", "1,2,3", "", 0, 0, "", 0)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取活动权限数据失败,Err:" + err.Error()
+			return
+		}
+		conditionActivity += ` AND art.is_limit_people = 1 AND art.publish_status = 1 `
+		var conditionOrder string
+		conditionOrder = ` ORDER BY art.activity_time DESC ,  art.active_state ASC   `
+		conditionActivity += conditionOrder
+		listActivity, err := models.GetActivityListHomeNew(conditionActivity, 0, 200)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取可见活动数据失败,Err:" + err.Error()
+			return
+		}
+
+		var activityIds []int
+		for _, v := range listActivity {
+			activityIds = append(activityIds, v.ActivityId)
+		}
+		lenActivityIds := len(activityIds)
+		if lenActivityIds > 0 {
+			condition += ` OR ( source = 'activity' AND source_id IN (` + utils.GetOrmInReplace(lenActivityIds) + `) ` + conditionInit + ` )    `
+			pars = append(pars, activityIds)
+		}
+
+		listActivitySpecial, _, err := services.GetActivitySpecialList(user, 1, 200, "")
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取专项调研可见权限失败失败,Err:" + err.Error()
+			return
+		}
 
+		var activityspecialIds []int
+		for _, v := range listActivitySpecial {
+			activityspecialIds = append(activityspecialIds, v.ActivityId)
+		}
+		lenActivityspecialIds := len(activityspecialIds)
+		if lenActivityspecialIds > 0 {
+			condition += ` OR ( source = 'activityspecial' AND source_id IN (` + utils.GetOrmInReplace(lenActivityspecialIds) + `) ` + conditionInit + ` )   `
+			pars = append(pars, activityspecialIds)
+		}
+	}
 	total, err := models.GetResourceDataCount(condition, pars)
 	if err != nil {
 		br.Msg = "获取失败"

+ 15 - 0
models/activity.go

@@ -1065,6 +1065,21 @@ func GetActivityListNew(condition string, pars []interface{}, uid, startSize, pa
 	return
 }
 
+//列表
+func GetActivityListHomeNew(condition string, startSize, pageSize int) (items []*ActivityDetail, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT activity_id
+		FROM cygx_activity as art
+		INNER JOIN cygx_activity_type  as t ON t.activity_type_id = art.activity_type_id
+		INNER JOIN  chart_permission  AS c ON c.chart_permission_id = art.chart_permission_id  WHERE 1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` LIMIT ?,?`
+	_, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
+	return
+}
+
 //主题列表
 func GetActivityLabelListAllNoLimit(condition, sortTime string, pars []interface{}, conditionSpecial string) (items []*CygxActivityLabelList, err error) {
 	o := orm.NewOrm()

+ 27 - 22
models/article.go

@@ -84,28 +84,33 @@ func AddCygxArticle(item *CygxArticle) (lastId int64, err error) {
 }
 
 type HomeArticle struct {
-	ArticleId        int                  `description:"文章id"`
-	Title            string               `description:"标题"`
-	TitleEn          string               `description:"英文标题 "`
-	UpdateFrequency  string               `description:"更新周期"`
-	CreateDate       string               `description:"创建时间"`
-	PublishDate      string               `description:"发布时间"`
-	Body             string               `description:"内容"`
-	BodyHtml         string               `description:"内容带有HTML标签"`
-	Abstract         string               `description:"摘要"`
-	CategoryName     string               `description:"一级分类"`
-	SubCategoryName  string               `description:"二级分类"`
-	ExpertBackground string               `description:"专家背景"`
-	IsResearch       bool                 `description:"是否属于研选"`
-	Pv               int                  `description:"PV"`
-	ImgUrlPc         string               `description:"图片链接"`
-	CategoryId       string               `description:"文章分类"`
-	HttpUrl          string               `description:"文章链接跳转地址"`
-	IsNeedJump       bool                 `description:"是否需要跳转链接地址"`
-	Source           int                  `description:"来源  1:文章, 2:图表"`
-	Annotation       string               `description:"核心观点"`
-	HomeType         int                  `description:"数据类型:0-纪要(默认); 1-微路演音频"`
-	MicroAudio       *MicroAudioUnionList `description:"微路演音频"`
+	ArticleId           int                  `description:"文章id"`
+	Title               string               `description:"标题"`
+	TitleEn             string               `description:"英文标题 "`
+	UpdateFrequency     string               `description:"更新周期"`
+	CreateDate          string               `description:"创建时间"`
+	PublishDate         string               `description:"发布时间"`
+	Body                string               `description:"内容"`
+	BodyHtml            string               `description:"内容带有HTML标签"`
+	Abstract            string               `description:"摘要"`
+	CategoryName        string               `description:"一级分类"`
+	SubCategoryName     string               `description:"二级分类"`
+	ExpertBackground    string               `description:"专家背景"`
+	IsResearch          bool                 `description:"是否属于研选"`
+	Pv                  int                  `description:"PV"`
+	ImgUrlPc            string               `description:"图片链接"`
+	CategoryId          string               `description:"文章分类"`
+	HttpUrl             string               `description:"文章链接跳转地址"`
+	IsNeedJump          bool                 `description:"是否需要跳转链接地址"`
+	Source              int                  `description:"来源  1:文章, 2:图表"`
+	Annotation          string               `description:"核心观点"`
+	HomeType            int                  `description:"数据类型:0-纪要(默认); 1-微路演音频"`
+	MicroAudio          *MicroAudioUnionList `description:"微路演音频"`
+	ChartPermissionName string               `description:"权限名称"`
+	ArticleTypeName     string               `description:"权限名称"`
+	IsReport            int                  `description:"是否属于报告,1是,0否"`
+	ArticleResponse     int                  `description:"报告类型 0:啥也不是,1研选报告,2:研选纪要,3:研选沙龙,4;研选观点"`
+	List                []*IndustrialManagementIdInt
 }
 
 type ArticleDetail struct {

+ 1 - 0
models/industrial_management.go

@@ -246,6 +246,7 @@ type IndustrialManagementIdInt struct {
 	SubjectName            string `description:"标的名称"`
 	ArticleId              int    `description:"文章ID"`
 	IsResearch             bool   `description:"是否属于研选"`
+	ChartPermissionId      int    `description:"权限id"`
 }
 
 type IndustrialManagementIdInts struct {

+ 138 - 0
services/article.go

@@ -1661,3 +1661,141 @@ func GetArticNewLabelWhithActivity3Month() (labelMap map[int]bool, err error) {
 	}
 	return
 }
+
+//HandleArticleCategoryImg 预处理文章的封面图片
+func HandleArticleCategoryImg(list []*models.HomeArticle) (items []*models.HomeArticle, err error) {
+	//研选的五张图片
+	detailResearch, e := models.GetConfigByCode("category_research_img_url")
+	if e != nil {
+		err = errors.New("获取研选的五张图片失败" + e.Error())
+		return
+	}
+	researchList := strings.Split(detailResearch.ConfigValue, "{|}")
+	//对应分类的所图片
+	detailCategoryUrl, err := models.GetConfigByCode("category_map_img_url")
+	if err != nil {
+		err = errors.New("获取对应分类的所图片失败" + err.Error())
+		return
+	}
+	categoryUrlList := strings.Split(detailCategoryUrl.ConfigValue, "{|}")
+	mapCategoryUrl := make(map[string]string)
+	var categoryId string
+	var imgUrlChart string
+	for _, v := range categoryUrlList {
+		vslice := strings.Split(v, "_")
+		categoryId = vslice[0]
+		imgUrlChart = vslice[len(vslice)-1]
+		mapCategoryUrl[categoryId] = imgUrlChart
+	}
+
+	mapChartPerssion := make(map[string]string)
+	reportMappingList, err := models.GetReportMappingStrategyAll()
+	if err != nil {
+		err = errors.New("GetReportMappingStrategyAll err" + err.Error())
+		return
+	}
+
+	for _, v := range reportMappingList {
+		mapChartPerssion[strconv.Itoa(v.CategoryId)] = v.ChartPermissionName
+	}
+	for k, v := range list {
+		item := list[k]
+		//如果文章一开始的内容是图片,优先展示第一张图片
+		//newBody, _ := GetReportContentTextSubByarticle(item.Body, item.Annotation, item.ArticleId)
+		list[k].Annotation = ArticleAnnotation(item)
+		list[k].Body = ""
+		list[k].Abstract, _ = GetReportContentTextSub(v.Abstract)
+		list[k].PublishDate = utils.StrTimeToTime(item.PublishDate).Format(utils.FormatDate) //时间字符串格式转时间格式
+		if item.Pv > 999 {
+			list[k].Pv = 999
+		}
+		list[k].ChartPermissionName = mapChartPerssion[v.CategoryId]
+		//如果是研选系列的任意取五张图片的中的一张
+		if v.CategoryId == "0" || v.ArticleId > utils.SummaryArticleId {
+			knum := v.ArticleId % 5
+			list[k].ImgUrlPc = researchList[knum]
+		} else {
+			list[k].ImgUrlPc = mapCategoryUrl[v.CategoryId]
+		}
+		//ArticleResponse     int                  `description:"报告类型 0:啥也不是,1研选报告,2:研选纪要,3:研选沙龙,4;研选观点"`
+		if list[k].ArticleId < utils.SummaryArticleId {
+			list[k].HttpUrl = utils.StrategyPlatform + strconv.Itoa(v.ArticleId)
+			list[k].IsNeedJump = true
+			if v.IsReport == 1 {
+				list[k].ArticleResponse = 1
+			} else if v.ArticleTypeName == "纪要" {
+				list[k].ArticleResponse = 2
+			} else if v.ArticleTypeName == "观点" {
+				list[k].ArticleResponse = 3
+			} else if v.ArticleTypeName == "沙龙" {
+				list[k].ArticleResponse = 4
+			} else if v.ArticleTypeName == "路演精华" {
+				list[k].ArticleResponse = 1
+			}
+		}
+		list[k].Source = 1
+		//添加行业默认图片
+		if v.ImgUrlPc == "" {
+			if v.ChartPermissionName == utils.YI_YAO_NAME {
+				list[k].ImgUrlPc = utils.YI_YAO_OTHER_IMG
+			} else if v.ChartPermissionName == utils.XIAO_FEI_NAME {
+				list[k].ImgUrlPc = utils.XIAO_FEI_OTHER_IMG
+			} else if v.ChartPermissionName == utils.KE_JI_NAME {
+				list[k].ImgUrlPc = utils.KE_JI_OTHER_IMG
+			} else if v.ChartPermissionName == utils.ZHI_ZAO_NAME {
+				list[k].ImgUrlPc = utils.ZHI_ZAO_OTHER_IMG
+			}
+		}
+
+	}
+
+	articleIds := make([]int, 0)
+	for i := range list {
+		articleIds = append(articleIds, list[i].ArticleId)
+	}
+	// 报告关联产业信息
+	industryMap := make(map[int][]*models.IndustrialManagementIdInt, 0)
+	if len(articleIds) > 0 {
+		var industryCond string
+		var industryPars []interface{}
+		industryCond += ` AND mg.article_id IN (` + utils.GetOrmInReplace(len(articleIds)) + `)`
+		industryPars = append(industryPars, articleIds)
+		industryList, e := models.GetIndustrialListByarticleId(industryPars, industryCond)
+		if e != nil {
+			err = errors.New("GetIndustrialListByarticleId" + e.Error())
+			return
+		}
+		for i := range industryList {
+			v := industryList[i]
+			industryMap[v.ArticleId] = append(industryMap[v.ArticleId], &models.IndustrialManagementIdInt{
+				ArticleId:              v.ArticleId,
+				IndustrialManagementId: v.IndustrialManagementId,
+				IndustryName:           v.IndustryName,
+				ChartPermissionId:      v.ChartPermissionId,
+			})
+		}
+	}
+	for k, v := range list {
+		if len(industryMap[v.ArticleId]) > 0 {
+			list[k].List = industryMap[v.ArticleId]
+		} else {
+			list[k].List = make([]*models.IndustrialManagementIdInt, 0)
+		}
+	}
+
+	if len(list) == 0 {
+		list = make([]*models.HomeArticle, 0)
+	}
+	items = list
+	return
+}
+
+//处理核心观点的展示规则
+func ArticleAnnotation(item *models.HomeArticle) (annotation string) {
+	if item.Annotation != "" {
+		annotation = strings.Replace(item.Annotation, "<br>", "", -1)
+	} else {
+		annotation = item.Abstract
+	}
+	return
+}

+ 7 - 1
services/resource_data.go

@@ -55,7 +55,7 @@ func GetResourceDataList(condition string, pars []interface{}, startSize, pageSi
 		}
 	}
 
-	//处理活动
+	//处理文章
 	if len(articleIds) > 0 {
 		pars = make([]interface{}, 0)
 		condition = ` AND a.article_id IN (` + utils.GetOrmInReplace(len(articleIds)) + `)`
@@ -66,6 +66,12 @@ func GetResourceDataList(condition string, pars []interface{}, startSize, pageSi
 			err = errors.New("GetResourceDataList, Err: " + e.Error())
 			return
 		}
+
+		listArticle, e = HandleArticleCategoryImg(listArticle)
+		if e != nil {
+			err = errors.New("HandleArticleCategoryImg, Err: " + e.Error())
+			return
+		}
 		for _, v := range listArticle {
 			v.Body = ""
 			mapItems[fmt.Sprint("article", v.ArticleId)].Article = v

+ 4 - 0
utils/constants.go

@@ -82,12 +82,16 @@ const (
 	CE_LUE_NAME                      string = "策略"
 	CE_LUE_ID                        int    = 23
 	YI_YAO_NAME                      string = "医药"
+	YI_YAO_OTHER_IMG                 string = "https://hzstatic.hzinsights.com/static/temp/20221118202211/20221118/qzPm61bVf40Je7c5iL1s4CbrDcpv.png" //医药其它图片
 	YI_YAO_ID                        int    = 22
 	XIAO_FEI_NAME                    string = "消费"
+	XIAO_FEI_OTHER_IMG               string = "https://hzstatic.hzinsights.com/static/temp/20221118202211/20221118/BxOfzECjhqjipJCWwAa9Ep99OTMA.png" //消费其它图片
 	XIAO_FEI_ID                      int    = 21
 	KE_JI_NAME                       string = "科技"
+	KE_JI_OTHER_IMG                  string = "https://hzstatic.hzinsights.com/static/temp/20221118202211/20221118/vr7eTXIrl6YjJ80DDTVbdnFRQ9mJ.png" //科技其它图片
 	KE_JI_ID                         int    = 20
 	ZHI_ZAO_NAME                     string = "智造"
+	ZHI_ZAO_OTHER_IMG                string = "https://hzstatic.hzinsights.com/static/temp/20221118202211/20221118/SSaQcWzMk5slN3FkCwZifK3qcAWd.png" //智造其它图片
 	ZHI_ZAO_ID                       int    = 19
 	LINK_WX_EXPLAIN                         = "https://mp.weixin.qq.com/s?__biz=Mzg2OTYzODk0Nw==&mid=2247483662&idx=1&sn=3752df99025189b9d77fe658bfc0edbd&chksm=ce98b742f9ef3e54b49986e647dd951a3aad74f323174b252174e0938c264c0562c8ec455106#rd" //用户阅读数据
 	ACTIVITY_SPECIAL_EXPLAIN                = "预报名专项调研行程持续更新中,满10家即开团,欢迎点击感兴趣预报名"                                                                                                                                                                //用户阅读数据