Pārlūkot izejas kodu

查询报告列表

xiexiaoyuan 3 gadi atpakaļ
vecāks
revīzija
d62d21b0cd

+ 48 - 0
controller/report/report.go

@@ -50,4 +50,52 @@ func ChapterDetail(c *gin.Context)  {
 	}
 	response.OkData("查询成功", chapterDetail, c )
 	return
+}
+
+
+func List(c *gin.Context)  {
+	reqClassifyIdFirst := c.DefaultQuery("classify_id_first", "")
+	reqClassifyIdSec := c.DefaultQuery("classify_id_second", "")
+	keyWord:= c.DefaultQuery("key_word", "")
+	reqPageSize := c.DefaultQuery("page", "1")
+	reqPageLimit := c.DefaultQuery("limit", "10")
+
+	if reqClassifyIdFirst == ""{
+		response.Fail("请输入分类ID", c)
+		return
+	}
+	classifyIdFirst, err := strconv.Atoi(reqClassifyIdFirst)
+	if err != nil {
+		response.Fail("分类ID格式错误", c)
+		return
+	}
+	var classifyIdSecond int
+	if reqClassifyIdSec != ""{
+		classifyIdSecond, err = strconv.Atoi(reqClassifyIdSec)
+		if err != nil {
+			response.Fail("分类ID格式错误", c)
+			return
+		}
+	}
+
+	pageSize, err := strconv.Atoi(reqPageSize)
+	if err != nil {
+		response.Fail("请输入正确的页码", c)
+		return
+	}
+	pageLimit, err := strconv.Atoi(reqPageLimit)
+	if err != nil {
+		response.Fail("请输入正确的条数限制", c)
+		return
+	}
+
+	userinfo := userService.GetInfoByClaims(c)
+
+	list, err := report.GetReportList(userinfo, keyWord, classifyIdFirst, classifyIdSecond, pageSize, pageLimit)
+	if err != nil {
+		response.Fail(err.Error(), c)
+		return
+	}
+	response.OkData("查询成功", list, c )
+	return
 }

+ 1 - 2
models/response/classify.go

@@ -35,7 +35,7 @@ type ClassReportListItem struct {
 	Title              string `description:"标题" json:"title"`
 	Abstract           string `description:"摘要" json:"abstract"`
 	Author             string `description:"作者" json:"author"`
-	AuthorImageUrl             string `description:"作者头像" json:"author_image_url"`
+	ReportImgUrl             string `description:"作者头像" json:"report_img_url"`
 	PublishTime        time.Time `description:"发布时间" json:"publish_time"`
 	Stage              int    `description:"期数" json:"stage"`
 	VideoUrl           string `description:"音频文件URL" json:"video_url"`
@@ -44,5 +44,4 @@ type ClassReportList struct {
 	List    []*ClassReportListItem   	`json:"list"`
 	PermissionCheck     *company.PermissionCheckInfo    `json:"permission_check"`
 	AuthOk              bool `json:"auth_ok"`
-	
 }

+ 21 - 0
models/response/report.go

@@ -78,4 +78,25 @@ type ReportChapterMenu struct {
 	ReportId        int    `json:"report_id"`
 	ReportChapterTypeName   string       `json:"report_chapter_type_name"`
 	ReportChapterTypeThumb  string	    `json:"report_chapter_type_thumb"`
+}
+
+type ReportListItem struct {
+	ReportId                 int    `description:"报告Id" json:"report_id"`
+	ClassifyIdFirst    int    `description:"一级分类id" json:"classify_id_first"`
+	ClassifyNameFirst  string `description:"一级分类名称" json:"classify_name_first"`
+	ClassifyIdSecond   int    `description:"二级分类id" json:"classify_id_second"`
+	ClassifyNameSecond string `description:"二级分类名称" json:"classify_name_second"`
+	Title              string `description:"标题" json:"title"`
+	Abstract           string `description:"摘要" json:"abstract"`
+	Author             string `description:"作者" json:"author"`
+	ReportImgUrl             string `description:"作者头像" json:"report_img_url"`
+	PublishTime        time.Time `description:"发布时间" json:"publish_time"`
+	Stage              int    `description:"期数" json:"stage"`
+	VideoUrl           string `description:"音频文件URL" json:"video_url"`
+	AuthOk              bool `json:"auth_ok"`
+}
+
+type ReportList struct {
+	PageInfo     string  		`json:"page_info"`
+	List        []*ReportListItem `json:"list"`
 }

+ 11 - 1
models/tables/chart_permission_search_key_word_mapping/query.go

@@ -8,7 +8,7 @@ import (
 // GetChartPermissionIdsByKeyWord 查询二级分类中的权限
 func GetChartPermissionIdsByKeyWord(keyWord string) (ids []int, err error)  {
 	var list []*ChartPermissionSearchKeyWordMapping
-	err = global.DEFAULT_MYSQL.Model(ChartPermissionSearchKeyWordMapping{}).Where("key_word = ?", keyWord).Scan(&list).Error
+	err = global.DEFAULT_MYSQL.Model(ChartPermissionSearchKeyWordMapping{}).Where("key_word = ? and `from` = 'rddp' ", keyWord).Scan(&list).Error
 	if err != nil && err != utils.ErrNoRow {
 		return
 	}
@@ -19,3 +19,13 @@ func GetChartPermissionIdsByKeyWord(keyWord string) (ids []int, err error)  {
 	}
 	return
 }
+
+
+// GetChartPermissionByFrom 查询二级分类中的权限
+func GetChartPermissionByFrom(from string) (list []*ChartPermissionSearchKeyWordMapping, err error)  {
+	err = global.DEFAULT_MYSQL.Model(ChartPermissionSearchKeyWordMapping{}).Where("`from` = ? ", from).Scan(&list).Error
+	if err == utils.ErrNoRow {
+		err = nil
+	}
+	return
+}

+ 9 - 0
models/tables/rddp/classify/query.go

@@ -19,6 +19,15 @@ func GetByClassifyName(classifyName string) (item *Classify, err error) {
 	return
 }
 
+// GetByClassifyId 根据分类ID查询分类详情
+func GetByClassifyId(id int) (item *Classify, err error) {
+	err = global.MYSQL["rddp"].Model(Classify{}).Where("id = ?", id).First(&item).Error
+	if err == utils.ErrNoRow {
+		err = nil
+	}
+	return
+}
+
 // GetListByPid 根据分类名称查找专栏列表
 func GetListByPid(pid int) (list []*Classify, err error) {
 	err = global.MYSQL["rddp"].Model(Classify{}).Where("parent_id = ? ", pid).Order("sort asc, id asc").Scan(&list).Error

+ 11 - 1
models/tables/rddp/report/query.go

@@ -104,7 +104,7 @@ GROUP BY
 // GetListByClassSecond 按照二级类型分页查询
 func GetListByClassSecond(classifyNameSecond string,  offset , limit int) (reportList []*Report, err error) {
 	err = global.MYSQL["rddp"].Model(Report{}).
-		Select("id, classify_id_first, classify_name_first, classify_id_second, classify_name_second, title, stage, publish_time").
+		Select("id, classify_id_first, classify_name_first, classify_id_second, classify_name_second, title, stage, publish_time, author,  video_url, abstract").
 		Where("classify_name_second=? and state = 2 ", classifyNameSecond).
 		Order("publish_time desc, id desc").
 		Offset(offset).
@@ -114,4 +114,14 @@ func GetListByClassSecond(classifyNameSecond string,  offset , limit int) (repor
 		err = nil
 	}
 	return
+}
+
+// GetReportList 获取报告列表
+func GetReportList(condition string, pars []interface{}, offset , limit int) (list []*Report, err error) {
+	err = global.MYSQL["rddp"].Model(Report{}).Where(condition, pars...).
+		Order("publish_time desc, id desc").
+		Offset(offset).
+		Limit(limit).
+		Scan(&list).Error
+	return
 }

+ 1 - 1
routers/purchase.go

@@ -7,7 +7,7 @@ import (
 )
 
 func InitPurchase(r *gin.Engine)  {
-	rGroup := r.Group("purchase").Use(middleware.Token())
+	rGroup := r.Group("api/purchase").Use(middleware.Token())
 
 	rGroup.GET("/list", purchase.List)
 	rGroup.GET("/detail", purchase.Detail)

+ 3 - 2
routers/report.go

@@ -7,11 +7,12 @@ import (
 )
 
 func InitReport(r *gin.Engine)  {
-	rGroup := r.Group("report").Use(middleware.Token())
+	rGroup := r.Group("api/report").Use(middleware.Token())
 	rGroup.GET("/detail", report.Detail)
 	rGroup.GET("/chapter/detail", report.ChapterDetail)
+	rGroup.GET("/list", report.List)
 
-	rGroup2 := r.Group("classify").Use(middleware.Token())
+	rGroup2 := r.Group("api/classify").Use(middleware.Token())
 	rGroup2.GET("/list", report.ClassifyList)
 	rGroup2.GET("/detail", report.ClassifyDetail)
 	rGroup2.GET("/detail/reports", report.ClassifyDetailReports)

+ 1 - 1
services/report/classify.go

@@ -105,7 +105,6 @@ func GetClassifyDetail(user user.UserInfo, classifySecondName string) (detail *r
 	}
 	//查询权限, 查询当前分类下的最新的报告,
 	permissionIds, err := chart_permission_search_key_word_mapping.GetChartPermissionIdsByKeyWord(classifyInfo.ClassifyName)
-	log.Println(permissionIds)
 	if err != nil {
 		errMsg = err.Error()
 		err = errors.New("分类权限查询出错")
@@ -191,6 +190,7 @@ func GetClassifyReportList(user user.UserInfo, classifySecondName string, page,
 			reportItem.Stage = reportInfo.Stage
 			reportItem.Abstract = reportInfo.Abstract
 			reportItem.Author = reportInfo.Author
+			reportItem.ReportImgUrl = classifyInfo.ReportImgUrl
 			if authOk {
 				reportItem.VideoUrl = reportInfo.VideoUrl
 			}

+ 124 - 0
services/report/report.go

@@ -7,6 +7,8 @@ import (
 	"hongze/hongze_yb/models/response"
 	"hongze/hongze_yb/models/response/purchase"
 	"hongze/hongze_yb/models/tables/chart_permission_chapter_mapping"
+	"hongze/hongze_yb/models/tables/chart_permission_search_key_word_mapping"
+	"hongze/hongze_yb/models/tables/rddp/classify"
 	"hongze/hongze_yb/models/tables/rddp/report"
 	"hongze/hongze_yb/models/tables/rddp/report_chapter"
 	"hongze/hongze_yb/models/tables/report_chapter_type"
@@ -252,4 +254,126 @@ func CheckReportPermission(userInfo user.UserInfo, reportId int) (authOk bool, p
 	}
 	authOk, permissionCheckInfo, err = company.GetCheckPermission(userInfo.CompanyID, int(userInfo.UserID), permissionIds)
 	return
+}
+
+// GetReportList 获取报告列表
+func GetReportList(user user.UserInfo, keyWord string, classifyIdFirst, classifyIdSecond, page, limit int) (ret *response.ReportList, err error) {
+	var errMsg string
+	defer func() {
+		if err != nil {
+			global.LOG.Critical(fmt.Sprintf("GetReportList: userId=%d, err:%s, errMsg:%s", user.UserID, err.Error(), errMsg))
+		}
+	}()
+	var condition string
+	pars := make([]interface{}, 0)
+
+	classifyParent, err := classify.GetByClassifyId(classifyIdFirst)
+	if err != nil {
+		errMsg = err.Error()
+		err = errors.New("分类查询出错")
+		return
+	}
+	if classifyParent.Id == 0 {
+		err = errors.New("该分类不存在")
+		return
+	}
+	condition = `classify_id_first = ?`
+	pars = append(pars, classifyIdFirst)
+	permissionMap := make(map[string][]int)
+	checkPermissionMap := make(map[string]bool)
+	if classifyIdSecond > 0 {
+		classifyInfo, tErr := classify.GetByClassifyId(classifyIdSecond)
+		if tErr != nil {
+			errMsg = tErr.Error()
+			err = errors.New("分类查询出错")
+			return
+		}
+		if classifyInfo.Id == 0 {
+			err = errors.New("该二级分类不存在")
+			return
+		}
+		condition += " AND classify_id_second = ?"
+		pars = append(pars, classifyIdSecond)
+		//查询二级分类对应的权限
+		permissionIds, tErr := chart_permission_search_key_word_mapping.GetChartPermissionIdsByKeyWord(classifyInfo.ClassifyName)
+		if tErr != nil {
+			errMsg = tErr.Error()
+			err = errors.New("分类权限查询出错")
+			return
+		}
+		permissionMap[classifyInfo.ClassifyName] = permissionIds
+	}else{
+		chartPermissions, tErr := chart_permission_search_key_word_mapping.GetChartPermissionByFrom("rddp")
+		if tErr != nil {
+			errMsg = tErr.Error()
+			err = errors.New("分类权限查询出错")
+			return
+		}
+		if len(chartPermissions) > 0 {
+			for _, v := range chartPermissions {
+				permissionMap[v.KeyWord] = append(permissionMap[v.KeyWord], v.ChartPermissionId)
+			}
+		}
+	}
+
+	// 获取有效的权限id列表
+	validPermissionIdList, err := company.GetValidPermissionIdListByCompany2ProductId(user.CompanyID, 1)
+	if err != nil && err != utils.ErrNoRow {
+		errMsg = err.Error()
+		err = errors.New("查询分类出错")
+		return
+	}
+
+	if len(validPermissionIdList) > 0 {
+		for classifyName, perIds := range permissionMap {
+		checkLoop:
+			for _, checkId := range perIds{
+				for _, validPerid := range validPermissionIdList {
+					if checkId == validPerid {
+						checkPermissionMap[classifyName] = true
+						break checkLoop
+					}
+				}
+			}
+		}
+	}
+
+	if keyWord != "" {
+		condition += ` AND (title LIKE ? OR abstract LIKE ?) `
+		pars = append(pars, "%" + keyWord + "%")
+		pars = append(pars, "%" + keyWord + "%")
+	}
+	offset := (page - 1) * limit
+	list, err := report.GetReportList(condition, pars, offset, limit)
+	if err != nil {
+		errMsg = err.Error()
+		err = errors.New("报告查询出错")
+	}
+	log.Println(checkPermissionMap)
+	var reportList []*response.ReportListItem
+	if len(list) > 0 {
+		for _, reportInfo := range list {
+			reportItem := new(response.ReportListItem)
+			reportItem.ReportId = reportInfo.Id
+			reportItem.Title = reportInfo.Title
+			reportItem.PublishTime = reportInfo.PublishTime
+			reportItem.ClassifyNameFirst = reportInfo.ClassifyNameFirst
+			reportItem.ClassifyNameSecond = reportInfo.ClassifyNameSecond
+			reportItem.ClassifyIdFirst = reportInfo.ClassifyIdFirst
+			reportItem.ClassifyIdSecond = reportInfo.ClassifyIdSecond
+			reportItem.Stage = reportInfo.Stage
+			reportItem.Abstract = reportInfo.Abstract
+			reportItem.Author = reportInfo.Author
+			// reportItem.ReportImgUrl = classifyInfo.ReportImgUrl
+			if authOk,ok := checkPermissionMap[reportInfo.ClassifyNameSecond]; ok && authOk {
+				reportItem.VideoUrl = reportInfo.VideoUrl
+				reportItem.AuthOk = authOk
+			}
+			reportList = append(reportList, reportItem)
+		}
+
+	}
+	ret = new(response.ReportList)
+	ret.List = reportList
+	return
 }