Browse Source

过滤下架产品

kobe6258 4 months ago
parent
commit
883a9df934

+ 102 - 15
domian/media/media_service.go

@@ -8,6 +8,7 @@ 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"
@@ -128,15 +129,46 @@ 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) {
-	ids, err := mediaDao.GetMediaPermissionMappingByPermissionId(mediaType, permissionIds)
+	//获取一下下架的报告产品
+	var offSaleProducts []merchantService.MerchantProductDTO
+	offSaleProducts, err := merchantService.GetOffSaleProducts([]string{"report", "package"})
+	var disCardMediaIds []int
+	var disCardPermissionIds []int
+	var filterPermissionIds []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)
+			}
+			if product.Type == "audio" || product.Type == "video" {
+				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)
+		}
+	}
+	ids, err = mediaDao.GetMediaPermissionMappingByPermissionId(mediaType, filterPermissionIds)
 	if err != nil {
 		logger.Error("获取配置品种的媒体列表信息失败:%v", err)
 		return 0, 0, ids, riskLevel
 	}
 	if riskLevel != "" {
 		var productList []productDao.MerchantProduct
-		//现加入没有产品的报告
-		productList, err = productDao.GetProductListBySourceIds(ids, false, productDao.Audio, productDao.Video)
+		//现加入没有产品的媒体
+		productList, err = productDao.GetProductListBySourceIds(ids, true, productDao.Audio, productDao.Video)
 		for _, mediaId := range ids {
 			find := false
 			for _, product := range productList {
@@ -163,22 +195,34 @@ func GetMediaPermissionMappingByPermissionIds(mediaType string, permissionIds []
 						logger.Error("解析产品风险等级失败:%v,产品id:%v", pdErr, product.ID)
 						continue
 					}
-					if pdRiskNum <= riskNum {
+					if pdRiskNum <= riskNum && product.SaleStatus == productDao.OnSale {
 						ids = append(ids, mediaId)
 					}
 				}
 			}
 		}
 	}
-	if len(ids) > 0 {
-		sort.Slice(ids, func(i, j int) bool {
-			return ids[i] > ids[j]
+	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 {
+			return filterIds[i] > filterIds[j]
 		})
-		return int64(len(ids)), int64(ids[0]), ids, riskLevel
+		return int64(len(filterIds)), int64(filterIds[0]), filterIds, riskLevel
 	}
 	return 0, 0, []int{}, riskLevel
 }
-
 func GetAnalystMediaPermissionMappingByPermissionIds(mediaType string, permissionIds []int, analystId int, mappingRiskLevel string) (total int64, latestId int64, ids []int, riskLevel string) {
 	ids, err := mediaDao.GetMediaPermissionMappingByPermissionId(mediaType, permissionIds)
 	if err != nil {
@@ -194,10 +238,40 @@ 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 disCardMediaIds []int
+	var disCardPermissionIds []int
+	var filterPermissionIds []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)
+			}
+			if product.Type == "audio" || product.Type == "video" {
+				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 mappingRiskLevel != "" {
 		var productList []productDao.MerchantProduct
 		//现加入没有产品的报告
-		productList, err = productDao.GetProductListBySourceIds(ids, false, productDao.Audio, productDao.Video)
+		productList, err = productDao.GetProductListBySourceIds(ids, true, productDao.Audio, productDao.Video)
 		for _, mediaId := range ids {
 			find := false
 			for _, product := range productList {
@@ -224,18 +298,31 @@ func GetAnalystMediaPermissionMappingByPermissionIds(mediaType string, permissio
 						logger.Error("解析产品风险等级失败:%v,产品id:%v", pdErr, product.ID)
 						continue
 					}
-					if pdRiskNum <= riskNum {
+					if pdRiskNum <= riskNum && product.SaleStatus == productDao.OnSale {
 						ids = append(ids, mediaId)
 					}
 				}
 			}
 		}
 	}
-	if len(ids) > 0 {
-		sort.Slice(ids, func(i, j int) bool {
-			return ids[i] > ids[j]
+	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 {
+			return filterIds[i] > filterIds[j]
 		})
-		return int64(len(ids)), int64(ids[0]), ids, mappingRiskLevel
+		return int64(len(filterIds)), int64(filterIds[0]), filterIds, riskLevel
 	}
 	return 0, 0, []int{}, mappingRiskLevel
 }

+ 2 - 2
domian/report/eta_report_service.go

@@ -83,7 +83,7 @@ func GetETAReportIdsByPermissionIdsWithRiskLevel(permissionIds []int, riskLevel
 	}
 	var productList []productDao.MerchantProduct
 	//现加入没有产品的报告
-	productList, err = productDao.GetProductListBySourceIds(ids, false, productDao.Report)
+	productList, err = productDao.GetProductListBySourceIds(ids, true, productDao.Report)
 	for _, report := range reports {
 		find := false
 		for _, product := range productList {
@@ -112,7 +112,7 @@ func GetETAReportIdsByPermissionIdsWithRiskLevel(permissionIds []int, riskLevel
 					logger.Error("解析产品风险等级失败:%v,产品id:%v", pdErr, product.ID)
 					continue
 				}
-				if pdRiskNum <= riskNum {
+				if pdRiskNum <= riskNum && product.SaleStatus == "on_sale" {
 					orgIds = append(orgIds, report.OrgID)
 				}
 			}

+ 22 - 21
domian/report/ht_report_service.go

@@ -5,6 +5,7 @@ import (
 	"eta/eta_mini_ht_api/models/ht"
 	productDao "eta/eta_mini_ht_api/models/merchant"
 	reportDao "eta/eta_mini_ht_api/models/report"
+	"eta/eta_mini_ht_api/service/config"
 )
 
 func GetHTReportIdsByPermissionIds(permissionIds []int) (ids []int, err error) {
@@ -46,7 +47,7 @@ func GetHTReportIdsByPermissionIdsWithRiskLevel(permissionIds []int, riskLevel s
 	}
 	var productList []productDao.MerchantProduct
 	//现加入没有产品的报告
-	productList, err = productDao.GetProductListBySourceIds(ids, false, productDao.Report)
+	productList, err = productDao.GetProductListBySourceIds(ids, true, productDao.Report)
 	for _, report := range reports {
 		find := false
 		for _, product := range productList {
@@ -58,27 +59,27 @@ func GetHTReportIdsByPermissionIdsWithRiskLevel(permissionIds []int, riskLevel s
 			orgIds = append(orgIds, report.OrgID)
 		}
 	}
-	//riskNum, err := parseRiskLevel(riskLevel)
-	//if err != nil {
-	//	logger.Error("解析风险等级失败:%v", err)
-	//	return
-	//}
+	riskNum, err := config.ParseRiskLevel(riskLevel)
+	if err != nil {
+		logger.Error("解析风险等级失败:%v", err)
+		return
+	}
 	//再把符合风险等级的产品报告加入
-	////productList, err = productDao.GetProductListBySourceIds(ids, productDao.Report)
-	//for _, report := range reports {
-	//	for _, product := range productList {
-	//		if product.SourceID == report.ID {
-	//			pdRiskNum, pdErr := parseRiskLevel(product.RiskLevel)
-	//			if pdErr != nil {
-	//				logger.Error("解析产品风险等级失败:%v,产品id:%v", pdErr, product.ID)
-	//				continue
-	//			}
-	//			if pdRiskNum <= riskNum {
-	//				orgIds = append(orgIds, report.OrgID)
-	//			}
-	//		}
-	//	}
-	//}
+	//productList, err = productDao.GetProductListBySourceIds(ids, productDao.Report)
+	for _, report := range reports {
+		for _, product := range productList {
+			if product.SourceID == report.ID {
+				pdRiskNum, pdErr := config.ParseRiskLevel(product.RiskLevel)
+				if pdErr != nil {
+					logger.Error("解析产品风险等级失败:%v,产品id:%v", pdErr, product.ID)
+					continue
+				}
+				if pdRiskNum <= riskNum && product.SaleStatus == "on_sale" {
+					orgIds = append(orgIds, report.OrgID)
+				}
+			}
+		}
+	}
 	return
 }
 func GetHtReport(id int) (pdf string, err error) {

+ 0 - 1
service/media/media_service.go

@@ -347,7 +347,6 @@ func DealMediaInfo(media *mediaService.MediaDTO, isLogin bool, templateUserId in
 		for _, permission := range permissions {
 			permissionIds = append(permissionIds, permission.PermissionId)
 		}
-		//单品不存在的话查套餐
 		packageList, err = productService.GetProductListBySourceIds(permissionIds, "package")
 		if err != nil {
 			logger.Error("获取套餐列表失败:%v", err)