瀏覽代碼

产业分类 加分页查询

xingzai 3 年之前
父節點
當前提交
239523bf9d
共有 5 個文件被更改,包括 197 次插入61 次删除
  1. 36 1
      controllers/article.go
  2. 69 21
      controllers/report.go
  3. 15 0
      models/article.go
  4. 74 38
      models/industrial_management.go
  5. 3 1
      models/report.go

+ 36 - 1
controllers/article.go

@@ -56,7 +56,7 @@ func (this *ArticleController) Detail() {
 		br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
 		return
 	}
-
+	fmt.Println(user.CompanyId)
 	//`description:"1:有该行业权限,正常展示,2:无该行业权限,不存在权益客户下,3:无该品类权限,4:潜在客户,未提交过申请,5:潜在客户,已提交过申请"`
 	if user.CompanyId > 1 {
 		companyPermission, err := models.GetCompanyPermission(user.CompanyId)
@@ -76,6 +76,7 @@ func (this *ArticleController) Detail() {
 
 		detail.Body = html.UnescapeString(detail.Body)
 		detail.Abstract = html.UnescapeString(detail.Abstract)
+		fmt.Println(companyPermission)
 		if companyPermission == "" {
 			if applyCount > 0 {
 				hasPermission = 5
@@ -86,7 +87,41 @@ func (this *ArticleController) Detail() {
 			goto Loop
 		} else {
 			hasFree = 1
+			// 原有的权限校验 更改于 2021-05-18
+			//articlePermission, err := models.GetArticlePermission(detail.SubCategoryName)
+			//fmt.Println(articlePermission)
+			//fmt.Println(detail.SubCategoryName)
+			//if err != nil {
+			//	br.Msg = "获取信息失败"
+			//	br.ErrMsg = "获取报告权限失败,Err:" + err.Error() + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(articleId)
+			//	return
+			//}
+			//if articlePermission == nil {
+			//	br.Msg = "获取信息失败"
+			//	br.ErrMsg = "报告权限不存在,Err:" + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(articleId)
+			//	return
+			//}
+			//for _, p := range articlePermission {
+			//	if strings.Contains(companyPermission, p.PermissionName) {
+			//		hasPermission = 1
+			//		historyRecord := new(models.CygxArticleHistoryRecord)
+			//		historyRecord.UserId = uid
+			//		historyRecord.ArticleId = articleId
+			//		historyRecord.CreateTime = time.Now()
+			//		historyRecord.Mobile = user.Mobile
+			//		historyRecord.Email = user.Email
+			//		historyRecord.CompanyId = user.CompanyId
+			//		historyRecord.CompanyName = user.CompanyName
+			//		go models.AddCygxArticleHistoryRecord(historyRecord)
+			//		break
+			//	} else { //无该行业权限
+			//		hasPermission = 3
+			//	}
+			//}
+
 			articlePermission, err := models.GetArticlePermission(detail.SubCategoryName)
+			fmt.Println(articlePermission)
+			fmt.Println(detail.SubCategoryName)
 			if err != nil {
 				br.Msg = "获取信息失败"
 				br.ErrMsg = "获取报告权限失败,Err:" + err.Error() + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(articleId)

+ 69 - 21
controllers/report.go

@@ -68,6 +68,8 @@ func (this *ReportController) TradeList() {
 // @Description 获取产业报告分类列表接口
 // @Param   ChartPermissionId   query   int  true       "分类ID"
 // @Param   OrderColumn   query   int  true       "排序字段 ,NewTime最近更新 ,Recommend弘则推荐"
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
 // @Success 200 {object} models.IndustrialManagementList
 // @router /home/industryList [get]
 func (this *ReportController) IndustryList() {
@@ -82,42 +84,89 @@ func (this *ReportController) IndustryList() {
 		br.Ret = 408
 		return
 	}
-
 	uid := user.UserId
 	var orderSrt string
 	ChartPermissionId, _ := this.GetInt("ChartPermissionId")
 	orderColumn := this.GetString("OrderColumn")
-
-	if orderColumn == "" {
-		orderColumn = "NewTime"
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	var startSize int
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
 	}
-	if ChartPermissionId < 1 {
-		br.Msg = "请输入分类ID"
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = paging.StartIndex(currentIndex, pageSize)
+	resp := new(models.IndustrialManagementList)
+	var total int
+	var list []*models.IndustrialManagement
+	totalTopList, errTop := models.GetIndustrialManagemenCountTop(ChartPermissionId, uid)
+	totalTop := len(totalTopList)
+	if errTop != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取品种信息失败,Err:" + errTop.Error()
 		return
 	}
-	listTop, err := models.GetIndustrialManagementTopAll(ChartPermissionId, uid)
-	if err != nil {
+	totalNoTopList, errNoTop := models.GetIndustrialManagemenCountNoTop(ChartPermissionId, uid)
+	totalNoTop := len(totalNoTopList)
+	if errNoTop != nil {
 		br.Msg = "获取信息失败"
-		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+		br.ErrMsg = "获取品种信息失败,Err:" + errNoTop.Error()
 		return
 	}
-	fmt.Println(len(listTop))
-	for k, _ := range listTop {
-		listTop[k].IsTop = true
+	total = totalTop + totalNoTop
+	page := paging.GetPaging(currentIndex, pageSize, total)
+	if orderColumn == "" {
+		orderColumn = "NewTime"
+	}
+	if ChartPermissionId < 1 {
+		br.Msg = "请输入分类ID"
+		return
 	}
 	if orderColumn == "NewTime" {
 		orderSrt = "art.publish_date DESC"
 	} else {
 		orderSrt = "man.recommended_index DESC"
 	}
-
-	list, err := models.GetIndustrialManagementAll(ChartPermissionId, uid, orderSrt)
-	if err != nil {
-		br.Msg = "获取信息失败"
-		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
-		return
+	//全部都是置顶
+	if totalTop >= currentIndex*pageSize {
+		listTop, err := models.GetIndustrialManagementTopAll(ChartPermissionId, uid, startSize, pageSize)
+		for k, _ := range listTop {
+			listTop[k].IsTop = true
+		}
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+			return
+		}
+		list = listTop
+	} else if totalTop < (currentIndex-1)*pageSize { //全部都是不置顶
+		listNoTop, err := models.GetIndustrialManagementAll(ChartPermissionId, uid, orderSrt, startSize-totalTop+1, pageSize)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+			return
+		}
+		list = listNoTop
+	} else if totalTop > (currentIndex-1)*pageSize && totalTop < currentIndex*pageSize { //部分置顶,部分不置顶
+		listTop, err := models.GetIndustrialManagementTopAll(ChartPermissionId, uid, startSize, pageSize)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+			return
+		}
+		for k, _ := range listTop {
+			listTop[k].IsTop = true
+		}
+		listNoTop, err := models.GetIndustrialManagementAll(ChartPermissionId, uid, orderSrt, 0, pageSize-len(listTop))
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+			return
+		}
+		list = append(listTop, listNoTop...)
 	}
-	list = append(listTop, list...)
 	for k, v := range list {
 		var analystStr string
 		analystList, err := models.GetIndustrialAnalystAll(v.IndustrialManagementId)
@@ -147,7 +196,6 @@ func (this *ReportController) IndustryList() {
 			br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
 			return
 		}
-		fmt.Println(newArtinfo.PublishDate)
 		list[k].UpdateTime = utils.TimeRemoveHms(newArtinfo.PublishDate)
 		recordCount, err := models.GetUserToArticleCount(uid, newArtinfo.ArticleId)
 		if err != nil && err.Error() != utils.ErrNoRow() {
@@ -159,8 +207,8 @@ func (this *ReportController) IndustryList() {
 			list[k].IsRed = true
 		}
 	}
-	resp := new(models.IndustrialManagementList)
 	resp.List = list
+	resp.Paging = page
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"

+ 15 - 0
models/article.go

@@ -126,6 +126,21 @@ func GetArticlePermission(categoryName string) (item []*ChartPermission, err err
 	return
 }
 
+//func GetArticlePermission(companyId int) (item []*ChartPermission, err error) {
+//	o := orm.NewOrm()
+//	sql := `SELECT b.chart_permission_name
+//			FROM company_report_permission AS a
+//			INNER JOIN chart_permission AS b ON a.chart_permission_id=b.chart_permission_id
+//			INNER JOIN company_product AS c ON a.company_id=c.company_id AND a.product_id=c.product_id
+//			WHERE  a.company_id= ?
+//			AND a.product_id=2
+//			AND c.is_suspend=0
+//            AND b.is_report=1
+//			AND c.status IN('正式','试用','永续')`
+//	_, err = o.Raw(sql, companyId).QueryRows(&item)
+//	return
+//}
+
 type ArticleDetailResp struct {
 	Detail        *ArticleDetail
 	HasPermission int `description:"1:有该行业权限,正常展示,2:无该行业权限,不存在权益客户下,3:无该品类权限,已提交过申请,4:无该行业权限,未提交过申请,5:潜在客户,未提交过申请,6:潜在客户,已提交过申请"`

+ 74 - 38
models/industrial_management.go

@@ -12,53 +12,89 @@ type IndustrialManagementRep struct {
 	LayoutTime        string `description:"布局时间"`
 }
 
+type IndustrialManagementCount struct {
+	IndustrialManagementId int `orm:"column(industrial_management_id);pk" description:"产业id"`
+}
+
+//获取产业置顶数量分类列表
+func GetIndustrialManagemenCountTop(ChartPermissionId, uid int) (items []*IndustrialManagementCount, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			man_g.industrial_management_id 
+			FROM
+			cygx_industrial_article_group_management AS man_g
+			WHERE
+			man_g.industrial_management_id IN ( SELECT industrial_management_id FROM cygx_industrial_management WHERE chart_permission_id = ? ) 
+			AND man_g.industrial_management_id IN ( SELECT industrial_management_id FROM cygx_industry_top WHERE user_id = ? ) 
+			GROUP BY
+			man_g.industrial_management_id`
+	_, err = o.Raw(sql, ChartPermissionId, uid).QueryRows(&items)
+	return
+}
+
+//获取产业不置顶数量
+func GetIndustrialManagemenCountNoTop(ChartPermissionId, uid int) (items []*IndustrialManagementCount, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			man_g.industrial_management_id 
+			FROM
+			cygx_industrial_article_group_management AS man_g
+			WHERE
+			man_g.industrial_management_id IN ( SELECT industrial_management_id FROM cygx_industrial_management WHERE chart_permission_id = ? ) 
+			AND man_g.industrial_management_id NOT IN ( SELECT industrial_management_id FROM cygx_industry_top WHERE user_id = ? ) 
+			GROUP BY
+			man_g.industrial_management_id`
+	_, err = o.Raw(sql, ChartPermissionId, uid).QueryRows(&items)
+	return
+}
+
 //产业列表 不置顶
-func GetIndustrialManagementAll(ChartPermissionId, uid int, orderSrt string) (items []*IndustrialManagement, err error) {
+func GetIndustrialManagementAll(ChartPermissionId, uid int, orderSrt string, startSize, pageSize int) (items []*IndustrialManagement, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT
-	man.*,
-	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 
-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
-	man.chart_permission_id = ? 
-	AND man.industrial_management_id NOT IN ( SELECT industrial_management_id FROM cygx_industry_top WHERE user_id = ` + strconv.Itoa(uid) + ` ) 
-	AND re.report_type = 2 
-	AND art.is_report = 1
-	AND art.is_class = 1
-GROUP BY
-	man.industry_name 
-ORDER BY ` + orderSrt
-	_, err = o.Raw(sql, ChartPermissionId).QueryRows(&items)
+			man.*,
+			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 
+			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
+			man.chart_permission_id = ? 
+			AND man.industrial_management_id NOT IN ( SELECT industrial_management_id FROM cygx_industry_top WHERE user_id = ` + strconv.Itoa(uid) + ` ) 
+			AND re.report_type = 2 
+			AND art.is_report = 1
+			AND art.is_class = 1
+			GROUP BY
+			man.industry_name 
+			ORDER BY ` + orderSrt + ` LIMIT ?,?`
+	_, err = o.Raw(sql, ChartPermissionId, startSize, pageSize).QueryRows(&items)
 	return
 }
 
 //产业列表 -置顶
-func GetIndustrialManagementTopAll(ChartPermissionId, uid int) (items []*IndustrialManagement, err error) {
+func GetIndustrialManagementTopAll(ChartPermissionId, uid, startSize, pageSize int) (items []*IndustrialManagement, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT
-	man.*
-FROM
-	cygx_industrial_management AS man
-     INNER  JOIN cygx_industry_top as top ON man.industrial_management_id = top.industrial_management_id 
-	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
-	man.chart_permission_id = ` + strconv.Itoa(ChartPermissionId) + `
-	AND top.user_id = ` + strconv.Itoa(uid) + `
-	AND re.report_type = 2 
-	AND art.is_report = 1
-	AND art.is_class = 1
-GROUP BY
-	man.industry_name 
-ORDER BY
-	top.create_time DESC`
-	_, err = o.Raw(sql).QueryRows(&items)
+			man.*
+			FROM
+			cygx_industrial_management AS man
+            INNER  JOIN cygx_industry_top as top ON man.industrial_management_id = top.industrial_management_id 
+			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
+			man.chart_permission_id = ` + strconv.Itoa(ChartPermissionId) + `
+			AND top.user_id = ` + strconv.Itoa(uid) + `
+			AND re.report_type = 2 
+			AND art.is_report = 1
+			AND art.is_class = 1
+			GROUP BY
+			man.industry_name 
+			ORDER BY
+			top.create_time DESC 	LIMIT ?,?`
+	_, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
 	return
 }
 

+ 3 - 1
models/report.go

@@ -2,12 +2,14 @@ package models
 
 import (
 	"rdluck_tools/orm"
+	"rdluck_tools/paging"
 	"strconv"
 	//"rdluck_tools/paging"
 )
 
 type IndustrialManagementList struct {
-	List []*IndustrialManagement
+	Paging *paging.PagingItem
+	List   []*IndustrialManagement
 }
 
 type IndustrialManagement struct {