|
@@ -261,73 +261,71 @@ func getETAReportDetail(report *reportService.ReportDTO) (etaReport reportServic
|
|
|
func getHTReportDetail(report *reportService.ReportDTO) (url string, err error) {
|
|
|
return reportService.GetHtReport(report.OrgId)
|
|
|
}
|
|
|
-func GetTotalPageCount() (total int64, latestId int64, err error) {
|
|
|
- return reportService.GetTotalPageCount()
|
|
|
-}
|
|
|
func GetTotalPageCountByPermissionIds(permissionIds []int, isLogin bool, userId int) (total int64, latestId int64, ids map[string][]int) {
|
|
|
- var err error
|
|
|
- //登录了需要校验风险等级,如果风险等级没做或者过期直接返回空,做了就筛选风险等级
|
|
|
- if isLogin {
|
|
|
- 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:%d", userProfile.Mobile)
|
|
|
- return
|
|
|
- }
|
|
|
- if userProfile.RiskLevelStatus == user.RiskExpired {
|
|
|
- logger.Error("客户风险等级已过期,mobile:%d", userProfile.Mobile)
|
|
|
- return
|
|
|
- }
|
|
|
- mapping, mappingErr := permissionService.GetRiskMappingByCustomerRiskLevel(userProfile.RiskLevel)
|
|
|
- if mappingErr != nil {
|
|
|
- logger.Error("查询产品风险等级映射失败:%v", mappingErr)
|
|
|
- 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)
|
|
|
- if len(permissionList) == 0 {
|
|
|
- return
|
|
|
- }
|
|
|
- var filterPermissionIds []int
|
|
|
- for _, permission := range permissionList {
|
|
|
- filterPermissionIds = append(filterPermissionIds, permission.PermissionId)
|
|
|
- }
|
|
|
- return reportService.GetTotalPageCountByPermissionIds(filterPermissionIds, mapping.ProductRiskLevel)
|
|
|
- } else { //没有登录的时候展示所有设置了风险等级的品种报告,筛选的时候过滤传入ID中没有设置风险等级的品种
|
|
|
- var permissionList []permissionService.PermissionDTO
|
|
|
- if len(permissionIds) == 0 {
|
|
|
- //获取所有设置风险等级的品种
|
|
|
- permissionList, err = permissionService.GetPermissionListWithRisk()
|
|
|
- } else {
|
|
|
- //更具id过滤设置了风险等级的品种
|
|
|
- permissionList, err = permissionService.GetPermissionListByIds(permissionIds)
|
|
|
- }
|
|
|
- if err != nil {
|
|
|
- logger.Error("根据ID查询品种列表失败:%v", err)
|
|
|
- }
|
|
|
- var filterPermissionIds []int
|
|
|
- for _, permission := range permissionList {
|
|
|
- filterPermissionIds = append(filterPermissionIds, permission.PermissionId)
|
|
|
- }
|
|
|
- //查询品种
|
|
|
- return reportService.GetTotalPageCountByPermissionIds(filterPermissionIds, "")
|
|
|
- }
|
|
|
+ return getCount(permissionIds, isLogin, userId)
|
|
|
+ //var err error
|
|
|
+ ////登录了需要校验风险等级,如果风险等级没做或者过期直接返回空,做了就筛选风险等级
|
|
|
+ //if isLogin {
|
|
|
+ // 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:%d", userProfile.Mobile)
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ // if userProfile.RiskLevelStatus == user.RiskExpired {
|
|
|
+ // logger.Error("客户风险等级已过期,mobile:%d", userProfile.Mobile)
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ // mapping, mappingErr := permissionService.GetRiskMappingByCustomerRiskLevel(userProfile.RiskLevel)
|
|
|
+ // if mappingErr != nil {
|
|
|
+ // logger.Error("查询产品风险等级映射失败:%v", mappingErr)
|
|
|
+ // 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)
|
|
|
+ // if len(permissionList) == 0 {
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ // var filterPermissionIds []int
|
|
|
+ // for _, permission := range permissionList {
|
|
|
+ // filterPermissionIds = append(filterPermissionIds, permission.PermissionId)
|
|
|
+ // }
|
|
|
+ // return reportService.GetTotalPageCountByPermissionIds(filterPermissionIds, mapping.ProductRiskLevel)
|
|
|
+ //} else { //没有登录的时候展示所有设置了风险等级的品种报告,筛选的时候过滤传入ID中没有设置风险等级的品种
|
|
|
+ // var permissionList []permissionService.PermissionDTO
|
|
|
+ // if len(permissionIds) == 0 {
|
|
|
+ // //获取所有设置风险等级的品种
|
|
|
+ // permissionList, err = permissionService.GetPermissionListWithRisk()
|
|
|
+ // } else {
|
|
|
+ // //更具id过滤设置了风险等级的品种
|
|
|
+ // permissionList, err = permissionService.GetPermissionListByIds(permissionIds)
|
|
|
+ // }
|
|
|
+ // if err != nil {
|
|
|
+ // logger.Error("根据ID查询品种列表失败:%v", err)
|
|
|
+ // }
|
|
|
+ // var filterPermissionIds []int
|
|
|
+ // for _, permission := range permissionList {
|
|
|
+ // filterPermissionIds = append(filterPermissionIds, permission.PermissionId)
|
|
|
+ // }
|
|
|
+ // //查询品种
|
|
|
+ // return reportService.GetTotalPageCountByPermissionIds(filterPermissionIds, "")
|
|
|
+ //}
|
|
|
}
|
|
|
func filterPermissionsByRisk(permissionList []permissionService.PermissionDTO, riskLevel string) (resultList []permissionService.PermissionDTO) {
|
|
|
riskLevelNum, err := parseRiskLevel(riskLevel)
|
|
@@ -431,11 +429,6 @@ func SearchReportList(key string, Ids []int, pageInfo page.PageInfo, isLogin boo
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
-func SearchMaxReportId(key string) (total int64, id int64) {
|
|
|
-
|
|
|
- return reportService.SearchMaxReportId(key)
|
|
|
-}
|
|
|
func RangeSearchByAnalyst(analystName string, userId int) (total int64, latestId int64, ids []int) {
|
|
|
var err error
|
|
|
//登录了需要校验风险等级,如果风险等级没做或者过期直接返回空,做了就筛选风险等级
|
|
@@ -478,66 +471,9 @@ func RangeSearchByAnalyst(analystName string, userId int) (total int64, latestId
|
|
|
return reportService.GetTotalPageCountByAnalyst(analystName, filterPermissionIds)
|
|
|
}
|
|
|
func RangeSearch(isLogin bool, userId int) (total int64, latestId int64, orgIds map[string][]int) {
|
|
|
- var err error
|
|
|
- //登录了需要校验风险等级,如果风险等级没做或者过期直接返回空,做了就筛选风险等级
|
|
|
- if isLogin {
|
|
|
- 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:%d", userProfile.Mobile)
|
|
|
- return
|
|
|
- }
|
|
|
- if userProfile.RiskLevelStatus == user.RiskExpired {
|
|
|
- logger.Error("客户风险等级已过期,mobile:%d", userProfile.Mobile)
|
|
|
- return
|
|
|
- }
|
|
|
- mapping, mappingErr := permissionService.GetRiskMappingByCustomerRiskLevel(userProfile.RiskLevel)
|
|
|
- if mappingErr != nil {
|
|
|
- logger.Error("查询产品风险等级映射失败:%v", mappingErr)
|
|
|
- return
|
|
|
- }
|
|
|
- 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)
|
|
|
- }
|
|
|
- return reportService.GetTotalPageCountByPermissionIds(filterPermissionIds, mapping.ProductRiskLevel)
|
|
|
- } else { //没有登录的时候展示所有设置了风险等级的品种报告,筛选的时候过滤传入ID中没有设置风险等级的品种
|
|
|
- var permissionList []permissionService.PermissionDTO
|
|
|
- //获取所有设置风险等级的品种
|
|
|
- permissionList, err = permissionService.GetPermissionListWithRisk()
|
|
|
- if err != nil {
|
|
|
- logger.Error("根据ID查询品种列表失败:%v", err)
|
|
|
- }
|
|
|
- var filterPermissionIds []int
|
|
|
- for _, permission := range permissionList {
|
|
|
- filterPermissionIds = append(filterPermissionIds, permission.PermissionId)
|
|
|
- }
|
|
|
- //查询品种
|
|
|
- return reportService.GetTotalPageCountByPermissionIds(filterPermissionIds, "")
|
|
|
- }
|
|
|
+ return getCount(nil, isLogin, userId)
|
|
|
}
|
|
|
-
|
|
|
-// GetReportPage 分页获取报告列表
|
|
|
-func GetReportPage(pageInfo page.PageInfo, orgIds map[string][]int, searchAll bool, isLogin bool, userId int) (reports []reportService.ReportDTO, err error) {
|
|
|
- var list []reportService.ReportDTO
|
|
|
- list, err = reportService.GetReportPageByOrgIds(pageInfo, orgIds, searchAll)
|
|
|
- //并发获取研报的标签
|
|
|
+func dealReportInfo(list []reportService.ReportDTO, isLogin bool, userId int) (err error) {
|
|
|
var wg sync.WaitGroup
|
|
|
wg.Add(len(list))
|
|
|
for i := 0; i < len(list); i++ {
|
|
@@ -594,10 +530,78 @@ func GetReportPage(pageInfo page.PageInfo, orgIds map[string][]int, searchAll bo
|
|
|
report.RiskLevel = product.RiskLevel
|
|
|
}
|
|
|
}
|
|
|
- reports = append(reports, *report)
|
|
|
}(&list[i])
|
|
|
}
|
|
|
wg.Wait()
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// GetReportPage 分页获取报告列表
|
|
|
+func GetReportPage(pageInfo page.PageInfo, orgIds map[string][]int, searchAll bool, isLogin bool, userId int) (reports []reportService.ReportDTO, err error) {
|
|
|
+ var list []reportService.ReportDTO
|
|
|
+ list, err = reportService.GetReportPageByOrgIds(pageInfo, orgIds, searchAll)
|
|
|
+ err = dealReportInfo(list, isLogin, userId)
|
|
|
+ ////并发获取研报的标签
|
|
|
+ //var wg sync.WaitGroup
|
|
|
+ //wg.Add(len(list))
|
|
|
+ //for i := 0; i < len(list); i++ {
|
|
|
+ // go func(report *reportService.ReportDTO) {
|
|
|
+ // defer wg.Done()
|
|
|
+ // report.Login = isLogin
|
|
|
+ // report.PermissionNames = getReportPermissionNames(report.OrgId, report.Source)
|
|
|
+ // permissions := getReportSecondPermissions(report.OrgId, report.Source)
|
|
|
+ // if len(permissions) == 0 {
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ // riskNum := getHighestRiskLevel(permissions)
|
|
|
+ // report.RiskLevel = strings.Join([]string{"R", strconv.Itoa(riskNum)}, "")
|
|
|
+ // var src string
|
|
|
+ // src, err = mediaService.GetImageSrc(report.CoverSrc)
|
|
|
+ // if err != nil {
|
|
|
+ // logger.Error("获取图片地址失败:%v", err)
|
|
|
+ // src = ""
|
|
|
+ // } else {
|
|
|
+ // report.CoverUrl = src
|
|
|
+ // }
|
|
|
+ // //下查询产品信息
|
|
|
+ // product, pdErr := productService.GetProductBySourceId(report.ReportID, productDao.Report)
|
|
|
+ // if pdErr != nil {
|
|
|
+ // if errors.Is(pdErr, gorm.ErrRecordNotFound) {
|
|
|
+ // report.Price = defaultProductPrice
|
|
|
+ // report.IsFree = true
|
|
|
+ // report.IsSubscribe = false
|
|
|
+ // } else {
|
|
|
+ // report.Price = defaultProductPrice
|
|
|
+ // report.IsFree = false
|
|
|
+ // report.IsSubscribe = false
|
|
|
+ // }
|
|
|
+ // } else {
|
|
|
+ // report.Price = product.Price.String()
|
|
|
+ // report.IsFree = false
|
|
|
+ // if isLogin {
|
|
|
+ // subscribe, subscribeErr := userService.GetUserSubscribe(product.Id, userId)
|
|
|
+ // if subscribeErr != nil {
|
|
|
+ // report.IsSubscribe = false
|
|
|
+ // } else {
|
|
|
+ // report.IsSubscribe = subscribe.Status == userDao.SubscribeValid
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // pdRiskNum, parseErr := parseRiskLevel(product.RiskLevel)
|
|
|
+ // if parseErr != nil {
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ // rpRiskNum, parseErr := parseRiskLevel(report.RiskLevel)
|
|
|
+ // if parseErr != nil {
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ // if rpRiskNum <= pdRiskNum {
|
|
|
+ // report.RiskLevel = product.RiskLevel
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // reports = append(reports, *report)
|
|
|
+ // }(&list[i])
|
|
|
+ //}
|
|
|
+ //wg.Wait()
|
|
|
if err != nil {
|
|
|
err = exception.New(exception.QueryReportPageFailed)
|
|
|
}
|
|
@@ -997,6 +1001,9 @@ func GetReportByIdListByOrgIds(orgIds map[string][]int) (ids []int, err error) {
|
|
|
}
|
|
|
|
|
|
func RangePermissionIds(isLogin bool, userId int) (filterPermissionIds []int, riskLevel string, err error) {
|
|
|
+ return checkUserRisk(nil, isLogin, userId)
|
|
|
+}
|
|
|
+func checkUserRisk(permissionIds []int, isLogin bool, userId int) (filterPermissionIds []int, riskLevel string, err error) {
|
|
|
if isLogin {
|
|
|
userProfile, userErr := user.GetUserProfile(userId)
|
|
|
if userErr != nil {
|
|
@@ -1005,7 +1012,7 @@ func RangePermissionIds(isLogin bool, userId int) (filterPermissionIds []int, ri
|
|
|
} else {
|
|
|
err = exception.New(exception.TemplateUserFoundFailed)
|
|
|
}
|
|
|
- logger.Error("获取有权限的品种列表失败:%v", err)
|
|
|
+ logger.Error("分页查询报告列表失败:%v", err)
|
|
|
return
|
|
|
}
|
|
|
//获取产品风险等级
|
|
@@ -1023,8 +1030,13 @@ func RangePermissionIds(isLogin bool, userId int) (filterPermissionIds []int, ri
|
|
|
return
|
|
|
}
|
|
|
var permissionList []permissionService.PermissionDTO
|
|
|
- //获取所有设置风险等级的品种
|
|
|
- permissionList, err = permissionService.GetPermissionListWithRisk()
|
|
|
+ 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 {
|
|
@@ -1036,8 +1048,13 @@ func RangePermissionIds(isLogin bool, userId int) (filterPermissionIds []int, ri
|
|
|
return
|
|
|
} else { //没有登录的时候展示所有设置了风险等级的品种报告,筛选的时候过滤传入ID中没有设置风险等级的品种
|
|
|
var permissionList []permissionService.PermissionDTO
|
|
|
- //获取所有设置风险等级的品种
|
|
|
- permissionList, err = permissionService.GetPermissionListWithRisk()
|
|
|
+ if len(permissionIds) == 0 {
|
|
|
+ //获取所有设置风险等级的品种
|
|
|
+ permissionList, err = permissionService.GetPermissionListWithRisk()
|
|
|
+ } else {
|
|
|
+ //更具id过滤设置了风险等级的品种
|
|
|
+ permissionList, err = permissionService.GetPermissionListByIds(permissionIds)
|
|
|
+ }
|
|
|
if err != nil {
|
|
|
logger.Error("根据ID查询品种列表失败:%v", err)
|
|
|
}
|
|
@@ -1048,3 +1065,11 @@ func RangePermissionIds(isLogin bool, userId int) (filterPermissionIds []int, ri
|
|
|
return
|
|
|
}
|
|
|
}
|
|
|
+func getCount(permissionIds []int, isLogin bool, userId int) (total int64, latestId int64, ids map[string][]int) {
|
|
|
+ filterPermissionIds, riskLevel, err := checkUserRisk(permissionIds, isLogin, userId)
|
|
|
+ if err != nil {
|
|
|
+ logger.Error("校验用户风险等级失败:%v", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return reportService.GetTotalPageCountByPermissionIds(filterPermissionIds, riskLevel)
|
|
|
+}
|