Browse Source

微路演视频音频排序

xingzai 2 years ago
parent
commit
294c18bfa6
2 changed files with 51 additions and 15 deletions
  1. 10 10
      models/micro_roadshow.go
  2. 41 5
      services/micro_roadshow.go

+ 10 - 10
models/micro_roadshow.go

@@ -51,11 +51,11 @@ func GetMicroRoadShowAudioPageList(startSize, pageSize int, condition string, pa
 	}
 	sql += ` ORDER BY publish_time DESC`
 
-	totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z `
-	err = o.Raw(totalSql, pars).QueryRow(&total)
-	if err != nil {
-		return
-	}
+	//totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z `
+	//err = o.Raw(totalSql, pars).QueryRow(&total)
+	//if err != nil {
+	//	return
+	//}
 
 	sql += ` LIMIT ?,?`
 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
@@ -122,11 +122,11 @@ func GetMicroRoadShowVideoPageList(startSize, pageSize int, condition string, pa
 		sql += conditionAct
 	}
 	sql += ` ORDER BY publish_time DESC`
-	totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z `
-	err = o.Raw(totalSql, pars, parsAct).QueryRow(&total)
-	if err != nil {
-		return
-	}
+	//totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z `
+	//err = o.Raw(totalSql, pars, parsAct).QueryRow(&total)
+	//if err != nil {
+	//	return
+	//}
 
 	sql += ` LIMIT ?,?`
 	_, err = o.Raw(sql, pars, parsAct, startSize, pageSize).QueryRows(&list)

+ 41 - 5
services/micro_roadshow.go

@@ -3,7 +3,6 @@ package services
 import (
 	"encoding/json"
 	"errors"
-	"fmt"
 	"hongze/hongze_cygx/models"
 	"hongze/hongze_cygx/utils"
 	"math"
@@ -362,6 +361,9 @@ func GetMicroRoadShowPageListV8(pageSize, currentIndex, audioId, videoId, activi
 		err = errors.New("获取微路演列表数据音视频配比失败, Err: " + e.Error())
 		return
 	}
+
+	audioPageNumSet := audioPageNum
+	videoPageNumSet := videoPageNum
 	audioTotal := 0
 	audioStartSize := 0
 	videoTotal := 0
@@ -457,22 +459,39 @@ func GetMicroRoadShowPageListV8(pageSize, currentIndex, audioId, videoId, activi
 			return
 		}
 	}
-	fmt.Println("audioTotal", audioTotal)
-	fmt.Println("videoTotal", videoTotal)
+	//如果音频数量不够,处理视频的分页
+	if currentIndex*audioPageNumSet > audioTotal {
+		if audioTotal-(currentIndex-1)*audioPageNumSet > 0 {
+			videoPageNum = pageSize - (audioTotal - (currentIndex-1)*audioRatio)
+		} else {
+			videoPageNum = pageSize
+			videoStartSize = pageSize*(currentIndex-1) - audioTotal
+		}
+	}
+
+	//如果视频数量不够,处理音频的分页
+	if currentIndex*videoPageNumSet > videoTotal {
+		if videoTotal-(currentIndex-1)*videoPageNumSet > 0 {
+			audioPageNum = pageSize - (videoTotal - (currentIndex-1)*videoPageNumSet)
+		} else {
+			audioPageNum = pageSize
+			audioStartSize = pageSize*(currentIndex-1) - videoTotal
+		}
+	}
 
 	wg := sync.WaitGroup{}
 	wg.Add(2)
 	// 分页查询音频
 	go func() {
 		defer wg.Done()
-		audioTotal, audioList, e = models.GetMicroRoadShowAudioPageList(audioStartSize, audioPageNum, audioCond, audioPars)
+		_, audioList, e = models.GetMicroRoadShowAudioPageList(audioStartSize, audioPageNum, audioCond, audioPars)
 	}()
 
 	// 分页查询视频
 	go func() {
 		defer wg.Done()
 		// 如果筛选条件为指定音频ID则不做视频查询
-		videoTotal, videoList, e = models.GetMicroRoadShowVideoPageList(videoStartSize, videoPageNum, videoCond, videoPars, videoCondAct, videoParsAct)
+		_, videoList, e = models.GetMicroRoadShowVideoPageList(videoStartSize, videoPageNum, videoCond, videoPars, videoCondAct, videoParsAct)
 	}()
 	wg.Wait()
 
@@ -504,6 +523,23 @@ func GetMicroRoadShowPageListV8(pageSize, currentIndex, audioId, videoId, activi
 			videoNum += 1
 		}
 	}
+
+	//如果视频的数量不够,那么空缺的部分用音频来补位
+	if len(audioList) > pageSize-videoPageNumSet {
+		for k, v := range audioList {
+			if k >= pageSize-videoPageNumSet {
+				respList = append(respList, v)
+			}
+		}
+	}
+	//如果音频的数量不够,那么空缺的部分用视频来补位
+	if len(videoList) > pageSize-audioPageNumSet {
+		for k, v := range videoList {
+			if k >= pageSize-audioPageNumSet {
+				respList = append(respList, v)
+			}
+		}
+	}
 	total = audioTotal + videoTotal
 	return
 }