|
@@ -351,3 +351,195 @@ func GetHomeNewestList(userId, companyId, startSize, pageSize int, condition str
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+// GetMicroRoadShowPageList 获取微路演列表添加活动视频 更新与8.1版本
|
|
|
+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)
|
|
|
+ videoList := make([]*models.MicroRoadShowPageList, 0)
|
|
|
+ if keywords != "" {
|
|
|
+ keywords = "%" + keywords + "%"
|
|
|
+ }
|
|
|
+ // 查询指定音频/视频时, 调整比例为1方便后面组合数据
|
|
|
+ if audioId > 0 || videoId > 0 || activityVideoId > 0 {
|
|
|
+ audioRatio = 1
|
|
|
+ videoRatio = 1
|
|
|
+ }
|
|
|
+
|
|
|
+ //音频的查询
|
|
|
+ var audioCond string
|
|
|
+ var audioPars []interface{}
|
|
|
+ // 如果筛选条件为指定视频ID则不做音频查询
|
|
|
+ if videoId > 0 || activityVideoId > 0 {
|
|
|
+ audioCond = ""
|
|
|
+ } else {
|
|
|
+ // 活动已发布且已结束
|
|
|
+ audioCond += ` AND b.publish_status = 1 AND b.active_state = 3`
|
|
|
+ //活动音频,设置有效时间为30天,失效后该活动就不再支持音频回放。有效期起始时间为活动的开始时间
|
|
|
+ endTime := time.Now().AddDate(0, 0, -30).Format("2006-01-02 15:04:05")
|
|
|
+ audioCond += ` AND b.activity_time > ? `
|
|
|
+ audioPars = append(audioPars, endTime)
|
|
|
+ if keywords != "" {
|
|
|
+ audioCond += ` AND a.voice_name LIKE ? OR b.label LIKE ?`
|
|
|
+ audioPars = append(audioPars, keywords, keywords)
|
|
|
+ }
|
|
|
+ if audioId > 0 {
|
|
|
+ audioCond += ` AND a.activity_voice_id = ?`
|
|
|
+ audioPars = append(audioPars, audioId)
|
|
|
+ }
|
|
|
+ if currentIndex > 1 {
|
|
|
+ audioStartSize = (currentIndex - 1) * audioPageNum
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //视频的处理
|
|
|
+ var videoCond string
|
|
|
+ var videoCondAct string
|
|
|
+ var videoPars []interface{}
|
|
|
+ var videoParsAct []interface{}
|
|
|
+ if audioId > 0 {
|
|
|
+ videoCond = ""
|
|
|
+ } else {
|
|
|
+ if keywords != "" {
|
|
|
+ videoCond += ` AND video_name LIKE ?`
|
|
|
+ videoPars = append(videoPars, keywords)
|
|
|
+ videoCondAct += ` AND video_name LIKE ?`
|
|
|
+ videoParsAct = append(videoParsAct, keywords)
|
|
|
+ }
|
|
|
+ if videoId > 0 {
|
|
|
+ videoCond += ` AND video_id = ?`
|
|
|
+ videoPars = append(videoPars, videoId)
|
|
|
+ }
|
|
|
+ if activityVideoId > 0 {
|
|
|
+ videoCondAct += ` AND video_id = ?`
|
|
|
+ videoParsAct = append(videoParsAct, activityVideoId)
|
|
|
+ }
|
|
|
+
|
|
|
+ //如果传了路演的或者活动的视频ID只查询一个
|
|
|
+ if videoId > 0 {
|
|
|
+ videoCondAct += ` AND video_id = 0 `
|
|
|
+ }
|
|
|
+ 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
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ 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()
|
|
|
+
|
|
|
+ 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
|
|
|
+ return
|
|
|
+}
|