|
@@ -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 {
|