Browse Source

研选模块

xingzai 2 years ago
parent
commit
27830983e9

+ 50 - 0
controllers/research.go

@@ -154,3 +154,53 @@ func (this *MobileResearchController) ArticleNewList() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// @Title KOL榜列表
+// @Description KOL榜列表接口
+// @Success 200 {object} models.DepartmentListResp
+// @router /kolList [get]
+func (this *MobileResearchController) 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
+	}
+	list, err := models.GetDepartmentList(user.UserId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+		return
+	}
+	listIndustrial, err := models.GetIndustrialDepartmentList()
+	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].IsFollow = 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
+}

+ 32 - 1
models/article_department.go

@@ -20,6 +20,12 @@ type DepartmentResp struct {
 	NickName     string `description:"昵称"`
 	ImgUrl       string `description:"头像链接"`
 	IsFollow     bool   `description:"是否关注"`
+	FllowNum     int    `description:"关注数量"`
+	List         []*IndustrialDepartmentListResp
+}
+
+type DepartmentListResp struct {
+	List []*DepartmentResp
 }
 
 type CygxArticleDepartmentId struct {
@@ -33,7 +39,7 @@ func GetArticleDepartmentDateilById(departmentId int) (item *DepartmentResp, err
 	return
 }
 
-//数量
+// 数量
 func GetArticleDepartmentCount(condition string) (count int, err error) {
 	o := orm.NewOrm()
 	sql := ` SELECT COUNT(*) count
@@ -54,3 +60,28 @@ func GetArticleDepartmentCount(condition string) (count int, err error) {
 type IndustrialSubjectList struct {
 	SubjectName string `description:"标的名称"`
 }
+
+// 作者列表
+func GetDepartmentList(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 =?  AND f.type= 1  ) AS fllow_num,
+			( SELECT count( 1 ) FROM cygx_article_department_follow  AS f INNER JOIN wx_user AS u ON u.user_id = f.user_id  WHERE f.department_id = d.department_id AND f.type= 1 ) +( SELECT count( 1 ) FROM cygx_article_collect AS ac INNER JOIN wx_user AS u ON u.user_id = ac.user_id  WHERE ac.article_id IN (SELECT article_id FROM cygx_article WHERE department_id = d.department_id ) 	AND DATE_SUB( CURDATE(), INTERVAL 30 DAY ) <= date( ac.create_time )  ) 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.article_type_id > 0 
+			AND publish_status = 1 
+		GROUP BY
+				d.department_id
+		ORDER BY
+			sum_num DESC
+			LIMIT 15`
+	_, err = o.Raw(sql, userId).QueryRows(&items)
+	return
+}

+ 31 - 0
models/industrial_article_group_management.go

@@ -54,3 +54,34 @@ func GetIndustrialArticleGroupManagementList(condition string, pars []interface{
 	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&list)
 	return
 }
+
+type IndustrialDepartmentListResp struct {
+	IndustrialManagementId int    `description:"产业Id"`
+	IndustryName           string `description:"产业名称"`
+	DepartmentId           int    `description:"作者Id"`
+	List                   []*IndustrialDepartmentListResp
+}
+
+// 作者文章所关联的产业列表
+func GetIndustrialDepartmentList() (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.article_type_id > 0
+			AND publish_status = 1 
+		GROUP BY
+			a.article_id 
+		ORDER BY
+			a.publish_date DESC`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 9 - 0
routers/commentsRouter.go

@@ -403,6 +403,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:MobileResearchController"] = append(beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:MobileResearchController"],
+        beego.ControllerComments{
+            Method: "KolList",
+            Router: `/kolList`,
+            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",