Browse Source

视频排序

xingzai 2 years ago
parent
commit
bdc40586c2
2 changed files with 91 additions and 122 deletions
  1. 83 0
      models/micro_roadshow.go
  2. 8 122
      services/micro_roadshow.go

+ 83 - 0
models/micro_roadshow.go

@@ -133,6 +133,89 @@ func GetMicroRoadShowVideoPageList(startSize, pageSize int, condition string, pa
 	return
 }
 
+// GetMicroRoadShowVideoPageList 获取微路演视频列表-分页
+func GetMicroRoadShowVideoPageListV8(startSize, pageSize int, condition string, pars []interface{}, conditionAct string, parsAct []interface{}, conditionAudio string, parsAudio []interface{}, audioId, videoId, activityVideoId int) (total int, list []*MicroRoadShowPageList, err error) {
+	o := orm.NewOrm()
+	var sql string
+	if audioId+activityVideoId == 0 {
+		sql += `SELECT
+			video_id AS id,
+			video_name AS title,
+			video_url AS resource_url,
+			2 AS type,
+			publish_date AS publish_time,
+			chart_permission_id,
+			chart_permission_name,
+			video_duration AS play_seconds,
+			img_url AS background_img,
+			"" as  activity_id
+		FROM
+			cygx_micro_roadshow_video 
+		WHERE
+			publish_status = 1 `
+		if condition != `` {
+			sql += condition
+		}
+	}
+	if audioId+videoId+activityVideoId == 0 {
+		sql += `  UNION ALL `
+	}
+
+	if audioId+videoId == 0 {
+		sql += `
+		SELECT
+			video_id AS id,
+			video_name AS title,
+			video_url AS resource_url,
+			2 AS type,
+		art.activity_time as publish_time,
+			art.chart_permission_id,
+			art.chart_permission_name,
+			"" AS play_seconds,
+			"" AS background_img,
+			v.activity_id
+		FROM
+			cygx_activity_video as v
+			INNER JOIN cygx_activity as art on art.activity_id = v.activity_id WHERE 1= 1  `
+		if conditionAct != `` {
+			sql += conditionAct
+		}
+	}
+	if audioId+videoId+activityVideoId == 0 {
+		sql += `  UNION ALL `
+	}
+
+	if videoId+activityVideoId == 0 {
+		sql += `
+			SELECT
+			a.activity_voice_id AS id,
+			a.voice_name AS title,
+			a.voice_url AS resource_url,
+			1 AS type,
+			b.activity_time AS publish_time,
+			b.chart_permission_id,
+			b.chart_permission_name,
+			a.voice_play_seconds AS play_seconds,
+			a.img_url AS background_img,
+			a.activity_id 
+		FROM
+			cygx_activity_voice AS a
+			JOIN cygx_activity AS b ON a.activity_id = b.activity_id  WHERE 1= 1  `
+		if conditionAudio != `` {
+			sql += conditionAudio
+		}
+	}
+	sql += ` ORDER BY publish_time DESC`
+	totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z `
+	err = o.Raw(totalSql, pars, parsAct, parsAudio).QueryRow(&total)
+	if err != nil {
+		return
+	}
+	sql += ` LIMIT ?,?`
+	_, err = o.Raw(sql, pars, parsAct, parsAudio, startSize, pageSize).QueryRows(&list)
+	return
+}
+
 // GetMicroRoadShowVideoTotal 获取微路演视频总量
 func GetMicroRoadShowVideoTotal(condition string, pars []interface{}, conditionAct string, parsAct []interface{}) (total int, err error) {
 	o := orm.NewOrm()

+ 8 - 122
services/micro_roadshow.go

@@ -356,28 +356,11 @@ func GetHomeNewestList(userId, companyId, startSize, pageSize int, condition str
 func GetMicroRoadShowPageListV8(pageSize, currentIndex, audioId, videoId, activityVideoId int, keywords string) (respList []*models.MicroRoadShowPageList, total int, err error) {
 	var e error
 	// 根据每页数据量获取音视频配比
-	audioRatio, videoRatio, audioPageNum, videoPageNum, sliceNum, e := getMicroRoadShowDataRatio(pageSize)
-	if e != nil {
-		err = errors.New("获取微路演列表数据音视频配比失败, Err: " + e.Error())
-		return
-	}
-
-	audioPageNumSet := audioPageNum
-	videoPageNumSet := videoPageNum
-	audioTotal := 0
-	audioStartSize := 0
-	videoTotal := 0
-	videoStartSize := 0
-	audioList := make([]*models.MicroRoadShowPageList, 0)
+	startSize := utils.StartIndex(currentIndex, pageSize)
 	videoList := make([]*models.MicroRoadShowPageList, 0)
 	if keywords != "" {
 		keywords = "%" + keywords + "%"
 	}
-	// 查询指定音频/视频时, 调整比例为1方便后面组合数据
-	if audioId > 0 || videoId > 0 || activityVideoId > 0 {
-		audioRatio = 1
-		videoRatio = 1
-	}
 
 	//音频的查询
 	var audioCond string
@@ -400,11 +383,7 @@ func GetMicroRoadShowPageListV8(pageSize, currentIndex, audioId, videoId, activi
 			audioCond += ` AND a.activity_voice_id = ?`
 			audioPars = append(audioPars, audioId)
 		}
-		if currentIndex > 1 {
-			audioStartSize = (currentIndex - 1) * audioPageNum
-		}
 	}
-
 	//视频的处理
 	var videoCond string
 	var videoCondAct string
@@ -435,111 +414,18 @@ func GetMicroRoadShowPageListV8(pageSize, currentIndex, audioId, videoId, activi
 		if activityVideoId > 0 {
 			videoCond += ` AND video_id = 0 `
 		}
-
-		endTime := time.Now().AddDate(0, 0, -30).Format("2006-01-02 15:04:05")
-		videoCondAct += ` AND art.activity_time > ? `
-		videoParsAct = append(videoParsAct, endTime)
-		videoCond += ` AND publish_status = 1`
-		if currentIndex > 1 {
-			videoStartSize = (currentIndex - 1) * videoPageNum
-		}
-	}
-
-	if audioCond != "" {
-		audioTotal, e = models.GetMicroRoadShowAudioTotal(audioCond, audioPars)
-		if e != nil {
-			err = errors.New("获取微路演音频数量失败, Err: " + e.Error())
-			return
-		}
-	}
-	if videoCond != "" {
-		videoTotal, e = models.GetMicroRoadShowVideoTotal(videoCond, videoPars, videoCondAct, videoParsAct)
-		if e != nil {
-			err = errors.New("获取微路演音频数量失败, Err: " + e.Error())
-			return
-		}
-	}
-	//如果音频数量不够,处理视频的分页
-	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
+		if videoId == 0 {
+			endTime := time.Now().AddDate(0, 0, -30).Format("2006-01-02 15:04:05")
+			videoCondAct += ` AND art.activity_time > ? `
+			videoParsAct = append(videoParsAct, endTime)
 		}
+		videoCond += ` AND publish_status = 1`
 	}
-
-	wg := sync.WaitGroup{}
-	wg.Add(2)
-	// 分页查询音频
-	go func() {
-		defer wg.Done()
-		_, audioList, e = models.GetMicroRoadShowAudioPageList(audioStartSize, audioPageNum, audioCond, audioPars)
-	}()
-
-	// 分页查询视频
-	go func() {
-		defer wg.Done()
-		// 如果筛选条件为指定音频ID则不做视频查询
-		_, videoList, e = models.GetMicroRoadShowVideoPageList(videoStartSize, videoPageNum, videoCond, videoPars, videoCondAct, videoParsAct)
-	}()
-	wg.Wait()
-
+	total, videoList, e = models.GetMicroRoadShowVideoPageListV8(startSize, pageSize, videoCond, videoPars, videoCondAct, videoParsAct, audioCond, audioPars, audioId, videoId, activityVideoId)
 	if e != nil {
 		err = errors.New("获取微路演音视频列表失败, Err: " + e.Error())
 		return
 	}
-
-	// 按比例组合列表
-	audioNum := 0
-	videoNum := 0
-	audioLen := len(audioList)
-	videoLen := len(videoList)
-	for i := 0; i < sliceNum; i++ {
-		// 音频-每次取对应比例的数据直至取完
-		for a := 0; a < audioRatio; a++ {
-			if audioNum >= audioLen {
-				break
-			}
-			respList = append(respList, audioList[audioNum])
-			audioNum += 1
-		}
-		// 视频
-		for b := 0; b < videoRatio; b++ {
-			if videoNum >= videoLen {
-				break
-			}
-			respList = append(respList, videoList[videoNum])
-			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
+	respList = videoList
 	return
 }