瀏覽代碼

修改风险等级展示

kobe6258 4 月之前
父節點
當前提交
7daf50b2e7
共有 3 個文件被更改,包括 46 次插入130 次删除
  1. 6 4
      controllers/media/media_controller.go
  2. 4 4
      domian/media/media_service.go
  3. 36 122
      service/media/media_service.go

+ 6 - 4
controllers/media/media_controller.go

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

+ 4 - 4
domian/media/media_service.go

@@ -122,11 +122,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) {
+func GetMediaPermissionMappingByPermissionIds(mediaType string, permissionIds []int, riskLevel string) (total int64, latestId int64, ids []int, mappingPdRisk string) {
 	ids, err := mediaDao.GetMediaPermissionMappingByPermissionId(mediaType, permissionIds)
 	if err != nil {
 		logger.Error("获取配置品种的媒体列表信息失败:%v", err)
-		return 0, 0, ids
+		return 0, 0, ids, riskLevel
 	}
 	if riskLevel != "" {
 		var productList []productDao.MerchantProduct
@@ -169,9 +169,9 @@ func GetMediaPermissionMappingByPermissionIds(mediaType string, permissionIds []
 		sort.Slice(ids, func(i, j int) bool {
 			return ids[i] > ids[j]
 		})
-		return int64(len(ids)), int64(ids[0]), ids
+		return int64(len(ids)), int64(ids[0]), ids, riskLevel
 	}
-	return 0, 0, []int{}
+	return 0, 0, []int{}, riskLevel
 }
 
 func parseRiskLevel(level string) (int, error) {

+ 36 - 122
service/media/media_service.go

@@ -115,7 +115,7 @@ func RangeSearchByAnalyst(mediaType string, analystId int, userId int) (total in
 	return mediaService.GetAnalystMediaPermissionMappingByPermissionIds(mediaType, filterPermissionIds, analystId)
 }
 
-func getCount(mediaType string, permissionIds []int, isLogin bool, userId int) (total int64, latestId int64, orgIds []int) {
+func getCount(mediaType string, permissionIds []int, isLogin bool, userId int) (total int64, latestId int64, orgIds []int, mappingPdRisk string) {
 	filterPermissionIds, riskLevel, err := report.CheckUserRisk(permissionIds, isLogin, userId)
 	if err != nil {
 		logger.Error("校验用户风险等级失败:%v", err)
@@ -123,131 +123,14 @@ func getCount(mediaType string, permissionIds []int, isLogin bool, userId int) (
 	}
 	return mediaService.GetMediaPermissionMappingByPermissionIds(mediaType, filterPermissionIds, riskLevel)
 }
-func RangeSearch(mediaType string, isLogin bool, userId int) (total int64, latestId int64, ids []int) {
+func RangeSearch(mediaType string, isLogin bool, userId int) (total int64, latestId int64, ids []int, mappingPdRisk string) {
 	return getCount(mediaType, nil, isLogin, userId)
-	//var err error
-	////登录了需要校验风险等级,如果风险等级没做或者过期直接返回空,做了就筛选风险等级
-	//if isLogin {
-	//	userProfile, userErr := user.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
-	//	}
-	//	//获取产品风险等级
-	//	if userProfile.RiskLevel == user.RiskUnTest {
-	//		logger.Error("客户未做风险等级测评,mobile:%v", userProfile.Mobile)
-	//		return
-	//	}
-	//	if userProfile.RiskLevelStatus == user.RiskExpired {
-	//		logger.Error("客户风险等级已过期,mobile:%v", userProfile.Mobile)
-	//		return
-	//	}
-	//	mapping, mappingErr := permissionService.GetRiskMappingByCustomerRiskLevel(userProfile.RiskLevel)
-	//	if mappingErr != nil {
-	//		logger.Error("查询产品风险等级映射失败:%v", mappingErr)
-	//		return
-	//	}
-	//	var permissionList []permissionService.PermissionDTO
-	//	//获取所有设置风险等级的品种
-	//	permissionList, err = permissionService.GetPermissionListWithRisk()
-	//	permissionList = filterPermissionsByRisk(permissionList, mapping.ProductRiskLevel)
-	//	if len(permissionList) == 0 {
-	//		return
-	//	}
-	//	var filterPermissionIds []int
-	//	for _, permission := range permissionList {
-	//		filterPermissionIds = append(filterPermissionIds, permission.PermissionId)
-	//	}
-	//	return mediaService.GetMediaPermissionMappingByPermissionIds(mediaType, filterPermissionIds, mapping.ProductRiskLevel)
-	//} else { //没有登录的时候展示所有设置了风险等级的品种报告,筛选的时候过滤传入ID中没有设置风险等级的品种
-	//	var permissionList []permissionService.PermissionDTO
-	//	//获取所有设置风险等级的品种
-	//	permissionList, err = permissionService.GetPermissionListWithRisk()
-	//	if err != nil {
-	//		logger.Error("根据ID查询品种列表失败:%v", err)
-	//	}
-	//	var filterPermissionIds []int
-	//	for _, permission := range permissionList {
-	//		filterPermissionIds = append(filterPermissionIds, permission.PermissionId)
-	//	}
-	//	//查询品种
-	//	return mediaService.GetMediaPermissionMappingByPermissionIds(mediaType, filterPermissionIds, "")
-	//}
 }
-func GetTotalPageCountByPermissionIds(mediaType string, permissionIds []int, isLogin bool, userId int) (total int64, latestId int64, ids []int) {
+func GetTotalPageCountByPermissionIds(mediaType string, permissionIds []int, isLogin bool, userId int) (total int64, latestId int64, ids []int, mappingPdRisk string) {
 	if mediaType == "" {
 		return
 	}
-
 	return getCount(mediaType, permissionIds, isLogin, userId)
-	//var err error
-	////登录了需要校验风险等级,如果风险等级没做或者过期直接返回空,做了就筛选风险等级
-	//if isLogin {
-	//	userProfile, userErr := user.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
-	//	}
-	//	//获取产品风险等级
-	//	if userProfile.RiskLevel == user.RiskUnTest {
-	//		logger.Error("客户未做风险等级测评,mobile:%v", userProfile.Mobile)
-	//		return
-	//	}
-	//	if userProfile.RiskLevelStatus == user.RiskExpired {
-	//		logger.Error("客户风险等级已过期,mobile:%v", userProfile.Mobile)
-	//		return
-	//	}
-	//	mapping, mappingErr := permissionService.GetRiskMappingByCustomerRiskLevel(userProfile.RiskLevel)
-	//	if mappingErr != nil {
-	//		logger.Error("查询产品风险等级映射失败:%v", mappingErr)
-	//		return
-	//	}
-	//	var permissionList []permissionService.PermissionDTO
-	//	if len(permissionIds) == 0 {
-	//		//获取所有设置风险等级的品种
-	//		permissionList, err = permissionService.GetPermissionListWithRisk()
-	//	} else {
-	//		//更具id过滤设置了风险等级的品种
-	//		permissionList, err = permissionService.GetPermissionListByIds(permissionIds)
-	//	}
-	//	permissionList = filterPermissionsByRisk(permissionList, mapping.ProductRiskLevel)
-	//	if len(permissionList) == 0 {
-	//		return
-	//	}
-	//	var filterPermissionIds []int
-	//	for _, permission := range permissionList {
-	//		filterPermissionIds = append(filterPermissionIds, permission.PermissionId)
-	//	}
-	//	return mediaService.GetMediaPermissionMappingByPermissionIds(mediaType, filterPermissionIds, mapping.ProductRiskLevel)
-	//} else { //没有登录的时候展示所有设置了风险等级的品种报告,筛选的时候过滤传入ID中没有设置风险等级的品种
-	//	var permissionList []permissionService.PermissionDTO
-	//	if len(permissionIds) == 0 {
-	//		//获取所有设置风险等级的品种
-	//		permissionList, err = permissionService.GetPermissionListWithRisk()
-	//	} else {
-	//		//更具id过滤设置了风险等级的品种
-	//		permissionList, err = permissionService.GetPermissionListByIds(permissionIds)
-	//	}
-	//	if err != nil {
-	//		logger.Error("根据ID查询品种列表失败:%v", err)
-	//	}
-	//	var filterPermissionIds []int
-	//	for _, permission := range permissionList {
-	//		filterPermissionIds = append(filterPermissionIds, permission.PermissionId)
-	//	}
-	//	//查询品种
-	//	return mediaService.GetMediaPermissionMappingByPermissionIds(mediaType, filterPermissionIds, "")
-	//}
 }
 func parseRiskLevel(level string) (int, error) {
 	parts := strings.Split(level, "R")
@@ -451,7 +334,7 @@ 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) (list []mediaService.MediaDTO, err error) {
+func GetMediaPageByIds(mediaType string, pageInfo page.PageInfo, mediaIds []int, isLogin bool, userId int, mappingRiskLevel string) (list []mediaService.MediaDTO, err error) {
 	list, err = mediaService.GetMediaPageByIds(mediaType, pageInfo, mediaIds)
 	if err != nil {
 		err = exception.New(exception.GetMediaListFailed)
@@ -513,16 +396,31 @@ func GetMediaPageByIds(mediaType string, pageInfo page.PageInfo, mediaIds []int,
 					media.IsSubscribe = subscribe.Status == userDao.SubscribeValid
 				}
 			}
+			media.RiskLevelStatus = RiskLevelMatch
 			pdRiskNum, parseErr := parseRiskLevel(product.RiskLevel)
 			if parseErr != nil {
+				media.RiskLevelStatus = RiskLevelUnMatch
 				return
 			}
 			rpRiskNum, parseErr := parseRiskLevel(media.RiskLevel)
 			if parseErr != nil {
+				media.RiskLevelStatus = RiskLevelUnMatch
+				return
+			}
+			mappingRiskNum, parseErr := parseRiskLevel(mappingRiskLevel)
+			if parseErr != nil {
+				media.RiskLevelStatus = RiskLevelUnMatch
 				return
 			}
 			if rpRiskNum <= pdRiskNum {
 				media.RiskLevel = product.RiskLevel
+				if mappingRiskNum < pdRiskNum {
+					media.RiskLevelStatus = RiskLevelUnMatch
+				}
+			} else {
+				if mappingRiskNum < rpRiskNum {
+					media.RiskLevelStatus = RiskLevelUnMatch
+				}
 			}
 		}(&list[i])
 	}
@@ -547,7 +445,7 @@ func getMediaPermissionNames(id []int) (labels []string) {
 
 // stringToIntSlice 将一个包含数字字符串的切片转换为整数切片
 
-func SearchMediaList(mediaType string, key string, mediaIds []int, pageInfo page.PageInfo, isLogin bool, userId int) (medias []mediaService.MediaDTO, err error) {
+func SearchMediaList(mediaType string, key string, mediaIds []int, pageInfo page.PageInfo, isLogin bool, userId int, mappingRiskLevel 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)
 	var wg sync.WaitGroup
@@ -605,17 +503,33 @@ func SearchMediaList(mediaType string, key string, mediaIds []int, pageInfo page
 					media.IsSubscribe = subscribe.Status == userDao.SubscribeValid
 				}
 			}
+			media.RiskLevelStatus = RiskLevelMatch
 			pdRiskNum, parseErr := parseRiskLevel(product.RiskLevel)
 			if parseErr != nil {
+				media.RiskLevelStatus = RiskLevelUnMatch
 				return
 			}
 			rpRiskNum, parseErr := parseRiskLevel(media.RiskLevel)
 			if parseErr != nil {
+				media.RiskLevelStatus = RiskLevelUnMatch
+				return
+			}
+			mappingRiskNum, parseErr := parseRiskLevel(mappingRiskLevel)
+			if parseErr != nil {
+				media.RiskLevelStatus = RiskLevelUnMatch
 				return
 			}
 			if rpRiskNum <= pdRiskNum {
 				media.RiskLevel = product.RiskLevel
+				if mappingRiskNum < pdRiskNum {
+					media.RiskLevelStatus = RiskLevelUnMatch
+				}
+			} else {
+				if mappingRiskNum < rpRiskNum {
+					media.RiskLevelStatus = RiskLevelUnMatch
+				}
 			}
+
 		}(&medias[i])
 	}
 	wg.Wait()