浏览代码

过滤下架产品

kobe6258 4 月之前
父节点
当前提交
2d1abf8f67
共有 2 个文件被更改,包括 87 次插入96 次删除
  1. 87 60
      domian/media/media_service.go
  2. 0 36
      service/media/media_service.go

+ 87 - 60
domian/media/media_service.go

@@ -8,15 +8,12 @@ import (
 	"eta/eta_mini_ht_api/common/contants"
 	"eta/eta_mini_ht_api/common/utils/page"
 	configDomain "eta/eta_mini_ht_api/domian/config"
-	merchantService "eta/eta_mini_ht_api/domian/merchant"
 	reportService "eta/eta_mini_ht_api/domian/report"
 	"eta/eta_mini_ht_api/models"
 	configDao "eta/eta_mini_ht_api/models/config"
 	"eta/eta_mini_ht_api/models/image"
 	mediaDao "eta/eta_mini_ht_api/models/media"
 	merchantDao "eta/eta_mini_ht_api/models/merchant"
-	productDao "eta/eta_mini_ht_api/models/merchant"
-	configService "eta/eta_mini_ht_api/service/config"
 	"sort"
 	"strconv"
 	"time"
@@ -233,85 +230,115 @@ func GetAnalystMediaPermissionMappingByPermissionIds(mediaType string, permissio
 		logger.Info("根据研究员过滤媒体列表id为空")
 		return 0, 0, ids, mappingRiskLevel
 	}
-	var offSaleProducts []merchantService.MerchantProductDTO
-	offSaleProducts, err = merchantService.GetOffSaleProducts([]string{"report", "package"})
+	var offSaleProducts []merchantDao.MerchantProduct
+	offSaleProducts, err = merchantDao.GetOffSaleProducts([]merchantDao.MerchantProductType{transProductMap[mediaType], merchantDao.Package})
 	var disCardMediaIds []int
-	var disCardPermissionIds []int
 	var filterPermissionIds []int
+	var ProductPermissionIds []int
 	var filterIds []int
 	if err != nil {
 		logger.Error("获取下架的报告产品失败:%v", err)
 	} else {
 		for _, product := range offSaleProducts {
 			if product.Type == "package" {
-				disCardPermissionIds = append(disCardPermissionIds, product.SourceId)
+				ProductPermissionIds = append(ProductPermissionIds, product.SourceId)
 			}
-			if product.Type == "audio" || product.Type == "video" {
+			if product.Type == transProductMap[mediaType] {
 				disCardMediaIds = append(disCardMediaIds, product.SourceId)
 			}
 		}
 	}
-	for _, permissionId := range permissionIds {
-		find := false
-		for _, disCardPermissionId := range disCardPermissionIds {
-			if permissionId == disCardPermissionId {
-				find = true
-				break
-			}
-		}
-		if !find {
-			filterPermissionIds = append(filterPermissionIds, permissionId)
+	if len(ProductPermissionIds) > 0 {
+		var disCardIds []int
+		disCardIds, err = mediaDao.GetMediaPermissionMappingByPermissionId(mediaType, filterPermissionIds)
+		if len(disCardMediaIds) > 0 {
+			disCardMediaIds = append(disCardMediaIds, disCardIds...)
 		}
 	}
-	if mappingRiskLevel != "" {
-		var productList []productDao.MerchantProduct
-		//现加入没有产品的报告
-		productList, err = productDao.GetProductListBySourceIds(ids, true, productDao.Audio, productDao.Video)
-		for _, mediaId := range ids {
-			find := false
-			for _, product := range productList {
-				if product.SourceId == mediaId {
-					find = true
-					break
-				}
-			}
-			if !find {
-				ids = append(ids, mediaId)
-			}
+	//对数据去重
+	disCardMediaIds = uniqueArray(disCardMediaIds)
+	ids, err = mediaDao.GetMediaPermissionMappingByPermissionId(mediaType, filterPermissionIds)
+	if err != nil {
+		logger.Error("获取配置品种的媒体列表信息失败:%v", err)
+		return 0, 0, ids, riskLevel
+	}
+	//获取媒体中还包含上架套餐的id
+	if len(disCardMediaIds) > 0 {
+		reportIdsSalePackage, _ := merchantDao.GetMediaOnSalePackageIds(disCardMediaIds, transProductMap[mediaType])
+		reportIdsSaleProduct, _ := merchantDao.GetOnSaleMediaIds(disCardMediaIds, transProductMap[mediaType])
+		showReportMap := make(map[int]bool)
+		disCardMap := make(map[int]bool)
+		for _, reportId := range reportIdsSalePackage {
+			showReportMap[reportId] = true
 		}
-		riskNum, parseErr := configService.ParseRiskLevel(mappingRiskLevel)
-		if parseErr != nil {
-			logger.Error("解析风险等级失败:%v", err)
-			return
+		for _, reportId := range reportIdsSaleProduct {
+			showReportMap[reportId] = true
 		}
-		//再把符合风险等级的产品加入
-		for _, mediaId := range ids {
-			for _, product := range productList {
-				if product.SourceId == mediaId {
-					pdRiskNum, pdErr := configService.ParseRiskLevel(product.RiskLevel)
-					if pdErr != nil {
-						logger.Error("解析产品风险等级失败:%v,产品id:%v", pdErr, product.Id)
-						continue
-					}
-					if pdRiskNum <= riskNum && product.SaleStatus == productDao.OnSale {
-						ids = append(ids, mediaId)
-					}
-				}
+		var filterDisCardReportIds []int
+		for _, id := range disCardMediaIds {
+			if _, ok := showReportMap[id]; !ok {
+				filterDisCardReportIds = append(filterDisCardReportIds, id)
+				disCardMap[id] = true
 			}
 		}
-	}
-	for _, mediaId := range ids {
-		find := false
-		for _, discardMediaId := range disCardMediaIds {
-			if mediaId == discardMediaId {
-				find = true
-				break
+		disCardMediaIds = filterDisCardReportIds
+		var cardReportIds []int
+		for _, id := range filterIds {
+			if _, ok := disCardMap[id]; !ok {
+				cardReportIds = append(cardReportIds, id)
 			}
 		}
-		if !find {
-			filterIds = append(filterIds, mediaId)
-		}
+		filterIds = cardReportIds
 	}
+	//if mappingRiskLevel != "" {
+	//	var productList []productDao.MerchantProduct
+	//	//现加入没有产品的报告
+	//	productList, err = productDao.GetProductListBySourceIds(ids, true, productDao.Audio, productDao.Video)
+	//	for _, mediaId := range ids {
+	//		find := false
+	//		for _, product := range productList {
+	//			if product.SourceId == mediaId {
+	//				find = true
+	//				break
+	//			}
+	//		}
+	//		if !find {
+	//			ids = append(ids, mediaId)
+	//		}
+	//	}
+	//	riskNum, parseErr := configService.ParseRiskLevel(mappingRiskLevel)
+	//	if parseErr != nil {
+	//		logger.Error("解析风险等级失败:%v", err)
+	//		return
+	//	}
+	//	//再把符合风险等级的产品加入
+	//	for _, mediaId := range ids {
+	//		for _, product := range productList {
+	//			if product.SourceId == mediaId {
+	//				pdRiskNum, pdErr := configService.ParseRiskLevel(product.RiskLevel)
+	//				if pdErr != nil {
+	//					logger.Error("解析产品风险等级失败:%v,产品id:%v", pdErr, product.Id)
+	//					continue
+	//				}
+	//				if pdRiskNum <= riskNum && product.SaleStatus == productDao.OnSale {
+	//					ids = append(ids, mediaId)
+	//				}
+	//			}
+	//		}
+	//	}
+	//}
+	//for _, mediaId := range ids {
+	//	find := false
+	//	for _, discardMediaId := range disCardMediaIds {
+	//		if mediaId == discardMediaId {
+	//			find = true
+	//			break
+	//		}
+	//	}
+	//	if !find {
+	//		filterIds = append(filterIds, mediaId)
+	//	}
+	//}
 
 	if len(filterIds) > 0 {
 		sort.Slice(filterIds, func(i, j int) bool {

+ 0 - 36
service/media/media_service.go

@@ -64,42 +64,6 @@ func CountMedia(count RecordCount) (traceId string, err error) {
 }
 
 func RangeSearchByAnalyst(mediaType string, analystId int, userId int) (total int64, latestId int64, ids []int, mappingRiskLevel string) {
-	//var err error
-	////登录了需要校验风险等级,如果风险等级没做或者过期直接返回空,做了就筛选风险等级
-	//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)
-	//}
-	//if userProfile.RiskLevelStatus == user.RiskExpired {
-	//	logger.Error("客户风险等级已过期,mobile:%v", userProfile.Mobile)
-	//}
-	//mapping, mappingErr := permissionService.GetRiskMappingByCustomerRiskLevel(userProfile.RiskLevel)
-	//if mappingErr != nil {
-	//	logger.Error("查询产品风险等级映射失败:%v", mappingErr)
-	//	return
-	//}
-	//mappingRiskLevel = mapping.ProductRiskLevel
-	//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)
-	//}
 	filterPermissionIds, riskLevel, err := user.GetRiskLevelPermissionList(nil, true, userId)
 	if err != nil {
 		logger.Error("校验用户风险等级失败:%v", err)