浏览代码

fix:今日研报添加品种名称

zqbao 11 月之前
父节点
当前提交
8f8a5d799b
共有 5 个文件被更改,包括 94 次插入5 次删除
  1. 50 0
      controllers/report.go
  2. 12 5
      models/chart_permission.go
  3. 18 0
      models/chart_permission_search_key_word_mapping.go
  4. 1 0
      models/report.go
  5. 13 0
      utils/common.go

+ 50 - 0
controllers/report.go

@@ -332,6 +332,56 @@ func (this *ReportController) Today() {
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
+	classifyIds := make([]string, 0)
+	for _, v := range list {
+		classifyIds = append(classifyIds, strconv.Itoa(v.ClassifyIdSecond))
+	}
+	classifyIds = utils.Unique(classifyIds)
+	// 获取二级分类和二级品种权限的映射
+	chartPermissionMapping, err := models.GetChartPermissionIdsListByClassifyIds(classifyIds)
+	if err != nil {
+		br.Msg = "获取研报权限失败"
+		br.ErrMsg = "获取研报权限失败,Err:" + err.Error()
+		return
+	}
+	classifyToPermissionMap2 := make(map[int][]int)
+	chartPermissionIds := make([]string, 0)
+	for _, v := range chartPermissionMapping {
+		classifyToPermissionMap2[v.ClassifyId] = append(classifyToPermissionMap2[v.ClassifyId], v.ChartPermissionId)
+		chartPermissionIds = append(chartPermissionIds, strconv.Itoa(v.ChartPermissionId))
+	}
+	// 获取二级品种的权限,并建立映射
+	chartPermissionList2, err := models.GetParentChartPermissionListByIds(chartPermissionIds)
+	if err != nil {
+		br.Msg = "获取研报二级品种权限失败"
+		br.ErrMsg = "获取研报二级品种权限失败,Err:" + err.Error()
+		return
+	}
+	chartPermissionViewMap2 := make(map[int]*models.ChartPermission)
+	for _, v := range chartPermissionList2 {
+		chartPermissionViewMap2[v.ChartPermissionId] = v
+	}
+	// 获取一级品种的权限,并建立映射
+	chartPermissionList1, err := models.GetChildChartPermissionListById(0)
+	if err != nil {
+		br.Msg = "获取研报一级品种权限失败"
+		br.ErrMsg = "获取研报一级品种权限失败,Err:" + err.Error()
+		return
+	}
+	chartPermissionMap1 := make(map[int]*models.ChartPermission)
+	for _, v := range chartPermissionList1 {
+		chartPermissionMap1[v.ChartPermissionId] = v
+	}
+	// 组合数据
+	for _, v := range list {
+		var permissionNames []string
+		for _, vv := range classifyToPermissionMap2[v.ClassifyIdSecond] {
+			parent2 := chartPermissionViewMap2[vv].ParentId
+			permissionNames = append(permissionNames, chartPermissionMap1[parent2].PermissionName)
+		}
+		v.PermissionNames = utils.Unique(permissionNames)
+	}
+
 	page := paging.GetPaging(currentIndex, pageSize, total)
 
 	resp := new(response.ReportListResp)

+ 12 - 5
models/chart_permission.go

@@ -87,10 +87,17 @@ func GetChildChartPermissionIdsById(chartPermissionId int) (items []string, err
 	return
 }
 
-// GetDefaultChartPermissionCount 获取默认的权限数目
-func GetDefaultChartPermissionCount(productId int) (count int, err error) {
-	sql := ` select count(1) COUNT from chart_permission where product_id=?`
-	o := orm.NewOrm()
-	err = o.Raw(sql, productId).QueryRow(&count)
+// GetChildChartPermissionListById 获取品种权限id列表
+func GetParentChartPermissionListByIds(chartPermissionIds []string) (items []*ChartPermission, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `SELECT * FROM chart_permission 
+	WHERE enabled=1 `
+	var idsStr string
+	if len(chartPermissionIds) > 0 {
+		idsStr = strings.Join(chartPermissionIds, ",")
+		sql += fmt.Sprintf(" AND chart_permission_id in (%s) ", idsStr)
+	}
+	sql += ` ORDER BY sort ASC`
+	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }

+ 18 - 0
models/chart_permission_search_key_word_mapping.go

@@ -7,6 +7,12 @@ import (
 	"github.com/beego/beego/v2/client/orm"
 )
 
+type ChartPermissionSearchKeyWordMapping struct {
+	Id                int `orm:"pk" description:"id"`
+	ChartPermissionId int `description:"品种id"`
+	ClassifyId        int `description:"分类id"`
+}
+
 func GetClassifyIdsListById(chartPermissionId int) (classifyIds []string, err error) {
 	o := orm.NewOrmUsingDB("rddp")
 	sql := ` SELECT classify_id
@@ -25,6 +31,18 @@ func GetChartPermissionIdsListByClassifyId(classifyId int) (chartPermissionIds [
 	return
 }
 
+func GetChartPermissionIdsListByClassifyIds(classifyIds []string) (items []*ChartPermissionSearchKeyWordMapping, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := ` SELECT * FROM chart_permission_search_key_word_mapping	WHERE 1=1 `
+	var idsStr string
+	if len(classifyIds) > 0 {
+		idsStr = strings.Join(classifyIds, ",")
+		sql += fmt.Sprintf(" AND classify_id in (%s) ", idsStr)
+	}
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
 func GetClassifyIdsListByIds(chartPermissionIds []string) (classifyIds []string, err error) {
 	o := orm.NewOrmUsingDB("rddp")
 	sql := ` SELECT classify_id

+ 1 - 0
models/report.go

@@ -15,6 +15,7 @@ type ReportList struct {
 	ClassifyNameFirst  string    `description:"一级分类名称"`
 	ClassifyIdSecond   int       `description:"二级分类id"`
 	ClassifyNameSecond string    `description:"二级分类名称"`
+	PermissionNames    []string  `description:"二级分类名称"`
 	Title              string    `description:"标题"`
 	Abstract           string    `description:"摘要"`
 	Author             string    `description:"作者"`

+ 13 - 0
utils/common.go

@@ -88,3 +88,16 @@ func TrimHtml(src string) string {
 	src = re.ReplaceAllString(src, "")
 	return strings.TrimSpace(src)
 }
+
+func Unique[T comparable](slice []T) []T {
+	seen := make(map[T]struct{})
+	var unique []T
+
+	for _, v := range slice {
+		if _, exists := seen[v]; !exists {
+			unique = append(unique, v)
+			seen[v] = struct{}{}
+		}
+	}
+	return unique
+}