ソースを参照

fix: 图表上下张

hsun 3 年 前
コミット
599e736aeb
2 ファイル変更40 行追加49 行削除
  1. 39 49
      controller/chart/my_chart.go
  2. 1 0
      services/chart/my_chart.go

+ 39 - 49
controller/chart/my_chart.go

@@ -1,7 +1,6 @@
 package chart
 
 import (
-	"fmt"
 	"github.com/gin-gonic/gin"
 	"hongze/hongze_yb/controller/response"
 	"hongze/hongze_yb/models/response/my_chart"
@@ -417,8 +416,8 @@ func GetChartBeforeAndNext(c *gin.Context) {
 		response.Fail("参数有误:图表分类ID", c)
 		return
 	}
-	//myChartClassifyId, _ := strconv.Atoi(reqMyChartClasifyId)
 
+	// 当前图表
 	myChartInfo, err := myChartModel.GetMyChartById(myChartId, myChartClassifyId)
 	if err != nil {
 		if err == utils.ErrNoRow {
@@ -429,8 +428,7 @@ func GetChartBeforeAndNext(c *gin.Context) {
 		return
 	}
 
-	// 1.获取当前图表所在分类的所有图表信息
-	//myChartClassifyId := myChartInfo.MyChartClassifyId
+	// 获取当前图表所在分类的所有图表信息
 	myChartList, err := myChartClassifyMappingModel.GetMyChartSortInfoList(myChartClassifyId, 2)
 	// 找出当前图表前一张及后一张,当前图为最前一张或最后一张时需要取其他分类的图
 	var currentIndex int
@@ -441,11 +439,8 @@ func GetChartBeforeAndNext(c *gin.Context) {
 			break
 		}
 	}
-
 	var beforeChart, afterChart *myChartClassifyMappingModel.MyChartSortInfo
 	beforeIndex := currentIndex - 1
-	fmt.Println("currentIndex:", currentIndex)
-	fmt.Println("beforeIndex:", beforeIndex)
 	if beforeIndex >= 0 {
 		// 存在同分类上一张
 		beforeChart = myChartList[beforeIndex]
@@ -466,46 +461,18 @@ func GetChartBeforeAndNext(c *gin.Context) {
 			response.FailMsg("获取失败", "获取图表分类失败, Err:" + err.Error(), c)
 			return
 		}
-		// 合并公共及私有分类并去重
+		// 合并公共及私有分类
 		var classifyList []*my_chart_classify.MyChartClassify
-		var myChartClassifyIds []int
 		for i := 0; i < len(publicClassify); i++ {
-			exist := false
-			for _, cid := range myChartClassifyIds{
-				if publicClassify[i].MyChartClassifyId == cid {
-					exist = true
-					break
-				}
-			}
-			if exist {
-				continue
-			} else {
-				classifyList = append(classifyList, publicClassify[i])
-			}
+			classifyList = append(classifyList, publicClassify[i])
 		}
 		for i := 0; i < len(privateClassify); i++ {
-			exist := false
-			for _, cid := range myChartClassifyIds{
-				if privateClassify[i].MyChartClassifyId == cid {
-					exist = true
-					break
-				}
-			}
-			if exist {
-				continue
-			} else {
-				classifyList = append(classifyList, privateClassify[i])
-			}
+			classifyList = append(classifyList, privateClassify[i])
 		}
-
 		// 获取当前图表分类在所有分类中的位置
 		var currentClassifyIndex int
 		for indexClassify, itemClassify := range classifyList {
-			//fmt.Println("classifyList:", *itemClassify)
-			//fmt.Println("classifyList-myChartClassifyId:", myChartClassifyId)
-			fmt.Println("classifyList-MyChartClassifyId:", itemClassify.MyChartClassifyId)
 			itemClassifyId := strconv.Itoa(itemClassify.MyChartClassifyId)
-			//if strings.Contains(myChartClassifyId, itemClassifyId) {
 			if myChartClassifyId == itemClassifyId {
 				currentClassifyIndex = indexClassify
 				break
@@ -514,20 +481,30 @@ func GetChartBeforeAndNext(c *gin.Context) {
 		lastClassifyIndex := len(classifyList) - 1
 
 		// 若图表为分类第一张,则取上一个分类最后一张作为上一张返回
-		fmt.Println("currentClassifyIndex:", currentClassifyIndex)
 		beforeClassifyIndex := currentClassifyIndex - 1
-		fmt.Println("len-classifyList", len(classifyList))
 		if beforeIndex < 0 && len(classifyList) > 0 && beforeClassifyIndex >= 0 {
-			fmt.Println("获取上一个分类图表--start")
 			beforeClassifyIdStr := strconv.Itoa(classifyList[beforeClassifyIndex].MyChartClassifyId)
 			beforeClassifyChartList, tempErr := myChartClassifyMappingModel.GetMyChartSortInfoList(beforeClassifyIdStr, 1)
 			if tempErr != nil {
-				response.FailMsg("获取失败", "获取上一个分类图表信息失败, Err:" + tempErr.Error(), c)
+				response.FailMsg("获取失败", "获取上一个分类图表信息失败4101, Err:" + tempErr.Error(), c)
 				return
 			}
-			if len(beforeClassifyChartList) > 0 {
-				beforeChart = beforeClassifyChartList[0]
-			}
+			// 上一个分类没有图则继续向上取最后一张直到所取的分类为第一个分类,依旧无图则到顶
+			SearchPrevChart:
+				if len(beforeClassifyChartList) > 0 {
+					beforeChart = beforeClassifyChartList[0]
+				} else {
+					beforeClassifyIndex -= 1
+					if beforeClassifyIndex >= 0 {
+						beforeClassifyIdStr = strconv.Itoa(classifyList[beforeClassifyIndex].MyChartClassifyId)
+						beforeClassifyChartList, tempErr = myChartClassifyMappingModel.GetMyChartSortInfoList(beforeClassifyIdStr, 1)
+						if tempErr != nil {
+							response.FailMsg("获取失败", "获取上一个分类图表信息失败4102, Err:" + tempErr.Error(), c)
+							return
+						}
+						goto SearchPrevChart
+					}
+				}
 		}
 		// 若图表为分类最后一张,则取下一个分类第一张作为下一张返回
 		afterClassifyIndex := currentClassifyIndex + 1
@@ -535,12 +512,25 @@ func GetChartBeforeAndNext(c *gin.Context) {
 			afterClassifyIdStr := strconv.Itoa(classifyList[afterClassifyIndex].MyChartClassifyId)
 			afterClassifyChartList, tempErr := myChartClassifyMappingModel.GetMyChartSortInfoList(afterClassifyIdStr, 2)
 			if tempErr != nil {
-				response.FailMsg("获取失败", "获取下一个分类图表信息失败, Err:" + tempErr.Error(), c)
+				response.FailMsg("获取失败", "获取下一个分类图表信息失败4103, Err:" + tempErr.Error(), c)
 				return
 			}
-			if len(afterClassifyChartList) > 0 {
-				afterChart = afterClassifyChartList[0]
-			}
+			// 下一个分类没有图则继续向下取第一张直到所取的分类为最后一个分类,依旧无图则到底
+			SearchNextChart:
+				if len(afterClassifyChartList) > 0 {
+					afterChart = afterClassifyChartList[0]
+				} else {
+					afterClassifyIndex += 1
+					if afterClassifyIndex <= lastClassifyIndex {
+						afterClassifyIdStr = strconv.Itoa(classifyList[afterClassifyIndex].MyChartClassifyId)
+						afterClassifyChartList, tempErr = myChartClassifyMappingModel.GetMyChartSortInfoList(afterClassifyIdStr, 2)
+						if tempErr != nil {
+							response.FailMsg("获取失败", "获取下一个分类图表信息失败4104, Err:" + tempErr.Error(), c)
+							return
+						}
+						goto SearchNextChart
+					}
+				}
 		}
 	}
 

+ 1 - 0
services/chart/my_chart.go

@@ -18,6 +18,7 @@ func GetUserChartClassifyListByCondition(userInfo user.UserInfo, publicCondition
 	if isInner {
 		// 内部人员
 		publicCondition["is_public"] = 1
+		publicCondition["admin_id !="] = adminInfo.AdminID
 		privateCondition["admin_id"] = adminInfo.AdminID
 		privateClassify, err = my_chart_classify.GetClassifyListByCondition(privateCondition)
 		if err != nil {