Jelajahi Sumber

报告增加产品信息筛选

kobe6258 4 bulan lalu
induk
melakukan
4c744765a7

+ 1 - 0
common/utils/string/string_utils.go

@@ -26,6 +26,7 @@ func StringToIntSlice(strSlice []string) ([]int, error) {
 	}
 	return intSlice, nil
 }
+
 func StringsToJSON(str string) string {
 	rs := []rune(str)
 	jsons := ""

+ 3 - 0
domian/merchant/merchant_product.go

@@ -6,6 +6,7 @@ import (
 	merchantDao "eta/eta_mini_ht_api/models/merchant"
 	"github.com/shopspring/decimal"
 	"gorm.io/gorm"
+	"time"
 )
 
 var (
@@ -37,6 +38,7 @@ type MerchantProductDTO struct {
 	ValidDays   int
 	SaleStatus  string
 	SourceId    int
+	CreatedTime time.Time
 }
 
 func GetMerchantProductById(id int) (productDTO MerchantProductDTO, err error) {
@@ -65,6 +67,7 @@ func convertToDTO(product merchantDao.MerchantProduct) MerchantProductDTO {
 		IsPermanent: product.IsPermanent,
 		ValidDays:   product.ValidDays,
 		SourceId:    product.SourceID,
+		CreatedTime: product.CreatedTime,
 	}
 }
 

+ 1 - 1
models/merchant/merchant_product.go

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

+ 5 - 5
service/media/media_service.go

@@ -165,7 +165,7 @@ func GetMediaById(mediaType string, mediaId int, isLogin bool, userId int) (medi
 		logger.Error("品种名称列表转换失败:%v", err)
 		return
 	}
-	media.PermissionNames = getMediaPermissionNames(ids)
+	media.PermissionNames = GetMediaPermissionNames(ids)
 	if isLogin {
 		media.Login = true
 		if status != RiskLevelMatch {
@@ -292,7 +292,7 @@ func GetMediaPageByAnalystId(mediaType string, pageInfo page.PageInfo, analystId
 			if err != nil {
 				logger.Error("获取品种列表失败:%v", err)
 			}
-			media.PermissionNames = getMediaPermissionNames(ids)
+			media.PermissionNames = GetMediaPermissionNames(ids)
 			permissions, permissionErr := getMediaSecondPermissions(ids)
 			if permissionErr != nil {
 				logger.Error("获取媒体品种信息失败:%v,无法设置媒体风险等级", err)
@@ -386,7 +386,7 @@ func GetMediaPageByIds(mediaType string, pageInfo page.PageInfo, mediaIds []int,
 			if err != nil {
 				logger.Error("品种名称列表转换失败:%v", err)
 			}
-			media.PermissionNames = getMediaPermissionNames(ids)
+			media.PermissionNames = GetMediaPermissionNames(ids)
 			permissions, permissionErr := getMediaSecondPermissions(ids)
 			if permissionErr != nil {
 				logger.Error("获取媒体品种信息失败:%v,无法设置媒体风险等级", err)
@@ -475,7 +475,7 @@ func GetMediaPageByIds(mediaType string, pageInfo page.PageInfo, mediaIds []int,
 	}
 	return
 }
-func getMediaPermissionNames(id []int) (labels []string) {
+func GetMediaPermissionNames(id []int) (labels []string) {
 	permissions, err := mediaService.GetPermissionsByIds(id)
 	if err != nil {
 		logger.Error("查询品种名称列表失败:%v", err)
@@ -504,7 +504,7 @@ func SearchMediaList(mediaType string, key string, mediaIds []int, pageInfo page
 			if err != nil {
 				logger.Error("获取品种列表失败:%v", err)
 			}
-			media.PermissionNames = getMediaPermissionNames(ids)
+			media.PermissionNames = GetMediaPermissionNames(ids)
 			permissions, permissionErr := getMediaSecondPermissions(ids)
 			if permissionErr != nil {
 				logger.Error("获取媒体品种信息失败:%v,无法设置媒体风险等级", err)

+ 23 - 8
service/product/product_service.go

@@ -5,13 +5,16 @@ import (
 	"eta/eta_mini_ht_api/common/exception"
 	permissionService "eta/eta_mini_ht_api/domian/config"
 	merchantService "eta/eta_mini_ht_api/domian/merchant"
-	reportService "eta/eta_mini_ht_api/domian/report"
+	reportDomain "eta/eta_mini_ht_api/domian/report"
 	"eta/eta_mini_ht_api/models/config"
 	"eta/eta_mini_ht_api/models/media"
 	configService "eta/eta_mini_ht_api/service/config"
+	mediaService "eta/eta_mini_ht_api/service/media"
 	"eta/eta_mini_ht_api/service/order"
+	reportService "eta/eta_mini_ht_api/service/report"
 	"fmt"
 	"github.com/shopspring/decimal"
+	"strings"
 	"time"
 )
 
@@ -27,16 +30,22 @@ type ProductDTO struct {
 	SourceId    int
 }
 
-func GetProductRiskLevel(product merchantService.MerchantProductDTO) (riskLevel string, err error) {
+func GetProductRiskLevel(product merchantService.MerchantProductDTO) (riskLevel, sourceTitle, sourceAbsract, sourceSrc, permissionNames string, err error) {
 	switch product.Type {
 	case "package":
 		permissionRisk, permissionErr := config.PermissionsByPermissionId(product.SourceId)
+		permissionNames = permissionRisk.Name
 		if permissionErr != nil {
 			logger.Error("获取权限信息失败[permissionId:%d]", product.SourceId)
 		} else {
 			riskLevel = permissionRisk.RiskLevel
 		}
 	case "audio", "video":
+		mediaInfo, mediaErr := media.GetMediaById(product.Type, product.SourceId)
+		sourceTitle, sourceSrc = mediaInfo.MediaName, mediaInfo.Src
+		if mediaErr != nil {
+			logger.Error("获取媒体信息失败[mediaType:%s,mediaId:%d]", 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)
@@ -45,23 +54,26 @@ func GetProductRiskLevel(product merchantService.MerchantProductDTO) (riskLevel
 			if permissionErr != nil {
 				logger.Error("获取权限信息失败[permissionIds:%v]", permissionIds)
 			}
+			permissionNamesList := mediaService.GetMediaPermissionNames(permissionIds)
+			permissionNames = strings.Join(permissionNamesList, ",")
 			riskNum := configService.GetHighestRiskLevel(permissions)
 			riskLevel = fmt.Sprintf("R%d", riskNum)
 		}
 	case "report":
-		report, reportErr := reportService.GetReportById(product.SourceId)
+		report, reportErr := reportDomain.GetReportById(product.SourceId)
+		sourceAbsract, sourceTitle = report.Abstract, report.Title
 		if reportErr != nil {
 			logger.Error("获取研报信息失败[reportId:%d]", product.SourceId)
 		} else {
 			switch report.Source {
-			case reportService.SourceHT:
+			case reportDomain.SourceHT:
 				permission, permissionErr := configService.GetPermissionByName(report.PlateName)
 				if permissionErr != nil {
 					logger.Error("获取板块权限失败[plateName:%s]", report.PlateName)
 				} else {
 					riskLevel = permission.RiskLevel
 				}
-			case reportService.SourceETA:
+			case reportDomain.SourceETA:
 				permissions, permissionErr := configService.GetSecondPermissionsByClassifyId(report.ClassifyId)
 				if permissionErr != nil {
 					logger.Error("获取板块权限失败[plateName:%s]", report.PlateName)
@@ -70,6 +82,9 @@ func GetProductRiskLevel(product merchantService.MerchantProductDTO) (riskLevel
 					riskLevel = fmt.Sprintf("R%d", riskNum)
 				}
 			}
+			var permissionNamesList []string
+			_, permissionNamesList = reportService.GetReportPermissionNames(report.OrgId, report.Source)
+			permissionNames = strings.Join(permissionNamesList, ",")
 		}
 	default:
 		logger.Warn("不支持的产品类型[%s]", product.Type)
@@ -83,7 +98,7 @@ func GetProductInfoById(productId int) (product ProductDTO, err error) {
 		return
 	}
 	product = convertToProductDTO(merchantProduct)
-	product.RiskLevel, err = GetProductRiskLevel(merchantProduct)
+	product.RiskLevel, _, _, _, _, err = GetProductRiskLevel(merchantProduct)
 	if err != nil {
 		logger.Error("获取风险等级失败[productId:%d]", productId)
 	}
@@ -149,12 +164,12 @@ func GetRelatePackage(info ProductDTO) (prodList []merchantService.MerchantProdu
 		}
 		return merchantService.GetProductListBySourceIds(permissionIds, "package")
 	case "report":
-		reportInfo, reportErr := reportService.GetReportById(info.SourceId)
+		reportInfo, reportErr := reportDomain.GetReportById(info.SourceId)
 		if reportErr != nil {
 			logger.Error("获取报告信息失败:%v", err)
 			return
 		}
-		permissions := reportService.GetReportSecondPermissionsById(reportInfo.OrgId, reportInfo.Source)
+		permissions := reportDomain.GetReportSecondPermissionsById(reportInfo.OrgId, reportInfo.Source)
 		var permissionIds []int
 		if len(permissions) > 0 {
 			for _, permission := range permissions {

+ 29 - 8
service/product/subscribe_servcie.go

@@ -5,13 +5,21 @@ import (
 	"eta/eta_mini_ht_api/common/utils/page"
 	"eta/eta_mini_ht_api/domian/merchant"
 	"sync"
+	"time"
 )
 
 type SubscribeDTO struct {
-	Title     string
-	Abstract  string
-	RiskLevel string
-	CoverSrc  string
+	Title           string
+	Abstract        string
+	SourceId        int
+	SourceTitle     string
+	SourceAbstract  string
+	SourceSrc       string
+	Type            string
+	RiskLevel       string
+	CoverSrc        string
+	PermissionNames string
+	CreatedDate     string
 }
 
 func SubscribeList(templateUserId int, productType string, pageInfo page.PageInfo) (list []SubscribeDTO, err error) {
@@ -24,10 +32,20 @@ func SubscribeList(templateUserId int, productType string, pageInfo page.PageInf
 			defer wg.Done()
 			product, _ := merchant.GetMerchantProductById(Subscribe.ProductID)
 			subscribe := convertToSubscribeDTO(product)
-			subscribe.RiskLevel, err = GetProductRiskLevel(product)
 			if err != nil {
 				logger.Error("获取风险等级失败[productId:%d]", product.Id)
 			}
+			switch product.Type {
+			case "audio", "video":
+				subscribe.RiskLevel, subscribe.SourceTitle, _, subscribe.SourceSrc, subscribe.PermissionNames, err = GetProductRiskLevel(product)
+			case "report":
+				subscribe.RiskLevel, subscribe.SourceTitle, subscribe.SourceAbstract, _, subscribe.PermissionNames, err = GetProductRiskLevel(product)
+			case "package":
+				subscribe.RiskLevel, _, _, _, subscribe.PermissionNames, err = GetProductRiskLevel(product)
+			default:
+				logger.Error("未知产品类型[productType:%s]", product.Type)
+				return
+			}
 			list = append(list, subscribe)
 		}(Subscribe)
 	}
@@ -37,9 +55,12 @@ func SubscribeList(templateUserId int, productType string, pageInfo page.PageInf
 
 func convertToSubscribeDTO(product merchant.MerchantProductDTO) SubscribeDTO {
 	return SubscribeDTO{
-		Title:    product.Title,
-		Abstract: product.Description,
-		CoverSrc: product.CoverSrc,
+		SourceId:    product.SourceId,
+		Type:        product.Type,
+		Title:       product.Title,
+		Abstract:    product.Description,
+		CoverSrc:    product.CoverSrc,
+		CreatedDate: product.CreatedTime.Format(time.DateOnly),
 	}
 }
 func GetTotalPageCountByProductType(productType string, templateUserId int) (int64, int64) {

+ 4 - 4
service/report/report_service.go

@@ -283,7 +283,7 @@ func dealReportInfo(list []reportService.ReportDTO, isLogin bool, userId int) (r
 		go func(report *reportService.ReportDTO) {
 			defer wg.Done()
 			report.Login = isLogin
-			report.Permissions, report.PermissionNames = getReportPermissionNames(report.OrgId, report.Source)
+			report.Permissions, report.PermissionNames = GetReportPermissionNames(report.OrgId, report.Source)
 			var permissions []permissionService.PermissionDTO
 			permissions, report.SecondPermission = getReportSecondPermissions(report.OrgId, report.Source)
 			if len(permissions) == 0 {
@@ -375,7 +375,7 @@ func GetReportPageByAnalyst(pageInfo page.PageInfo, analyst string, reportIds []
 	for i := 0; i < len(list); i++ {
 		go func(report *reportService.ReportDTO) {
 			defer wg.Done()
-			report.Permissions, report.PermissionNames = getReportPermissionNames(report.OrgId, report.Source)
+			report.Permissions, report.PermissionNames = GetReportPermissionNames(report.OrgId, report.Source)
 		}(&list[i])
 	}
 	wg.Wait()
@@ -481,7 +481,7 @@ func GetRandedReportByPublishTimeWeekly(limit int, week bool, isLogin bool, user
 	return
 }
 
-func getReportPermissionNames(id int, source string) (permissionMap map[int]string, labels []string) {
+func GetReportPermissionNames(id int, source string) (permissionMap map[int]string, labels []string) {
 	permissions := reportService.GetReportPermissionsById(id, source)
 	permissionMap = make(map[int]string, len(permissions))
 	if len(permissions) > 0 {
@@ -492,7 +492,7 @@ func getReportPermissionNames(id int, source string) (permissionMap map[int]stri
 	}
 	return
 }
-func getReportSecondPermissionsMap(id int, source string) (permissionMap map[int]string) {
+func GetReportSecondPermissionsMap(id int, source string) (permissionMap map[int]string) {
 	permissionMap = make(map[int]string)
 	permissions := reportService.GetReportSecondPermissionsById(id, source)
 	for _, permission := range permissions {