|
@@ -27,6 +27,7 @@ import (
|
|
|
"math/rand"
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
+ "sync"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
@@ -830,18 +831,35 @@ func GetListByCondition[T any](column string, ids []T) (dtoList []ReportDTO, err
|
|
|
func GetReportByIdListByOrgIds(orgIds map[string][]int) (ids []int, err error) {
|
|
|
return reportDao.GetReportIdListByOrgIds(orgIds)
|
|
|
}
|
|
|
+func getHtOrgIds(permissionIds []int) (htOrgIds []int, err error) {
|
|
|
+ return GetHTReportIdsByPermissionIdsWithRiskLevel(permissionIds)
|
|
|
+}
|
|
|
|
|
|
+func getEtaOrgIds(permissionIds []int) (htOrgIds []int, err error) {
|
|
|
+ return GetETAReportIdsByPermissionIdsWithRiskLevel(permissionIds)
|
|
|
+}
|
|
|
func GetTotalPageCountByPermissionIds(permissionIds []int) (total int64, latestId int64, ids map[string][]int, disCardReportIds []int) {
|
|
|
- htOrgIds, err := GetHTReportIdsByPermissionIdsWithRiskLevel(permissionIds)
|
|
|
- if err != nil {
|
|
|
- logger.Error("品种筛选ht报告id失败:%v", err)
|
|
|
- htOrgIds = []int{}
|
|
|
- }
|
|
|
- etaOrgIds, err := GetETAReportIdsByPermissionIdsWithRiskLevel(permissionIds)
|
|
|
- if err != nil {
|
|
|
- logger.Error("品种筛选eta报告id失败:%v", err)
|
|
|
- etaOrgIds = []int{}
|
|
|
- }
|
|
|
+ var wg sync.WaitGroup
|
|
|
+ wg.Add(2)
|
|
|
+ var htOrgIds []int
|
|
|
+ var etaOrgIds []int
|
|
|
+ go func() {
|
|
|
+ defer wg.Done()
|
|
|
+ var err error
|
|
|
+ htOrgIds, err = getHtOrgIds(permissionIds)
|
|
|
+ if err != nil {
|
|
|
+ logger.Error("品种筛选ht报告id失败:%v", err)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ go func() {
|
|
|
+ defer wg.Done()
|
|
|
+ var err error
|
|
|
+ etaOrgIds, err = getEtaOrgIds(permissionIds)
|
|
|
+ if err != nil {
|
|
|
+ logger.Error("品种筛选eta报告id失败:%v", err)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ wg.Wait()
|
|
|
totalCol := int64(len(etaOrgIds) + len(htOrgIds))
|
|
|
if totalCol == 0 {
|
|
|
latestId = 0
|
|
@@ -859,34 +877,67 @@ func GetTotalPageCountByPermissionIds(permissionIds []int) (total int64, latestI
|
|
|
ids["HT"] = htOrgIds
|
|
|
}
|
|
|
//获取一下下架的报告产品
|
|
|
- var offSaleProducts []merchantDao.MerchantProduct
|
|
|
- offSaleProducts, err = merchantDao.GetOffSaleProducts([]merchantDao.MerchantProductType{merchantDao.Report, merchantDao.Package})
|
|
|
+ offSaleProducts, err := merchantDao.GetOffSaleProducts([]merchantDao.MerchantProductType{merchantDao.Report, merchantDao.Package})
|
|
|
if err != nil {
|
|
|
logger.Error("获取下架的报告产品失败:%v", err)
|
|
|
return
|
|
|
}
|
|
|
+ var ProductPermissionIds []int
|
|
|
for _, product := range offSaleProducts {
|
|
|
if product.Type == "package" {
|
|
|
- permission, permissionErr := permissionDao.PermissionsByPermissionId(product.SourceID)
|
|
|
- if permissionErr != nil {
|
|
|
- logger.Error("获取权限信息失败[permissionId:%d]", product.SourceID)
|
|
|
- continue
|
|
|
- }
|
|
|
- classifyIds, classifyErr := permissionDao.GetClassifyIdsByPermissionIds([]int{permission.PermissionId})
|
|
|
- if classifyErr != nil {
|
|
|
- logger.Error("获取ETA报告分类id失败:%v", err)
|
|
|
- }
|
|
|
- disCardIds, _ := reportDao.GetHiddenReportIds(classifyIds, permission.Name)
|
|
|
- if len(disCardIds) > 0 {
|
|
|
- disCardReportIds = append(disCardReportIds, disCardIds...)
|
|
|
- }
|
|
|
+ ProductPermissionIds = append(ProductPermissionIds, product.SourceID)
|
|
|
}
|
|
|
if product.Type == "report" {
|
|
|
disCardReportIds = append(disCardReportIds, product.SourceID)
|
|
|
}
|
|
|
}
|
|
|
- disCardReportIds = uniqueArray(disCardReportIds)
|
|
|
+ wg.Add(2)
|
|
|
+ var permissionNames []string
|
|
|
+ var classifyIds []int
|
|
|
+ go func() {
|
|
|
+ defer wg.Done()
|
|
|
+ var permissionErr error
|
|
|
+ permissionNames, permissionErr = GetPermissionNamesByPermissionIds(ProductPermissionIds)
|
|
|
+ if permissionErr != nil {
|
|
|
+ logger.Error("获取ETA品种名称失败:%v", err)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ go func() {
|
|
|
+ defer wg.Done()
|
|
|
+ var classifyErr error
|
|
|
+ classifyIds, classifyErr = permissionDao.GetClassifyIdsByPermissionIds(ProductPermissionIds)
|
|
|
+ if classifyErr != nil {
|
|
|
+ logger.Error("获取ETA报告分类id失败:%v", err)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ wg.Wait()
|
|
|
+ disCardIds, _ := reportDao.GetHiddenReportIds(classifyIds, permissionNames)
|
|
|
+ if len(disCardIds) > 0 {
|
|
|
+ disCardReportIds = append(disCardReportIds, disCardIds...)
|
|
|
+ }
|
|
|
//对数据去重
|
|
|
+ disCardReportIds = uniqueArray(disCardReportIds)
|
|
|
+ //获取报告中还包含上架套餐的id
|
|
|
+ if len(disCardReportIds) > 0 {
|
|
|
+ reportIdsSalePackage, _ := merchantDao.GetOnSalePackageIds(disCardReportIds)
|
|
|
+ reportIdsSaleProduct, _ := merchantDao.GetOnSaleReportIds(disCardReportIds)
|
|
|
+ showReportMap := make(map[int]bool)
|
|
|
+ for _, reportId := range reportIdsSalePackage {
|
|
|
+ showReportMap[reportId] = true
|
|
|
+ }
|
|
|
+ for _, reportId := range reportIdsSaleProduct {
|
|
|
+ showReportMap[reportId] = true
|
|
|
+ }
|
|
|
+ var filterDisCardReportIds []int
|
|
|
+ for _, id := range disCardReportIds {
|
|
|
+ if _, ok := showReportMap[id]; !ok {
|
|
|
+ filterDisCardReportIds = append(filterDisCardReportIds, id)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ disCardReportIds = filterDisCardReportIds
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取这些id的产品
|
|
|
total, latestId, err = reportDao.GetMaxIdByPermissionIds(ids, disCardReportIds)
|
|
|
if err != nil {
|
|
|
logger.Error("获取筛选报告的最大记录和记录数失败:%v", err)
|
|
@@ -894,6 +945,18 @@ func GetTotalPageCountByPermissionIds(permissionIds []int) (total int64, latestI
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+type etaReport struct {
|
|
|
+ Id int `json:"id"`
|
|
|
+ ClassifyId int `json:"classifyId"`
|
|
|
+ PermissionIds []int `json:"permissionIds"`
|
|
|
+}
|
|
|
+type htReport struct {
|
|
|
+ Id int `json:"id"`
|
|
|
+ PlateName string `json:"plateName"`
|
|
|
+ PermissionId []int `json:"permissionId"`
|
|
|
+}
|
|
|
+
|
|
|
func uniqueArray(arr []int) []int {
|
|
|
uniqueMap := make(map[int]bool)
|
|
|
var result []int
|