Browse Source

处理小程序线上路演显示品种

xiexiaoyuan 2 years ago
parent
commit
94a9ea2d89
1 changed files with 53 additions and 5 deletions
  1. 53 5
      services/community/video.go

+ 53 - 5
services/community/video.go

@@ -121,10 +121,24 @@ func GetRoadVideoList(userInfo user.UserInfo, pageIndex, pageSize, videoId, char
 	if err != nil {
 		return
 	}
+
+	ficcPermissionList, err := chart_permission.GetFiccListExceptTacticByProductId()
+	if err != nil {
+		return
+	}
 	permissionIds := ""
+	validPermissionMap := make(map[string]struct{})
+	ParentPermissionNameMap := make(map[string]string)
+	ParentPermissionChildMap := make(map[string]int)
 	for _, v := range validPermissionList {
 		permissionIds += "'"+strconv.Itoa(v.ChartPermissionID) + "'|"
+		validPermissionMap["'"+strconv.Itoa(v.ChartPermissionID)+"'"] = struct{}{}
 	}
+	for _, v := range ficcPermissionList {
+		ParentPermissionNameMap["'"+strconv.Itoa(int(v.ChartPermissionID))+"'"] = v.ClassifyName
+		ParentPermissionChildMap[v.ClassifyName] += 1
+	}
+
 	if permissionIds == "" {
 		resp.List = list
 		resp.Paging = response.GetPaging(pageIndex, pageSize, 0)
@@ -160,6 +174,7 @@ func GetRoadVideoList(userInfo user.UserInfo, pageIndex, pageSize, videoId, char
 
 	chartPermissionIdSlice := make([]int, 0)
 	chartNameMap := make(map[string]string)
+
 	for _, v := range videoList {
 		tmp := strings.Split(v.ChartPermissionIds, ",")
 		for _, t1 := range tmp {
@@ -178,19 +193,52 @@ func GetRoadVideoList(userInfo user.UserInfo, pageIndex, pageSize, videoId, char
 		}
 	}
 	var chartPermissionNames string
+	var parentPermissionName string
 	for _, v := range videoList {
 		chartPermissionNames = ""
+		parentPermissionName = ""
 		tmpSlice := strings.Split(v.ChartPermissionIds, ",")
 		if len(tmpSlice) > 0 {
+			// 判断是否有跨品种的chartPermissionID
 			for _, cid := range tmpSlice {
-				if name, ok := chartNameMap[cid]; ok {
-					chartPermissionNames += name + ","
+				if p, ok := ParentPermissionNameMap[cid]; ok {
+					if parentPermissionName  == "" {
+						parentPermissionName = p
+					}else if parentPermissionName != p  {
+						parentPermissionName = ""
+						break
+					}
+				}
+			}
+			//如果都是一个品种内,如果全部包含二级品种,则显示一级品种名称,否则展示全部二级品种
+			if parentPermissionName != "" {
+				hasNum := 0
+				for _, cid := range tmpSlice {
+					if _, ok := chartNameMap[cid]; ok {
+						if _, ok1 := validPermissionMap[cid]; ok1 {
+							hasNum += 1
+						}
+					}
+				}
+				if n, ok := ParentPermissionChildMap[parentPermissionName]; ok && n == hasNum {
+					chartPermissionNames = parentPermissionName
+				}
+			}
+			//如果包含跨品种则
+			if chartPermissionNames == "" {
+				for _, cid := range tmpSlice {
+					if name, ok := chartNameMap[cid]; ok {
+						if _, ok1 := validPermissionMap[cid]; ok1 {
+							chartPermissionNames += name + ","
+						}
+					}
+				}
+				if chartPermissionNames != "" {
+					chartPermissionNames = strings.Trim(chartPermissionNames, ",")
 				}
 			}
 		}
-		if chartPermissionNames != "" {
-			chartPermissionNames = strings.Trim(chartPermissionNames, ",")
-		}
+
 		item := &response.RoadVideoItem{
 			RoadVideoID:         v.RoadVideoID,
 			Title:               v.Title,