Browse Source

过滤下架产品

kobe6258 4 months ago
parent
commit
52513eb783

+ 5 - 4
controllers/report/report_controller.go

@@ -98,10 +98,11 @@ func (r *ReportController) List(permissionIds string) {
 		}
 		var reportOrgIds map[string][]int
 		pageRes.Total, pageRes.LatestId, reportOrgIds = report.GetTotalPageCountByPermissionIds(permissionIdList, isLogin(detailType), userInfo.Id)
-		if err != nil {
-			logger.Error("分页查询报告列表失败:%v", err)
-			r.FailedResult("分页查询报告列表失败", result)
-			return
+		if pageRes.Total == 0 {
+			reports := new(page.PageResult)
+			reports.Data = []reportService.ReportDTO{}
+			reports.Page = pageRes
+			r.SuccessResult("查询报告列表成功", reports, result)
 		}
 		if r.PageInfo.LatestId == 0 {
 			r.PageInfo.LatestId = pageRes.LatestId

+ 47 - 49
domian/report/eta_report_service.go

@@ -3,9 +3,7 @@ package report
 import (
 	logger "eta/eta_mini_ht_api/common/component/log"
 	"eta/eta_mini_ht_api/models/eta"
-	productDao "eta/eta_mini_ht_api/models/merchant"
 	reportDao "eta/eta_mini_ht_api/models/report"
-	"eta/eta_mini_ht_api/service/config"
 	"fmt"
 	"html"
 	"sync"
@@ -56,7 +54,7 @@ func GetETAReportIdsByPermissionIds(permissionIds []int) (ids []int, err error)
 	}
 	return reportDao.GetETAReportIdsByClassifyIds(classifyIds)
 }
-func GetETAReportIdsByPermissionIdsWithRiskLevel(permissionIds []int, riskLevel string) (orgIds []int, err error) {
+func GetETAReportIdsByPermissionIdsWithRiskLevel(permissionIds []int) (orgIds []int, err error) {
 	classifyIds, err := GetClassifyIdsByPermissionIds(permissionIds)
 	if err != nil {
 		logger.Error("品种获取研报分类列表失败:%v", err)
@@ -70,55 +68,55 @@ func GetETAReportIdsByPermissionIdsWithRiskLevel(permissionIds []int, riskLevel
 		logger.Error("获取ETA研报列表失败:%v", err)
 		return
 	}
-	if riskLevel == "" {
-		for _, report := range reports {
-			orgIds = append(orgIds, report.OrgID)
-		}
-		return
-	}
-	//根据riskLevel过滤ids
-	var ids []int
-	for _, report := range reports {
-		ids = append(ids, report.ID)
-	}
-	var productList []productDao.MerchantProduct
-	//现加入没有产品的报告
-	productList, err = productDao.GetProductListBySourceIds(ids, true, productDao.Report)
-	for _, report := range reports {
-		find := false
-		for _, product := range productList {
-			if product.SourceID == report.ID {
-				find = true
-				break
-			}
-		}
-		if !find {
-			orgIds = append(orgIds, report.OrgID)
-		}
-
-	}
-	riskNum, err := config.ParseRiskLevel(riskLevel)
-	if err != nil {
-		logger.Error("解析风险等级失败:%v", err)
-		return
-	}
-	//再把符合风险等级的产品报告加入
-	//productList, err = productDao.GetProductListBySourceIds(ids, productDao.Report)
+	//if riskLevel == "" {
 	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)
-				}
-			}
-		}
+		orgIds = append(orgIds, report.OrgID)
 	}
 	return
+	//}
+	////根据riskLevel过滤ids
+	//var ids []int
+	//for _, report := range reports {
+	//	ids = append(ids, report.ID)
+	//}
+	//var productList []productDao.MerchantProduct
+	////现加入没有产品的报告
+	//productList, err = productDao.GetProductListBySourceIds(ids, true, productDao.Report)
+	//for _, report := range reports {
+	//	find := false
+	//	for _, product := range productList {
+	//		if product.SourceID == report.ID {
+	//			find = true
+	//			break
+	//		}
+	//	}
+	//	if !find {
+	//		orgIds = append(orgIds, report.OrgID)
+	//	}
+	//
+	//}
+	//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 := 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 GetETAReport(id int) (detail ETAReportDTO, err error) {
 	report, err := eta.GetETAReportById(id)

+ 2 - 47
domian/report/ht_report_service.go

@@ -3,9 +3,7 @@ package report
 import (
 	logger "eta/eta_mini_ht_api/common/component/log"
 	"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) {
@@ -19,7 +17,7 @@ func GetHTReportIdsByPermissionIds(permissionIds []int) (ids []int, err error) {
 	ids, err = reportDao.GetIdsByPlateNames(permissionNames)
 	return
 }
-func GetHTReportIdsByPermissionIdsWithRiskLevel(permissionIds []int, riskLevel string) (orgIds []int, err error) {
+func GetHTReportIdsByPermissionIdsWithRiskLevel(permissionIds []int) (orgIds []int, err error) {
 	//品种名字筛选
 	var permissionNames []string
 	permissionNames, err = GetPermissionNamesByPermissionIds(permissionIds)
@@ -34,51 +32,8 @@ func GetHTReportIdsByPermissionIdsWithRiskLevel(permissionIds []int, riskLevel s
 		logger.Error("获取HT研报列表失败:%v", err)
 		return
 	}
-	if riskLevel == "" {
-		for _, report := range reports {
-			orgIds = append(orgIds, report.OrgID)
-		}
-		return
-	}
-	//根据riskLevel过滤ids
-	var ids []int
-	for _, report := range reports {
-		ids = append(ids, report.ID)
-	}
-	var productList []productDao.MerchantProduct
-	//现加入没有产品的报告
-	productList, err = productDao.GetProductListBySourceIds(ids, true, productDao.Report)
-	for _, report := range reports {
-		find := false
-		for _, product := range productList {
-			if product.SourceID == report.ID {
-				find = true
-			}
-		}
-		if !find {
-			orgIds = append(orgIds, report.OrgID)
-		}
-	}
-	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 := 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)
-				}
-			}
-		}
+		orgIds = append(orgIds, report.OrgID)
 	}
 	return
 }

+ 19 - 4
domian/report/report_service.go

@@ -846,13 +846,13 @@ func GetReportByIdListByOrgIds(orgIds map[string][]int) (ids []int, err error) {
 	return reportDao.GetReportIdListByOrgIds(orgIds)
 }
 
-func GetTotalPageCountByPermissionIds(permissionIds []int, riskLevel string) (total int64, latestId int64, ids map[string][]int) {
-	htOrgIds, err := GetHTReportIdsByPermissionIdsWithRiskLevel(permissionIds, riskLevel)
+func GetTotalPageCountByPermissionIds(permissionIds []int) (total int64, latestId int64, ids map[string][]int) {
+	htOrgIds, err := GetHTReportIdsByPermissionIdsWithRiskLevel(permissionIds)
 	if err != nil {
 		logger.Error("品种筛选ht报告id失败:%v", err)
 		htOrgIds = []int{}
 	}
-	etaOrgIds, err := GetETAReportIdsByPermissionIdsWithRiskLevel(permissionIds, riskLevel)
+	etaOrgIds, err := GetETAReportIdsByPermissionIdsWithRiskLevel(permissionIds)
 	if err != nil {
 		logger.Error("品种筛选eta报告id失败:%v", err)
 		etaOrgIds = []int{}
@@ -879,6 +879,7 @@ func GetTotalPageCountByPermissionIds(permissionIds []int, riskLevel string) (to
 	offSaleProducts, err = merchantDao.GetOffSaleProducts([]merchantDao.MerchantProductType{merchantDao.Report, merchantDao.Package})
 	if err != nil {
 		logger.Error("获取下架的报告产品失败:%v", err)
+		return
 	}
 	for _, product := range offSaleProducts {
 		if product.Type == "package" {
@@ -895,12 +896,13 @@ func GetTotalPageCountByPermissionIds(permissionIds []int, riskLevel string) (to
 			if len(disCardIds) > 0 {
 				disCardReportIds = append(disCardReportIds, disCardIds...)
 			}
-
 		}
 		if product.Type == "report" {
 			disCardReportIds = append(disCardReportIds, product.SourceID)
 		}
 	}
+	disCardReportIds = uniqueArray(disCardReportIds)
+	//对数据去重
 	total, latestId, err = reportDao.GetMaxIdByPermissionIds(ids, disCardReportIds)
 	if err != nil {
 		logger.Error("获取筛选报告的最大记录和记录数失败:%v", err)
@@ -908,6 +910,19 @@ func GetTotalPageCountByPermissionIds(permissionIds []int, riskLevel string) (to
 	}
 	return
 }
+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 convertEtaReport(etaRp eta.ETAReport, status reportDao.ReportStatus) reportDao.Report {
 	return reportDao.Report{
 		OrgID:         etaRp.ID,

+ 1 - 1
models/merchant/merchant_product.go

@@ -15,7 +15,7 @@ type SaleStatus string
 type MerchantProductType string
 
 const (
-	detailColumns  = "id,title,price,is_permanent,valid_days,type,sale_status,cover_src,cover_url,description,source_id,created_time,updated_time"
+	detailColumns  = "id,source_id,title,cover_src,cover_url,description,price,type,is_permanent,valid_days,sale_status,created_time,updated_time"
 	sourceIdColumn = "id,source_id"
 )
 const (

+ 1 - 1
models/report/report.go

@@ -411,7 +411,7 @@ select cpm.permission_id from reports  r LEFT JOIN (SELECT classify_id,permissio
 func GetHiddenReportIds(classifyIds []int, plateName string) (reportIds []int, err error) {
 	db := models.Main()
 	exc := db.Model(&Report{}).Select("id")
-	if len(classifyIds) == 0 {
+	if len(classifyIds) > 0 {
 		exc.Where("(source='ETA' and classify_id in ?)", classifyIds)
 	}
 	if plateName != "" {

+ 1 - 1
service/home/home_service.go

@@ -80,7 +80,7 @@ func Search(key string, pageInfo page.PageInfo, login bool, templateUserId int)
 		}
 		result = append(result, searchResult)
 	}
-	_, mappingRiskLevel, err := userService.CheckUserRisk(nil, login, templateUserId)
+	_, mappingRiskLevel, err := userService.GetRiskLevelPermissionList(nil, login, templateUserId)
 	if err != nil {
 		logger.Error("获取用户信息失败:%v", err)
 	}

+ 3 - 3
service/media/media_service.go

@@ -100,7 +100,7 @@ func RangeSearchByAnalyst(mediaType string, analystId int, userId int) (total in
 	//for _, permission := range permissionList {
 	//	filterPermissionIds = append(filterPermissionIds, permission.PermissionId)
 	//}
-	filterPermissionIds, riskLevel, err := user.CheckUserRisk(nil, true, userId)
+	filterPermissionIds, riskLevel, err := user.GetRiskLevelPermissionList(nil, true, userId)
 	if err != nil {
 		logger.Error("校验用户风险等级失败:%v", err)
 		return
@@ -109,7 +109,7 @@ func RangeSearchByAnalyst(mediaType string, analystId int, userId int) (total in
 }
 
 func getCount(mediaType string, permissionIds []int, isLogin bool, userId int) (total int64, latestId int64, orgIds []int, mappingPdRisk string) {
-	filterPermissionIds, riskLevel, err := user.CheckUserRisk(permissionIds, isLogin, userId)
+	filterPermissionIds, riskLevel, err := user.GetRiskLevelPermissionList(permissionIds, isLogin, userId)
 	if err != nil {
 		logger.Error("校验用户风险等级失败:%v", err)
 		return
@@ -148,7 +148,7 @@ func SearchMaxMediaId(mediaType string, key string) (total int64, latestId int64
 	return mediaService.SearchMaxMediaId(mediaType, key)
 }
 func GetMediaById(mediaType string, mediaId int, isLogin bool, userId int) (media *mediaService.MediaDTO, err error) {
-	_, mappingRiskLevel, err := user.CheckUserRisk(nil, isLogin, userId)
+	_, mappingRiskLevel, err := user.GetRiskLevelPermissionList(nil, isLogin, userId)
 	if err != nil {
 		logger.Error("校验用户风险等级失败:%v", err)
 	}

+ 1 - 1
service/product/product_service.go

@@ -234,7 +234,7 @@ func GetRelatePackage(info ProductDTO) (prodList []ProductDTO, err error) {
 }
 
 func GetProductListByProductType(productType string, permissionIds []int, templateUserId int) (total, latestId int64, productIds []int) {
-	filterPermissionIds, riskLevel, err := userService.CheckUserRisk(permissionIds, true, templateUserId)
+	filterPermissionIds, riskLevel, err := userService.GetRiskLevelPermissionList(permissionIds, true, templateUserId)
 	if err != nil {
 		return
 	}

+ 9 - 5
service/report/report_service.go

@@ -572,20 +572,24 @@ func GetReportByIdListByOrgIds(orgIds map[string][]int) (ids []int, err error) {
 }
 
 func RangePermissionIds(isLogin bool, userId int) (filterPermissionIds []int, riskLevel string, err error) {
-	return user.CheckUserRisk(nil, isLogin, userId)
+	return user.GetRiskLevelPermissionList(nil, isLogin, userId)
 }
 
 func getCount(permissionIds []int, isLogin bool, userId int) (total int64, latestId int64, ids map[string][]int) {
-	filterPermissionIds, riskLevel, err := user.CheckUserRisk(permissionIds, isLogin, userId)
+	filterPermissionIds, _, err := user.GetRiskLevelPermissionList(permissionIds, isLogin, userId)
 	if err != nil {
-		logger.Error("校验用户风险等级失败:%v", err)
+		logger.Error("获取过滤品种信息失败:%v", err)
+		return
+	}
+	if len(filterPermissionIds) == 0 {
+		logger.Warn("不存在设置风险等级的品种信息")
 		return
 	}
-	return reportService.GetTotalPageCountByPermissionIds(filterPermissionIds, riskLevel)
+	return reportService.GetTotalPageCountByPermissionIds(filterPermissionIds)
 }
 
 func getCountByAnalyst(permissionIds []int, isLogin bool, userId int, analystName string) (total int64, latestId int64, ids []int) {
-	filterPermissionIds, riskLevel, err := user.CheckUserRisk(permissionIds, isLogin, userId)
+	filterPermissionIds, riskLevel, err := user.GetRiskLevelPermissionList(permissionIds, isLogin, userId)
 	if err != nil {
 		logger.Error("校验用户风险等级失败:%v", err)
 		return

+ 23 - 19
service/user/user_service.go

@@ -42,7 +42,8 @@ type UserProfile struct {
 	UserName        string `json:"userName"`
 }
 
-func CheckUserRisk(permissionIds []int, isLogin bool, userId int) (filterPermissionIds []int, riskLevel string, err error) {
+// GetRiskLevelPermissionList 删选掉没有配置风险等级的品种,并校验客户的风险等级,riskLevel只有在客户
+func GetRiskLevelPermissionList(permissionIds []int, isLogin bool, userId int) (filterPermissionIds []int, riskLevel string, err error) {
 	if isLogin {
 		userProfile, userErr := GetUserProfile(userId)
 		if userErr != nil {
@@ -51,36 +52,39 @@ func CheckUserRisk(permissionIds []int, isLogin bool, userId int) (filterPermiss
 			} else {
 				err = exception.New(exception.TemplateUserFoundFailed)
 			}
-			logger.Error("分页查询列表失败:%v", err)
+			logger.Error("获取临时客户信息失败:%v", err)
+			return
+		}
+		var permissionList []permissionService.PermissionDTO
+		if len(permissionIds) == 0 {
+			//获取所有设置风险等级的品种
+			permissionList, err = permissionService.GetPermissionListWithRisk()
+		} else {
+			//更具id过滤设置了风险等级的品种
+			permissionList, err = permissionService.GetPermissionListByIds(permissionIds)
+		}
+		if err != nil {
+			logger.Error("查询有风险等级的品种列表失败:%v", err)
 			return
 		}
 		//获取产品风险等级
 		if userProfile.RiskLevelStatus == RiskUnTest {
 			logger.Warn("客户未做风险等级测评,mobile:%v", userProfile.Mobile)
+			//err = exception.New(exception.RiskUnTestError)
 		}
 		if userProfile.RiskLevelStatus == RiskExpired {
 			logger.Warn("客户风险等级已过期,mobile:%v", userProfile.Mobile)
+			//err = exception.New(exception.RiskExpiredError)
 		}
-		var mapping permissionService.CustomerProductRiskMappingDTO
-		if userProfile.RiskLevel != "" {
+		if userProfile.RiskLevel != "" && userProfile.RiskLevelStatus == RiskValid {
+			var mapping permissionService.CustomerProductRiskMappingDTO
 			mapping, err = permissionService.GetRiskMappingByCustomerRiskLevel(userProfile.RiskLevel)
 			if err != nil {
 				logger.Error("查询产品风险等级映射失败:%v", err)
 				return
 			}
-		}
-		var permissionList []permissionService.PermissionDTO
-		if len(permissionIds) == 0 {
-			//获取所有设置风险等级的品种
-			permissionList, err = permissionService.GetPermissionListWithRisk()
-		} else {
-			//更具id过滤设置了风险等级的品种
-			permissionList, err = permissionService.GetPermissionListByIds(permissionIds)
-		}
-		permissionList = filterPermissionsByRisk(permissionList, mapping.ProductRiskLevel)
-		riskLevel = mapping.ProductRiskLevel
-		if len(permissionList) == 0 {
-			return
+			permissionList = filterPermissionsByRisk(permissionList, mapping.ProductRiskLevel)
+			riskLevel = mapping.ProductRiskLevel
 		}
 		for _, permission := range permissionList {
 			filterPermissionIds = append(filterPermissionIds, permission.PermissionId)
@@ -96,12 +100,12 @@ func CheckUserRisk(permissionIds []int, isLogin bool, userId int) (filterPermiss
 			permissionList, err = permissionService.GetPermissionListByIds(permissionIds)
 		}
 		if err != nil {
-			logger.Error("根据ID查询品种列表失败:%v", err)
+			logger.Error("查询有风险等级的品种列表失败:%v", err)
+			return
 		}
 		for _, permission := range permissionList {
 			filterPermissionIds = append(filterPermissionIds, permission.PermissionId)
 		}
-		//查询品种
 		return
 	}
 }