123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- package pc
- import (
- "errors"
- "fmt"
- "hongze/hongze_yb/global"
- "hongze/hongze_yb/models/response/pc"
- "hongze/hongze_yb/models/tables/company_product"
- "hongze/hongze_yb/models/tables/rddp/classify"
- "hongze/hongze_yb/services/company"
- "hongze/hongze_yb/services/user"
- "hongze/hongze_yb/utils"
- "sort"
- "strings"
- )
- // GetClassifyFirstList 获取一级分类列表
- func GetClassifyFirstList(user user.UserInfo) (resp pc.ClassifyFirstList, err error) {
- var errMsg string
- defer func() {
- if err != nil {
- global.LOG.Critical(fmt.Sprintf("GetClassifyFirstList: userId=%d, err:%s, errMsg:%s", user.UserID, err.Error(), errMsg))
- }
- }()
- classifyParents, err := classify.GetParentList()
- if err != nil {
- errMsg = err.Error()
- err = errors.New("分类查询出错")
- return
- }
- if len(classifyParents) == 0 {
- err = errors.New("分类不存在")
- return
- }
- classifyIconMap := make(map[string]string)
- classifySortMap := make(map[string]int)
- var names []string
- for _, v := range classifyParents {
- classifyIconMap[v.ClassifyName] = v.YbFiccPcIcon
- classifySortMap[v.ClassifyName] = v.YbFiccSort
- names = append(names, v.ClassifyName)
- }
- reportList, err := pc.GetLatestStage(names)
- if err != nil {
- errMsg = err.Error()
- err = errors.New("报告查询出错")
- return
- }
- var list pc.ClassifyFirstList
- for _, item := range classifyParents {
- temp := new(pc.ClassifyFirstListItem)
- temp.ClassifyIdFirst = item.Id
- temp.ClassifyNameFirst = item.ClassifyName
- temp.BackImgUrl = classifyIconMap[item.ClassifyName]
- temp.Sort = classifySortMap[item.ClassifyName]
- //if temp.Sort == 0 {
- // continue
- //}
- // ShowType展示类型:1-列表 2-专栏 3-品种; RedirectType跳转类型:1-专栏列表 2-报告列表 3-专栏详情 4-品种类型列表
- temp.RedirectType = 2
- if item.ShowType == 2 {
- temp.RedirectType = 1
- classifyChild, _ := classify.GetChildByPid(item.Id)
- if classifyChild != nil && len(classifyChild) == 1 {
- // 存在二级分类且仅有一个时直接跳转专栏详情
- temp.ClassifyIdSecond = classifyChild[0].Id
- temp.ClassifyNameSecond = classifyChild[0].ClassifyName
- temp.RedirectType = 3
- }
- } else if item.ShowType == 3 {
- temp.RedirectType = 4
- }
- list = append(list, temp)
- }
- // 判断用户状态是否是正常和永续
- var productAuthOk bool
- companyProduct, err := company_product.GetByCompany2ProductId(user.CompanyID, 1)
- if err == utils.ErrNoRow {
- err = nil
- }
- if err != nil && err != utils.ErrNoRow {
- errMsg = err.Error()
- err = errors.New("查询用户购买产品出错")
- return
- }
- if companyProduct != nil {
- // 无FICC权限的客户不可见
- if companyProduct.CompanyProductID > 0 {
- // 已购或者试用用户可见
- if strings.Contains("永续,正式", companyProduct.Status) || (companyProduct.Status == "试用" && companyProduct.IsSuspend != 1) {
- productAuthOk = true
- }
- }
- }
- // 获取有效的权限id列表
- var validPermissionIdList []int
- //var allClassifySecondIds []int
- if productAuthOk {
- validPermissionIdList, err = company.GetValidPermissionIdListByCompany2ProductId(user.CompanyID, 1)
- if err != nil && err != utils.ErrNoRow {
- errMsg = err.Error()
- err = errors.New("查询分类出错")
- return
- }
- }
- //classifyNames, err := chart_permission_search_key_word_mapping.GetKeyWordsByChartPermissionByIds(validPermissionIdList)
- //if err != nil {
- // errMsg = err.Error()
- // err = errors.New("查询权限对应的分类出错")
- // return
- //}
- //
- //if len(classifyNames) > 0 {
- // allClassifySecondIds, err = classify.GetSecondIdsByClassifyNames(classifyNames)
- // if err != nil {
- // errMsg = err.Error()
- // err = errors.New("查询分类出错")
- // return
- // }
- //}
- for _, item := range list {
- //无权限用户关闭品种类别入口
- if item.RedirectType == 4 && !productAuthOk {
- continue
- }
- //只有宏观经济权限的用户关闭品种类别入口
- if len(validPermissionIdList) == 1 && validPermissionIdList[0] == 1 && item.RedirectType == 4 {
- continue
- }
- for _, report := range reportList {
- if report.ClassifyNameFirst == item.ClassifyNameFirst {
- item.Latest = report.Stage
- }
- }
- resp = append(resp, item)
- }
- if len(resp) > 0 {
- sort.Sort(resp)
- }
- return
- }
|