123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- package media
- import (
- logger "eta_mini_ht_api/common/component/log"
- "eta_mini_ht_api/common/exception"
- "eta_mini_ht_api/common/utils/page"
- stringUtils "eta_mini_ht_api/common/utils/string"
- mediaService "eta_mini_ht_api/domian/media"
- "strings"
- "sync"
- )
- func GetTotalPageCount(mediaType string) (count int64, latestId int64) {
- if mediaType == "" {
- return
- }
- return mediaService.GetTotalPageCount(mediaType)
- }
- func GetTotalPageCountByAnalystId(mediaType string, analystId int) (total int64, latestId int64) {
- if mediaType == "" {
- return
- }
- return mediaService.GetTotalPageCountByAnalystId(mediaType, analystId)
- }
- func GetTotalPageCountByPermissionIds(mediaType string, permissionIds []int) (total int64, latestId int64, ids []int) {
- if mediaType == "" {
- return
- }
- if len(permissionIds) == 0 {
- total, latestId = mediaService.GetTotalPageCount(mediaType)
- ids = []int{}
- return
- }
- return mediaService.GetMediaPermissionMappingByPermissionIds(mediaType, permissionIds)
- }
- func SearchMaxMediaId(mediaType string, key string) (total int64, latestId int64) {
- return mediaService.SearchMaxMediaId(mediaType, key)
- }
- func GetMediaById(mediaType string, mediaId int) (media mediaService.MediaDTO, err error) {
- media, err = mediaService.GetMediaById(mediaType, mediaId)
- if err != nil {
- err = exception.New(exception.MediaFoundFailed)
- }
- return
- }
- func GetMediaPageByAnalystId(mediaType string, pageInfo page.PageInfo, analystId int) (list []mediaService.MediaDTO, err error) {
- list, err = mediaService.GetMediaPageByAnalystId(mediaType, pageInfo, analystId)
- if err != nil {
- err = exception.New(exception.GetAnalystMediaListFailed)
- return
- }
- //并发获取媒体的标签
- var wg sync.WaitGroup
- wg.Add(len(list))
- for i := 0; i < len(list); i++ {
- go func(media *mediaService.MediaDTO) {
- defer wg.Done()
- idStr := strings.Split(media.PermissionIDs, ",")
- var ids []int
- ids, err = stringUtils.StringToIntSlice(idStr)
- if err != nil {
- logger.Error("品种名称列表转换失败:%v", err)
- }
- media.PermissionNames = getMediaPermissionNames(ids)
- }(&list[i])
- }
- wg.Wait()
- if err != nil {
- err = exception.New(exception.QueryReportPageFailed)
- }
- return
- }
- func GetMediaPageByIds(mediaType string, pageInfo page.PageInfo, mediaIds []int) (list []mediaService.MediaDTO, err error) {
- list, err = mediaService.GetMediaPageByIds(mediaType, pageInfo, mediaIds)
- if err != nil {
- err = exception.New(exception.GetMediaListFailed)
- return
- }
- //并发获取媒体的标签
- var wg sync.WaitGroup
- wg.Add(len(list))
- for i := 0; i < len(list); i++ {
- go func(media *mediaService.MediaDTO) {
- defer wg.Done()
- idStr := strings.Split(media.PermissionIDs, ",")
- var ids []int
- ids, err = stringUtils.StringToIntSlice(idStr)
- if err != nil {
- logger.Error("品种名称列表转换失败:%v", err)
- }
- media.PermissionNames = getMediaPermissionNames(ids)
- }(&list[i])
- }
- wg.Wait()
- if err != nil {
- err = exception.New(exception.QueryReportPageFailed)
- }
- return
- }
- func getMediaPermissionNames(id []int) (labels []string) {
- permissions, err := mediaService.GetPermissionsByIds(id)
- if err != nil {
- logger.Error("查询品种名称列表失败:%v", err)
- labels = []string{}
- return
- }
- for _, permission := range permissions {
- labels = append(labels, permission.Name)
- }
- return
- }
- // stringToIntSlice 将一个包含数字字符串的切片转换为整数切片
- func SearchMediaList(mediaType string, key string, pageInfo page.PageInfo) (medias []mediaService.MediaDTO, err error) {
- offset := page.StartIndex(pageInfo.Current, pageInfo.PageSize)
- medias, err = mediaService.SearchMediaList(mediaType, key, offset, pageInfo.PageSize, pageInfo.LatestId)
- var wg sync.WaitGroup
- wg.Add(len(medias))
- for i := 0; i < len(medias); i++ {
- go func(media *mediaService.MediaDTO) {
- defer wg.Done()
- idStr := strings.Split(media.PermissionIDs, ",")
- var ids []int
- ids, err = stringUtils.StringToIntSlice(idStr)
- if err != nil {
- logger.Error("获取品种列表失败:%v", err)
- }
- media.PermissionNames = getMediaPermissionNames(ids)
- }(&medias[i])
- }
- wg.Wait()
- if err != nil {
- err = exception.New(exception.SearchReportPageFailed)
- }
- return
- }
|