Browse Source

研选首页完成

xingzai 3 years ago
parent
commit
37e4fe9e71
4 changed files with 382 additions and 8 deletions
  1. 167 4
      controllers/research.go
  2. 196 3
      models/report.go
  3. 18 0
      routers/commentsRouter_controllers.go
  4. 1 1
      services/task.go

+ 167 - 4
controllers/research.go

@@ -2,6 +2,7 @@ package controllers
 
 import (
 	"hongze/hongze_cygx/models"
+	"strconv"
 )
 
 //研选
@@ -104,10 +105,11 @@ func (this *ResearchController) CollectionList() {
 	br.Data = resp
 }
 
-// @Title 主题热度列表
+// @Title 主题热度/近期更新,列表
 // @Description 主题热度列表接口
 // @Param   ChartPermissionId   query   int  true       "分类ID"
-// @Success 200 {object} models.ArticleCollectionLIstResp
+// @Param   ThemeType   query   int  true       "主题类型,1主题热度、2近期更新 默认1"
+// @Success 200 {object} models.IndustrialManagementHotListResp
 // @router /hotList [get]
 func (this *ResearchController) HotList() {
 	br := new(models.BaseResponse).Init()
@@ -122,23 +124,184 @@ func (this *ResearchController) HotList() {
 		return
 	}
 	chartPermissionId, _ := this.GetInt("ChartPermissionId")
+	themeType, _ := this.GetInt("ThemeType")
 	if chartPermissionId < 1 {
 		br.Msg = "请输入分类ID"
 		return
 	}
+	var condition string
+	if themeType != 2 {
+		themeType = 1
+		condition = `ORDER BY sum_num DESC LIMIT 15`
+	} else {
+		condition = `ORDER BY publish_date DESC LIMIT 30`
+	}
 	categoryinfo, err := models.GetChartPermissionById(chartPermissionId)
 	if err != nil {
 		br.Msg = "获取信息失败"
 		br.ErrMsg = "获取信息失败,Err:" + err.Error()
 		return
 	}
-	list, err := models.GetArticleCollectionList(categoryinfo.PermissionName)
+	list, err := models.GetThemeHeatList(categoryinfo.PermissionName, user.UserId, condition)
 	if err != nil {
 		br.Msg = "获取信息失败"
 		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
 		return
 	}
-	resp := new(models.ArticleCollectionLIstResp)
+	newMap := make(map[int]string)
+	listNew, err := models.GetIndustrialManagementNewList(categoryinfo.PermissionName)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取产业最新信息失败,Err:" + err.Error()
+		return
+	}
+	for _, v := range listNew {
+		newMap[v.IndustrialManagementId] = v.IndustryName
+	}
+	listSubjcet, err := models.GetThemeHeatSubjectList(categoryinfo.PermissionName)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取标的信息失败,Err:" + err.Error()
+		return
+	}
+	detailHot3, err := models.GetIndustrialManagementHot3(chartPermissionId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取信息失败,Err:" + err.Error()
+		return
+	}
+	for k, v := range list {
+		if newMap[v.IndustrialManagementId] != "" {
+			list[k].IsNew = true
+		}
+		if v.FllowNum > 0 {
+			list[k].IsFollw = true
+		}
+		for _, v2 := range listSubjcet {
+			if v2.IndustrialManagementId == v.IndustrialManagementId {
+				list[k].IndustrialSubjectList = append(list[k].IndustrialSubjectList, v2)
+			}
+		}
+		if v.ArticleReadNum >= detailHot3.ArticleReadNum {
+			list[k].IsHot = true
+		}
+	}
+	resp := new(models.IndustrialManagementHotListResp)
+	resp.List = list
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// @Title KOL榜列表
+// @Description KOL榜列表接口
+// @Param   ChartPermissionId   query   int  true       "分类ID"
+// @Success 200 {object} models.IndustrialManagementHotListResp
+// @router /kolList [get]
+func (this *ResearchController) KolList() {
+	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
+	}
+	chartPermissionId, _ := this.GetInt("ChartPermissionId")
+	if chartPermissionId < 1 {
+		br.Msg = "请输入分类ID"
+		return
+	}
+	categoryinfo, err := models.GetChartPermissionById(chartPermissionId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取信息失败,Err:" + err.Error()
+		return
+	}
+	list, err := models.GetDepartmentList(categoryinfo.PermissionName, user.UserId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+		return
+	}
+	listIndustrial, err := models.GetIndustrialDepartmentList(categoryinfo.PermissionName)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+		return
+	}
+	departmentMap := make(map[string]string)
+	for k, v := range list {
+		if v.FllowNum > 0 {
+			list[k].IsFollw = true
+		}
+		for _, v2 := range listIndustrial {
+			if v2.DepartmentId == v.DepartmentId {
+				if departmentMap["D"+strconv.Itoa(v2.DepartmentId)+"In"+strconv.Itoa(v2.IndustrialManagementId)] == "" && len(list[k].List) < 4 {
+					list[k].List = append(list[k].List, v2)
+					departmentMap["D"+strconv.Itoa(v2.DepartmentId)+"In"+strconv.Itoa(v2.IndustrialManagementId)] = v.NickName
+				}
+			}
+		}
+	}
+	resp := new(models.DepartmentListResp)
+	resp.List = list
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// @Title 主题详情
+// @Description 主题详情接口
+// @Param   IndustrialManagementId   query   int  true       "分类ID"
+// @Success 200 {object} models.IndustrialManagementNewList
+// @router /theme/detail [get]
+func (this *ResearchController) ThemeDetail() {
+	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
+	}
+	chartPermissionId, _ := this.GetInt("IndustrialManagementId")
+	if chartPermissionId < 1 {
+		br.Msg = "请输入分类ID"
+		return
+	}
+	categoryinfo, err := models.GetChartPermissionById(chartPermissionId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取信息失败,Err:" + err.Error()
+		return
+	}
+	list, err := models.GetIndustrialManagementNewList(categoryinfo.PermissionName)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+		return
+	}
+	detailHot3, err := models.GetIndustrialManagementHot3(chartPermissionId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取信息失败,Err:" + err.Error()
+		return
+	}
+	for k, v := range list {
+		if v.ArticleReadNum >= detailHot3.ArticleReadNum {
+			list[k].IsHot = true
+		}
+	}
+	resp := new(models.IndustrialManagementNewList)
 	resp.List = list
 	br.Ret = 200
 	br.Success = true

+ 196 - 3
models/report.go

@@ -305,9 +305,7 @@ func GetArticleIdsBySubId(subjectId string) (articleIds string, err error) {
 			WHERE subject_ids  LIKE '%` + subjectId + `%'`
 	err = o.Raw(sql).QueryRow(&articleIds)
 	return
-}
-
-//end
+} //end
 
 //用户收藏榜start
 type ArticleCollectionResp struct {
@@ -358,3 +356,198 @@ func GetArticleCollectionList(permissionName string) (items []*ArticleCollection
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 } //end
+
+//用户收藏榜start
+type IndustrialManagementHotResp struct {
+	IndustrialManagementId int                  `orm:"column(industrial_management_id);pk" description:"产业id"`
+	IndustryName           string               `description:"产业名称"`
+	IsFollw                bool                 `description:"是否关注"`
+	FllowNum               int                  `description:"关注数量"`
+	IsNew                  bool                 `description:"是否新标签"`
+	IsHot                  bool                 `description:"是否新标签"`
+	PublishDate            string               `description:"发布时间"`
+	ArticleReadNum         int                  `description:"文章阅读数量"`
+	IndustrialSubjectList  []*IndustrialSubject `description:"标的列表"`
+}
+
+type IndustrialManagementHotListResp struct {
+	List []*IndustrialManagementHotResp
+}
+
+//产业列表
+func GetThemeHeatList(permissionName string, userId int, condition string) (items []*IndustrialManagementHotResp, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			m.industry_name,
+			m.industrial_management_id,
+			m.article_read_num,
+            date_format(  MAX( a.publish_date ), '%Y-%m-%d' ) AS publish_date,	
+			( SELECT count( 1 ) FROM cygx_industry_fllow AS f  WHERE f.industrial_management_id = m.industrial_management_id  AND user_id =?   ) AS fllow_num,
+			( SELECT count( 1 ) FROM cygx_article_history_record_newpv AS h WHERE h.article_id IN  (SELECT article_id FROM cygx_industrial_article_group_management WHERE industrial_management_id = m.industrial_management_id )) + ( SELECT count( 1 ) FROM cygx_activity_meet_detail_log AS la  WHERE la.activity_id  IN  (SELECT activity_id FROM cygx_industrial_activity_group_management WHERE industrial_management_id = m.industrial_management_id  )) AS sum_num
+		FROM
+			cygx_industrial_management AS m
+			LEFT JOIN cygx_industrial_article_group_management AS mg ON mg.industrial_management_id = m.industrial_management_id
+			LEFT JOIN cygx_article AS a ON a.article_id = mg.article_id 
+			LEFT JOIN cygx_industrial_activity_group_management as ag ON ag.industrial_management_id = mg.industrial_management_id
+		WHERE
+			1 = 1 
+			AND a.is_report = 1 
+			AND a.category_name LIKE '%` + permissionName + `%' 
+			AND publish_status = 1 
+			GROUP BY m.industrial_management_id ` + condition
+	_, err = o.Raw(sql, userId).QueryRows(&items)
+	return
+}
+
+//标的列表
+func GetThemeHeatSubjectList(permissionName string) (items []*IndustrialSubject, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			m.subject_name,
+			m.industrial_management_id,
+			m.industrial_subject_id 
+		FROM
+			cygx_article AS a
+			INNER JOIN cygx_industrial_article_group_subject AS mg ON mg.article_id = a.article_id
+			INNER JOIN cygx_industrial_subject AS m ON m.industrial_subject_id = mg.industrial_subject_id 
+		WHERE
+			1 = 1 
+			AND a.is_report = 1 
+			AND a.category_name LIKE '%` + permissionName + `%' 
+			AND publish_status = 1 
+		GROUP BY
+			m.industrial_subject_id 
+		ORDER BY
+			publish_date DESC`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+} //end
+
+//Kol sratr
+type DepartmentResp struct {
+	DepartmentId int    `description:"作者Id"`
+	NickName     string `description:"作者昵称"`
+	ImgUrl       string `description:"图片链接"`
+	IsFollw      bool   `description:"是否关注"`
+	FllowNum     int    `description:"关注数量"`
+	List         []*IndustrialDepartmentListResp
+}
+
+type DepartmentListResp struct {
+	List []*DepartmentResp
+}
+type IndustrialDepartmentListResp struct {
+	IndustrialManagementId int    `description:"产业Id"`
+	IndustryName           string `description:"产业名称"`
+	DepartmentId           int    `description:"作者Id"`
+}
+
+//作者列表
+func GetDepartmentList(permissionName string, userId int) (items []*DepartmentResp, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			d.nick_name,
+			d.department_id,
+			d.img_url,
+			( SELECT count( 1 ) FROM cygx_article_department_follow AS f  WHERE f.department_id = d.department_id  AND user_id =?   ) AS fllow_num,
+			( SELECT count( 1 ) FROM cygx_article_department_follow AS f WHERE f.department_id = d.department_id ) +( SELECT count( 1 ) FROM cygx_article_collect AS ac WHERE ac.article_id = a.article_id ) AS sum_num
+		FROM
+		cygx_article_department AS d
+			INNER JOIN cygx_article AS a ON d.department_id = a.department_id
+		WHERE
+			1 = 1 
+			AND a.is_report = 1 
+			AND a.category_name LIKE '%` + permissionName + `%' 
+			AND publish_status = 1 
+		GROUP BY
+				d.department_id
+		ORDER BY
+			sum_num DESC
+			LIMIT 15`
+	_, err = o.Raw(sql, userId).QueryRows(&items)
+	return
+}
+
+//作者文章所关联的产业列表
+func GetIndustrialDepartmentList(permissionName string) (items []*IndustrialDepartmentListResp, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			m.industrial_management_id,
+			m.industry_name,
+			d.department_id 
+		FROM
+			cygx_article_department AS d
+			INNER JOIN cygx_article AS a ON d.department_id = a.department_id
+			INNER JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = a.article_id
+			INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = mg.industrial_management_id 
+		WHERE
+			1 = 1 
+			AND a.is_report = 1 
+			AND a.category_name LIKE '%` + permissionName + `%' 
+			AND publish_status = 1 
+		GROUP BY
+			a.article_id 
+		ORDER BY
+			a.publish_date DESC`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+//主题详情start
+type GetThemeDetailListResp struct {
+	ArticleId    int    `description:"文章id"`
+	Title        string `description:"标题"`
+	PublishDate  string `description:"发布时间"`
+	SubjectName  string `description:"标的名称"`
+	DepartmentId int    `description:"作者Id"`
+	NickName     string `description:"作者昵称"`
+	Pv           int    `description:"PV"`
+	CollectNum   int    `description:"收藏人数"`
+}
+
+//主题详情start
+type GetThemeDetailResp struct {
+	IndustrialManagementId int    `description:"产业Id"`
+	IndustryName           string `description:"产业名称"`
+	IsFollw                bool   `description:"是否关注"`
+	List                   []*GetThemeDetailListResp
+	ListSubject            []*IndustrialSubject `description:"标的列表"`
+}
+
+//列表
+func GetThemeDetail(permissionName string) (items []*GetThemeDetailListResp, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			a.article_id,
+			a.title,
+			date_format( a.publish_date, '%Y-%m-%d' ) AS publish_date,
+			m.industry_name,
+			m.industrial_management_id,
+			d.nick_name,
+			d.department_id,
+			s.industrial_subject_id,
+			s.subject_name,
+			( SELECT count( 1 ) FROM cygx_article_history_record_newpv AS h WHERE h.article_id = a.article_id ) AS pv,
+			( SELECT count( 1 ) FROM cygx_article_collect AS ac WHERE ac.article_id = a.article_id ) AS collect_num 
+		FROM
+			cygx_article AS a
+			INNER JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = a.article_id
+			INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = mg.industrial_management_id
+			INNER JOIN cygx_article_department AS d ON d.department_id = a.department_id 
+			LEFT  JOIN cygx_industrial_article_group_subject as  sg ON sg.article_id = a.article_id
+			LEFT JOIN cygx_industrial_subject as  s ON s.industrial_subject_id = sg.industrial_subject_id
+		WHERE
+			1 = 1 
+			AND a.is_report = 1 
+			AND a.category_name LIKE '%研选%' 
+-- 			AND 	m.industrial_management_id = 337
+			AND publish_status = 1 
+		GROUP BY
+		a.article_id
+		ORDER BY
+			publish_date DESC ,
+			s.industrial_subject_id DESC 
+-- 			LIMIT 15`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 18 - 0
routers/commentsRouter_controllers.go

@@ -493,6 +493,24 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ResearchController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ResearchController"],
+        beego.ControllerComments{
+            Method: "KolList",
+            Router: "/kolList",
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ResearchController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ResearchController"],
+        beego.ControllerComments{
+            Method: "ThemeDetail",
+            Router: "/theme/detail",
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ResearchController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ResearchController"],
         beego.ControllerComments{
             Method: "NewList",

+ 1 - 1
services/task.go

@@ -62,7 +62,7 @@ func Task() {
 	//GetAddpArticle() //同步日度点评数据
 	//SendEmailAllUserWithRAI()     //发送当前所有权益用户到沈大爷的邮箱
 	//SendEmailAllUserWithCompany() //发送这些公司下的用户到沈大爷的邮箱
-	task.StartTask()
+	//task.StartTask()
 	//StatisticalReport()//导出报表
 	fmt.Println("end")
 }