|
@@ -15,6 +15,7 @@ import (
|
|
|
"eta/eta_mini_ht_api/service/order"
|
|
|
reportService "eta/eta_mini_ht_api/service/report"
|
|
|
"fmt"
|
|
|
+ "sync"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
@@ -24,6 +25,7 @@ type ProductDTO struct {
|
|
|
Abstract string `json:"abstract"`
|
|
|
Src string `json:"src"`
|
|
|
PermissionNames []string `json:"permissionNames"`
|
|
|
+ PermissionIds []int `json:"-"`
|
|
|
Description string `json:"description"`
|
|
|
Price string `json:"price"`
|
|
|
CoverSrc int `json:"coverSrc"`
|
|
@@ -37,11 +39,12 @@ type ProductDTO struct {
|
|
|
MediaId int `json:"mediaId"`
|
|
|
}
|
|
|
|
|
|
-func GetProductRiskLevel(product merchantService.MerchantProductDTO) (riskLevel, sourceTitle, sourceAbsract, coverSrc, sourceSrc string, permissionNames []string, err error) {
|
|
|
+func GetProductRiskLevel(product merchantService.MerchantProductDTO) (riskLevel, sourceTitle, sourceAbsract, coverSrc, sourceSrc string, permissionNames []string, permissionIds []int, err error) {
|
|
|
switch product.Type {
|
|
|
case "package":
|
|
|
permissionRisk, permissionErr := config.PermissionsByPermissionId(product.SourceId)
|
|
|
permissionNames = []string{permissionRisk.Name}
|
|
|
+ permissionIds = []int{product.SourceId}
|
|
|
if permissionErr != nil {
|
|
|
logger.Error("获取权限信息失败[permissionId:%d]", product.SourceId)
|
|
|
} else {
|
|
@@ -54,7 +57,7 @@ func GetProductRiskLevel(product merchantService.MerchantProductDTO) (riskLevel,
|
|
|
if mediaErr != nil {
|
|
|
logger.Error("获取媒体信息失败[mediaType:%s,mediaId:%d]", product.Type, product.SourceId)
|
|
|
}
|
|
|
- permissionIds, mediaErr := media.GetMediaPermissionMappingByMedia(product.Type, product.SourceId)
|
|
|
+ permissionIds, mediaErr = media.GetMediaPermissionMappingByMedia(product.Type, product.SourceId)
|
|
|
if mediaErr != nil {
|
|
|
logger.Error("获取媒体权限失败[mediaType:%s,mediaId:%d]", product.Type, product.SourceId)
|
|
|
} else {
|
|
@@ -63,7 +66,6 @@ func GetProductRiskLevel(product merchantService.MerchantProductDTO) (riskLevel,
|
|
|
logger.Error("获取权限信息失败[permissionIds:%v]", permissionIds)
|
|
|
}
|
|
|
permissionNames = mediaService.GetMediaPermissionNames(permissionIds)
|
|
|
- //permissionNames = strings.Join(permissionNamesList, ",")
|
|
|
riskNum := configService.GetHighestRiskLevel(permissions)
|
|
|
riskLevel = fmt.Sprintf("R%d", riskNum)
|
|
|
}
|
|
@@ -90,6 +92,7 @@ func GetProductRiskLevel(product merchantService.MerchantProductDTO) (riskLevel,
|
|
|
logger.Error("获取板块权限失败[plateName:%s]", report.PlateName)
|
|
|
} else {
|
|
|
riskLevel = permission.RiskLevel
|
|
|
+ permissionIds = []int{permission.PermissionId}
|
|
|
}
|
|
|
case reportDomain.SourceETA:
|
|
|
permissions, permissionErr := configService.GetSecondPermissionsByClassifyId(report.ClassifyId)
|
|
@@ -97,6 +100,9 @@ func GetProductRiskLevel(product merchantService.MerchantProductDTO) (riskLevel,
|
|
|
logger.Error("获取板块权限失败[plateName:%s]", report.PlateName)
|
|
|
} else {
|
|
|
riskNum := configService.GetHighestRiskLevel(permissions)
|
|
|
+ for _, permission := range permissions {
|
|
|
+ permissionIds = append(permissionIds, permission.PermissionId)
|
|
|
+ }
|
|
|
riskLevel = fmt.Sprintf("R%d", riskNum)
|
|
|
}
|
|
|
}
|
|
@@ -115,7 +121,7 @@ func GetProductInfoById(productId int) (product ProductDTO, err error) {
|
|
|
return
|
|
|
}
|
|
|
product = convertToProductDTO(merchantProduct)
|
|
|
- product.RiskLevel, product.SourceTile, product.Abstract, product.CoverUrl, product.Src, product.PermissionNames, err = GetProductRiskLevel(merchantProduct)
|
|
|
+ product.RiskLevel, product.SourceTile, product.Abstract, product.CoverUrl, product.Src, product.PermissionNames, _, err = GetProductRiskLevel(merchantProduct)
|
|
|
if err != nil {
|
|
|
logger.Error("获取风险等级失败[productId:%d]", productId)
|
|
|
}
|
|
@@ -224,25 +230,85 @@ func GetRelatePackage(info ProductDTO) (prodList []ProductDTO, err error) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func GetTotalPageCountByProductType(productType string) (total int64, latestId int64) {
|
|
|
- return merchantService.GetTotalPageCountByProductType(productType)
|
|
|
+func GetTotalPageCountByProductType(productType string, permissionIds []int, templateUserId int) (total int64, latestId int64) {
|
|
|
+ filterPermissionIds, riskLevel, err := reportService.CheckUserRisk(permissionIds, true, templateUserId)
|
|
|
+ if err != nil {
|
|
|
+ return 0, 0
|
|
|
+ }
|
|
|
+ productList, err := merchantService.GetProductListByProductType(productType)
|
|
|
+ var dtoList []*ProductDTO
|
|
|
+ var wg sync.WaitGroup
|
|
|
+ wg.Add(len(productList))
|
|
|
+ for i := 0; i < len(productList); i++ {
|
|
|
+ go func(merchantProduct merchantService.MerchantProductDTO) {
|
|
|
+ defer wg.Done()
|
|
|
+ product := convertToProductDTO(merchantProduct)
|
|
|
+ product.RiskLevel, product.SourceTile, product.Abstract, product.CoverUrl, product.Src, product.PermissionNames, product.PermissionIds, err = GetProductRiskLevel(merchantProduct)
|
|
|
+ if !compare(product.RiskLevel, riskLevel) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ match := false
|
|
|
+ for _, pdPermissionId := range product.PermissionIds {
|
|
|
+ for _, permissionId := range filterPermissionIds {
|
|
|
+ if pdPermissionId == permissionId {
|
|
|
+ match = true
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ if !match {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ dtoList = append(dtoList, &product)
|
|
|
+ }(productList[i])
|
|
|
+ }
|
|
|
+ wg.Wait()
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
+func compare(riskLevel, MatchRiskLevel string) bool {
|
|
|
+ pRiskNum, riskErr := configService.ParseRiskLevel(riskLevel)
|
|
|
+ if riskErr != nil {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ riskLevelNum, riskErr := configService.ParseRiskLevel(MatchRiskLevel)
|
|
|
+ if riskErr != nil {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ if pRiskNum > riskLevelNum {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ return false
|
|
|
+}
|
|
|
func ProductList(productType string, info page.PageInfo) (dtoList []ProductDTO, err error) {
|
|
|
var merchantProductList []merchantService.MerchantProductDTO
|
|
|
merchantProductList, err = merchantService.GetProductPageByProductType(productType, info)
|
|
|
for _, product := range merchantProductList {
|
|
|
productDTO := convertToProductDTO(product)
|
|
|
- productDTO.RiskLevel, productDTO.SourceTile, productDTO.Abstract, productDTO.CoverUrl, productDTO.Src, productDTO.PermissionNames, err = GetProductRiskLevel(product)
|
|
|
+ productDTO.RiskLevel, productDTO.SourceTile, productDTO.Abstract, productDTO.CoverUrl, productDTO.Src, productDTO.PermissionNames, _, err = GetProductRiskLevel(product)
|
|
|
dtoList = append(dtoList, productDTO)
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
-func ProductSearch(productType string, key string) (list []ProductDTO, err error) {
|
|
|
+func RangeProductList(isSignal bool) (total, latestId int64, ids []int) {
|
|
|
+ //return merchantService.CountProductListByProductType(isSignal)
|
|
|
+ return 0, 0, nil
|
|
|
+}
|
|
|
+func ProductSearch(productType string, key string, templateUserId int, pageInfo page.PageInfo) (list []ProductDTO, err error) {
|
|
|
var merchantProductList []merchantService.MerchantProductDTO
|
|
|
merchantProductList, err = merchantService.GetProductListByProductType(productType)
|
|
|
+ var sourceIds []int
|
|
|
+ var maxId int
|
|
|
+ for _, product := range merchantProductList {
|
|
|
+ if product.SourceId > maxId {
|
|
|
+ maxId = product.SourceId
|
|
|
+ }
|
|
|
+ sourceIds = append(sourceIds, product.SourceId)
|
|
|
+ }
|
|
|
+ //reportList, err := reportDomain.SearchReportList(key, sourceIds, 1, len(sourceIds), int64(maxId))
|
|
|
+ //mediaList, err := mediaDomain.SearchMediaList(key)
|
|
|
+
|
|
|
for _, product := range merchantProductList {
|
|
|
productDTO := convertToProductDTO(product)
|
|
|
list = append(list, productDTO)
|
|
@@ -250,6 +316,6 @@ func ProductSearch(productType string, key string) (list []ProductDTO, err error
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-func PackageSearch(key string) (interface{}, interface{}) {
|
|
|
+func PackageSearch(key string, templateUserId int) (list []ProductDTO, err error) {
|
|
|
return nil, nil
|
|
|
}
|