package services import ( "encoding/json" "errors" "hongze/hongze_clpt/models" "hongze/hongze_clpt/utils" ) // GetMicroRoadShowDefaultImgConfig 获取微路演默认图/分享图配置 func GetMicroRoadShowDefaultImgConfig() (audioMap, videoMap, audioShareMap, videoShareMap map[int]string, err error) { audioMap = make(map[int]string, 0) videoMap = make(map[int]string, 0) audioShareMap = make(map[int]string, 0) videoShareMap = make(map[int]string, 0) key := models.MicroRoadshowDefaultImgKey conf, e := models.GetConfigByCode(key) if e != nil { err = errors.New("获取微路演默认图配置失败, Err: " + e.Error()) return } if conf.ConfigValue == "" { err = errors.New("获取微路演默认图配置有误") return } list := new(models.MicroRoadShowDefaultImgList) if e = json.Unmarshal([]byte(conf.ConfigValue), &list); e != nil { err = errors.New("微路演默认图配置配置值解析失败, Err: " + e.Error()) return } audioList := list.Audio for i := range audioList { audioMap[audioList[i].ChartPermissionId] = audioList[i].ImgUrl audioShareMap[audioList[i].ChartPermissionId] = audioList[i].ShareImg } videoList := list.Video for i := range videoList { videoMap[videoList[i].ChartPermissionId] = videoList[i].ImgUrl videoShareMap[videoList[i].ChartPermissionId] = videoList[i].ShareImg } return } func GetindustryVideo(user *models.WxUserItem, industrialManagementId int) (industryVideo *models.MicroVideoSimpleInfo, AuthInfo *models.UserPermissionAuthInfo, err error) { total, e := models.GetMicroRoadshowVideoByIndustryIdCount(industrialManagementId) if e != nil { err = errors.New("获取产业关联的视频失败,GetMicroRoadshowVideoByIndustryIdCount " + e.Error()) return } if total == 0 { return } // 用户权限 authInfo, permissionArr, e := GetUserRaiPermissionInfo(user.UserId, user.CompanyId) if e != nil { err = errors.New("获取用户权限失败,GetUserRaiPermissionInfo " + e.Error()) return } videoSimple := new(models.MicroVideoSimpleInfo) // 权限 var au *models.UserPermissionAuthInfo video, e := models.GetMicroRoadshowVideoByIndustryId(industrialManagementId) if e != nil { err = errors.New("获取产业关联的视频失败,GetMicroRoadshowVideoByIndustryId " + e.Error()) return } else { videoSimple.Id = video.VideoId videoSimple.Title = "5min【" + video.IndustryName + "】逻辑解析" videoSimple.BackgroundImg = video.ImgUrl videoSimple.DetailImgUrl = video.DetailImgUrl if videoSimple.BackgroundImg == "" { // 获取默认图配置 _, videoMap, _, _, e := GetMicroRoadShowDefaultImgConfig() if e != nil { err = errors.New("获取视频默认配置图失败,GetMicroRoadshowVideoByIndustryId " + e.Error()) return } videoSimple.BackgroundImg = videoMap[video.ChartPermissionId] } videoSimple.PlaySeconds = video.VideoDuration videoSimple.ResourceUrl = video.VideoUrl au = new(models.UserPermissionAuthInfo) au.SellerName = authInfo.SellerName au.SellerMobile = authInfo.SellerMobile au.HasPermission = authInfo.HasPermission au.OperationMode = authInfo.OperationMode if au.HasPermission == 1 { // 非宏观权限进一步判断是否有权限 if video.ChartPermissionId != utils.HONG_GUAN_ID && !utils.InArrayByStr(permissionArr, video.ChartPermissionName) { au.HasPermission = 2 } } // 无权限的弹框提示 if au.HasPermission != 1 { if au.OperationMode == UserPermissionOperationModeCall { au.PopupMsg = UserPermissionPopupMsgCallMicroVideo } else { au.PopupMsg = UserPermissionPopupMsgApplyMicroVideo } videoSimple.ResourceUrl = "" } } industryVideo = videoSimple AuthInfo = au return } // GetindustryVideoDetailById 通过视频ID获取视频详情 func GetindustryVideoDetailById(user *models.WxUserItem, videoId int) (industryVideo *models.MicroVideoSimpleInfo, AuthInfo *models.UserPermissionAuthInfo, err error) { total, e := models.GetMicroRoadshowVideoByVideoIdCount(videoId) if e != nil { err = errors.New("获取产业关联的视频失败,GetMicroRoadshowVideoByIndustryIdCount " + e.Error()) return } if total == 0 { err = errors.New("视频不存在,或已取消发布") return } // 用户权限 authInfo, permissionArr, e := GetUserRaiPermissionInfo(user.UserId, user.CompanyId) if e != nil { err = errors.New("获取用户权限失败,GetUserRaiPermissionInfo " + e.Error()) return } videoSimple := new(models.MicroVideoSimpleInfo) // 权限 var au *models.UserPermissionAuthInfo video, e := models.GetMicroRoadshowVideoById(videoId) if e != nil { err = errors.New("获取产业关联的视频失败,GetMicroRoadshowVideoByIndustryId " + e.Error()) return } else { videoSimple.Id = video.VideoId videoSimple.Title = "5min【" + video.IndustryName + "】逻辑解析" videoSimple.BackgroundImg = video.ImgUrl videoSimple.DetailImgUrl = video.DetailImgUrl if videoSimple.BackgroundImg == "" { // 获取默认图配置 _, videoMap, _, _, e := GetMicroRoadShowDefaultImgConfig() if e != nil { err = errors.New("获取视频默认配置图失败,GetMicroRoadshowVideoByIndustryId " + e.Error()) return } videoSimple.BackgroundImg = videoMap[video.ChartPermissionId] } videoSimple.PlaySeconds = video.VideoDuration videoSimple.ResourceUrl = video.VideoUrl au = new(models.UserPermissionAuthInfo) au.SellerName = authInfo.SellerName au.SellerMobile = authInfo.SellerMobile au.HasPermission = authInfo.HasPermission au.OperationMode = authInfo.OperationMode if au.HasPermission == 1 { // 非宏观权限进一步判断是否有权限 if video.ChartPermissionId != utils.HONG_GUAN_ID && !utils.InArrayByStr(permissionArr, video.ChartPermissionName) { au.HasPermission = 2 } } // 无权限的弹框提示 if au.HasPermission != 1 { if au.OperationMode == UserPermissionOperationModeCall { au.PopupMsg = UserPermissionPopupMsgCallMicroVideo } else { au.PopupMsg = UserPermissionPopupMsgApplyMicroVideo } videoSimple.ResourceUrl = "" } } industryVideo = videoSimple AuthInfo = au return } // GetMicroRoadshowVideoMap 获取已经发布的微路演的产业ID func GetMicroRoadshowVideoMap() (items map[int]int, err error) { list, e := models.GetMicroRoadshowVideoList() if e != nil && e.Error() != utils.ErrNoRow() { err = errors.New("获取已经发布的微路演的产业失败,GetMicroRoadshowVideoList " + e.Error()) return } mapindustrialId := make(map[int]int) for _, v := range list { mapindustrialId[v.IndustryId] = v.IndustryId } items = mapindustrialId return } // GetMicroRoadShowPageList 获取微路演列表添加活动视频 更新与8.1版本 func GetMicroRoadShowPageListV8(pageSize, currentIndex, audioId, videoId, activityVideoId int, filter, keywords string) (respList []*models.MicroRoadShowPageList, total int, err error) { var e error // 根据每页数据量获取音视频配比 startSize := utils.StartIndex(currentIndex, pageSize) videoList := make([]*models.MicroRoadShowPageList, 0) if keywords != "" { keywords = "%" + keywords + "%" } //音频的查询 var audioCond string var audioPars []interface{} // 如果筛选条件为指定视频ID或只看视频则不做音频查询 // 活动已发布且已结束 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) } //} //视频的处理 var videoCond string var videoCondAct string var videoPars []interface{} var videoParsAct []interface{} if keywords != "" { videoCond += ` AND video_name LIKE ?` videoPars = append(videoPars, keywords) videoCondAct += ` AND ( video_name LIKE ? OR art.label LIKE ? )` videoParsAct = append(videoParsAct, keywords, 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 ` audioCond += ` AND a.activity_voice_id = 0 ` } if activityVideoId > 0 { videoCond += ` AND video_id = 0 ` audioCond += ` AND a.activity_voice_id = 0 ` } if audioId > 0 { videoCondAct += ` AND video_id = 0 ` videoCond += ` AND video_id = 0 ` } if filter == "1" { audioCond += ` AND a.activity_voice_id = 0 ` } else if filter == "2" { videoCondAct += ` AND video_id = 0 ` videoCond += ` AND video_id = 0 ` } videoCond += ` AND publish_status = 1` total, videoList, e = models.GetMicroRoadShowVideoPageListV8(startSize, pageSize, videoCond, videoPars, videoCondAct, videoParsAct, audioCond, audioPars, audioId, videoId, activityVideoId, 0) if e != nil { err = errors.New("获取微路演音视频列表失败, Err: " + e.Error()) return } if total == 0 { return } var activityIds []int for _, v := range videoList { if v.Type == 2 { activityIds = append(activityIds, v.ActivityId) } } if len(activityIds) > 0 { // 获取活动关联的产业 var groupCond string var groupPars []interface{} groupCond += ` AND a.activity_id IN (` + utils.GetOrmInReplace(len(activityIds)) + `)` groupPars = append(groupPars, activityIds) groups, e := models.GetActivityIndustryRelationList(groupCond, groupPars) if e != nil { err = errors.New("获取活动产业关联列表失败, Err: " + e.Error()) return } activityIndustryMap := make(map[int]int, 0) for _, v := range groups { activityIndustryMap[v.ActivityId] = v.IndustrialManagementId } for _, v := range videoList { if v.Type == 2 { v.IndustrialManagementId = activityIndustryMap[v.ActivityId] } } } respList = videoList return } // GetMicroRoadShowPageListIkWord 添加IK分词联想词 获取微路演列表添加活动视频 更新与8.1版本 func CountMicroRoadShowPageListIkWord(audioId, videoId, activityVideoId int, keywordArr []string, filter string) (total int, err error) { var e error var keywords string if len(keywordArr) > 0 { keywords = KeyWordArrSqlRegexpAll(keywordArr) } //if keywords == "" { // return //} //音频的查询 var audioCond string var audioPars []interface{} // 如果筛选条件为指定视频ID或只看视频则不做音频查询 //if videoId > 0 || activityVideoId > 0 || filter == 1 { // audioCond += ` AND a.activity_voice_id = 0 ` //} else { // 活动已发布且已结束 audioCond += ` AND b.publish_status = 1 AND b.active_state = 3` if keywords != "" { audioCond += ` AND (a.voice_name REGEXP ? OR b.label REGEXP ? ) ` audioPars = append(audioPars, keywords, keywords) } if audioId > 0 { audioCond += ` AND a.activity_voice_id = ?` audioPars = append(audioPars, audioId) } //视频的处理 var videoCond string var videoCondAct string var videoPars []interface{} var videoParsAct []interface{} //if audioId > 0 || filter == 2 { // videoCond = "" //} else { if keywords != "" { videoCond += ` AND video_name REGEXP ?` videoPars = append(videoPars, keywords) videoCondAct += ` AND ( video_name REGEXP ? OR art.label REGEXP ? )` videoParsAct = append(videoParsAct, keywords, 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 ` audioCond += ` AND a.activity_voice_id = 0 ` } if activityVideoId > 0 { videoCond += ` AND video_id = 0 ` audioCond += ` AND a.activity_voice_id = 0 ` } if audioId > 0 { videoCondAct += ` AND video_id = 0 ` videoCond += ` AND video_id = 0 ` } if filter == "1" { audioCond += ` AND a.activity_voice_id = 0 ` } else if filter == "2" { videoCondAct += ` AND video_id = 0 ` videoCond += ` AND video_id = 0 ` } videoCond += ` AND publish_status = 1` //} total, e = models.CountMicroRoadShowVideoPageList(videoCond, videoPars, videoCondAct, videoParsAct, audioCond, audioPars) if e != nil { err = errors.New("获取微路演音视频列表失败, Err: " + e.Error()) return } return } // GetMicroRoadShowPageListIkWord 添加IK分词联想词 获取微路演列表添加活动视频 更新与8.1版本 func GetMicroRoadShowPageListIkWord(startSize, pageSize, audioId, videoId, activityVideoId int, keywordArr []string, filter, keywords string) (respList []*models.MicroRoadShowPageList, err error) { videoList := make([]*models.MicroRoadShowPageList, 0) var e error var keywordsIk string if len(keywordArr) > 1 { keywordsIk = KeyWordArrSqlRegexp(keywordArr) } if keywords != "" { keywords = "%" + keywords + "%" } //音频的查询 var audioCond string var audioPars []interface{} // 如果筛选条件为指定视频ID或只看视频则不做音频查询 //if videoId > 0 || activityVideoId > 0 || filter == 1 { // audioCond += ` AND a.activity_voice_id = 0 ` //} else { // 活动已发布且已结束 audioCond += ` AND b.publish_status = 1 AND b.active_state = 3` if keywordsIk != "" { audioCond += ` AND ( a.voice_name REGEXP ? OR b.label REGEXP ? )` audioCond += ` AND ( a.voice_name NOT LIKE ? AND b.label NOT LIKE ? )` audioPars = append(audioPars, keywordsIk, keywordsIk, keywords, keywords) } if audioId > 0 { audioCond += ` AND a.activity_voice_id = ?` audioPars = append(audioPars, audioId) } //视频的处理 var videoCond string var videoCondAct string var videoPars []interface{} var videoParsAct []interface{} //if audioId > 0 || filter == 2 { // videoCond = "" //} else { if keywordsIk != "" { videoCond += ` AND video_name REGEXP ?` videoPars = append(videoPars, keywordsIk) videoCondAct += ` AND ( v.video_name REGEXP ? OR art.label REGEXP ? )` videoCondAct += ` AND ( v.video_name NOT LIKE ? AND art.label NOT LIKE ? )` videoParsAct = append(videoParsAct, keywordsIk, keywordsIk, keywords, 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 ` audioCond += ` AND a.activity_voice_id = 0 ` } if activityVideoId > 0 { videoCond += ` AND video_id = 0 ` audioCond += ` AND a.activity_voice_id = 0 ` } if audioId > 0 { videoCondAct += ` AND video_id = 0 ` videoCond += ` AND video_id = 0 ` } if filter == "1" { audioCond += ` AND a.activity_voice_id = 0 ` } else if filter == "2" { videoCondAct += ` AND video_id = 0 ` videoCond += ` AND video_id = 0 ` } videoCond += ` AND publish_status = 1` //} videoList, e = models.GetMicroRoadShowVideoPageListIkWord(startSize, pageSize, videoCond, videoPars, videoCondAct, videoParsAct, audioCond, audioPars, audioId, videoId, activityVideoId, 0) if e != nil { err = errors.New("获取微路演音视频列表失败分词, Err: " + e.Error()) return } respList = videoList return }