|
@@ -63,45 +63,48 @@ func CountMedia(count RecordCount) (traceId string, err error) {
|
|
|
}
|
|
|
|
|
|
func RangeSearchByAnalyst(mediaType string, analystId int, userId int) (total int64, latestId int64, ids []int, mappingRiskLevel string) {
|
|
|
- var err error
|
|
|
- //登录了需要校验风险等级,如果风险等级没做或者过期直接返回空,做了就筛选风险等级
|
|
|
- userProfile, userErr := user.GetUserProfile(userId)
|
|
|
- if userErr != nil {
|
|
|
- if errors.Is(userErr, gorm.ErrRecordNotFound) {
|
|
|
- err = exception.New(exception.TemplateUserNotFound)
|
|
|
- } else {
|
|
|
- err = exception.New(exception.TemplateUserFoundFailed)
|
|
|
- }
|
|
|
- logger.Error("分页查询报告列表失败:%v", err)
|
|
|
- return
|
|
|
- }
|
|
|
- //获取产品风险等级
|
|
|
- if userProfile.RiskLevel == user.RiskUnTest {
|
|
|
- logger.Error("客户未做风险等级测评,mobile:%v", userProfile.Mobile)
|
|
|
- return
|
|
|
- }
|
|
|
- if userProfile.RiskLevelStatus == user.RiskExpired {
|
|
|
- logger.Error("客户风险等级已过期,mobile:%v", userProfile.Mobile)
|
|
|
- return
|
|
|
- }
|
|
|
- mapping, mappingErr := permissionService.GetRiskMappingByCustomerRiskLevel(userProfile.RiskLevel)
|
|
|
- if mappingErr != nil {
|
|
|
- logger.Error("查询产品风险等级映射失败:%v", mappingErr)
|
|
|
- return
|
|
|
- }
|
|
|
- mappingRiskLevel = mapping.ProductRiskLevel
|
|
|
- var permissionList []permissionService.PermissionDTO
|
|
|
- //获取所有设置风险等级的品种
|
|
|
- permissionList, err = permissionService.GetPermissionListWithRisk()
|
|
|
- permissionList = filterPermissionsByRisk(permissionList, mapping.ProductRiskLevel)
|
|
|
- if len(permissionList) == 0 {
|
|
|
+ //var err error
|
|
|
+ ////登录了需要校验风险等级,如果风险等级没做或者过期直接返回空,做了就筛选风险等级
|
|
|
+ //userProfile, userErr := user.GetUserProfile(userId)
|
|
|
+ //if userErr != nil {
|
|
|
+ // if errors.Is(userErr, gorm.ErrRecordNotFound) {
|
|
|
+ // err = exception.New(exception.TemplateUserNotFound)
|
|
|
+ // } else {
|
|
|
+ // err = exception.New(exception.TemplateUserFoundFailed)
|
|
|
+ // }
|
|
|
+ // logger.Error("分页查询报告列表失败:%v", err)
|
|
|
+ // return
|
|
|
+ //}
|
|
|
+ ////获取产品风险等级
|
|
|
+ //if userProfile.RiskLevel == user.RiskUnTest {
|
|
|
+ // logger.Error("客户未做风险等级测评,mobile:%v", userProfile.Mobile)
|
|
|
+ //}
|
|
|
+ //if userProfile.RiskLevelStatus == user.RiskExpired {
|
|
|
+ // logger.Error("客户风险等级已过期,mobile:%v", userProfile.Mobile)
|
|
|
+ //}
|
|
|
+ //mapping, mappingErr := permissionService.GetRiskMappingByCustomerRiskLevel(userProfile.RiskLevel)
|
|
|
+ //if mappingErr != nil {
|
|
|
+ // logger.Error("查询产品风险等级映射失败:%v", mappingErr)
|
|
|
+ // return
|
|
|
+ //}
|
|
|
+ //mappingRiskLevel = mapping.ProductRiskLevel
|
|
|
+ //var permissionList []permissionService.PermissionDTO
|
|
|
+ ////获取所有设置风险等级的品种
|
|
|
+ //permissionList, err = permissionService.GetPermissionListWithRisk()
|
|
|
+ //permissionList = filterPermissionsByRisk(permissionList, mapping.ProductRiskLevel)
|
|
|
+ //if len(permissionList) == 0 {
|
|
|
+ // return
|
|
|
+ //}
|
|
|
+ //var filterPermissionIds []int
|
|
|
+ //for _, permission := range permissionList {
|
|
|
+ // filterPermissionIds = append(filterPermissionIds, permission.PermissionId)
|
|
|
+ //}
|
|
|
+ filterPermissionIds, riskLevel, err := report.CheckUserRisk(nil, true, userId)
|
|
|
+ if err != nil {
|
|
|
+ logger.Error("校验用户风险等级失败:%v", err)
|
|
|
return
|
|
|
}
|
|
|
- var filterPermissionIds []int
|
|
|
- for _, permission := range permissionList {
|
|
|
- filterPermissionIds = append(filterPermissionIds, permission.PermissionId)
|
|
|
- }
|
|
|
- return mediaService.GetAnalystMediaPermissionMappingByPermissionIds(mediaType, filterPermissionIds, analystId, mappingRiskLevel)
|
|
|
+ return mediaService.GetAnalystMediaPermissionMappingByPermissionIds(mediaType, filterPermissionIds, analystId, riskLevel)
|
|
|
}
|
|
|
|
|
|
func getCount(mediaType string, permissionIds []int, isLogin bool, userId int) (total int64, latestId int64, orgIds []int, mappingPdRisk string) {
|
|
@@ -305,6 +308,103 @@ func GetMediaPermissionNames(id []int) (labels []string) {
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
+func DealMediaInfo(media *mediaService.MediaDTO, isLogin bool, templateUserId int, mappingRiskLevel string) (resultMedia *mediaService.MediaDTO, err error) {
|
|
|
+ idStr := strings.Split(media.PermissionIDs, ",")
|
|
|
+ var ids []int
|
|
|
+ ids, err = stringUtils.StringToIntSlice(idStr)
|
|
|
+ if err != nil {
|
|
|
+ logger.Error("品种名称列表转换失败:%v", err)
|
|
|
+ }
|
|
|
+ media.PermissionNames = GetMediaPermissionNames(ids)
|
|
|
+ permissions, permissionErr := getMediaSecondPermissions(ids)
|
|
|
+ if permissionErr != nil {
|
|
|
+ logger.Error("获取媒体品种信息失败:%v,无法设置媒体风险等级", err)
|
|
|
+ }
|
|
|
+ riskNum := config.GetHighestRiskLevel(permissions)
|
|
|
+ media.RiskLevel = strings.Join([]string{"R", strconv.Itoa(riskNum)}, "")
|
|
|
+ if !isLogin {
|
|
|
+ media.Src = ""
|
|
|
+ }
|
|
|
+ media.Login = isLogin
|
|
|
+ var productType productDao.MerchantProductType
|
|
|
+ switch media.MediaType {
|
|
|
+ case string(mediaDao.Audio):
|
|
|
+ productType = productDao.Audio
|
|
|
+ case string(mediaDao.Video):
|
|
|
+ productType = productDao.Video
|
|
|
+ default:
|
|
|
+ logger.Error("未知媒体类型:%s", media.MediaType)
|
|
|
+ productType = ""
|
|
|
+ }
|
|
|
+ var packageList []productService.MerchantProductDTO
|
|
|
+ product, pdErr := productService.GetProductBySourceId(media.MediaId, productType)
|
|
|
+ if pdErr != nil {
|
|
|
+ var permissionIds []int
|
|
|
+ if len(permissions) > 0 {
|
|
|
+ for _, permission := range permissions {
|
|
|
+ permissionIds = append(permissionIds, permission.PermissionId)
|
|
|
+ }
|
|
|
+ //单品不存在的话查套餐
|
|
|
+ packageList, err = productService.GetProductListBySourceIds(permissionIds, "package")
|
|
|
+ if err != nil || len(packageList) == 0 {
|
|
|
+ logger.Error("获取套餐列表失败:%v", err)
|
|
|
+ media.Price = defaultProductPrice
|
|
|
+ media.IsFree = true
|
|
|
+ media.IsSubscribe = false
|
|
|
+ media.IsPackage = false
|
|
|
+ } else {
|
|
|
+ media.Price = defaultProductPrice
|
|
|
+ media.IsFree = false
|
|
|
+ media.IsSubscribe = false
|
|
|
+ media.IsPackage = true
|
|
|
+ media.ProductId = packageList[0].Id
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ media.Price = product.Price.String()
|
|
|
+ media.IsFree = false
|
|
|
+ media.IsPackage = false
|
|
|
+ media.IsSubscribe = false
|
|
|
+ media.ProductId = product.Id
|
|
|
+ }
|
|
|
+ if isLogin {
|
|
|
+ var productIds []int
|
|
|
+ if len(packageList) > 0 {
|
|
|
+ for _, packageItem := range packageList {
|
|
|
+ productIds = append(productIds, packageItem.Id)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if product.Id > 0 {
|
|
|
+ productIds = append(productIds, product.Id)
|
|
|
+ }
|
|
|
+ subscribeList, subscribeErr := userService.GetUserSubscribe(productIds, templateUserId)
|
|
|
+ if subscribeErr != nil {
|
|
|
+ media.IsSubscribe = false
|
|
|
+ } else {
|
|
|
+ for _, subscribe := range subscribeList {
|
|
|
+ if subscribe.Status == productDao.SubscribeValid {
|
|
|
+ media.IsSubscribe = true
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ media.RiskLevelStatus = RiskLevelUnMatch
|
|
|
+ mappingRiskNum, parseErr := config.ParseRiskLevel(mappingRiskLevel)
|
|
|
+ if parseErr != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var rpRiskNum int
|
|
|
+ rpRiskNum, parseErr = config.ParseRiskLevel(media.RiskLevel)
|
|
|
+ if parseErr != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if rpRiskNum <= mappingRiskNum {
|
|
|
+ media.RiskLevelStatus = RiskLevelMatch
|
|
|
+ }
|
|
|
+ resultMedia = media
|
|
|
+ return
|
|
|
+}
|
|
|
|
|
|
// stringToIntSlice 将一个包含数字字符串的切片转换为整数切片
|
|
|
func dealMediaInfo(list []mediaService.MediaDTO, isLogin bool, templateUserId int, mappingRiskLevel string) (dealList []mediaService.MediaDTO, err error) {
|
|
@@ -314,98 +414,9 @@ func dealMediaInfo(list []mediaService.MediaDTO, isLogin bool, templateUserId in
|
|
|
for i := 0; i < len(list); i++ {
|
|
|
go func(media *mediaService.MediaDTO) {
|
|
|
defer wg.Done()
|
|
|
- idStr := strings.Split(media.PermissionIDs, ",")
|
|
|
- var ids []int
|
|
|
- ids, err = stringUtils.StringToIntSlice(idStr)
|
|
|
+ media, err = DealMediaInfo(media, isLogin, templateUserId, mappingRiskLevel)
|
|
|
if err != nil {
|
|
|
- logger.Error("品种名称列表转换失败:%v", err)
|
|
|
- }
|
|
|
- media.PermissionNames = GetMediaPermissionNames(ids)
|
|
|
- permissions, permissionErr := getMediaSecondPermissions(ids)
|
|
|
- if permissionErr != nil {
|
|
|
- logger.Error("获取媒体品种信息失败:%v,无法设置媒体风险等级", err)
|
|
|
- }
|
|
|
- riskNum := config.GetHighestRiskLevel(permissions)
|
|
|
- media.RiskLevel = strings.Join([]string{"R", strconv.Itoa(riskNum)}, "")
|
|
|
- if !isLogin {
|
|
|
- media.Src = ""
|
|
|
- }
|
|
|
- media.Login = isLogin
|
|
|
- var productType productDao.MerchantProductType
|
|
|
- switch media.MediaType {
|
|
|
- case string(mediaDao.Audio):
|
|
|
- productType = productDao.Audio
|
|
|
- case string(mediaDao.Video):
|
|
|
- productType = productDao.Video
|
|
|
- default:
|
|
|
- logger.Error("未知媒体类型:%s", media.MediaType)
|
|
|
- productType = ""
|
|
|
- }
|
|
|
- var packageList []productService.MerchantProductDTO
|
|
|
- product, pdErr := productService.GetProductBySourceId(media.MediaId, productType)
|
|
|
- if pdErr != nil {
|
|
|
- var permissionIds []int
|
|
|
- if len(permissions) > 0 {
|
|
|
- for _, permission := range permissions {
|
|
|
- permissionIds = append(permissionIds, permission.PermissionId)
|
|
|
- }
|
|
|
- //单品不存在的话查套餐
|
|
|
- packageList, err = productService.GetProductListBySourceIds(permissionIds, "package")
|
|
|
- if err != nil || len(packageList) == 0 {
|
|
|
- logger.Error("获取套餐列表失败:%v", err)
|
|
|
- media.Price = defaultProductPrice
|
|
|
- media.IsFree = true
|
|
|
- media.IsSubscribe = false
|
|
|
- media.IsPackage = false
|
|
|
- } else {
|
|
|
- media.Price = defaultProductPrice
|
|
|
- media.IsFree = false
|
|
|
- media.IsSubscribe = false
|
|
|
- media.IsPackage = true
|
|
|
- media.ProductId = packageList[0].Id
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- media.Price = product.Price.String()
|
|
|
- media.IsFree = false
|
|
|
- media.IsPackage = false
|
|
|
- media.IsSubscribe = false
|
|
|
- media.ProductId = product.Id
|
|
|
- }
|
|
|
- if isLogin {
|
|
|
- var productIds []int
|
|
|
- if len(packageList) > 0 {
|
|
|
- for _, packageItem := range packageList {
|
|
|
- productIds = append(productIds, packageItem.Id)
|
|
|
- }
|
|
|
- }
|
|
|
- if product.Id > 0 {
|
|
|
- productIds = append(productIds, product.Id)
|
|
|
- }
|
|
|
- subscribeList, subscribeErr := userService.GetUserSubscribe(productIds, templateUserId)
|
|
|
- if subscribeErr != nil {
|
|
|
- media.IsSubscribe = false
|
|
|
- } else {
|
|
|
- for _, subscribe := range subscribeList {
|
|
|
- if subscribe.Status == productDao.SubscribeValid {
|
|
|
- media.IsSubscribe = true
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- media.RiskLevelStatus = RiskLevelUnMatch
|
|
|
- mappingRiskNum, parseErr := config.ParseRiskLevel(mappingRiskLevel)
|
|
|
- if parseErr != nil {
|
|
|
- return
|
|
|
- }
|
|
|
- var rpRiskNum int
|
|
|
- rpRiskNum, parseErr = config.ParseRiskLevel(media.RiskLevel)
|
|
|
- if parseErr != nil {
|
|
|
- return
|
|
|
- }
|
|
|
- if rpRiskNum <= mappingRiskNum {
|
|
|
- media.RiskLevelStatus = RiskLevelMatch
|
|
|
+ logger.Error("处理媒体信息失败:%v", err)
|
|
|
}
|
|
|
}(&list[i])
|
|
|
}
|