Browse Source

conversrc->converUrl

kobe6258 3 months ago
parent
commit
c95d5f7ae5

+ 6 - 4
controllers/media/media_controller.go

@@ -46,8 +46,9 @@ func (m *MediaController) Search(mediaType string, key string) {
 		//获取当前可以被搜索的报告原始ID
 		var mediaIds []int
 		var mappingRiskLevel string
+		var userRiskStatus string
 		//先要限制查询的id范围
-		pageRes.Total, pageRes.LatestId, mediaIds, mappingRiskLevel = media.RangeSearch(mediaType, isLogin(detailType), userInfo.Id)
+		pageRes.Total, pageRes.LatestId, mediaIds, mappingRiskLevel, userRiskStatus = media.RangeSearch(mediaType, isLogin(detailType), userInfo.Id)
 		if len(mediaIds) == 0 {
 			reports := new(page.PageResult)
 			reports.Data = []reportService.ReportDTO{}
@@ -64,7 +65,7 @@ func (m *MediaController) Search(mediaType string, key string) {
 			pageRes.Total = m.PageInfo.Total
 		}
 		pageRes.TotalPage = page.TotalPages(pageRes.Total, pageRes.PageSize)
-		list, err := media.SearchMediaList(mediaType, key, mediaIds, m.PageInfo, isLogin(detailType), userInfo.Id, mappingRiskLevel)
+		list, err := media.SearchMediaList(mediaType, key, mediaIds, m.PageInfo, isLogin(detailType), userInfo.Id, mappingRiskLevel, userRiskStatus)
 		if err != nil {
 			m.FailedResult("分页搜索媒体列表失败", result)
 			return
@@ -104,7 +105,8 @@ func (m *MediaController) List(mediaType string, permissionIds string) {
 		userInfo := m.Data["user"].(user.User)
 		var mediaIds []int
 		var mappingRiskLevel string
-		pageRes.Total, pageRes.LatestId, mediaIds, mappingRiskLevel = media.GetTotalPageCountByPermissionIds(mediaType, permissionIdList, isLogin(detailType), userInfo.Id)
+		var userRiskStatus string
+		pageRes.Total, pageRes.LatestId, mediaIds, mappingRiskLevel, userRiskStatus = media.GetTotalPageCountByPermissionIds(mediaType, permissionIdList, isLogin(detailType), userInfo.Id)
 		if err != nil {
 			logger.Error("分页查询媒体列表失败:%v", err)
 			m.FailedResult("分页查询媒体列表失败", result)
@@ -118,7 +120,7 @@ func (m *MediaController) List(mediaType string, permissionIds string) {
 			pageRes.Total = m.PageInfo.Total
 		}
 		pageRes.TotalPage = page.TotalPages(pageRes.Total, pageRes.PageSize)
-		list, err := media.GetMediaPageByIds(mediaType, m.PageInfo, mediaIds, isLogin(detailType), userInfo.Id, mappingRiskLevel)
+		list, err := media.GetMediaPageByIds(mediaType, m.PageInfo, mediaIds, isLogin(detailType), userInfo.Id, mappingRiskLevel, userRiskStatus)
 		if err != nil {
 			m.FailedResult("分页查询媒体列表失败", result)
 			return

+ 12 - 8
controllers/report/report_controller.go

@@ -36,7 +36,9 @@ func (r *ReportController) Search(key string) {
 		//获取当前可以被搜索的报告原始ID
 		//先要限制查询的id范围
 		var reportIds []int
-		pageRes.Total, pageRes.LatestId, reportIds, _, err = report.RangeSearch(key, isLogin(detailType), userInfo.Id)
+		var mappingRiskLevel string
+		var userRiskStatus string
+		pageRes.Total, pageRes.LatestId, reportIds, _, mappingRiskLevel, userRiskStatus, err = report.RangeSearch(key, isLogin(detailType), userInfo.Id)
 		if err != nil {
 			logger.Error("获取报告原始ID列表失败:%v", err)
 			r.FailedResult("分页搜索报告列表失败", result)
@@ -62,7 +64,7 @@ func (r *ReportController) Search(key string) {
 		pageRes.TotalPage = page.TotalPages(pageRes.Total, pageRes.PageSize)
 		list := make([]reportService.ReportDTO, 0)
 		if pageRes.LatestId > 0 {
-			list, err = report.SearchReportList(key, reportIds, r.PageInfo, isLogin(detailType), userInfo.Id)
+			list, err = report.SearchReportList(key, reportIds, r.PageInfo, isLogin(detailType), userInfo.Id, mappingRiskLevel, userRiskStatus)
 			if err != nil {
 				r.FailedResult("分页搜索报告列表失败", result)
 				return
@@ -98,7 +100,9 @@ func (r *ReportController) List(permissionIds string) {
 		}
 		var reportOrgIds map[string][]int
 		var discardIds []int
-		pageRes.Total, pageRes.LatestId, reportOrgIds, discardIds = report.GetTotalPageCountByPermissionIds(permissionIdList, isLogin(detailType), userInfo.Id)
+		var mappingRiskLevel string
+		var UserRiskStatus string
+		pageRes.Total, pageRes.LatestId, reportOrgIds, discardIds, mappingRiskLevel, UserRiskStatus = report.GetTotalPageCountByPermissionIds(permissionIdList, isLogin(detailType), userInfo.Id)
 		if pageRes.Total == 0 {
 			reports := new(page.PageResult)
 			reports.Data = []reportService.ReportDTO{}
@@ -120,7 +124,7 @@ func (r *ReportController) List(permissionIds string) {
 			r.SuccessResult("查询报告列表成功", reports, result)
 			return
 		}
-		list, err := report.GetReportPage(r.PageInfo, reportOrgIds, discardIds, isLogin(detailType), userInfo.Id)
+		list, err := report.GetReportPage(r.PageInfo, reportOrgIds, discardIds, isLogin(detailType), userInfo.Id, mappingRiskLevel, UserRiskStatus)
 		if err != nil {
 			r.FailedResult("分页查询报告列表失败", result)
 			return
@@ -156,7 +160,7 @@ func (r *ReportController) HotRanked(permissionIds string, limit int) {
 		detailType := r.Data["detailType"].(string)
 		userInfo := r.Data["user"].(user.User)
 		//
-		permissionIdsWithRisk, pdRiskLevel, err := report.RangePermissionIds(isLogin(detailType), userInfo.Id)
+		permissionIdsWithRisk, pdRiskLevel, userRiskStatus, err := report.RangePermissionIds(isLogin(detailType), userInfo.Id)
 		if err != nil {
 			logger.Error("获取带有风险等级的品种列表错误:%v", err)
 			r.FailedResult("获取最热报告列表失败", result)
@@ -167,7 +171,7 @@ func (r *ReportController) HotRanked(permissionIds string, limit int) {
 			r.SuccessResult("获取本周最热报告列表成功", []report.HotRankedReport{}, result)
 			return
 		}
-		list, err := report.GetRandedReportByWeeklyHot(50, isLogin(detailType), userInfo.Id, pdRiskLevel)
+		list, err := report.GetRandedReportByWeeklyHot(50, isLogin(detailType), userInfo.Id, pdRiskLevel, userRiskStatus)
 		//二级品种
 		permissionIdList, err := r.TransPermissionIds(permissionIds)
 		if err != nil {
@@ -228,7 +232,7 @@ func (r *ReportController) PublishRanked(permissionIds string, limit int, week b
 		detailType := r.Data["detailType"].(string)
 		userInfo := r.Data["user"].(user.User)
 		//
-		permissionIdsWithRisk, pdRiskLevel, err := report.RangePermissionIds(isLogin(detailType), userInfo.Id)
+		permissionIdsWithRisk, pdRiskLevel, userRiskStatus, err := report.RangePermissionIds(isLogin(detailType), userInfo.Id)
 		if err != nil {
 			logger.Error("获取带有风险等级的品种列表错误:%v", err)
 			r.FailedResult("获取最新发布报告列表失败", result)
@@ -240,7 +244,7 @@ func (r *ReportController) PublishRanked(permissionIds string, limit int, week b
 			return
 		}
 		//获取最新的报告列表
-		list, err := report.GetRandedReportByPublishTimeWeekly(50, week, isLogin(detailType), userInfo.Id, pdRiskLevel)
+		list, err := report.GetRandedReportByPublishTimeWeekly(50, week, isLogin(detailType), userInfo.Id, pdRiskLevel, userRiskStatus)
 		if err != nil {
 			r.FailedResult("获取最新发布报告列表失败", result)
 			return

+ 7 - 4
controllers/user/analyst_controller.go

@@ -83,7 +83,9 @@ func (an *AnalystController) AnalystReportList(analystName string) {
 		}
 		userInfo := an.Data["user"].(user.User)
 		var reportIds []int
-		pageRes.Total, pageRes.LatestId, reportIds = report.RangeSearchByAnalyst(analystName, userInfo.Id)
+		var mappingRiskLevel string
+		var userRiskStatus string
+		pageRes.Total, pageRes.LatestId, reportIds, mappingRiskLevel, userRiskStatus = report.RangeSearchByAnalyst(analystName, userInfo.Id)
 		if len(reportIds) == 0 {
 			reports := new(page.PageResult)
 			reports.Data = []interface{}{}
@@ -98,7 +100,7 @@ func (an *AnalystController) AnalystReportList(analystName string) {
 			pageRes.Total = an.PageInfo.Total
 		}
 		pageRes.TotalPage = page.TotalPages(pageRes.Total, pageRes.PageSize)
-		list, err := report.GetReportPageByAnalyst(an.PageInfo, analystName, reportIds, userInfo.Id)
+		list, err := report.GetReportPageByAnalyst(an.PageInfo, analystName, reportIds, userInfo.Id, mappingRiskLevel, userRiskStatus)
 		if err != nil {
 			an.FailedResult("分页获取研究员报告列表失败", result)
 			return
@@ -130,7 +132,8 @@ func (an *AnalystController) MediaList(mediaType string, analystId int) {
 		userInfo := an.Data["user"].(user.User)
 		var mediaIds []int
 		var mappingRiskLevel string
-		pageRes.Total, pageRes.LatestId, mediaIds, mappingRiskLevel = media.RangeSearchByAnalyst(mediaType, analystId, userInfo.Id)
+		var userRiskStatus string
+		pageRes.Total, pageRes.LatestId, mediaIds, mappingRiskLevel, userRiskStatus = media.RangeSearchByAnalyst(mediaType, analystId, userInfo.Id)
 		if len(mediaIds) == 0 {
 			mediaList := new(page.PageResult)
 			mediaList.Data = []interface{}{}
@@ -146,7 +149,7 @@ func (an *AnalystController) MediaList(mediaType string, analystId int) {
 			pageRes.Total = an.PageInfo.Total
 		}
 		pageRes.TotalPage = page.TotalPages(pageRes.Total, pageRes.PageSize)
-		list, err := media.GetMediaPageByAnalystId(mediaType, an.PageInfo, analystId, mediaIds, userInfo.Id, mappingRiskLevel)
+		list, err := media.GetMediaPageByAnalystId(mediaType, an.PageInfo, analystId, mediaIds, userInfo.Id, mappingRiskLevel, userRiskStatus)
 		if err != nil {
 			an.FailedResult("分页查询研究员媒体列表失败", result)
 			return

+ 10 - 10
domian/media/media_service.go

@@ -133,11 +133,11 @@ func SearchMaxMediaId(mediaType string, key string) (total int64, latestId int64
 	}
 	return
 }
-func GetMediaPermissionMappingByPermissionIds(mediaType string, permissionIds []int, riskLevel string) (total int64, latestId int64, ids []int, mappingPdRisk string) {
+func GetMediaPermissionMappingByPermissionIds(mediaType string, permissionIds []int) (total int64, latestId int64, ids []int) {
 	mediaIds, err := mediaDao.GetMediaPermissionMappingByPermissionId(mediaType, permissionIds)
 	if err != nil {
 		logger.Error("获取配置品种的媒体列表信息失败:%v", err)
-		return 0, 0, ids, riskLevel
+		return 0, 0, ids
 	}
 	//获取一下下架的报告产品
 	var offSaleProducts []merchantDao.MerchantProduct
@@ -198,9 +198,9 @@ func GetMediaPermissionMappingByPermissionIds(mediaType string, permissionIds []
 		sort.Slice(filterIds, func(i, j int) bool {
 			return filterIds[i] > filterIds[j]
 		})
-		return int64(len(filterIds)), int64(filterIds[0]), filterIds, riskLevel
+		return int64(len(filterIds)), int64(filterIds[0]), filterIds
 	}
-	return 0, 0, []int{}, riskLevel
+	return 0, 0, []int{}
 }
 func uniqueArray(arr []int) []int {
 	uniqueMap := make(map[int]bool)
@@ -214,20 +214,20 @@ func uniqueArray(arr []int) []int {
 
 	return result
 }
-func GetAnalystMediaPermissionMappingByPermissionIds(mediaType string, permissionIds []int, analystId int, mappingRiskLevel string) (total int64, latestId int64, ids []int, riskLevel string) {
+func GetAnalystMediaPermissionMappingByPermissionIds(mediaType string, permissionIds []int, analystId int) (total int64, latestId int64, ids []int) {
 	meidaIds, err := mediaDao.GetMediaPermissionMappingByPermissionId(mediaType, permissionIds)
 	if err != nil {
 		logger.Error("获取当前最大媒体id失败:%v", err)
-		return 0, 0, ids, mappingRiskLevel
+		return 0, 0, ids
 	}
 	ids, err = mediaDao.GetAnalystMediaRangeMediaIds(mediaType, ids, analystId)
 	if err != nil {
 		logger.Error("根据研究员过滤媒体列表id失败:%v", err)
-		return 0, 0, ids, mappingRiskLevel
+		return 0, 0, ids
 	}
 	if len(ids) == 0 {
 		logger.Info("根据研究员过滤媒体列表id为空")
-		return 0, 0, ids, mappingRiskLevel
+		return 0, 0, ids
 	}
 	var offSaleProducts []merchantDao.MerchantProduct
 	offSaleProducts, err = merchantDao.GetOffSaleProducts([]merchantDao.MerchantProductType{transProductMap[mediaType], merchantDao.Package})
@@ -289,9 +289,9 @@ func GetAnalystMediaPermissionMappingByPermissionIds(mediaType string, permissio
 		sort.Slice(filterIds, func(i, j int) bool {
 			return filterIds[i] > filterIds[j]
 		})
-		return int64(len(filterIds)), int64(filterIds[0]), filterIds, riskLevel
+		return int64(len(filterIds)), int64(filterIds[0]), filterIds
 	}
-	return 0, 0, []int{}, mappingRiskLevel
+	return 0, 0, []int{}
 }
 func GetTotalPageCount(mediaType string) (count int64, latestId int64) {
 	return mediaDao.GetCountByMediaType(mediaType)

+ 3 - 3
service/home/home_service.go

@@ -80,7 +80,7 @@ func Search(key string, pageInfo page.PageInfo, login bool, templateUserId int)
 		}
 		result = append(result, searchResult)
 	}
-	_, mappingRiskLevel, err := userService.GetRiskLevelPermissionList(nil, login, templateUserId)
+	_, mappingRiskLevel, userRiskStatus, err := userService.GetRiskLevelPermissionList(nil, login, templateUserId)
 	if err != nil {
 		logger.Error("获取用户信息失败:%v", err)
 	}
@@ -91,9 +91,9 @@ func Search(key string, pageInfo page.PageInfo, login bool, templateUserId int)
 			defer wg.Done()
 			switch searchResult.ResultType {
 			case ReportResultType:
-				searchResult.Report, _ = reportService.DealReportInfo(searchResult.Report, login, templateUserId)
+				searchResult.Report, _ = reportService.DealReportInfo(searchResult.Report, login, templateUserId, mappingRiskLevel, userRiskStatus)
 			case MediaResultType:
-				searchResult.Media, _ = mediaService.DealMediaInfo(searchResult.Media, login, templateUserId, mappingRiskLevel)
+				searchResult.Media, _ = mediaService.DealMediaInfo(searchResult.Media, login, templateUserId, mappingRiskLevel, userRiskStatus)
 			}
 		}(&result[i])
 	}

+ 44 - 33
service/media/media_service.go

@@ -59,27 +59,29 @@ func CountMedia(count RecordCount) (traceId string, err error) {
 	return userService.CountMedia(dto, media.MediaType)
 }
 
-func RangeSearchByAnalyst(mediaType string, analystId int, userId int) (total int64, latestId int64, ids []int, mappingRiskLevel string) {
-	filterPermissionIds, riskLevel, err := user.GetRiskLevelPermissionList(nil, true, userId)
+func RangeSearchByAnalyst(mediaType string, analystId int, userId int) (total int64, latestId int64, ids []int, mappingRiskLevel, userRiskStatus string) {
+	filterPermissionIds, mappingRiskLevel, userRiskStatus, err := user.GetRiskLevelPermissionList(nil, true, userId)
 	if err != nil {
 		logger.Error("校验用户风险等级失败:%v", err)
 		return
 	}
-	return mediaService.GetAnalystMediaPermissionMappingByPermissionIds(mediaType, filterPermissionIds, analystId, riskLevel)
+	total, latestId, ids = mediaService.GetAnalystMediaPermissionMappingByPermissionIds(mediaType, filterPermissionIds, analystId)
+	return
 }
 
-func getCount(mediaType string, permissionIds []int, isLogin bool, userId int) (total int64, latestId int64, mediaIds []int, mappingPdRisk string) {
-	filterPermissionIds, riskLevel, err := user.GetRiskLevelPermissionList(permissionIds, isLogin, userId)
+func getCount(mediaType string, permissionIds []int, isLogin bool, userId int) (total int64, latestId int64, mediaIds []int, mappingPdRisk string, userRiskStatus string) {
+	filterPermissionIds, mappingPdRisk, userRiskStatus, err := user.GetRiskLevelPermissionList(permissionIds, isLogin, userId)
 	if err != nil {
 		logger.Error("校验用户风险等级失败:%v", err)
 		return
 	}
-	return mediaService.GetMediaPermissionMappingByPermissionIds(mediaType, filterPermissionIds, riskLevel)
+	total, latestId, mediaIds = mediaService.GetMediaPermissionMappingByPermissionIds(mediaType, filterPermissionIds)
+	return
 }
-func RangeSearch(mediaType string, isLogin bool, userId int) (total int64, latestId int64, ids []int, mappingPdRisk string) {
+func RangeSearch(mediaType string, isLogin bool, userId int) (total int64, latestId int64, ids []int, mappingPdRisk string, userRiskStatus string) {
 	return getCount(mediaType, nil, isLogin, userId)
 }
-func GetTotalPageCountByPermissionIds(mediaType string, permissionIds []int, isLogin bool, userId int) (total int64, latestId int64, ids []int, mappingPdRisk string) {
+func GetTotalPageCountByPermissionIds(mediaType string, permissionIds []int, isLogin bool, userId int) (total int64, latestId int64, ids []int, mappingPdRisk string, userRiskStatus string) {
 	if mediaType == "" {
 		return
 	}
@@ -87,7 +89,7 @@ func GetTotalPageCountByPermissionIds(mediaType string, permissionIds []int, isL
 }
 
 func GetMediaById(mediaType string, mediaId int, isLogin bool, userId int) (media *mediaService.MediaDTO, err error) {
-	_, mappingRiskLevel, err := user.GetRiskLevelPermissionList(nil, isLogin, userId)
+	mappingRiskLevel, userRiskStatus, err := user.CheckUserRiskMatchStatus(userId)
 	if err != nil {
 		logger.Error("校验用户风险等级失败:%v", err)
 	}
@@ -98,9 +100,9 @@ func GetMediaById(mediaType string, mediaId int, isLogin bool, userId int) (medi
 		err = exception.New(exception.MediaFoundFailed)
 		return
 	}
-	return DealMediaInfo(&mediaInfo, isLogin, userId, mappingRiskLevel)
+	return DealMediaInfo(&mediaInfo, isLogin, userId, mappingRiskLevel, userRiskStatus)
 }
-func GetMediaPageByAnalystId(mediaType string, pageInfo page.PageInfo, analystId int, mediaIds []int, userId int, mappingRiskLevel string) (list []mediaService.MediaDTO, err error) {
+func GetMediaPageByAnalystId(mediaType string, pageInfo page.PageInfo, analystId int, mediaIds []int, userId int, mappingRiskLevel string, userRiskStatus string) (list []mediaService.MediaDTO, err error) {
 	list, err = mediaService.GetMediaPageByAnalystId(mediaType, pageInfo, analystId, mediaIds)
 	if err != nil {
 		err = exception.New(exception.GetAnalystMediaListFailed)
@@ -111,7 +113,7 @@ func GetMediaPageByAnalystId(mediaType string, pageInfo page.PageInfo, analystId
 		return
 	}
 	//并发获取媒体的标签
-	list, err = dealMediaInfo(list, true, userId, mappingRiskLevel)
+	list, err = dealMediaInfo(list, true, userId, mappingRiskLevel, userRiskStatus)
 	if err != nil {
 		err = exception.New(exception.GetAnalystMediaListFailed)
 	}
@@ -120,13 +122,13 @@ func GetMediaPageByAnalystId(mediaType string, pageInfo page.PageInfo, analystId
 func getMediaSecondPermissions(ids []int) (permissionDTOs []configService.PermissionDTO, err error) {
 	return mediaService.GetSecondPermissionsByIds(ids)
 }
-func GetMediaPageByIds(mediaType string, pageInfo page.PageInfo, mediaIds []int, isLogin bool, userId int, mappingRiskLevel string) (list []mediaService.MediaDTO, err error) {
+func GetMediaPageByIds(mediaType string, pageInfo page.PageInfo, mediaIds []int, isLogin bool, userId int, mappingRiskLevel string, userRiskStatus string) (list []mediaService.MediaDTO, err error) {
 	list, err = mediaService.GetMediaPageByIds(mediaType, pageInfo, mediaIds)
 	if err != nil {
 		err = exception.New(exception.GetMediaListFailed)
 		return
 	}
-	list, err = dealMediaInfo(list, isLogin, userId, mappingRiskLevel)
+	list, err = dealMediaInfo(list, isLogin, userId, mappingRiskLevel, userRiskStatus)
 	if err != nil {
 		err = exception.New(exception.QueryReportPageFailed)
 	}
@@ -144,7 +146,7 @@ func GetMediaPermissionNames(id []int) (labels []string) {
 	}
 	return
 }
-func DealMediaInfo(media *mediaService.MediaDTO, isLogin bool, templateUserId int, mappingRiskLevel string) (resultMedia *mediaService.MediaDTO, err error) {
+func DealMediaInfo(media *mediaService.MediaDTO, isLogin bool, templateUserId int, mappingRiskLevel string, userRiskStatus string) (resultMedia *mediaService.MediaDTO, err error) {
 	idStr := strings.Split(media.PermissionIDs, ",")
 	var ids []int
 	ids, err = stringUtils.StringToIntSlice(idStr)
@@ -227,20 +229,29 @@ func DealMediaInfo(media *mediaService.MediaDTO, isLogin bool, templateUserId in
 				}
 			}
 		}
-	}
-	media.RiskLevelStatus = RiskLevelUnMatch
-	if mappingRiskLevel != "" {
-		mappingRiskNum, parseErr := config.ParseRiskLevel(mappingRiskLevel)
-		if parseErr != nil {
-			return
-		}
-		var rpRiskNum int
-		rpRiskNum, parseErr = config.ParseRiskLevel(media.RiskLevel)
-		if parseErr != nil {
-			return
-		}
-		if rpRiskNum <= mappingRiskNum {
-			media.RiskLevelStatus = RiskLevelMatch
+		if userRiskStatus != user.RiskValid {
+			if userRiskStatus == user.RiskUnTest {
+				media.RiskLevelStatus = RiskLevelUnTest
+			}
+			if userRiskStatus == user.RiskExpired {
+				media.RiskLevelStatus = RiskLevelExpired
+			}
+		} else {
+			media.RiskLevelStatus = RiskLevelUnMatch
+			if mappingRiskLevel != "" {
+				mappingRiskNum, parseErr := config.ParseRiskLevel(mappingRiskLevel)
+				if parseErr != nil {
+					return
+				}
+				var rpRiskNum int
+				rpRiskNum, parseErr = config.ParseRiskLevel(media.RiskLevel)
+				if parseErr != nil {
+					return
+				}
+				if rpRiskNum <= mappingRiskNum {
+					media.RiskLevelStatus = RiskLevelMatch
+				}
+			}
 		}
 	}
 	resultMedia = media
@@ -248,14 +259,14 @@ func DealMediaInfo(media *mediaService.MediaDTO, isLogin bool, templateUserId in
 }
 
 // stringToIntSlice 将一个包含数字字符串的切片转换为整数切片
-func dealMediaInfo(list []mediaService.MediaDTO, isLogin bool, templateUserId int, mappingRiskLevel string) (dealList []mediaService.MediaDTO, err error) {
+func dealMediaInfo(list []mediaService.MediaDTO, isLogin bool, templateUserId int, mappingRiskLevel string, userRiskStatus string) (dealList []mediaService.MediaDTO, err error) {
 	//并发获取媒体的标签
 	var wg sync.WaitGroup
 	wg.Add(len(list))
 	for i := 0; i < len(list); i++ {
 		go func(media *mediaService.MediaDTO) {
 			defer wg.Done()
-			media, err = DealMediaInfo(media, isLogin, templateUserId, mappingRiskLevel)
+			media, err = DealMediaInfo(media, isLogin, templateUserId, mappingRiskLevel, userRiskStatus)
 			if err != nil {
 				logger.Error("处理媒体信息失败:%v", err)
 			}
@@ -265,10 +276,10 @@ func dealMediaInfo(list []mediaService.MediaDTO, isLogin bool, templateUserId in
 	dealList = list
 	return
 }
-func SearchMediaList(mediaType string, key string, mediaIds []int, pageInfo page.PageInfo, isLogin bool, userId int, mappingRiskLevel string) (medias []mediaService.MediaDTO, err error) {
+func SearchMediaList(mediaType string, key string, mediaIds []int, pageInfo page.PageInfo, isLogin bool, userId int, mappingRiskLevel string, userRiskStatus string) (medias []mediaService.MediaDTO, err error) {
 	offset := page.StartIndex(pageInfo.Current, pageInfo.PageSize)
 	medias, err = mediaService.SearchMediaList(mediaType, key, mediaIds, offset, pageInfo.PageSize, pageInfo.LatestId)
-	medias, err = dealMediaInfo(medias, isLogin, userId, mappingRiskLevel)
+	medias, err = dealMediaInfo(medias, isLogin, userId, mappingRiskLevel, userRiskStatus)
 	if err != nil {
 		err = exception.New(exception.SearchReportPageFailed)
 	}

+ 1 - 1
service/product/product_service.go

@@ -230,7 +230,7 @@ func GetRelatePackage(info ProductDTO) (prodList []ProductDTO, err error) {
 }
 
 func GetProductListByProductType(productType string, permissionIds []int, templateUserId int) (total, latestId int64, productIds []int) {
-	filterPermissionIds, riskLevel, err := userService.GetRiskLevelPermissionList(permissionIds, true, templateUserId)
+	filterPermissionIds, riskLevel, _, err := userService.GetRiskLevelPermissionList(permissionIds, true, templateUserId)
 	if err != nil {
 		return
 	}

+ 63 - 48
service/report/report_service.go

@@ -155,23 +155,29 @@ func GetReportById(reportId int, login bool, userId int) (report *reportService.
 	reportInfo, err = reportService.GetReportById(reportId)
 	if err != nil {
 		logger.Error("获取研报失败:%v", err)
-		err = exception.New(exception.GetReportFailed)
+		err = exception.NewWithException(exception.GetReportFailed, err.Error())
+		return
+	}
+	mappingRiskLevel, userRiskStatus, err := user.CheckUserRiskMatchStatus(userId)
+	if err != nil {
+		logger.Error("获取研报失败:%v", err)
+		err = exception.NewWithException(exception.GetReportFailed, err.Error())
 		return
 	}
-	return DealReportInfo(&reportInfo, login, userId)
+	return DealReportInfo(&reportInfo, login, userId, mappingRiskLevel, userRiskStatus)
 }
 
-func GetTotalPageCountByPermissionIds(permissionIds []int, isLogin bool, userId int) (total int64, latestId int64, ids map[string][]int, disCardIds []int) {
+func GetTotalPageCountByPermissionIds(permissionIds []int, isLogin bool, userId int) (total int64, latestId int64, ids map[string][]int, disCardIds []int, mappingRiskLevel, userRiskStatus string) {
 	return getCount(permissionIds, isLogin, userId)
 }
 
 // ParseRiskLevel 解析风险等级字符串,并返回数字部分
 
-func SearchReportList(key string, Ids []int, pageInfo page.PageInfo, isLogin bool, userId int) (list []reportService.ReportDTO, err error) {
+func SearchReportList(key string, Ids []int, pageInfo page.PageInfo, isLogin bool, userId int, mappingRiskLevel, userRiskStatus string) (list []reportService.ReportDTO, err error) {
 	offset := page.StartIndex(pageInfo.Current, pageInfo.PageSize)
 	var reports []reportService.ReportDTO
 	reports, err = reportService.SearchReportList(key, Ids, offset, pageInfo.PageSize, pageInfo.LatestId)
-	list, err = dealReportInfo(reports, isLogin, userId)
+	list, err = dealReportInfo(reports, isLogin, userId, mappingRiskLevel, userRiskStatus)
 	if err != nil {
 		err = exception.New(exception.SearchReportPageFailed)
 	}
@@ -185,12 +191,12 @@ func SearchReportProduct(key string, docIds []int) (list []reportService.ReportD
 	}
 	return
 }
-func RangeSearchByAnalyst(analystName string, userId int) (total int64, latestId int64, ids []int) {
+func RangeSearchByAnalyst(analystName string, userId int) (total int64, latestId int64, ids []int, mappingRiskLevel, userRiskStatus string) {
 	return getCountByAnalyst(nil, true, userId, analystName)
 }
-func RangeSearch(key string, isLogin bool, userId int) (total int64, latestId int64, reportIds []int, discardIds []int, err error) {
+func RangeSearch(key string, isLogin bool, userId int) (total int64, latestId int64, reportIds []int, discardIds []int, mappingRiskLevel, userRiskStatus string, err error) {
 	var orgIds map[string][]int
-	_, latestId, orgIds, discardIds = getCount(nil, isLogin, userId)
+	_, latestId, orgIds, discardIds, mappingRiskLevel, userRiskStatus = getCount(nil, isLogin, userId)
 	reportIds, err = GetReportByIdListByOrgIds(orgIds)
 	if err != nil {
 		logger.Error("获取报告ID列表失败:%v", err)
@@ -200,13 +206,13 @@ func RangeSearch(key string, isLogin bool, userId int) (total int64, latestId in
 	total = reportService.SearchMaxReportIdWithRange(key, reportIds)
 	return
 }
-func dealReportInfo(list []reportService.ReportDTO, isLogin bool, userId int) (resultList []reportService.ReportDTO, err error) {
+func dealReportInfo(list []reportService.ReportDTO, isLogin bool, userId int, mappingRiskLevel, userRiskStatus string) (resultList []reportService.ReportDTO, err error) {
 	var wg sync.WaitGroup
 	wg.Add(len(list))
 	for i := 0; i < len(list); i++ {
 		go func(report *reportService.ReportDTO) {
 			defer wg.Done()
-			report, err = DealReportInfo(report, isLogin, userId)
+			report, err = DealReportInfo(report, isLogin, userId, mappingRiskLevel, userRiskStatus)
 			if err != nil {
 				logger.Error("处理报告信息失败:%v", err)
 			}
@@ -217,7 +223,7 @@ func dealReportInfo(list []reportService.ReportDTO, isLogin bool, userId int) (r
 	return
 }
 
-func DealReportInfo(report *reportService.ReportDTO, isLogin bool, userId int) (resultReport *reportService.ReportDTO, err error) {
+func DealReportInfo(report *reportService.ReportDTO, isLogin bool, userId int, mappingRiskLevel, userRiskStatus string) (resultReport *reportService.ReportDTO, err error) {
 	report.Login = isLogin
 	report.Permissions, report.PermissionNames = GetReportPermissionNames(report.OrgId, report.Source)
 	var permissions []permissionService.PermissionDTO
@@ -307,43 +313,50 @@ func DealReportInfo(report *reportService.ReportDTO, isLogin bool, userId int) (
 					break
 				}
 			}
-
+		}
+		if userRiskStatus != user.RiskValid {
+			if userRiskStatus == user.RiskUnTest {
+				report.RiskLevelStatus = RiskLevelUnTest
+			}
+			if userRiskStatus == user.RiskExpired {
+				report.RiskLevelStatus = RiskLevelExpired
+			}
+		} else {
+			report.RiskLevelStatus = RiskLevelUnMatch
+			if mappingRiskLevel != "" {
+				mappingRiskNum, parseErr := config.ParseRiskLevel(mappingRiskLevel)
+				if parseErr != nil {
+					return
+				}
+				var rpRiskNum int
+				rpRiskNum, parseErr = config.ParseRiskLevel(report.RiskLevel)
+				if parseErr != nil {
+					return
+				}
+				if rpRiskNum <= mappingRiskNum {
+					report.RiskLevelStatus = RiskLevelMatch
+				}
+			}
 		}
 	}
-	//report.RiskLevelStatus = RiskLevelUnMatch
-	//if mappingRiskLevel != "" {
-	//	mappingRiskNum, parseErr := config.ParseRiskLevel(mappingRiskLevel)
-	//	if parseErr != nil {
-	//		return
-	//	}
-	//	var rpRiskNum int
-	//	rpRiskNum, parseErr = config.ParseRiskLevel(media.RiskLevel)
-	//	if parseErr != nil {
-	//		return
-	//	}
-	//	if rpRiskNum <= mappingRiskNum {
-	//		report.RiskLevelStatus = RiskLevelMatch
-	//	}
-	//}
-	//resultMedia = media
-	//return
+
 	resultReport = report
 	return
 }
 
 // GetReportPage 分页获取报告列表
-func GetReportPage(pageInfo page.PageInfo, orgIds map[string][]int, discardIds []int, isLogin bool, userId int) (reports []reportService.ReportDTO, err error) {
+func GetReportPage(pageInfo page.PageInfo, orgIds map[string][]int, discardIds []int, isLogin bool, userId int, mappingRiskLevel, userRiskStatus string) (reports []reportService.ReportDTO, err error) {
 	var list []reportService.ReportDTO
 	list, err = reportService.GetReportPageByOrgIds(pageInfo, orgIds, discardIds)
-	reports, err = dealReportInfo(list, isLogin, userId)
+	reports, err = dealReportInfo(list, isLogin, userId, mappingRiskLevel, userRiskStatus)
 	if err != nil {
 		err = exception.New(exception.QueryReportPageFailed)
 	}
 	return
 }
-func GetReportPageByAnalyst(pageInfo page.PageInfo, analyst string, reportIds []int, templateUserId int) (list []reportService.ReportDTO, err error) {
+func GetReportPageByAnalyst(pageInfo page.PageInfo, analyst string, reportIds []int, templateUserId int, mappingRiskLevel, userRiskStatus string) (list []reportService.ReportDTO, err error) {
 	list, err = reportService.GetReportPageByAnalyst(pageInfo, analyst, reportIds)
-	list, err = dealReportInfo(list, true, templateUserId)
+	list, err = dealReportInfo(list, true, templateUserId, mappingRiskLevel, userRiskStatus)
 	if err != nil {
 		err = exception.New(exception.QueryReportPageFailed)
 	}
@@ -359,7 +372,7 @@ func CountReport(count RecordCount) (traceId string, err error) {
 	dto.SourceTitle = report.Title
 	return userService.CountReport(dto)
 }
-func GetRandedReportByWeeklyHot(limit int, isLogin bool, userId int, pdRiskLevel string) (reports []HotRankedReport, err error) {
+func GetRandedReportByWeeklyHot(limit int, isLogin bool, userId int, mappingRiskLevel string, userRiskStatus string) (reports []HotRankedReport, err error) {
 	end := time.Now()
 	begin := date.GetBeginOfTheWeek(end, time.Monday)
 	hotReports := userService.GetHotReports(begin.Format(time.DateOnly), end.Format(time.DateOnly), limit)
@@ -375,21 +388,21 @@ func GetRandedReportByWeeklyHot(limit int, isLogin bool, userId int, pdRiskLevel
 			err = exception.New(exception.GetHotRandListFailed)
 			return
 		}
-		dtoList, err = dealReportInfo(dtoList, isLogin, userId)
+		dtoList, err = dealReportInfo(dtoList, isLogin, userId, mappingRiskLevel, userRiskStatus)
 		if err != nil {
 			logger.Error("获取本周最热研报列表失败:%v", err)
 			err = exception.New(exception.GetHotRandListFailed)
 			return
 		}
 		var filterList []reportService.ReportDTO
-		if pdRiskLevel != "" {
+		if mappingRiskLevel != "" {
 			for _, report := range dtoList {
 				pdRiskNum, paresErr := config.ParseRiskLevel(report.RiskLevel)
 				if paresErr != nil {
 					logger.Error("解析风险等级失败:%v", err)
 					continue
 				}
-				reRiskNum, paresErr := config.ParseRiskLevel(pdRiskLevel)
+				reRiskNum, paresErr := config.ParseRiskLevel(mappingRiskLevel)
 				if paresErr != nil {
 					logger.Error("解析风险等级失败:%v", err)
 					continue
@@ -423,7 +436,7 @@ func GetRandedReportByWeeklyHot(limit int, isLogin bool, userId int, pdRiskLevel
 	return
 }
 
-func GetRandedReportByPublishTimeWeekly(limit int, week bool, isLogin bool, userId int, pdRiskLevel string) (reports []PublishRankedReport, err error) {
+func GetRandedReportByPublishTimeWeekly(limit int, week bool, isLogin bool, userId int, mappingRiskLevel, userRiskStatus string) (reports []PublishRankedReport, err error) {
 	dtoList, err := reportService.GetListOrderByConditionWeekly(week, "published_time", limit, reportService.DESC)
 	if err != nil {
 		logger.Error("获取最新发布的研报列表失败:%v", err)
@@ -431,20 +444,20 @@ func GetRandedReportByPublishTimeWeekly(limit int, week bool, isLogin bool, user
 		return
 	}
 	var filterList []reportService.ReportDTO
-	dtoList, err = dealReportInfo(dtoList, isLogin, userId)
+	dtoList, err = dealReportInfo(dtoList, isLogin, userId, mappingRiskLevel, userRiskStatus)
 	if err != nil {
 		logger.Error("获取最新发布的研报列表失败:%v", err)
 		err = exception.New(exception.GetPublishedRandListFailed)
 		return
 	}
-	if pdRiskLevel != "" {
+	if mappingRiskLevel != "" {
 		for _, report := range dtoList {
 			pdRiskNum, paresErr := config.ParseRiskLevel(report.RiskLevel)
 			if paresErr != nil {
 				logger.Error("解析风险等级失败:%v", err)
 				continue
 			}
-			reRiskNum, paresErr := config.ParseRiskLevel(pdRiskLevel)
+			reRiskNum, paresErr := config.ParseRiskLevel(mappingRiskLevel)
 			if paresErr != nil {
 				logger.Error("解析风险等级失败:%v", err)
 				continue
@@ -584,12 +597,12 @@ func GetReportByIdListByOrgIds(orgIds map[string][]int) (ids []int, err error) {
 	return
 }
 
-func RangePermissionIds(isLogin bool, userId int) (filterPermissionIds []int, riskLevel string, err error) {
+func RangePermissionIds(isLogin bool, userId int) (filterPermissionIds []int, riskLevel string, userRiskStatus string, err error) {
 	return user.GetRiskLevelPermissionList(nil, isLogin, userId)
 }
 
-func getCount(permissionIds []int, isLogin bool, userId int) (total int64, latestId int64, ids map[string][]int, discardIds []int) {
-	filterPermissionIds, _, err := user.GetRiskLevelPermissionList(permissionIds, isLogin, userId)
+func getCount(permissionIds []int, isLogin bool, userId int) (total int64, latestId int64, ids map[string][]int, discardIds []int, mappingRiskLevel, userRiskStatus string) {
+	filterPermissionIds, mappingRiskLevel, userRiskStatus, err := user.GetRiskLevelPermissionList(permissionIds, isLogin, userId)
 	if err != nil {
 		logger.Error("获取过滤品种信息失败:%v", err)
 		return
@@ -598,16 +611,18 @@ func getCount(permissionIds []int, isLogin bool, userId int) (total int64, lates
 		logger.Warn("不存在设置风险等级的品种信息")
 		return
 	}
-	return reportService.GetTotalPageCountByPermissionIds(filterPermissionIds)
+	total, latestId, ids, discardIds = reportService.GetTotalPageCountByPermissionIds(filterPermissionIds)
+	return
 }
 
-func getCountByAnalyst(permissionIds []int, isLogin bool, userId int, analystName string) (total int64, latestId int64, ids []int) {
-	filterPermissionIds, _, err := user.GetRiskLevelPermissionList(permissionIds, isLogin, userId)
+func getCountByAnalyst(permissionIds []int, isLogin bool, userId int, analystName string) (total int64, latestId int64, ids []int, mappingRiskLevel, userRiskStatus string) {
+	filterPermissionIds, mappingRiskLevel, userRiskStatus, err := user.GetRiskLevelPermissionList(permissionIds, isLogin, userId)
 	if err != nil {
 		logger.Error("校验用户风险等级失败:%v", err)
 		return
 	}
-	return reportService.GetTotalPageCountByAnalyst(analystName, filterPermissionIds)
+	total, latestId, ids = reportService.GetTotalPageCountByAnalyst(analystName, filterPermissionIds)
+	return
 }
 
 func CountPermissionWeight(ids []int) (permissionMap map[int]int) {

+ 38 - 1
service/user/user_service.go

@@ -42,8 +42,44 @@ type UserProfile struct {
 	UserName        string `json:"userName"`
 }
 
+func CheckUserRiskMatchStatus(userId int) (riskLevel string, userRiskLevelStatus string, err error) {
+	if userId <= 0 {
+		err = exception.New(exception.IllegalTemplateUserId)
+		return
+	}
+	userProfile, userErr := GetUserProfile(userId)
+	if userErr != nil {
+		if errors.Is(userErr, gorm.ErrRecordNotFound) {
+			err = exception.New(exception.TemplateUserNotFound)
+		} else {
+			err = exception.New(exception.TemplateUserFoundFailed)
+		}
+		logger.Error("获取临时客户信息失败:%v", err)
+		return
+	}
+	userRiskLevelStatus = userProfile.RiskLevelStatus
+	//获取产品风险等级
+	if userProfile.RiskLevelStatus == RiskUnTest {
+		logger.Warn("客户未做风险等级测评,mobile:%v", userProfile.Mobile)
+	}
+	if userProfile.RiskLevelStatus == RiskExpired {
+		logger.Warn("客户风险等级已过期,mobile:%v", userProfile.Mobile)
+	}
+	if userProfile.RiskLevel != "" && userProfile.RiskLevelStatus == RiskValid {
+		var mapping permissionService.CustomerProductRiskMappingDTO
+		mapping, err = permissionService.GetRiskMappingByCustomerRiskLevel(userProfile.RiskLevel)
+		if err != nil {
+			logger.Error("查询产品风险等级映射失败:%v", err)
+			return
+		}
+		riskLevel = mapping.ProductRiskLevel
+	}
+	return
+
+}
+
 // GetRiskLevelPermissionList 删选掉没有配置风险等级的品种,并校验客户的风险等级,riskLevel只有在客户
-func GetRiskLevelPermissionList(permissionIds []int, isLogin bool, userId int) (filterPermissionIds []int, riskLevel string, err error) {
+func GetRiskLevelPermissionList(permissionIds []int, isLogin bool, userId int) (filterPermissionIds []int, riskLevel string, userRiskStatus string, err error) {
 	if isLogin {
 		userProfile, userErr := GetUserProfile(userId)
 		if userErr != nil {
@@ -67,6 +103,7 @@ func GetRiskLevelPermissionList(permissionIds []int, isLogin bool, userId int) (
 			logger.Error("查询有风险等级的品种列表失败:%v", err)
 			return
 		}
+		userRiskStatus = userProfile.RiskLevelStatus
 		//获取产品风险等级
 		if userProfile.RiskLevelStatus == RiskUnTest {
 			logger.Warn("客户未做风险等级测评,mobile:%v", userProfile.Mobile)