فهرست منبع

add:添加公有和私有权限列表的展示

zqbao 9 ماه پیش
والد
کامیت
e5619c5915
3فایلهای تغییر یافته به همراه171 افزوده شده و 26 حذف شده
  1. 133 2
      controllers/chart_permission.go
  2. 20 24
      models/chart_permission.go
  3. 18 0
      routers/commentsRouter.go

+ 133 - 2
controllers/chart_permission.go

@@ -1,6 +1,12 @@
 package controllers
 
-import "eta/eta_mini_bridge/models"
+import (
+	"eta/eta_mini_bridge/models"
+	"eta/eta_mini_bridge/utils"
+	"fmt"
+	"sort"
+	"strconv"
+)
 
 type ChartPermissionController struct {
 	BaseAuthController
@@ -9,7 +15,6 @@ type ChartPermissionController struct {
 // List
 // @Title 系统品种一级列表
 // @Description 系统品种一级列表
-// @Param   UserId   query   int  true       "角色ID"
 // @Success 200 {object} models.LoginResp
 // @router /list [get]
 func (this *ChartPermissionController) List() {
@@ -88,3 +93,129 @@ func (this *ChartPermissionController) AllList() {
 	br.Msg = "列表获取成功"
 	br.Success = true
 }
+
+// Public
+// @Title 获取公有共有权限列表
+// @Description 获取所有公有权限列表
+// @Success 200 {object} []models.ChartPermission
+// @router /public/list [get]
+func (this *ChartPermissionController) Public() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if err := recover(); err != nil {
+			fmt.Println(err)
+			return
+		}
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	items, err := models.GetChartPermissionList()
+	if err != nil {
+		br.Msg = "权限列表获取失败"
+		br.ErrMsg = "权限列表获取失败,系统错误,Err:" + err.Error()
+		return
+	}
+	rootMap := make(map[int]*models.ChartPermission)
+	publicList := make([]*models.ChartPermission, 0)
+	for _, item := range items {
+		if item.ParentId == 0 {
+			rootMap[item.ChartPermissionId] = item
+		} else if item.IsPublic == 1 {
+			publicList = append(publicList, item)
+		}
+	}
+	// 公有权限
+	publicView := getChartPermissionTree(rootMap, publicList)
+	chartList := make([]*models.ChartPermissionView, 0)
+
+	for _, v := range publicView {
+		chartList = append(chartList, v)
+	}
+	sort.Sort(models.BySortChartPermissionView(chartList))
+	br.Msg = "列表获取成功"
+	br.Data = chartList
+	br.Success = true
+	br.Ret = 200
+
+}
+
+// Private
+// @Title 获取私有共有权限列表
+// @Description 获取所有私有权限列表
+// @Success 200 {object} []models.ChartPermission
+// @router /private/list [get]
+func (this *ChartPermissionController) Private() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if err := recover(); err != nil {
+			fmt.Println(err)
+			return
+		}
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	items, err := models.GetChartPermissionList()
+	if err != nil {
+		br.Msg = "权限列表获取失败"
+		br.ErrMsg = "权限列表获取失败,系统错误,Err:" + err.Error()
+		return
+	}
+	rootMap := make(map[int]*models.ChartPermission)
+	privateList := make([]*models.ChartPermission, 0)
+	for _, item := range items {
+		if item.ParentId == 0 {
+			rootMap[item.ChartPermissionId] = item
+		} else if item.IsPublic == 0 {
+			privateList = append(privateList, item)
+		}
+	}
+	// 私有权限
+	privateView := getChartPermissionTree(rootMap, privateList)
+	chartList := make([]*models.ChartPermissionView, 0)
+	for _, v := range privateView {
+		chartList = append(chartList, v)
+	}
+
+	sort.Sort(models.BySortChartPermissionView(chartList))
+	br.Msg = "列表获取成功"
+	br.Data = chartList
+	br.Success = true
+	br.Ret = 200
+
+}
+
+// getChartPermissionTree获得品种权限的树形结构
+func getChartPermissionTree(rootMap map[int]*models.ChartPermission, childChartPermissionList []*models.ChartPermission) map[int]*models.ChartPermissionView {
+	resultMap := make(map[int]*models.ChartPermissionView)
+	for _, v := range childChartPermissionList {
+		if perm, ok := resultMap[v.ParentId]; ok {
+			perm.Child = append(perm.Child, &models.ChartPermissionView{
+				ChartPermissionId: v.ChartPermissionId,
+				PermissionName:    v.PermissionName,
+				IsPublic:          v.IsPublic,
+				Sort:              v.Sort,
+			})
+		} else {
+			if root, ok := rootMap[v.ParentId]; ok {
+				resultMap[v.ParentId] = &models.ChartPermissionView{
+					ChartPermissionId: root.ChartPermissionId,
+					PermissionName:    root.PermissionName,
+					IsPublic:          0,
+					Sort:              root.Sort,
+					Child:             make([]*models.ChartPermissionView, 0),
+				}
+				resultMap[v.ParentId].Child = append(resultMap[v.ParentId].Child, &models.ChartPermissionView{
+					ChartPermissionId: v.ChartPermissionId,
+					PermissionName:    v.PermissionName,
+					IsPublic:          v.IsPublic,
+					Sort:              v.Sort,
+				})
+			} else {
+				utils.ApiLog.Info("私有权限列表获取失败,未找到根节点,权限ID:" + strconv.Itoa(v.ChartPermissionId))
+			}
+		}
+	}
+	return resultMap
+}

+ 20 - 24
models/chart_permission.go

@@ -1,7 +1,6 @@
 package models
 
 import (
-	"eta/eta_mini_bridge/utils"
 	"fmt"
 	"strings"
 	"time"
@@ -36,7 +35,21 @@ type ChartPermission struct {
 	IsPublic              int       `description:"是否是公有权限1:公有权限,0私有权限"`
 }
 
-// GetChildChartPermissionListById 获取品种权限列表
+type ChartPermissionView struct {
+	ChartPermissionId int                    `orm:"pk" description:"权限ID"`
+	PermissionName    string                 `description:"权限名"`
+	Child             []*ChartPermissionView `description:"子权限"`
+	IsPublic          int                    `description:"是否是公有权限1:公有权限,0私有权限"`
+	Sort              int                    `description:"排序"`
+}
+
+type BySortChartPermissionView []*ChartPermissionView
+
+func (a BySortChartPermissionView) Len() int           { return len(a) }
+func (a BySortChartPermissionView) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
+func (a BySortChartPermissionView) Less(i, j int) bool { return a[i].Sort < a[j].Sort }
+
+// GetChartPermissionList 获取全部权限品种权限列表
 func GetChartPermissionList() (items []*ChartPermission, err error) {
 	o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT * FROM chart_permission WHERE enabled=1 ORDER BY sort ASC`
@@ -44,15 +57,15 @@ func GetChartPermissionList() (items []*ChartPermission, err error) {
 	return
 }
 
-// GetChildChartPermissionListById 获取品种权限列表
-func GetChildChartPermissionListById(chartPermissionId int) (items []*ChartPermission, err error) {
+// GetChildChartPermissionListById 获取品种权限列表
+func GetChildChartPermissionListById(id int) (items []*ChartPermission, err error) {
 	o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT * FROM chart_permission WHERE enabled=1 AND parent_id=? ORDER BY sort ASC`
-	_, err = o.Raw(sql, chartPermissionId).QueryRows(&items)
+	_, err = o.Raw(sql, id).QueryRows(&items)
 	return
 }
 
-// GetChartPermissionListById 获取品种权限列表
+// GetChartPermissionListByIds 根据品种ids获取品种权限列表
 func GetChartPermissionIdsByIds(chartPermissionIds []string) (items []*ChartPermission, err error) {
 	o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT * FROM chart_permission WHERE enabled=1 `
@@ -65,7 +78,7 @@ func GetChartPermissionIdsByIds(chartPermissionIds []string) (items []*ChartPerm
 	return
 }
 
-// GetChildChartPermissionListById 获取品种权限列表
+// GetChildChartPermissionListById 获取品种权限id列表
 func GetChildChartPermissionIdsById(chartPermissionId int) (items []string, err error) {
 	o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT chart_permission_id FROM chart_permission WHERE enabled=1 AND parent_id=? ORDER BY sort ASC`
@@ -80,20 +93,3 @@ func GetDefaultChartPermissionCount(productId int) (count int, err error) {
 	err = o.Raw(sql, productId).QueryRow(&count)
 	return
 }
-
-func GetDefaultChartPermissionCountByCache(productId int) (maxPermissionCount int, err error) {
-	maxPermissionCountKey := fmt.Sprint(`hongze_api:max_permission_count:product_id:`, productId)
-	maxPermissionCount, err = utils.Rc.RedisInt(maxPermissionCountKey)
-	if err != nil || maxPermissionCount <= 0 {
-		maxPermissionCount, err = GetDefaultChartPermissionCount(productId)
-		if err != nil {
-			return
-		}
-		utils.Rc.SetNX(maxPermissionCountKey, maxPermissionCount, time.Second*3600)
-	}
-	//ficc需要移除策略的权限
-	if productId == 1 {
-		maxPermissionCount = maxPermissionCount - 1
-	}
-	return
-}

+ 18 - 0
routers/commentsRouter.go

@@ -43,6 +43,24 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_mini_bridge/controllers:ChartPermissionController"] = append(beego.GlobalControllerRouter["eta/eta_mini_bridge/controllers:ChartPermissionController"],
+        beego.ControllerComments{
+            Method: "Private",
+            Router: `/private/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_mini_bridge/controllers:ChartPermissionController"] = append(beego.GlobalControllerRouter["eta/eta_mini_bridge/controllers:ChartPermissionController"],
+        beego.ControllerComments{
+            Method: "Public",
+            Router: `/public/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_mini_bridge/controllers:ChartPermissionController"] = append(beego.GlobalControllerRouter["eta/eta_mini_bridge/controllers:ChartPermissionController"],
         beego.ControllerComments{
             Method: "SecondList",