Browse Source

子目录列表、研报列表筛选

hsun 2 years ago
parent
commit
d241643e8b

+ 34 - 12
controller/report/classify.go

@@ -3,6 +3,8 @@ package report
 import (
 	"github.com/gin-gonic/gin"
 	"hongze/hongze_yb/controller/response"
+	"hongze/hongze_yb/models/request"
+	"hongze/hongze_yb/models/tables/rddp/classify_menu"
 	reportService "hongze/hongze_yb/services/report"
 	userService "hongze/hongze_yb/services/user"
 	"hongze/hongze_yb/utils"
@@ -10,7 +12,7 @@ import (
 )
 
 // ClassifyList 专栏列表
-func ClassifyList(c *gin.Context)  {
+func ClassifyList(c *gin.Context) {
 	reqClassifyIdFirst := c.DefaultQuery("classify_id_first", "")
 	if reqClassifyIdFirst == "" {
 		response.Fail("请输入二级分类标识", c)
@@ -29,12 +31,12 @@ func ClassifyList(c *gin.Context)  {
 		response.Fail(err.Error(), c)
 		return
 	}
-	response.OkData("查询成功", classList, c )
+	response.OkData("查询成功", classList, c)
 	return
 }
 
 // ClassifyDetail 专栏详情
-func ClassifyDetail(c *gin.Context)  {
+func ClassifyDetail(c *gin.Context) {
 	reqClassifyIdSecond := c.DefaultQuery("classify_id_second", "")
 	if reqClassifyIdSecond == "" {
 		response.Fail("请输入二级分类标识", c)
@@ -53,12 +55,12 @@ func ClassifyDetail(c *gin.Context)  {
 		response.Fail(err.Error(), c)
 		return
 	}
-	response.OkData("查询成功", detail, c )
+	response.OkData("查询成功", detail, c)
 	return
 }
 
 // ClassifyDetailReports 专栏目录列表
-func ClassifyDetailReports(c *gin.Context)  {
+func ClassifyDetailReports(c *gin.Context) {
 	reqClassifyIdSecond := c.DefaultQuery("classify_id_second", "")
 	reqPageIndex := c.DefaultQuery("current_index", "1")
 	reqPageSize := c.DefaultQuery("page_size", strconv.Itoa(utils.PageSize20))
@@ -93,14 +95,14 @@ func ClassifyDetailReports(c *gin.Context)  {
 		response.Fail(err.Error(), c)
 		return
 	}
-	response.OkData("查询成功", detail, c )
+	response.OkData("查询成功", detail, c)
 	return
 }
 
 // ClassifySimpleList 简单查询二级分类名称列表
-func ClassifySimpleList(c *gin.Context)  {
+func ClassifySimpleList(c *gin.Context) {
 	reqClassifyIdFirst := c.DefaultQuery("classify_id_first", "")
-	if reqClassifyIdFirst == ""{
+	if reqClassifyIdFirst == "" {
 		response.Fail("请输入分类ID", c)
 		return
 	}
@@ -116,12 +118,12 @@ func ClassifySimpleList(c *gin.Context)  {
 		response.Fail(err.Error(), c)
 		return
 	}
-	response.OkData("查询成功", classList, c )
+	response.OkData("查询成功", classList, c)
 	return
 }
 
 // ClassifyFirstList Ficc 菜单
-func ClassifyFirstList(c *gin.Context)  {
+func ClassifyFirstList(c *gin.Context) {
 	userinfo := userService.GetInfoByClaims(c)
 
 	classList, err := reportService.GetClassifyFirstList(userinfo)
@@ -129,6 +131,26 @@ func ClassifyFirstList(c *gin.Context)  {
 		response.Fail(err.Error(), c)
 		return
 	}
-	response.OkData("查询成功", classList, c )
+	response.OkData("查询成功", classList, c)
 	return
-}
+}
+
+// ClassifyMenuList 一级分类-子目录列表
+func ClassifyMenuList(c *gin.Context) {
+	var req request.ClassifyMenuReq
+	if err := c.Bind(&req); err != nil {
+		response.Fail("参数有误", c)
+		return
+	}
+	if req.ClassifyId <= 0 {
+		response.Fail("参数有误", c)
+		return
+	}
+
+	list, e := classify_menu.GetMenuListByClassifyId(req.ClassifyId)
+	if e != nil {
+		response.FailMsg("获取失败", "获取一级分类子目录列表失败, Err: "+e.Error(), c)
+		return
+	}
+	response.OkData("获取成功", list, c)
+}

+ 11 - 31
controller/report/report.go

@@ -59,45 +59,25 @@ func ChapterDetail(c *gin.Context) {
 
 // List 研报列表
 func List(c *gin.Context) {
-	reqClassifyIdFirst := c.DefaultQuery("classify_id_first", "")
-	reqClassifyIdSec := c.DefaultQuery("classify_id_second", "")
-	keyWord := c.DefaultQuery("key_word", "")
-	reqPageIndex := c.DefaultQuery("current_index", "1")
-	reqPageSize := c.DefaultQuery("page_size", strconv.Itoa(utils.PageSize20))
-
-	pageIndex, err := strconv.Atoi(reqPageIndex)
-	if err != nil {
-		response.Fail("请输入正确的条数限制", c)
+	var req request.ReportListReq
+	if err := c.Bind(&req); err != nil {
+		response.Fail("参数有误", c)
 		return
 	}
-
-	pageSize, err := strconv.Atoi(reqPageSize)
-	if err != nil {
-		response.Fail("请输入正确的页码", c)
-		return
-	}
-
-	if reqClassifyIdFirst == "" {
-		response.Fail("请输入分类ID", c)
+	if req.ClassifyIdFirst <= 0 {
+		response.Fail("分类ID有误", c)
 		return
 	}
-	classifyIdFirst, err := strconv.Atoi(reqClassifyIdFirst)
-	if err != nil {
-		response.Fail("分类ID格式错误", c)
-		return
+	if req.CurrentIndex == 0 {
+		req.CurrentIndex = 1
 	}
-	var classifyIdSecond int
-	if reqClassifyIdSec != "" {
-		classifyIdSecond, err = strconv.Atoi(reqClassifyIdSec)
-		if err != nil {
-			response.Fail("分类ID格式错误", c)
-			return
-		}
+	if req.PageSize == 0 {
+		req.PageSize = utils.PageSize20
 	}
 
-	userinfo := userService.GetInfoByClaims(c)
+	userInfo := userService.GetInfoByClaims(c)
 
-	list, err := report.GetReportList(userinfo, keyWord, classifyIdFirst, classifyIdSecond, pageIndex, pageSize)
+	list, err := report.GetReportList(userInfo, req.KeyWord, req.ClassifyIdFirst, req.ClassifyIdSecond, req.CurrentIndex, req.PageSize, req.ClassifyMenuId)
 	if err != nil {
 		response.FailMsg("查看研报列表出错", err.Error(), c)
 		return

+ 6 - 0
models/request/classify.go

@@ -0,0 +1,6 @@
+package request
+
+// ClassifyMenuReq 分类子目录请求体
+type ClassifyMenuReq struct {
+	ClassifyId int `json:"classify_id" form:"classify_id"`
+}

+ 11 - 0
models/request/report.go

@@ -0,0 +1,11 @@
+package request
+
+// ReportListReq 报告列表请求体
+type ReportListReq struct {
+	PageSize         int    `description:"每页数据量" json:"page_size" form:"page_size"`
+	CurrentIndex     int    `description:"页码" json:"current_index" form:"current_index"`
+	ClassifyIdFirst  int    `description:"一级分类ID" json:"classify_id_first" form:"classify_id_first"`
+	ClassifyIdSecond int    `description:"二级分类ID" json:"classify_id_second" form:"classify_id_second"`
+	ClassifyMenuId   int    `description:"一级分类子目录ID" json:"classify_menu_id" form:"classify_menu_id"`
+	KeyWord          string `description:"关键词" json:"key_word" form:"key_word"`
+}

+ 31 - 0
models/tables/rddp/classify_menu/entity.go

@@ -0,0 +1,31 @@
+package classify_menu
+
+import "time"
+
+// ClassifyMenu 报告分类-子目录表
+type ClassifyMenu struct {
+	MenuID     int       `gorm:"primaryKey;column:menu_id;type:int(10) unsigned;not null" json:"menu_id"`                              // 子目录ID
+	MenuName   string    `gorm:"column:menu_name;type:varchar(255);not null;default:''" json:"menu_name"`                              // 子目录名称
+	ClassifyID int       `gorm:"index:idx_classify_id;column:classify_id;type:int(10) unsigned;not null;default:0" json:"classify_id"` // 分类ID
+	Sort       int       `gorm:"column:sort;type:int(10) unsigned;not null;default:0" json:"sort"`                                     // 排序
+	CreateTime time.Time `gorm:"column:create_time;type:datetime" json:"create_time"`                                                  // 创建时间
+	ModifyTime time.Time `gorm:"column:modify_time;type:datetime" json:"modify_time"`                                                  // 更新时间
+}
+
+// TableName get sql table name.获取数据库表名
+func (m *ClassifyMenu) TableName() string {
+	return "classify_menu"
+}
+
+// ClassifyMenuRelation 报告分类-子目录关联表
+type ClassifyMenuRelation struct {
+	ID         int       `gorm:"primaryKey;column:id;type:int(10) unsigned;not null" json:"-"`                                        // 主键ID
+	ClassifyID int       `gorm:"index:idx_classify_id;column:classify_id;type:int(10) unsigned;not null;default:0" json:"classifyId"` // 二级分类ID
+	MenuID     int       `gorm:"index:idx_menu_id;column:menu_id;type:int(10) unsigned;not null;default:0" json:"menuId"`             // 子目录ID
+	CreateTime time.Time `gorm:"column:create_time;type:datetime" json:"createTime"`                                                  // 创建时间
+}
+
+// TableName get sql table name.获取数据库表名
+func (m *ClassifyMenuRelation) TableName() string {
+	return "classify_menu_relation"
+}

+ 23 - 0
models/tables/rddp/classify_menu/model.go

@@ -0,0 +1,23 @@
+package classify_menu
+
+import (
+	"hongze/hongze_yb/global"
+)
+
+// GetMenuListByClassifyId 分类ID获取子目录列表
+func GetMenuListByClassifyId(classify int) (list []*ClassifyMenu, err error) {
+	err = global.MYSQL["rddp"].Model(ClassifyMenu{}).
+		Where("classify_id = ?", classify).
+		Order("sort ASC, create_time DESC").
+		Scan(&list).Error
+	return
+}
+
+// GetClassifyIdsByMenuId 子目录ID获取关联分类IDs
+func GetClassifyIdsByMenuId(menuId int) (classifyIds []int, err error) {
+	err = global.MYSQL["rddp"].Model(ClassifyMenuRelation{}).
+		Select("classify_id").
+		Where("menu_id = ?", menuId).
+		Scan(&classifyIds).Error
+	return
+}

+ 1 - 0
routers/report.go

@@ -24,5 +24,6 @@ func InitReport(r *gin.Engine) {
 	rGroup2.GET("/simple/list", report.ClassifySimpleList)
 	rGroup2.GET("/detail", report.ClassifyDetail)
 	rGroup2.GET("/detail/reports", report.ClassifyDetailReports)
+	rGroup2.GET("/menu/list", report.ClassifyMenuList)
 
 }

+ 32 - 3
services/report/report.go

@@ -14,6 +14,7 @@ import (
 	"hongze/hongze_yb/models/tables/company_product"
 	"hongze/hongze_yb/models/tables/daily_base_column"
 	"hongze/hongze_yb/models/tables/rddp/classify"
+	"hongze/hongze_yb/models/tables/rddp/classify_menu"
 	"hongze/hongze_yb/models/tables/rddp/report"
 	"hongze/hongze_yb/models/tables/rddp/report_chapter"
 	"hongze/hongze_yb/models/tables/rddp/report_chapter_ticker"
@@ -534,7 +535,7 @@ func CheckReportPermission(userInfo user.UserInfo, reportId int, productAuthOk b
 }
 
 // GetReportList 获取报告列表
-func GetReportList(user user.UserInfo, keyWord string, classifyIdFirst, classifyIdSecond, pageIndex, pageSize int) (ret *response.ReportList, err error) {
+func GetReportList(user user.UserInfo, keyWord string, classifyIdFirst, classifyIdSecond, pageIndex, pageSize, classifyMenuId int) (ret *response.ReportList, err error) {
 	var errMsg string
 	defer func() {
 		if err != nil {
@@ -578,6 +579,24 @@ func GetReportList(user user.UserInfo, keyWord string, classifyIdFirst, classify
 	}
 	condition = `classify_id_first = ? and state = 2`
 	pars = append(pars, classifyIdFirst)
+
+	// 子目录
+	menuClassifyIds := make([]int, 0)
+	menuClassifyLen := 0
+	if classifyMenuId > 0 {
+		ids, e := classify_menu.GetClassifyIdsByMenuId(classifyMenuId)
+		if e != nil {
+			err = errors.New("获取子目录关联分类信息失败, Err: " + e.Error())
+			return
+		}
+		menuClassifyIds = ids
+		menuClassifyLen = len(menuClassifyIds)
+		//if len(menuClassifyIds) > 0 {
+		//	condition += ` AND classify_id_second IN ?`
+		//	pars = append(pars, menuClassifyIds)
+		//}
+	}
+
 	permissionMap := make(map[string][]int)
 	checkPermissionMap := make(map[string]bool)
 	permissionImageMap := make(map[string]string)
@@ -654,8 +673,13 @@ func GetReportList(user user.UserInfo, keyWord string, classifyIdFirst, classify
 			return
 		}
 
-		for _, v := range classifyList {
-			classifyIdSeconds = append(classifyIdSeconds, v.Id)
+		// 子目录
+		if menuClassifyLen > 0 {
+			classifyIdSeconds = append(classifyIdSeconds, menuClassifyIds...)
+		} else {
+			for _, v := range classifyList {
+				classifyIdSeconds = append(classifyIdSeconds, v.Id)
+			}
 		}
 
 		if len(classifyIdSeconds) == 0 && classifyParent.ClassifyName != "晨报" && classifyParent.ClassifyName != "周报" {
@@ -715,6 +739,11 @@ func GetReportList(user user.UserInfo, keyWord string, classifyIdFirst, classify
 		if classifyParent.ClassifyName == "晨报" || classifyParent.ClassifyName == "周报" {
 			classifyIdSeconds = append(classifyIdSeconds, 0)
 		}
+		// 子目录
+		if menuClassifyLen > 0 {
+			classifyIdSeconds = append(classifyIdSeconds, menuClassifyIds...)
+		}
+
 		searchResp, total1, tErr := elasticService.ReportListSearch(keyWord, classifyIdFirst, classifyIdSeconds, pageIndex, pageSize)
 		if tErr != nil {
 			errMsg = tErr.Error()