Bläddra i källkod

行业产业模块

xingzai 2 år sedan
förälder
incheckning
87a65455c4

+ 1 - 1
controllers/article.go

@@ -71,7 +71,7 @@ func (this *ArticleController) Detail() {
 			return
 		}
 		detail.Body = services.GetReportContentTextArticleBody(detail.Body)
-		detail.Abstract, _ = services.GetReportContentTextSubNew(detail.Abstract)
+		detail.Abstract, _ = services.GetReportContentTextSub(detail.Abstract)
 		if companyPermission == "" {
 			if applyCount > 0 {
 				hasPermission = 6

+ 28 - 0
controllers/chart_permission.go

@@ -42,3 +42,31 @@ func (this *ChartPermissionController) Detail() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// @Title 获取报告所有品种
+// @Description 获取报告所有品种接口
+// @Success 200 {object} models.ChartPermissionListResp
+// @router /listByReport [get]
+func (this *ChartPermissionController) ListByReport() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var condition string
+	var chartPermissionId string
+	chartPermissionId = strconv.Itoa(utils.YI_YAO_ID) + "," + strconv.Itoa(utils.XIAO_FEI_ID) + "," + strconv.Itoa(utils.KE_JI_ID) + "," + strconv.Itoa(utils.ZHI_ZAO_ID) + "," + strconv.Itoa(utils.CE_LUE_ID)
+	condition += ` AND  chart_permission_id IN ( ` + chartPermissionId + `)`
+	list, err := models.GetChartPermissionReportAll(condition)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+		return
+	}
+	resp := new(models.ChartPermissionListResp)
+	resp.List = list
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 335 - 3
controllers/report.go

@@ -1,8 +1,13 @@
 package controllers
 
 import (
+	"fmt"
+	"github.com/rdlucklib/rdluck_tools/paging"
 	"hongze/hongze_clpt/models"
+	"hongze/hongze_clpt/services"
 	"hongze/hongze_clpt/utils"
+	"strconv"
+	"strings"
 )
 
 //报告
@@ -14,12 +19,16 @@ type ReportCommonController struct {
 	BaseCommonController
 }
 
+type MobileReportController struct {
+	BaseAuthMobileController
+}
+
 // @Title 行业报告分类列表接口
 // @Description 获取行业报告分类列表接口
 // @Param   ChartPermissionId   query   int  true       "分类ID"
 // @Success 200 {object} models.IndustrialManagementList
-// @router /home/tradeList [get]
-func (this *ReportController) TradeList() {
+// @router /tradeList [get]
+func (this *MobileReportController) TradeList() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
@@ -37,12 +46,25 @@ func (this *ReportController) TradeList() {
 		br.Msg = "请输入分类ID"
 		return
 	}
-	list, err := models.GetTradeAll(ChartPermissionId)
+	//var result []*models.SearchItem
+	var list []*models.TradeReportMapping
+	var err error
+	if ChartPermissionId == utils.CE_LUE_ID {
+		listTrade, errTrade := models.GetReportMappingStrategyHomeAll()
+		list = listTrade
+		err = errTrade
+	} else {
+		listTrade, errTrade := models.GetTradeAll(ChartPermissionId)
+		err = errTrade
+		list = listTrade
+	}
+
 	if err != nil {
 		br.Msg = "获取信息失败"
 		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
 		return
 	}
+
 	for k, v := range list {
 		list[k].UpdateTime = utils.TimeRemoveHms(v.UpdateTime)
 		count, err := models.CheckThisCategoryNewArticleIsRead(uid, v.CategoryId)
@@ -54,6 +76,18 @@ func (this *ReportController) TradeList() {
 		if count == 0 && user.CreatedTime.Before(utils.StrTimeToTime(v.UpdateTime)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(v.UpdateTime)) {
 			list[k].IsRed = true
 		}
+		var condition string
+		var pars []interface{}
+		condition = " AND  a.category_id_two =  " + strconv.Itoa(v.CategoryId)
+		if ChartPermissionId != utils.CE_LUE_ID {
+			listArticle, err := models.GetHomeList(condition, pars, 0, 6)
+			if err != nil {
+				br.Msg = "获取信息失败"
+				br.Msg = "GetHomeList,Err:" + err.Error()
+				return
+			}
+			list[k].ListArticle = listArticle
+		}
 	}
 	resp := new(models.TradeReportMappingResp)
 	resp.List = list
@@ -62,3 +96,301 @@ func (this *ReportController) TradeList() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// @Title 产业报告分类列表接口
+// @Description 获取产业报告分类列表接口
+// @Param   ChartPermissionId   query   int  true       "分类ID"
+// @Param   IsNewLabel   query   string  false       "是否属于新标签,1是,0否"
+// @Param   IsDeepLabel   query   string  false       "是否属于深标签,1是,0否"
+// @Param   OrderColumn   query   int  false       "排序字段 ,NewTime 最近更新 ,Recommend弘则推荐"
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Success 200 {object} models.IndustrialManagementList
+// @router /industryList [get]
+func (this *MobileReportController) IndustryList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	user := this.User
+	if user == nil {
+		br.Msg = "请重新登录"
+		br.Ret = 408
+		return
+	}
+	uid := user.UserId
+	ChartPermissionId, _ := this.GetInt("ChartPermissionId")
+	orderColumn := this.GetString("OrderColumn")
+	orderColumnNew := this.GetString("OrderColumn")
+	isNewLabel := this.GetString("IsNewLabel")
+	isDeepLabel := this.GetString("IsDeepLabel")
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	var orderSrt string
+	var condition string
+	var startSize int
+	resp := new(models.IndustrialManagementList)
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+
+	startSize = paging.StartIndex(currentIndex, pageSize)
+	if isNewLabel == "1" {
+		condition += ` AND is_new_label = ` + isNewLabel
+	}
+	if isDeepLabel == "1" {
+		condition += ` AND is_deep_label = ` + isDeepLabel
+	}
+
+	if ChartPermissionId > 0 {
+		condition += ` AND man.chart_permission_id IN (` + strconv.Itoa(ChartPermissionId) + `)`
+	}
+
+	var list []*models.IndustrialManagement
+	total, err := models.GetIndustrialManagementAllCount(condition)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取数量失败,Err:" + err.Error()
+		return
+	}
+	page := paging.GetPaging(currentIndex, pageSize, total)
+	if orderColumn == "" {
+		orderColumn = "NewTime"
+	}
+	if orderColumn == "NewTime" {
+		orderSrt = "update_time DESC"
+	} else {
+		orderSrt = "man.recommended_index DESC,update_time DESC"
+	}
+	if ChartPermissionId == 0 {
+		ChartPermissionId = 20
+	}
+	//获取产业下阅读数量第三的产业详情
+	detailHot3, err := models.GetIndustrialManagementHot3(ChartPermissionId)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取信息失败,Err:" + err.Error()
+		return
+	}
+
+	list, err = models.GetIndustrialManagementAll(uid, condition, orderSrt, startSize, pageSize)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+		return
+	}
+
+	industrialIdArr := make([]int, 0)
+	for k, v := range list {
+		industrialIdArr = append(industrialIdArr, v.IndustrialManagementId)
+		if v.ArticleReadNum >= detailHot3.ArticleReadNum {
+			list[k].IsHot = true
+		}
+	}
+	mapUPdateTime := make(map[int]string)
+	mapHistroyArticleId := make(map[int]int)
+	articleIdArr := make([]int, 0)
+	//获取这些产业下最新更新的文章
+	fmt.Println(industrialIdArr)
+	listUpdateTime, err := models.GetNewArticleDetailByIndustrialIds(industrialIdArr)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取信息失败 GetNewArticleDetailByIndustrialIds ,Err:" + err.Error()
+		return
+	}
+	for _, v := range listUpdateTime {
+		mapUPdateTime[v.IndustrialManagementId] = v.PublishDate
+		articleIdArr = append(articleIdArr, v.ArticleId)
+	}
+	if uid > 0 {
+		listArticleHistory, err := models.GetUserToArticleHistory(uid, industrialIdArr)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取信息失败 GetUserToArticleHistory ,Err:" + err.Error()
+			return
+		}
+		for _, v := range listArticleHistory {
+			mapHistroyArticleId[v.ArticleId] = v.ArticleId
+		}
+	}
+	for k, v := range list {
+		list[k].UpdateTime = utils.TimeRemoveHms(mapUPdateTime[v.IndustrialManagementId])
+		if uid > 0 {
+			//如果文章没有阅读,而且,文章的发布时间晚于项目的上线时间,而且文章的发布时间晚于用户的注册时间,就进行标红处理
+			if mapHistroyArticleId[v.ArticleId] == 0 && user.CreatedTime.Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
+				list[k].IsRed = true
+			}
+		} else {
+			if utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
+				list[k].IsRed = true
+			}
+			list[k].IsFollow = false
+		}
+		//标的列表
+		industrialSubjectList, err := models.GetIndustrialSubjectAll(v.IndustrialManagementId)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+			return
+		}
+		list[k].IndustrialSubjectList = industrialSubjectList
+	}
+	//记录用户搜索的筛选条件
+	if orderColumnNew != "" {
+		//item := new(models.CygxReportIndustrialSeaarchHistory)
+		//item.UserId = user.UserId
+		//item.Mobile = user.Mobile
+		//item.CompanyId = user.CompanyId
+		//item.CompanyName = user.CompanyName
+		//item.CreateTime = time.Now()
+		//item.IsDeepLabel = isDeepLabel
+		//item.IsNewLabel = isNewLabel
+		//item.ChartPermissionId = ChartPermissionId
+		//if orderColumnNew == "NewTime" {
+		//	item.OrderColumn = "0"
+		//} else {
+		//	item.OrderColumn = "1"
+		//}
+		//go models.AddCygxReportIndustrialSeaarchHistory(item)
+	}
+	resp.List = list
+	resp.Paging = page
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// @Title 根据行业分类获取文章列表
+// @Description根据行业分类获取文章列表接口
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Param   CategoryId   query   int  true       "分类ID"
+// @Success 200 {object} models.TacticsListResp
+// @router /articleList/byCategoryId [get]
+func (this *MobileReportController) List() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	user := this.User
+	if user == nil {
+		br.Msg = "请重新登录"
+		br.Ret = 408
+		return
+	}
+	//uid := user.UserId
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	categoryId, _ := this.GetInt("CategoryId")
+
+	var startSize int
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = paging.StartIndex(currentIndex, pageSize)
+	var condition string
+	var pars []interface{}
+	var total int
+	resp := new(models.TacticsListResp)
+	page := paging.GetPaging(currentIndex, pageSize, total)
+
+	//获取该产业下所对应的行业图片
+	detail, errCategory := models.GetdetailByCategoryIdOne(categoryId)
+	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
+	}
+
+	//对应分类的所图片
+	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
+	}
+	condition += ` AND category_id_two=? `
+	pars = append(pars, categoryId)
+
+	total, err = models.GetHomeCount(condition, pars)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.Msg = "获取帖子总数失败,Err:" + err.Error()
+		return
+	}
+
+	page = paging.GetPaging(currentIndex, pageSize, total)
+	list, err := models.GetHomeList(condition, pars, startSize, pageSize)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.Msg = "获取帖子数据失败,Err:" + err.Error()
+		return
+	}
+
+	for k, v := range list {
+		list[k].ImgUrlPc = mapCategoryUrl[v.CategoryId]
+	}
+	if categoryId > 0 {
+		detail, errCategory := models.GetdetailByCategoryId(categoryId)
+		if errCategory != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取信息失败,Err:" + errCategory.Error() + "categoryID 不存在:" + strconv.Itoa(categoryId)
+			return
+		}
+		resp.MatchTypeName = detail.MatchTypeName
+	}
+	lenList := len(list)
+	for i := 0; i < lenList; i++ {
+		item := list[i]
+		list[i].Body = ""
+		list[i].Abstract, _ = services.GetReportContentTextSub(item.Abstract)
+		list[i].Annotation, _ = services.GetReportContentTextSub(item.Annotation)
+		//行业比较研究、资金流向,显示报告的摘要
+		if resp.MatchTypeName == "行业比较研究" || resp.MatchTypeName == "资金流向" {
+			list[i].Annotation = list[i].Abstract
+		}
+	}
+	resp.CategoryImgUrlPc = mapChartPermission[detail.ChartPermissionName]
+	resp.List = list
+	resp.Paging = page
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 3 - 4
models/article.go

@@ -106,10 +106,9 @@ type ArticleCollectionResp struct {
 	DepartmentId           int    `description:"作者Id"`
 	NickName               string `description:"作者昵称"`
 	IsCollect              bool   `description:"本人是否收藏"`
-
-	Pv         int `description:"PV"`
-	CollectNum int `description:"收藏人数"`
-	Source     int `description:"来源 1:弘则资源包(报告)、2:研选主题(报告)"`
+	Pv                     int    `description:"PV"`
+	CollectNum             int    `description:"收藏人数"`
+	Source                 int    `description:"来源 1:弘则资源包(报告)、2:研选主题(报告)"`
 }
 
 //列表

+ 41 - 0
models/article_history_record.go

@@ -0,0 +1,41 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_clpt/utils"
+)
+
+type CygxArticleHistoryResp struct {
+	Pv        int `description:"阅读PV"`
+	ArticleId int `description:"文章id"`
+	Num       int `description:"数量"`
+}
+
+//获取用户阅读记录
+func GetUserToArticleCount(uid, articleId int) (count int, err error) {
+	sqlCount := `SELECT COUNT(1) AS count FROM cygx_article_history_record WHERE user_id=? AND article_id=? `
+	o := orm.NewOrm()
+	err = o.Raw(sqlCount, uid, articleId).QueryRow(&count)
+	return
+}
+
+//获取用户阅读记录
+func GetUserToArticleHistory(uid int, articleIdArr []int) (items []*CygxArticleHistoryResp, err error) {
+	arrLen := len(articleIdArr)
+	if arrLen == 0 {
+		return
+	}
+	sql := `SELECT
+			article_id 
+		FROM
+			cygx_article_history_record 
+		WHERE
+			1 = 1 
+		AND user_id = ?
+			AND article_id IN (` + utils.GetOrmInReplace(len(articleIdArr)) + `)   
+		GROUP BY
+			article_id `
+	o := orm.NewOrm()
+	_, err = o.Raw(sql, uid, articleIdArr).QueryRows(&items)
+	return
+}

+ 13 - 0
models/home.go

@@ -82,3 +82,16 @@ func GetHomeList(condition string, pars []interface{}, startSize, pageSize int)
 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
 	return
 }
+
+func GetReportTacticsList(condition string, pars []interface{}, userId, startSize, pageSize int) (items []*HomeArticle, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT * 
+                 FROM cygx_article AS a
+                WHERE a.publish_status=1 `
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` ORDER BY publish_date DESC LIMIT ?,? `
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	return
+}

+ 125 - 0
models/industrial_management.go

@@ -1,5 +1,11 @@
 package models
 
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_clpt/utils"
+	"strconv"
+)
+
 type IndustrialManagementRep struct {
 	IndustryName           string `description:"产业名称"`
 	IndustrialManagementId int    `description:"产业id"`
@@ -38,3 +44,122 @@ type IndustrialManagementIdName struct {
 	SubjectName  string `description:"标的名称"`
 	IsReport     string `description:"1观点,0纪要"`
 }
+
+type IndustrialSubject struct {
+	IndustrialSubjectId    int    `orm:"column(industrial_subject_id);pk" description:"标的id"`
+	IndustrialManagementId int    `description:"产业id"`
+	SubjectName            string `description:"标的名称"`
+	IndustryName           string `description:"产业名称"`
+}
+
+type IndustrialManagementArticle struct {
+	IndustrialManagementId int    `description:"产业Id"`
+	IndustryName           string `description:"产业名称"`
+	ArticleId              int    `description:"文章ID"`
+	PublishDate            string `description:"发布时间"`
+}
+
+//产业列表
+func GetIndustrialManagementAllCount(condition string) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			COUNT(*) as count 
+		FROM
+			(SELECT
+			COUNT(*) 
+		FROM
+			cygx_industrial_management AS man
+			INNER JOIN cygx_report_mapping AS re ON re.chart_permission_id = man.chart_permission_id
+			INNER JOIN cygx_industrial_article_group_management AS man_g ON man_g.industrial_management_id = man.industrial_management_id
+			INNER JOIN cygx_article AS art ON art.article_id = man_g.article_id 
+		WHERE
+			1 = 1 
+			AND re.report_type = 2 
+			AND art.is_report = 1 
+			AND art.is_class = 1 ` + condition + ` GROUP BY man.industrial_management_id) AS num `
+	err = o.Raw(sql).QueryRow(&count)
+	return
+}
+
+//获取产业下阅读数量第三的产业详情
+func GetIndustrialManagementHot3(chartPermissionId int) (item *IndustrialManagementRep, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_industrial_management WHERE chart_permission_id = ? ORDER BY article_read_num DESC LIMIT 2,1`
+	err = o.Raw(sql, chartPermissionId).QueryRow(&item)
+	return
+}
+
+//产业列表
+func GetIndustrialManagementAll(uid int, condition, orderSrt string, startSize, pageSize int) (items []*IndustrialManagement, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			man.*,
+            MAX( art.publish_date ) AS update_time ,
+		    (SELECT COUNT( 1 )  FROM cygx_industry_fllow AS f WHERE f.user_id = ` + strconv.Itoa(uid) + ` AND f.industrial_management_id = man.industrial_management_id AND f.type = 1) AS is_follow
+			FROM
+			cygx_industrial_management AS man
+			INNER JOIN cygx_report_mapping AS re ON re.chart_permission_id = man.chart_permission_id
+			INNER JOIN cygx_industrial_article_group_management AS man_g ON man_g.industrial_management_id = man.industrial_management_id
+			INNER JOIN cygx_article AS art ON art.article_id = man_g.article_id 
+			WHERE 1= 1
+			AND re.report_type = 2 
+			AND art.is_report = 1
+			AND art.is_class = 1 ` + condition + `
+			GROUP BY
+			man.industry_name 
+			ORDER BY ` + orderSrt + ` LIMIT ?,?`
+	_, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+//标的列表
+func GetIndustrialSubjectAll(IndustrialManagementId int) (items []*IndustrialSubject, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_industrial_subject WHERE industrial_management_id = ? `
+	_, err = o.Raw(sql, IndustrialManagementId).QueryRows(&items)
+	return
+}
+
+//获取该产业下最新的文章详情
+func GetIndustrialNewArticleDetail(industrialManagementId int) (item *ArticleDetail, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+	* 
+FROM
+	cygx_article 
+WHERE
+	article_id IN ( SELECT article_id FROM cygx_industrial_article_group_management WHERE industrial_management_id = ? )
+ORDER BY
+	is_report DESC,
+	publish_date DESC 
+	LIMIT 0,1`
+	err = o.Raw(sql, industrialManagementId).QueryRow(&item)
+	return
+}
+
+//获取该产业下最新的文章详情
+func GetNewArticleDetailByIndustrialIds(industrialIdArr []int) (items []*IndustrialManagementArticle, err error) {
+	arrLen := len(industrialIdArr)
+	if arrLen == 0 {
+		return
+	}
+	o := orm.NewOrm()
+	sql := `SELECT
+			mg.industrial_management_id,
+			MAX( a.article_id ) AS article_id,
+			a.title,
+			MAX( a.publish_date ) AS publish_date 
+		FROM
+			cygx_industrial_article_group_management AS mg
+			INNER JOIN cygx_article AS a ON mg.article_id = a.article_id 
+		WHERE
+			1 = 1 
+			AND a.article_id < ?
+			AND a.is_report = 1
+			AND a.is_class = 1
+			AND mg.industrial_management_id IN(` + utils.GetOrmInReplace(len(industrialIdArr)) + `)   
+		GROUP BY
+			mg.industrial_management_id `
+	_, err = o.Raw(sql, utils.SummaryArticleId, industrialIdArr).QueryRows(&items)
+	return
+}

+ 29 - 0
models/report.go

@@ -0,0 +1,29 @@
+package models
+
+import "github.com/rdlucklib/rdluck_tools/paging"
+
+type IndustrialManagementList struct {
+	Paging *paging.PagingItem
+	List   []*IndustrialManagement
+}
+
+type IndustrialManagement struct {
+	IndustrialManagementId int                  `orm:"column(industrial_management_id);pk" description:"产业id"`
+	IndustryName           string               `description:"产业名称"`
+	UpdateTime             string               `description:"更新时间"`
+	IsRed                  bool                 `description:"是否标记红点"`
+	IsHot                  bool                 `description:"是否是热门"`
+	IsFollow               bool                 `description:"是否关注"`
+	IsNew                  bool                 `description:"是否展示 NEW 标签"`
+	IsShowRoadshow         bool                 `description:"是否展示 微路演 标签"`
+	ArticleReadNum         int                  `description:"文章阅读数量"`
+	ArticleId              int                  `description:"文章id"`
+	IndustrialSubjectList  []*IndustrialSubject `description:"标的列表"`
+}
+
+type TacticsListResp struct {
+	Paging           *paging.PagingItem
+	MatchTypeName    string `description:"匹配类型"`
+	CategoryImgUrlPc string `description:"图片"`
+	List             []*HomeArticle
+}

+ 9 - 7
models/report_mapping.go

@@ -22,12 +22,13 @@ type ReportMappingHome struct {
 }
 
 type TradeReportMapping struct {
-	CategoryId      int    `description:"分类ID"`
-	SubCategoryName string `description:"主题名称"`
-	MatchTypeName   string `description:"匹配类型"`
-	IsRed           bool   `description:"是否标红"`
-	UpdateTime      string `description:"更新时间"`
-	Readnum         int    `description:"阅读数量"`
+	CategoryId    int            `description:"分类ID"`
+	MatchTypeName string         `description:"匹配类型"`
+	IsRed         bool           `description:"是否标红"`
+	IsFollow      bool           `description:"是否关注"`
+	UpdateTime    string         `description:"更新时间"`
+	Readnum       int            `description:"阅读数量"`
+	ListArticle   []*HomeArticle `description:"文章列表"`
 }
 
 type ReportMappingResp struct {
@@ -51,9 +52,10 @@ func GetReportMappingStrategyAll() (items []*ReportMapping, err error) {
 }
 
 //获取策略下面的所有分类
-func GetReportMappingStrategyHomeAll() (items []*ReportMappingHome, err error) {
+func GetReportMappingStrategyHomeAll() (items []*TradeReportMapping, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT
+MAX( art.publish_date ) AS update_time,
 	re.category_id,re.sub_category_name,re.match_type_name
 FROM
 	cygx_report_mapping AS re

+ 36 - 0
routers/commentsRouter.go

@@ -70,6 +70,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:ChartPermissionController"] = append(beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:ChartPermissionController"],
+        beego.ControllerComments{
+            Method: "ListByReport",
+            Router: `/listByReport`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:MobileHomeController"] = append(beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:MobileHomeController"],
         beego.ControllerComments{
             Method: "List",
@@ -79,6 +88,33 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:MobileReportController"] = append(beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:MobileReportController"],
+        beego.ControllerComments{
+            Method: "List",
+            Router: `/articleList/byCategoryId`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:MobileReportController"] = append(beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:MobileReportController"],
+        beego.ControllerComments{
+            Method: "IndustryList",
+            Router: `/industryList`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:MobileReportController"] = append(beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:MobileReportController"],
+        beego.ControllerComments{
+            Method: "TradeList",
+            Router: `/tradeList`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:MobileSearchController"] = append(beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:MobileSearchController"],
         beego.ControllerComments{
             Method: "BrowseHistoryList",

+ 7 - 0
routers/router.go

@@ -66,6 +66,13 @@ func init() {
 				&controllers.BaseSearchController{},
 			),
 		),
+		web.NSNamespace("/report",
+			web.NSInclude(
+				&controllers.ReportController{},
+				&controllers.ReportCommonController{},
+				&controllers.MobileReportController{},
+			),
+		),
 	)
 	web.AddNamespace(ns)
 }

+ 3 - 3
services/article.go

@@ -42,17 +42,17 @@ func GetReportContentTextSubByarticle(content, abstract string, articleId int) (
 			contentSub = docabstract
 			return
 		} else {
-			contentSub, err = GetReportContentTextSubNew(content)
+			contentSub, err = GetReportContentTextSub(content)
 		}
 	} else {
-		contentSub, err = GetReportContentTextSubNew(content)
+		contentSub, err = GetReportContentTextSub(content)
 	}
 
 	return
 
 }
 
-func GetReportContentTextSubNew(content string) (contentSub string, err error) {
+func GetReportContentTextSub(content string) (contentSub string, err error) {
 	content = html.UnescapeString(content)
 	doc, errdoc := goquery.NewDocumentFromReader(strings.NewReader(content))
 	if errdoc != nil {