|
@@ -14,6 +14,7 @@ import (
|
|
|
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"
|
|
@@ -34,7 +35,13 @@ const (
|
|
|
)
|
|
|
|
|
|
var (
|
|
|
- sortField = []string{"_score:desc"}
|
|
|
+ sortField = []string{"_score:desc"}
|
|
|
+ transProductMap = map[string]merchantDao.MerchantProductType{
|
|
|
+ "report": merchantDao.Report,
|
|
|
+ "video": merchantDao.Video,
|
|
|
+ "audio": merchantDao.Audio,
|
|
|
+ "package": merchantDao.Package,
|
|
|
+ }
|
|
|
)
|
|
|
|
|
|
func elastic() *es.ESClient {
|
|
@@ -130,54 +137,66 @@ func SearchMaxMediaId(mediaType string, key string) (total int64, latestId int64
|
|
|
}
|
|
|
func GetMediaPermissionMappingByPermissionIds(mediaType string, permissionIds []int, riskLevel string) (total int64, latestId int64, ids []int, mappingPdRisk string) {
|
|
|
//获取一下下架的报告产品
|
|
|
- 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...)
|
|
|
}
|
|
|
}
|
|
|
+ //对数据去重
|
|
|
+ disCardMediaIds = uniqueArray(disCardMediaIds)
|
|
|
ids, err = mediaDao.GetMediaPermissionMappingByPermissionId(mediaType, filterPermissionIds)
|
|
|
if err != nil {
|
|
|
logger.Error("获取配置品种的媒体列表信息失败:%v", err)
|
|
|
return 0, 0, ids, riskLevel
|
|
|
}
|
|
|
- for _, mediaId := range ids {
|
|
|
- find := false
|
|
|
- for _, discardMediaId := range disCardMediaIds {
|
|
|
- if mediaId == discardMediaId {
|
|
|
- find = true
|
|
|
- break
|
|
|
+ //获取媒体中还包含上架套餐的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
|
|
|
+ }
|
|
|
+ for _, reportId := range reportIdsSaleProduct {
|
|
|
+ showReportMap[reportId] = true
|
|
|
+ }
|
|
|
+ var filterDisCardReportIds []int
|
|
|
+ for _, id := range disCardMediaIds {
|
|
|
+ if _, ok := showReportMap[id]; !ok {
|
|
|
+ filterDisCardReportIds = append(filterDisCardReportIds, id)
|
|
|
+ disCardMap[id] = true
|
|
|
}
|
|
|
}
|
|
|
- if !find {
|
|
|
- filterIds = append(filterIds, mediaId)
|
|
|
+ disCardMediaIds = filterDisCardReportIds
|
|
|
+ var cardReportIds []int
|
|
|
+ for _, id := range filterIds {
|
|
|
+ if _, ok := disCardMap[id]; !ok {
|
|
|
+ cardReportIds = append(cardReportIds, id)
|
|
|
+ }
|
|
|
}
|
|
|
+ filterIds = cardReportIds
|
|
|
}
|
|
|
-
|
|
|
if len(filterIds) > 0 {
|
|
|
sort.Slice(filterIds, func(i, j int) bool {
|
|
|
return filterIds[i] > filterIds[j]
|
|
@@ -186,6 +205,19 @@ func GetMediaPermissionMappingByPermissionIds(mediaType string, permissionIds []
|
|
|
}
|
|
|
return 0, 0, []int{}, riskLevel
|
|
|
}
|
|
|
+func uniqueArray(arr []int) []int {
|
|
|
+ uniqueMap := make(map[int]bool)
|
|
|
+ var result []int
|
|
|
+
|
|
|
+ for _, value := range arr {
|
|
|
+ if _, exists := uniqueMap[value]; !exists {
|
|
|
+ uniqueMap[value] = true
|
|
|
+ result = append(result, value)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return result
|
|
|
+}
|
|
|
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 {
|
|
@@ -238,7 +270,7 @@ func GetAnalystMediaPermissionMappingByPermissionIds(mediaType string, permissio
|
|
|
for _, mediaId := range ids {
|
|
|
find := false
|
|
|
for _, product := range productList {
|
|
|
- if product.SourceID == mediaId {
|
|
|
+ if product.SourceId == mediaId {
|
|
|
find = true
|
|
|
break
|
|
|
}
|
|
@@ -255,10 +287,10 @@ func GetAnalystMediaPermissionMappingByPermissionIds(mediaType string, permissio
|
|
|
//再把符合风险等级的产品加入
|
|
|
for _, mediaId := range ids {
|
|
|
for _, product := range productList {
|
|
|
- if product.SourceID == mediaId {
|
|
|
+ if product.SourceId == mediaId {
|
|
|
pdRiskNum, pdErr := configService.ParseRiskLevel(product.RiskLevel)
|
|
|
if pdErr != nil {
|
|
|
- logger.Error("解析产品风险等级失败:%v,产品id:%v", pdErr, product.ID)
|
|
|
+ logger.Error("解析产品风险等级失败:%v,产品id:%v", pdErr, product.Id)
|
|
|
continue
|
|
|
}
|
|
|
if pdRiskNum <= riskNum && product.SaleStatus == productDao.OnSale {
|