Prechádzať zdrojové kódy

Merge branch 'feature/rs_auth_507'

hsun 9 mesiacov pred
rodič
commit
e51f412fc3
2 zmenil súbory, kde vykonal 66 pridanie a 3 odobranie
  1. 50 1
      controllers/yb/road_video.go
  2. 16 2
      models/permission.go

+ 50 - 1
controllers/yb/road_video.go

@@ -527,7 +527,7 @@ func (r *RoadVideoController) SimpleReportList() {
 		cond += ` AND title LIKE ?`
 		pars = append(pars, kw)
 	}
-	fieldArr := []string{"id", "title", "publish_time"}
+	fieldArr := []string{"id", "classify_id_second", "title", "publish_time"}
 	orderRule := ` ORDER BY publish_time DESC, id DESC`
 	reports, e := models.GetReportByCondition(cond, pars, fieldArr, orderRule, true, 0, 5)
 	if e != nil {
@@ -536,12 +536,60 @@ func (r *RoadVideoController) SimpleReportList() {
 		return
 	}
 
+	// 查询报告权限
+	classifyPermissions := make(map[int][]int, 0)
+	{
+		classifyIds := make([]int, 0)
+		for _, v := range reports {
+			if utils.InArrayByInt(classifyIds, v.ClassifyIdSecond) {
+				continue
+			}
+			classifyIds = append(classifyIds, v.ClassifyIdSecond)
+		}
+		if len(classifyIds) > 0 {
+			cnd := fmt.Sprintf(` AND id IN (%s)`, utils.GetOrmInReplace(len(classifyIds)))
+			ps := make([]interface{}, 0)
+			ps = append(ps, classifyIds)
+			classifies, e := models.GetClassifyByCondition(cnd, "", ps)
+			if e != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取报告分类失败, Err: " + e.Error()
+				return
+			}
+			classifyNames := make([]string, 0)
+			classifyNameId := make(map[string]int, 0)
+			for _, v := range classifies {
+				classifyNameId[v.ClassifyName] = v.Id
+				classifyNames = append(classifyNames, v.ClassifyName)
+			}
+			if len(classifyNames) > 0 {
+				classifyNamePermissions, e := models.GetPermissionsByClassifyNames(classifyNames)
+				if e != nil {
+					br.Msg = "获取失败"
+					br.ErrMsg = "获取分类权限失败, Err: " + e.Error()
+					return
+				}
+				namePermissions := make(map[string][]int, 0)
+				for _, v := range classifyNamePermissions {
+					if namePermissions[v.KeyWord] == nil {
+						namePermissions[v.KeyWord] = make([]int, 0)
+					}
+					namePermissions[v.KeyWord] = append(namePermissions[v.KeyWord], v.ChartPermissionId)
+				}
+				for k, v := range classifyNameId {
+					classifyPermissions[v] = namePermissions[k]
+				}
+			}
+		}
+	}
+
 	type SimpleReportListResp struct {
 		ReportId       int
 		Title          string
 		PublishTime    string
 		BindVideo      int
 		BindVideoTitle string
+		PermissionIds  []int
 	}
 	respList := make([]*SimpleReportListResp, 0)
 	if len(reports) > 0 {
@@ -570,6 +618,7 @@ func (r *RoadVideoController) SimpleReportList() {
 				PublishTime:    reports[i].PublishTime.Format(utils.FormatDateTime),
 				BindVideo:      bindMap[reports[i].Id],
 				BindVideoTitle: bindTitleMap[reports[i].Id],
+				PermissionIds:  classifyPermissions[reports[i].ClassifyIdSecond],
 			})
 		}
 	}

+ 16 - 2
models/permission.go

@@ -1,6 +1,10 @@
 package models
 
-import "github.com/beego/beego/v2/client/orm"
+import (
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hz_crm_api/utils"
+)
 
 // ChartPermissionSearchKeyWordMapping 权限相关
 type ChartPermissionSearchKeyWordMapping struct {
@@ -97,4 +101,14 @@ func UpdateChartPermissionNameFromMappingByKeyword(newKeyword, keyword, source s
 	sql := " UPDATE chart_permission_search_key_word_mapping SET key_word = ? WHERE key_word = ? AND `from` = ? "
 	_, err = o.Raw(sql, newKeyword, keyword, source).Exec()
 	return
-}
+}
+
+func GetPermissionsByClassifyNames(names []string) (items []*ChartPermissionSearchKeyWordMapping, err error) {
+	if len(names) == 0 {
+		return
+	}
+	o := orm.NewOrm()
+	sql := fmt.Sprintf(`SELECT * FROM chart_permission_search_key_word_mapping AS a WHERE a.from='rddp' AND a.key_word IN (%s)`, utils.GetOrmInReplace(len(names)))
+	_, err = o.Raw(sql, names).QueryRows(&items)
+	return
+}