Browse Source

产业报告分类关联作者列表接口

xingzai 3 years ago
parent
commit
905c0a1ee3
3 changed files with 159 additions and 1 deletions
  1. 65 0
      controllers/report.go
  2. 92 0
      models/article_department.go
  3. 2 1
      models/industrial_management.go

+ 65 - 0
controllers/report.go

@@ -93,6 +93,8 @@ func (this *ReportController) IndustryList() {
 		return
 	}
 	uid := user.UserId
+
+	fmt.Println(uid)
 	ChartPermissionId, _ := this.GetInt("ChartPermissionId")
 	orderColumn := this.GetString("OrderColumn")
 	isNewLabel := this.GetString("IsNewLabel")
@@ -587,3 +589,66 @@ func (this *ReportController) Fllow() {
 	br.Success = true
 	br.Data = resp
 }
+
+// @Title 产业报告分类关联作者列表接口
+// @Description 获取产业报告分类关联作者列表接口
+// @Param   ChartPermissionId   query   int  true       "分类ID"
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Success 200 {object} models.CygxArticleDepartmentList
+// @router /industryListByDepartment [get]
+func (this *ReportController) IndustryListByDepartment() {
+	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
+
+	fmt.Println(uid)
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	chartPermissionId, _ := this.GetInt("ChartPermissionId")
+	var startSize int
+	var condition string
+
+	condition = ` AND m.chart_permission_id =` + strconv.Itoa(chartPermissionId)
+
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = paging.StartIndex(currentIndex, pageSize)
+	total, err := models.GetArticleDepartmentCount(condition)
+	page := paging.GetPaging(currentIndex, pageSize, total)
+	//获取作者信息,并排序
+	list, err := models.GetCygxArticleDepartmentList(startSize, pageSize, condition)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+		return
+	}
+	for k, v := range list {
+		list[k].List, err = models.GetIndustrialSubjectByDepartment(v.DepartmentId)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+			return
+		}
+	}
+	resp := new(models.CygxArticleDepartmentList)
+	resp.List = list
+	resp.Paging = page
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 92 - 0
models/article_department.go

@@ -0,0 +1,92 @@
+package models
+
+import (
+	"rdluck_tools/orm"
+	"rdluck_tools/paging"
+	"time"
+)
+
+type CygxArticleDepartment struct {
+	DepartmentId int       `orm:"column(department_id);pk;主键ID"`
+	CreateTime   time.Time `description:"创建时间"`
+	NickName     string    `description:"昵称"`
+	Remark       string    `description:"备注"`
+	Remarks      string    `description:"备注辅助字段"`
+	Content      string    `description:"初始内容"`
+}
+
+type CygxArticleDepartmentRep struct {
+	DepartmentId int    `description:"主键ID"`
+	CreateTime   string `description:"创建时间"`
+	NickName     string `description:"昵称"`
+	IsFollow     int    `description:"是否关注 1是 ,0 否"`
+	List         []*IndustrialManagementIdInt
+}
+
+type CygxArticleDepartmentList struct {
+	Paging   *paging.PagingItem `description:"分页数据"`
+	List     []*CygxArticleDepartmentRep
+	ListnNew []*IndustrialManagementIdInt
+}
+
+//详情
+func GetArticleDepartmentDateil(nickName, remarks string) (item *CygxArticleDepartmentRep, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_article_department WHERE nick_name = ? AND  remarks = ? LIMIT 1 `
+	err = o.Raw(sql, nickName, remarks).QueryRow(&item)
+	return
+}
+
+//数量
+func GetArticleDepartmentCount(condition string) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT COUNT(1)  FROM cygx_article_department AS d
+		INNER JOIN cygx_article AS a ON a.department_id = d.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  `
+	if condition != "" {
+		sql += condition
+	}
+
+	err = o.Raw(sql).QueryRow(&count)
+	return
+}
+
+//列表
+func GetCygxArticleDepartmentList(startSize, pageSize int, condition string) (items []*CygxArticleDepartmentRep, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT d.*,
+		( SELECT COUNT( 1 ) FROM cygx_article AS a INNER JOIN cygx_article_history_record as h ON h.article_id = a.article_id WHERE  a.department_id = d.department_id  ) AS art_num 
+		FROM
+		cygx_article_department AS d
+		INNER JOIN cygx_article AS a ON a.department_id = d.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 `
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` GROUP BY
+		d.department_id
+		ORDER BY  art_num DESC  LIMIT ?,?`
+	_, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+//标的列表
+func GetIndustrialSubjectByDepartment(departmentId int) (items []*IndustrialManagementIdInt, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+m.*,
+	( SELECT publish_date FROM cygx_article AS a INNER JOIN cygx_industrial_article_group_management as mg ON mg.article_id = a.article_id  ORDER BY publish_date DESC LIMIT 1  ) AS art_time
+FROM
+	cygx_article_department AS d
+	INNER JOIN cygx_article AS a ON a.department_id = d.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 	d.department_id = ?
+	ORDER BY art_time DESC
+	LIMIT 4 `
+	_, err = o.Raw(sql, departmentId).QueryRows(&items)
+	return
+}

+ 2 - 1
models/industrial_management.go

@@ -56,7 +56,8 @@ func GetIndustrialManagementAll(uid int, condition, orderSrt string, startSize,
 	sql := `SELECT
 			man.*,
             MAX( art.publish_date ) AS update_time ,(
-			SELECT COUNT( 1 ) FROM cygx_article_history_record AS rec WHERE rec.user_id = ` + strconv.Itoa(uid) + ` AND rec.article_id = art.article_id ) AS readnum 
+			SELECT COUNT( 1 ) FROM cygx_article_history_record AS rec WHERE rec.user_id = ` + strconv.Itoa(uid) + ` AND rec.article_id = art.article_id ) AS readnum ,
+		    (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