Browse Source

fix:更新品种权限和类别的接口,修改部分方法命名

zqbao 9 months ago
parent
commit
a0410da126

+ 11 - 17
controllers/base_auth.go

@@ -87,23 +87,17 @@ func (c *BaseAuthController) ServeJSON(encoding ...bool) {
 
 	baseRes := c.Data["json"].(*models.BaseResponse)
 	if baseRes != nil && baseRes.Ret != 408 {
-		//body, _ := json.Marshal(baseRes)
-		//var requestBody string
-		//method := c.Ctx.Input.Method()
-		//if method == "GET" {
-		//	requestBody = c.Ctx.Request.RequestURI
-		//} else {
-		//	requestBody, _ = url.QueryUnescape(string(c.Ctx.Input.RequestBody))
-		//}
-		//if baseRes.Ret != 200 && baseRes.IsSendEmail {
-		//	go utils.SendEmail(utils.APP_NAME_CN+"【"+utils.RunMode+"】"+"失败提醒", "URI:"+c.Ctx.Input.URI()+"<br/> "+"Params"+requestBody+" <br/>"+"ErrMsg:"+baseRes.ErrMsg+";<br/>Msg:"+baseRes.Msg+";<br/> Body:"+string(body)+"<br/>", utils.EmailSendToUsers)
-		//}
-
-		// 记录错误日志, 并清掉错误信息避免暴露给外部
-		if baseRes.ErrMsg != "" {
-
-			utils.ApiLog.Info(baseRes.ErrMsg)
-			baseRes.ErrMsg = ""
+		body, _ := json.Marshal(baseRes)
+		var requestBody string
+		method := c.Ctx.Input.Method()
+		if method == "GET" {
+			requestBody = c.Ctx.Request.RequestURI
+		} else {
+			requestBody, _ = url.QueryUnescape(string(c.Ctx.Input.RequestBody))
+		}
+		if baseRes.Ret != 200 {
+			content := "URI:" + c.Ctx.Input.URI() + "<br/> " + "Params" + requestBody + " <br/>" + "ErrMsg:" + baseRes.ErrMsg + ";<br/>Msg:" + baseRes.Msg + ";<br/> Body:" + string(body) + "<br/>"
+			utils.ApiLog.Notice(content)
 		}
 	}
 	c.JSON(c.Data["json"], hasIndent, hasEncoding)

+ 193 - 10
controllers/chart_permission.go

@@ -4,7 +4,6 @@ import (
 	"eta/eta_mini_bridge/models"
 	"eta/eta_mini_bridge/utils"
 	"fmt"
-	"html"
 	"sort"
 	"strconv"
 )
@@ -187,7 +186,44 @@ func (this *ChartPermissionController) Private() {
 
 }
 
-// Private
+// DetailByClassify
+// @Title 获取品种权限根据分类id
+// @Description 获取品种权限根据分类id
+// @Param   ClassifyId   query   int  true       "二级分类的id"
+// @Success 200 {object} []models.ChartPermission
+// @router /classify/detail [get]
+func (this *ChartPermissionController) DetailByClassify() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	classifyId, _ := this.GetInt("ClassifyId")
+	if classifyId <= 0 {
+		br.Msg = "参数错误"
+		br.ErrMsg = "参数错误,分类id小于等于0"
+		return
+	}
+	reportChartPermissionIds, err := models.GetChartPermissionIdsListByClassifyId(classifyId)
+	if err != nil {
+		br.Msg = "获取研报权限失败"
+		br.ErrMsg = "获取研报权限失败,Err:" + err.Error()
+		return
+	}
+	chartPermissionList, err := models.GetChartPermissionListByIds(reportChartPermissionIds)
+	if err != nil {
+		br.Msg = "获取研报权限失败"
+		br.ErrMsg = "获取研报权限失败,Err:" + err.Error()
+		return
+	}
+
+	br.Data = chartPermissionList
+	br.Msg = "权限列表获取成功"
+	br.Success = true
+	br.Ret = 200
+}
+
+// Detail
 // @Title 获取研报的品种权限列表
 // @Description 获取研报的品种权限列表
 // @Param   ReportId   query   int  true       "研报id"
@@ -196,10 +232,6 @@ func (this *ChartPermissionController) Private() {
 func (this *ChartPermissionController) Detail() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
-		if err := recover(); err != nil {
-			utils.ApiLog.Error("获取报告列表获取失败,系统错误,Err:%s", err)
-			return
-		}
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
@@ -210,13 +242,11 @@ func (this *ChartPermissionController) Detail() {
 		return
 	}
 	report, err := models.GetReportById(reportId)
-	if err != nil {
+	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "该报告已删除"
 		br.ErrMsg = "获取报告详情失败,Err:" + err.Error()
 		return
 	}
-	report.ContentSub = html.UnescapeString(report.ContentSub)
-	report.Content = html.UnescapeString(report.Content)
 	if report == nil {
 		br.Msg = "报告不存在"
 		return
@@ -227,7 +257,7 @@ func (this *ChartPermissionController) Detail() {
 		br.ErrMsg = "获取研报权限失败,Err:" + err.Error()
 		return
 	}
-	chartPermissionList, err := models.GetChartPermissionIdsByIds(reportChartPermissionIds)
+	chartPermissionList, err := models.GetChartPermissionListByIds(reportChartPermissionIds)
 	if err != nil {
 		br.Msg = "获取研报权限失败"
 		br.ErrMsg = "获取研报权限失败,Err:" + err.Error()
@@ -240,6 +270,148 @@ func (this *ChartPermissionController) Detail() {
 	br.Ret = 200
 }
 
+// ClassifyTree
+// @Title 获取品种下的分类权限树形列表
+// @Description 获取研报的品种权限树形列表
+// @Param   ChartPermissionId   query   int  true       "品种权限id"
+// @Success 200 {object} []models.ChartPermission
+// @router /classify/tree [get]
+func (this *ChartPermissionController) ClassifyTree() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	chartPermissionId, _ := this.GetInt("ChartPermissionId")
+	if chartPermissionId <= 0 {
+		br.Msg = "品种权限错误"
+		return
+	}
+	chartPermission, err := models.GetChartPermissionById(chartPermissionId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "品种权限不存在"
+			return
+		}
+		br.Msg = "品种权限错误"
+		br.ErrMsg = "品种权限错误,系统错误,Err:" + err.Error()
+		return
+	}
+	var classifyIds []int
+	if chartPermission.ParentId == 0 {
+		// 传过来的是一级品种权限的id,那就获取子品种权限的id,通过子品种权限寻找分类id
+		childChartPermissionIdsList, err := models.GetChildChartPermissionIdsById(chartPermission.ChartPermissionId)
+		if err != nil {
+			br.Msg = "获取品种权限失败"
+			br.ErrMsg = "获取子品种权限失败,系统错误,Err:" + err.Error()
+			return
+		}
+		classifyIds, err = models.GetClassifyIdsListByIds(childChartPermissionIdsList)
+		if err != nil {
+			br.Msg = "获取分类失败"
+			br.ErrMsg = "获取类别失败,系统错误,Err:" + err.Error()
+			return
+		}
+	} else {
+		classifyIds, err = models.GetClassifyIdsListById(chartPermission.ChartPermissionId)
+		if err != nil {
+			br.Msg = "获取分类失败"
+			br.ErrMsg = "获取类别失败,系统错误,Err:" + err.Error()
+			return
+		}
+	}
+	classifyIds = utils.Unique(classifyIds)
+	classifyList, err := models.GetClassifyListByIds(classifyIds)
+	if err != nil {
+		br.Msg = "获取分类失败"
+		br.ErrMsg = "获取类别信息失败,系统错误,Err:" + err.Error()
+		return
+	}
+	var parentClassifyIds []int
+	for _, v := range classifyList {
+		if v.ParentId != 0 {
+			parentClassifyIds = append(parentClassifyIds, v.ParentId)
+		}
+	}
+	parentClassifyIds = utils.Unique(parentClassifyIds)
+	parentClassifyList, err := models.GetClassifyListByIds(parentClassifyIds)
+	if err != nil {
+		br.Msg = "获取分类失败"
+		br.ErrMsg = "获取类别信息失败,系统错误,Err:" + err.Error()
+		return
+	}
+	classifyList = getClassifyTree(classifyList, parentClassifyList)
+
+	br.Msg = "分类列表获取成功"
+	br.Data = classifyList
+	br.Success = true
+	br.Ret = 200
+}
+
+// ClassifyList
+// @Title 获取品种下的分类权限列表
+// @Description 获取研报的品种权限列表
+// @Param   ChartPermissionId   query   int  true       "品种权限id"
+// @Success 200 {object} []models.ChartPermission
+// @router /classify/list [get]
+func (this *ChartPermissionController) ClassifyList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	chartPermissionId, _ := this.GetInt("ChartPermissionId")
+	if chartPermissionId <= 0 {
+		br.Msg = "品种权限错误"
+		return
+	}
+	chartPermission, err := models.GetChartPermissionById(chartPermissionId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "品种权限不存在"
+			return
+		}
+		br.Msg = "品种权限错误"
+		br.ErrMsg = "品种权限错误,系统错误,Err:" + err.Error()
+		return
+	}
+	var classifyIds []int
+	if chartPermission.ParentId == 0 {
+		// 传过来的是一级品种权限的id,那就获取子品种权限的id,通过子品种权限寻找分类id
+		childChartPermissionIdsList, err := models.GetChildChartPermissionIdsById(chartPermission.ChartPermissionId)
+		if err != nil {
+			br.Msg = "获取品种权限失败"
+			br.ErrMsg = "获取子品种权限失败,系统错误,Err:" + err.Error()
+			return
+		}
+		classifyIds, err = models.GetClassifyIdsListByIds(childChartPermissionIdsList)
+		if err != nil {
+			br.Msg = "获取分类失败"
+			br.ErrMsg = "获取类别失败,系统错误,Err:" + err.Error()
+			return
+		}
+	} else {
+		classifyIds, err = models.GetClassifyIdsListById(chartPermission.ChartPermissionId)
+		if err != nil {
+			br.Msg = "获取分类失败"
+			br.ErrMsg = "获取类别失败,系统错误,Err:" + err.Error()
+			return
+		}
+	}
+	classifyIds = utils.Unique(classifyIds)
+	classifyList, err := models.GetClassifyListByIds(classifyIds)
+	if err != nil {
+		br.Msg = "获取分类失败"
+		br.ErrMsg = "获取类别信息失败,系统错误,Err:" + err.Error()
+		return
+	}
+
+	br.Msg = "分类列表获取成功"
+	br.Data = classifyList
+	br.Success = true
+	br.Ret = 200
+}
+
 // getChartPermissionTree获得品种权限的树形结构
 func getChartPermissionTree(rootMap map[int]*models.ChartPermission, childChartPermissionList []*models.ChartPermission) map[int]*models.ChartPermissionView {
 	resultMap := make(map[int]*models.ChartPermissionView)
@@ -276,3 +448,14 @@ func getChartPermissionTree(rootMap map[int]*models.ChartPermission, childChartP
 	}
 	return resultMap
 }
+
+func getClassifyTree(classifyList []*models.ClassifyView, parentClassifyList []*models.ClassifyView) []*models.ClassifyView {
+	for _, v := range parentClassifyList {
+		for _, v1 := range classifyList {
+			if v.Id == v1.ParentId {
+				v.Child = append(v.Child, v1)
+			}
+		}
+	}
+	return parentClassifyList
+}

+ 35 - 27
controllers/report.go

@@ -23,6 +23,7 @@ type ReportController struct {
 // @Param   PageSize   query   int  true       "每页数据条数"
 // @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
 // @Param   RangeType   query   string  true       "范围类型,1-一天内,2-一周内,3-半年内"
+// @Param   ClassifyId   query   int  true       "分类id"
 // @Success 200 {object} response.ReportListResp
 // @router /list [get]
 func (this *ReportController) List() {
@@ -37,6 +38,7 @@ func (this *ReportController) List() {
 	chartPermissionId, _ := this.GetInt("ChartPermissionId")
 	level, _ := this.GetInt("Level")
 	rangeType, _ := this.GetInt("RangeType")
+	classifyId, _ := this.GetInt("ClassifyId")
 
 	if chartPermissionId <= 0 {
 		br.Msg = "品种参数错误"
@@ -76,14 +78,26 @@ func (this *ReportController) List() {
 			br.ErrMsg = "获取数据失败,品种id:" + strconv.Itoa(chartPermissionId)
 			return
 		}
-		tmptotal, err := models.GetReportCountByClassifyIds(classifyIds, condition)
+		// 根据分类筛选报告
+		var selectedClassifyId []int
+		if classifyId > 0 {
+			for _, v := range classifyIds {
+				if v == classifyId {
+					selectedClassifyId = append(selectedClassifyId, v)
+					break
+				}
+			}
+		} else {
+			selectedClassifyId = classifyIds
+		}
+		tmptotal, err := models.GetReportCountByClassifyIds(selectedClassifyId, condition)
 		if err != nil {
 			br.Msg = "获取数据失败"
 			br.ErrMsg = "获取数据失败,Err:" + err.Error()
 			return
 		}
 		total = tmptotal
-		tmpReportList, err := models.GetReportListByClassifyIds(classifyIds, condition, startSize, pageSize)
+		tmpReportList, err := models.GetReportListByClassifyIds(selectedClassifyId, condition, startSize, pageSize)
 		if err != nil {
 			br.Msg = "获取报告列表失败"
 			br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -112,14 +126,26 @@ func (this *ReportController) List() {
 			br.Msg = "该品种下没有绑定分类"
 			return
 		}
-		tmptotal, err := models.GetReportCountByClassifyIds(classifyIds, condition)
+		// 根据分类筛选报告
+		var selectedClassifyId []int
+		if classifyId > 0 {
+			for _, v := range classifyIds {
+				if v == classifyId {
+					selectedClassifyId = append(selectedClassifyId, v)
+					break
+				}
+			}
+		} else {
+			selectedClassifyId = classifyIds
+		}
+		tmptotal, err := models.GetReportCountByClassifyIds(selectedClassifyId, condition)
 		if err != nil {
 			br.Msg = "获取数据失败"
 			br.ErrMsg = "获取数据失败,Err:" + err.Error()
 			return
 		}
 		total = tmptotal
-		tmpReportList, err := models.GetReportListByClassifyIds(classifyIds, condition, startSize, pageSize)
+		tmpReportList, err := models.GetReportListByClassifyIds(selectedClassifyId, condition, startSize, pageSize)
 		if err != nil {
 			br.Msg = "获取报告列表失败"
 			br.ErrMsg = "获取报告列表失败,Err:" + err.Error()
@@ -214,7 +240,7 @@ func (this *ReportController) Detail() {
 		br.ErrMsg = "获取研报权限失败,Err:" + err.Error()
 		return
 	}
-	chartPermissionList, err := models.GetChartPermissionIdsByIds(reportChartPermissionIds)
+	chartPermissionList, err := models.GetChartPermissionListByIds(reportChartPermissionIds)
 	if err != nil {
 		br.Msg = "获取研报权限失败"
 		br.ErrMsg = "获取研报权限失败,Err:" + err.Error()
@@ -281,9 +307,8 @@ func (this *ReportController) Detail() {
 			br.Msg = "用户权限不足"
 			return
 		}
-		reportClassifyIdStr := strconv.Itoa(report.ClassifyIdSecond)
 		for _, v := range classifyIds {
-			if v == reportClassifyIdStr {
+			if v == report.ClassifyIdSecond {
 				IsHas = true
 			}
 		}
@@ -362,8 +387,6 @@ func (this *ReportController) DetailNoUser() {
 
 // @Title 今日研报列表
 // @Description 今日研报列表
-// @Param   PageSize   query   int  true       "每页数据条数"
-// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
 // @Success 200 {object} response.ReportListResp
 // @router /daily/list [get]
 func (this *ReportController) Today() {
@@ -373,18 +396,6 @@ func (this *ReportController) Today() {
 		this.ServeJSON()
 	}()
 
-	pageSize, _ := this.GetInt("PageSize")
-	currentIndex, _ := this.GetInt("CurrentIndex")
-
-	var startSize int
-	if pageSize <= 0 {
-		pageSize = utils.PageSize30
-	}
-	if currentIndex <= 0 {
-		currentIndex = 1
-	}
-	startSize = utils.StartIndex(currentIndex, pageSize)
-
 	total, err := models.GetReportDailyListCount()
 	if err != nil {
 		br.Msg = "获取数据失败"
@@ -392,7 +403,7 @@ func (this *ReportController) Today() {
 		return
 	}
 
-	list, err := models.GetReportDailyList(startSize, pageSize)
+	list, err := models.GetReportDailyList(0, total)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,Err:" + err.Error()
@@ -417,7 +428,7 @@ func (this *ReportController) Today() {
 		chartPermissionIds = append(chartPermissionIds, strconv.Itoa(v.ChartPermissionId))
 	}
 	// 获取二级品种的权限,并建立映射
-	chartPermissionList2, err := models.GetParentChartPermissionListByIds(chartPermissionIds)
+	chartPermissionList2, err := models.GetChartPermissionListByIds(chartPermissionIds)
 	if err != nil {
 		br.Msg = "获取研报二级品种权限失败"
 		br.ErrMsg = "获取研报二级品种权限失败,Err:" + err.Error()
@@ -448,10 +459,7 @@ func (this *ReportController) Today() {
 		v.PermissionNames = utils.Unique(permissionNames)
 	}
 
-	page := paging.GetPaging(currentIndex, pageSize, total)
-
 	resp := new(response.ReportListResp)
-	resp.Paging = page
 	resp.List = list
 
 	br.Ret = 200
@@ -517,7 +525,7 @@ func (this *ReportController) RecentList() {
 		chartPermissionIds = append(chartPermissionIds, strconv.Itoa(v.ChartPermissionId))
 	}
 	// 获取二级品种的权限,并建立映射
-	chartPermissionList2, err := models.GetParentChartPermissionListByIds(chartPermissionIds)
+	chartPermissionList2, err := models.GetChartPermissionListByIds(chartPermissionIds)
 	if err != nil {
 		br.Msg = "获取研报二级品种权限失败"
 		br.ErrMsg = "获取研报二级品种权限失败,Err:" + err.Error()

+ 1 - 1
controllers/wechat.go

@@ -58,7 +58,7 @@ func (this *WeChatController) SendTemplateMsg() {
 		br.Msg = "该研报所在分类未关联品种权限,不能推送"
 		return
 	}
-	chartPermissionList, err := models.GetChartPermissionIdsByIds(reportChartPermissionIdStrs)
+	chartPermissionList, err := models.GetChartPermissionListByIds(reportChartPermissionIdStrs)
 	if err != nil {
 		br.Msg = "获取研报权限失败"
 		br.ErrMsg = "获取研报权限失败,Err:" + err.Error()

+ 28 - 17
models/chart_permission.go

@@ -58,7 +58,7 @@ func GetChartPermissionList() (items []*ChartPermission, err error) {
 	return
 }
 
-// GetChildChartPermissionListById 获取子品种权限列表
+// GetChildChartPermissionListById 根据品种id获取子品种权限列表
 func GetChildChartPermissionListById(id int) (items []*ChartPermission, err error) {
 	o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT * FROM chart_permission WHERE enabled=1 AND product_id=1 AND parent_id=? ORDER BY sort ASC`
@@ -67,7 +67,7 @@ func GetChildChartPermissionListById(id int) (items []*ChartPermission, err erro
 }
 
 // GetChartPermissionListByIds 根据品种ids获取品种权限列表
-func GetChartPermissionIdsByIds(chartPermissionIds []string) (items []*ChartPermission, err error) {
+func GetChartPermissionListByIds(chartPermissionIds []string) (items []*ChartPermission, err error) {
 	// 没有品种权限就返回空
 	if len(chartPermissionIds) == 0 {
 		return
@@ -83,25 +83,36 @@ func GetChartPermissionIdsByIds(chartPermissionIds []string) (items []*ChartPerm
 	return
 }
 
-// GetChildChartPermissionListById 获取品种权限id列表
-func GetChildChartPermissionIdsById(chartPermissionId int) (items []string, err error) {
+// GetChartPermissionById 根据品种id获取品种权限
+func GetChartPermissionById(chartPermissionId int) (item *ChartPermission, err error) {
 	o := orm.NewOrmUsingDB("rddp")
-	sql := `SELECT chart_permission_id FROM chart_permission WHERE enabled=1 AND product_id=1 AND parent_id=? ORDER BY sort ASC`
-	_, err = o.Raw(sql, chartPermissionId).QueryRows(&items)
+	sql := `SELECT * FROM chart_permission WHERE enabled=1 AND product_id=1 AND chart_permission_id=?`
+	err = o.Raw(sql, chartPermissionId).QueryRow(&item)
 	return
 }
 
-// GetChildChartPermissionListById 获取品种权限id列表
-func GetParentChartPermissionListByIds(chartPermissionIds []string) (items []*ChartPermission, err error) {
+// GetChildChartPermissionIdsById 根据品种id获取子品种权限的id列表
+func GetChildChartPermissionIdsById(chartPermissionId int) (items []int, err error) {
 	o := orm.NewOrmUsingDB("rddp")
-	sql := `SELECT * FROM chart_permission 
-	WHERE enabled=1 AND product_id=1 `
-	var idsStr string
-	if len(chartPermissionIds) > 0 {
-		idsStr = strings.Join(chartPermissionIds, ",")
-		sql += fmt.Sprintf(" AND chart_permission_id in (%s) ", idsStr)
-	}
-	sql += ` ORDER BY sort ASC`
-	_, err = o.Raw(sql).QueryRows(&items)
+	sql := `SELECT chart_permission_id FROM chart_permission WHERE enabled=1 AND product_id=1 AND parent_id=? ORDER BY sort ASC`
+	_, err = o.Raw(sql, chartPermissionId).QueryRows(&items)
 	return
 }
+
+// // GetChartPermissionListByIds2 根据品种ids获取品种权限列表
+// func GetChartPermissionListByIds2(chartPermissionIds []string) (items []*ChartPermission, err error) {
+// 	if len(chartPermissionIds) == 0 {
+// 		return
+// 	}
+// 	o := orm.NewOrmUsingDB("rddp")
+// 	sql := `SELECT * FROM chart_permission
+// 	WHERE enabled=1 AND product_id=1 `
+// 	var idsStr string
+// 	if len(chartPermissionIds) > 0 {
+// 		idsStr = strings.Join(chartPermissionIds, ",")
+// 		sql += fmt.Sprintf(" AND chart_permission_id in (%s) ", idsStr)
+// 	}
+// 	sql += ` ORDER BY sort ASC`
+// 	_, err = o.Raw(sql).QueryRows(&items)
+// 	return
+// }

+ 11 - 6
models/chart_permission_search_key_word_mapping.go

@@ -1,6 +1,7 @@
 package models
 
 import (
+	"eta/eta_mini_bridge/utils"
 	"fmt"
 	"strings"
 
@@ -13,7 +14,7 @@ type ChartPermissionSearchKeyWordMapping struct {
 	ClassifyId        int `description:"分类id"`
 }
 
-func GetClassifyIdsListById(chartPermissionId int) (classifyIds []string, err error) {
+func GetClassifyIdsListById(chartPermissionId int) (classifyIds []int, err error) {
 	o := orm.NewOrmUsingDB("rddp")
 	sql := ` SELECT classify_id
 		FROM chart_permission_search_key_word_mapping	
@@ -32,6 +33,9 @@ func GetChartPermissionIdsListByClassifyId(classifyId int) (chartPermissionIds [
 }
 
 func GetChartPermissionIdsListByClassifyIds(classifyIds []string) (items []*ChartPermissionSearchKeyWordMapping, err error) {
+	if len(classifyIds) == 0 {
+		return
+	}
 	o := orm.NewOrmUsingDB("rddp")
 	sql := ` SELECT * FROM chart_permission_search_key_word_mapping	WHERE 1=1 `
 	var idsStr string
@@ -43,16 +47,17 @@ func GetChartPermissionIdsListByClassifyIds(classifyIds []string) (items []*Char
 	return
 }
 
-func GetClassifyIdsListByIds(chartPermissionIds []string) (classifyIds []string, err error) {
+func GetClassifyIdsListByIds(chartPermissionIds []int) (classifyIds []int, err error) {
+	if len(chartPermissionIds) == 0 {
+		return
+	}
 	o := orm.NewOrmUsingDB("rddp")
 	sql := ` SELECT classify_id
 		FROM chart_permission_search_key_word_mapping	
 		WHERE 1=1 `
-	var idsStr string
 	if len(chartPermissionIds) > 0 {
-		idsStr = strings.Join(chartPermissionIds, ",")
-		sql += fmt.Sprintf(" AND chart_permission_id in (%s) ", idsStr)
+		sql += fmt.Sprintf(" AND chart_permission_id in (%s) ", utils.GetOrmReplaceHolder(len(chartPermissionIds)))
 	}
-	_, err = o.Raw(sql).QueryRows(&classifyIds)
+	_, err = o.Raw(sql, chartPermissionIds).QueryRows(&classifyIds)
 	return
 }

+ 41 - 0
models/classify.go

@@ -1,9 +1,33 @@
 package models
 
 import (
+	"eta/eta_mini_bridge/utils"
 	"time"
+
+	"github.com/beego/beego/v2/client/orm"
 )
 
+type Classify struct {
+	Id           int       `description:"分类id"`
+	ClassifyName string    `description:"分类名称"`
+	Sort         int       `json:"-"`
+	ParentId     int       `description:"父级分类id"`
+	CreateTime   time.Time `description:"创建时间"`
+	ModifyTime   time.Time `description:"修改时间"`
+	Level        int       `description:"分类层级"`
+}
+
+type ClassifyView struct {
+	Id           int             `description:"分类id"`
+	ClassifyName string          `description:"分类名称"`
+	Sort         int             `json:"-"`
+	ParentId     int             `description:"父级分类id"`
+	CreateTime   time.Time       `description:"创建时间"`
+	ModifyTime   time.Time       `description:"修改时间"`
+	Level        int             `description:"分类层级"`
+	Child        []*ClassifyView `description:"子分类"`
+}
+
 type ClassifyDetail struct {
 	ClassifyId     int       `description:"分类id"`
 	ClassifyName   string    `description:"分类名称"`
@@ -22,3 +46,20 @@ type ClassifyDetail struct {
 	HomeImgUrl     string    `description:"首页配图"`
 	Stage          int       `description:"最新期数"`
 }
+
+func GetClassifyListByIds(ids []int) (items []*ClassifyView, err error) {
+	if len(ids) == 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `SELECT * FROM classify WHERE id IN (` + utils.GetOrmReplaceHolder(len(ids)) + `)`
+	_, err = o.Raw(sql, ids).QueryRows(&items)
+	return
+}
+
+func GetClassifyById(id int) (item *ClassifyView, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `SELECT * FROM classify WHERE id = ?`
+	err = o.Raw(sql, id).QueryRow(&item)
+	return
+}

+ 13 - 15
models/report.go

@@ -1,8 +1,8 @@
 package models
 
 import (
+	"eta/eta_mini_bridge/utils"
 	"fmt"
-	"strings"
 	"time"
 
 	"github.com/beego/beego/v2/client/orm"
@@ -91,23 +91,25 @@ func GetReportRecentList(startSize, pageSize int) (items []*ReportList, err erro
 	return
 }
 
-func GetReportCountByClassifyIds(classifyIds []string, condition string) (count int, err error) {
+func GetReportCountByClassifyIds(classifyIds []int, condition string) (count int, err error) {
+	if len(classifyIds) == 0 {
+		return
+	}
 	o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT  COUNT(*) AS count  FROM report AS a
 			WHERE (a.state=2 OR a.state=6) AND a.classify_id_second IN (%s) `
-	var reportIdsStr string
-	if len(classifyIds) > 0 {
-		reportIdsStr = strings.Join(classifyIds, ",")
-		sql = fmt.Sprintf(sql, reportIdsStr)
-	}
+	sql = fmt.Sprintf(sql, utils.GetOrmReplaceHolder(len(classifyIds)))
 	if condition != "" {
 		sql += condition
 	}
-	err = o.Raw(sql).QueryRow(&count)
+	err = o.Raw(sql, classifyIds).QueryRow(&count)
 	return
 }
 
-func GetReportListByClassifyIds(classifyIds []string, condition string, startSize, pageSize int) (items []*ReportList, err error) {
+func GetReportListByClassifyIds(classifyIds []int, condition string, startSize, pageSize int) (items []*ReportList, err error) {
+	if len(classifyIds) == 0 {
+		return
+	}
 	o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT a.id,a.add_type,a.classify_id_first,a.classify_name_first,a.classify_id_second,a.classify_name_second,a.title,a.abstract,a.author,a.frequency,
 			a.create_time,a.modify_time,a.state,a.publish_time,a.stage,a.msg_is_send,b.id AS classify_id,b.classify_name,b.descript,b.report_author,b.author_descript,
@@ -117,16 +119,12 @@ func GetReportListByClassifyIds(classifyIds []string, condition string, startSiz
 			INNER JOIN  classify AS b ON a.classify_id_second=b.id
 			WHERE (a.state=2 OR a.state=6) AND a.classify_id_second IN (%s) `
 
-	var reportIdsStr string
-	if len(classifyIds) > 0 {
-		reportIdsStr = strings.Join(classifyIds, ",")
-		sql = fmt.Sprintf(sql, reportIdsStr)
-	}
+	sql = fmt.Sprintf(sql, utils.GetOrmReplaceHolder(len(classifyIds)))
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` ORDER BY  a.publish_time DESC LIMIT ?,? `
-	_, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
+	_, err = o.Raw(sql, classifyIds, startSize, pageSize).QueryRows(&items)
 	return
 }
 

+ 1 - 0
models/response/report.go

@@ -19,6 +19,7 @@ type ReportDetailResp struct {
 	Report *models.ReportDetail `description:"报告"`
 	Status int                  `description:"报告状态"`
 }
+
 type ReportSearchResp struct {
 	Paging *paging.PagingItem
 	List   []*models.ReportCollectListItem

+ 1 - 1
models/user_chart_permission_mapping.go

@@ -8,7 +8,7 @@ type UserChartPermissionMapping struct {
 	ChartPermissionId            int `description:"品种id"`
 }
 
-func GetChartPermissionIdByUserId(UserId int) (items []string, err error) {
+func GetChartPermissionIdByUserId(UserId int) (items []int, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT chart_permission_id FROM user_chart_permission_mapping WHERE user_id=?`
 	_, err = o.Raw(sql, UserId).QueryRows(&items)

+ 27 - 0
routers/commentsRouter.go

@@ -34,6 +34,33 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_mini_bridge/controllers:ChartPermissionController"] = append(beego.GlobalControllerRouter["eta/eta_mini_bridge/controllers:ChartPermissionController"],
+        beego.ControllerComments{
+            Method: "DetailByClassify",
+            Router: `/classify/detail`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_mini_bridge/controllers:ChartPermissionController"] = append(beego.GlobalControllerRouter["eta/eta_mini_bridge/controllers:ChartPermissionController"],
+        beego.ControllerComments{
+            Method: "ClassifyList",
+            Router: `/classify/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_mini_bridge/controllers:ChartPermissionController"] = append(beego.GlobalControllerRouter["eta/eta_mini_bridge/controllers:ChartPermissionController"],
+        beego.ControllerComments{
+            Method: "ClassifyTree",
+            Router: `/classify/tree`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_mini_bridge/controllers:ChartPermissionController"] = append(beego.GlobalControllerRouter["eta/eta_mini_bridge/controllers:ChartPermissionController"],
         beego.ControllerComments{
             Method: "Detail",

+ 32 - 0
services/chart_permission.go

@@ -0,0 +1,32 @@
+package services
+
+import (
+	"errors"
+	"eta/eta_mini_bridge/utils"
+	"strconv"
+)
+
+func CheckUserPermission(userId int) (status int, err error) {
+	if userId > 0 {
+		user, err := GetUserItemByUserId(userId)
+		if err != nil {
+			status = 40001
+			if err.Error() == utils.ErrNoRow() {
+				err = errors.New("用户信息不存在:userId:" + strconv.Itoa(userId))
+				return status, err
+			}
+			err = errors.New("获取用户信息失败:userId:" + strconv.Itoa(userId) + ";Err:" + err.Error())
+			return status, err
+		}
+		if user == nil {
+			status = 40001
+			err = errors.New("获取用户信息失败:userId:" + strconv.Itoa(userId))
+			return status, err
+		}
+
+	} else {
+		status = 40001
+		err = errors.New("用户id错误")
+	}
+	return
+}

+ 11 - 0
utils/common.go

@@ -101,3 +101,14 @@ func Unique[T comparable](slice []T) []T {
 	}
 	return unique
 }
+
+func GetOrmReplaceHolder(num int) string {
+	var stringBuffer strings.Builder
+	for i := 0; i < num; i++ {
+		stringBuffer.WriteString("?")
+		if i != num-1 {
+			stringBuffer.WriteString(",")
+		}
+	}
+	return stringBuffer.String()
+}