|
@@ -367,6 +367,24 @@ func matchRiskLevel(userId int, media mediaService.MediaDTO) (riskLevelMatch str
|
|
|
return
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+func getHighestRiskLevel(permissions []permissionService.PermissionDTO) (riskLevelNum int) {
|
|
|
+ for _, permission := range permissions {
|
|
|
+ pRiskNum, err := parseRiskLevel(permission.RiskLevel)
|
|
|
+ if err != nil {
|
|
|
+ logger.Error("解析风险等级失败:%v", err)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ if riskLevelNum == 0 {
|
|
|
+ riskLevelNum = pRiskNum
|
|
|
+ } else {
|
|
|
+ if riskLevelNum < pRiskNum {
|
|
|
+ riskLevelNum = pRiskNum
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
func getLowestRiskLevel(permissions []permissionService.PermissionDTO) (riskLevelNum int) {
|
|
|
for _, permission := range permissions {
|
|
|
pRiskNum, err := parseRiskLevel(permission.RiskLevel)
|
|
@@ -437,7 +455,12 @@ func GetMediaPageByIds(mediaType string, pageInfo page.PageInfo, mediaIds []int,
|
|
|
logger.Error("品种名称列表转换失败:%v", err)
|
|
|
}
|
|
|
media.PermissionNames = getMediaPermissionNames(ids)
|
|
|
- //permissions, err := getMediaSecondPermissions(ids)
|
|
|
+ permissions, permissionErr := getMediaSecondPermissions(ids)
|
|
|
+ if permissionErr != nil {
|
|
|
+ logger.Error("获取媒体品种信息失败:%v,无法设置媒体风险等级", err)
|
|
|
+ }
|
|
|
+ riskNum := getHighestRiskLevel(permissions)
|
|
|
+ media.RiskLevel = strings.Join([]string{"R", strconv.Itoa(riskNum)}, "")
|
|
|
if !isLogin {
|
|
|
media.Src = ""
|
|
|
}
|
|
@@ -509,7 +532,7 @@ func getMediaPermissionNames(id []int) (labels []string) {
|
|
|
|
|
|
// stringToIntSlice 将一个包含数字字符串的切片转换为整数切片
|
|
|
|
|
|
-func SearchMediaList(mediaType string, key string, mediaIds []int, pageInfo page.PageInfo, isLogin bool) (medias []mediaService.MediaDTO, err error) {
|
|
|
+func SearchMediaList(mediaType string, key string, mediaIds []int, pageInfo page.PageInfo, isLogin bool, userId int) (medias []mediaService.MediaDTO, err error) {
|
|
|
offset := page.StartIndex(pageInfo.Current, pageInfo.PageSize)
|
|
|
medias, err = mediaService.SearchMediaList(mediaType, key, mediaIds, offset, pageInfo.PageSize, pageInfo.LatestId)
|
|
|
var wg sync.WaitGroup
|
|
@@ -524,9 +547,60 @@ func SearchMediaList(mediaType string, key string, mediaIds []int, pageInfo page
|
|
|
logger.Error("获取品种列表失败:%v", err)
|
|
|
}
|
|
|
media.PermissionNames = getMediaPermissionNames(ids)
|
|
|
+ permissions, permissionErr := getMediaSecondPermissions(ids)
|
|
|
+ if permissionErr != nil {
|
|
|
+ logger.Error("获取媒体品种信息失败:%v,无法设置媒体风险等级", err)
|
|
|
+ }
|
|
|
+ riskNum := getHighestRiskLevel(permissions)
|
|
|
+ media.RiskLevel = strings.Join([]string{"R", strconv.Itoa(riskNum)}, "")
|
|
|
if !isLogin {
|
|
|
media.Src = ""
|
|
|
}
|
|
|
+ media.Login = isLogin
|
|
|
+ var productType productDao.MerchantProductType
|
|
|
+ switch media.MediaType {
|
|
|
+ case string(mediaDao.Audio):
|
|
|
+ productType = productDao.Audio
|
|
|
+ case string(mediaDao.Video):
|
|
|
+ productType = productDao.Video
|
|
|
+ default:
|
|
|
+ logger.Error("未知媒体类型:%s", media.MediaType)
|
|
|
+ productType = ""
|
|
|
+ }
|
|
|
+ product, pdErr := productService.GetProductBySourceId(media.MediaId, productType)
|
|
|
+ if pdErr != nil {
|
|
|
+ if errors.Is(pdErr, gorm.ErrRecordNotFound) {
|
|
|
+ media.Price = defaultProductPrice
|
|
|
+ media.IsFree = true
|
|
|
+ media.IsSubscribe = false
|
|
|
+ } else {
|
|
|
+ media.Price = defaultProductPrice
|
|
|
+ media.IsFree = false
|
|
|
+ media.IsSubscribe = false
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+ media.Price = product.Price.String()
|
|
|
+ media.IsFree = false
|
|
|
+ if isLogin {
|
|
|
+ subscribe, subscribeErr := userService.GetUserSubscribe(product.Id, userId)
|
|
|
+ if subscribeErr != nil {
|
|
|
+ media.IsSubscribe = false
|
|
|
+ } else {
|
|
|
+ media.IsSubscribe = subscribe.Status == userDao.SubscribeValid
|
|
|
+ }
|
|
|
+ }
|
|
|
+ pdRiskNum, parseErr := parseRiskLevel(product.RiskLevel)
|
|
|
+ if parseErr != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ rpRiskNum, parseErr := parseRiskLevel(media.RiskLevel)
|
|
|
+ if parseErr != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if rpRiskNum <= pdRiskNum {
|
|
|
+ media.RiskLevel = product.RiskLevel
|
|
|
+ }
|
|
|
}(&medias[i])
|
|
|
}
|
|
|
wg.Wait()
|