Browse Source

角色路由

v1
超级管理员 3 years ago
parent
commit
124f5426f0
  1. 2
      api/version1/entry.go
  2. 150
      api/version1/grantpowers/postpower.go
  3. 41
      api/version1/grantpowers/type.go
  4. 32
      api/version1/menus/menus.go
  5. 7
      api/version1/menus/type.go
  6. 2
      apirouter/entry.go
  7. 20
      apirouter/v1/grantsystempower/pc.go
  8. 4
      apirouter/v1/grantsystempower/type.go
  9. 3
      initialization/route/initRoute.go
  10. 1
      overall/publicmethod/technique.go
  11. 1
      overall/publicmethod/type.go

2
api/version1/entry.go

@ -2,6 +2,7 @@ package version1
import (
"appPlatform/api/version1/dict"
"appPlatform/api/version1/grantpowers"
"appPlatform/api/version1/menus"
"appPlatform/api/version1/user"
)
@ -10,6 +11,7 @@ type ApiEntry struct {
UserApi user.ApiMethod //人员信息
MenusApi menus.ApiMethod //菜单路由
DictApi dict.ApiMethod //字典
GranSystemPowerApi grantpowers.ApiMethod //系统授权
}
var AppApiEntry = new(ApiEntry)

150
api/version1/grantpowers/postpower.go

@ -0,0 +1,150 @@
package grantpowers
import (
"appPlatform/models/modelAppPlatform"
"appPlatform/models/modelsschool"
"appPlatform/models/modelsstorage"
"appPlatform/models/modelssystempermission"
"appPlatform/overall"
"appPlatform/overall/publicmethod"
"fmt"
"strconv"
"strings"
"github.com/gin-gonic/gin"
)
/*
*
@ 作者: 秦东
@ 时间: 2023-05-29 16:07:22
@ 功能: 获取岗位已配置的权限
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) GetPostGrantPowers(c *gin.Context) {
var requestData GetPostPowerCont
err := c.ShouldBindJSON(&requestData)
if err != nil {
publicmethod.Result(100, err, c)
return
}
if requestData.OrdId == "" || requestData.OrdId == "0" {
publicmethod.Result(1, requestData, c, "未知行政组织!不可进行配权")
return
}
if requestData.PostId == "" || requestData.PostId == "0" {
publicmethod.Result(1, requestData, c, "未知岗位!不可进行配权")
return
}
if requestData.SystemName == "" {
publicmethod.Result(1, requestData, c, "未知配权系统!不可进行配权")
return
}
var powerList []string
var empowerCont modelssystempermission.Empower
err = empowerCont.GetCont(map[string]interface{}{"`ordid`": requestData.OrdId, "`post_id`": requestData.PostId, "`system`": requestData.SystemName}, "`id`", "`point_id`", "`operation`")
if err != nil {
publicmethod.Result(0, powerList, c)
return
}
switch requestData.SystemName {
case "kpi":
if empowerCont.PointId != "" || empowerCont.Operation != "" {
powerAry := strings.Split(empowerCont.PointId, ",")
opeartionAry := strings.Split(empowerCont.Operation, ",")
powerList = GetSysKpiMenuPower(powerAry, opeartionAry)
}
case "cangchu":
if empowerCont.PointId != "" {
powerAry := strings.Split(empowerCont.PointId, ",")
powerList = GetWmsMenuPower(powerAry)
}
default:
if empowerCont.PointId != "" {
powerAry := strings.Split(empowerCont.PointId, ",")
powerList = GetSysAppMenuPower(powerAry)
}
}
publicmethod.Result(0, powerList, c)
}
/*
获取平台菜单权限
@menusPower 以获得的权限
*/
func GetSysAppMenuPower(menusPower []string) (powersList []string) {
var permList []int64
err := overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.Menus{}).Select("`perm`").Where("visible IN ?", []int{1, 2}).Find(&permList).Error
if err != nil {
return
}
for _, v := range permList {
permStr := strconv.FormatInt(v, 10)
if publicmethod.IsInTrue[string](permStr, menusPower) {
powersList = append(powersList, fmt.Sprintf("m_%v", permStr))
}
}
return
}
/*
获取KPI菜单权限
@menusPower 以获得的权限
@operPower 以获得的权限
*/
func GetSysKpiMenuPower(menusPower, operPower []string) (powersList []string) {
var menuList []int64
overall.CONSTANT_DB_Master.Model(&modelsschool.SystemMenuSchool{}).Select("m_id").Where("`m_steat` = 1").Order("`m_sort` ASC").Order("`m_sort` ASC").Order("`m_id` DESC").Find(&menuList)
fmt.Printf("menuList--->%v\n", menuList)
if len(menuList) > 0 {
for _, mv := range menuList {
permStr := strconv.FormatInt(mv, 10)
if publicmethod.IsInTrue[string](permStr, menusPower) {
powersList = append(powersList, fmt.Sprintf("m_%v", permStr))
}
}
}
var operList []modelsschool.MenuOperation
overall.CONSTANT_DB_Master.Order("menu_id asc").Find(&operList)
fmt.Printf("operList--->%v\n", operList)
if len(operList) > 0 {
for _, ov := range operList {
operIdStr := strconv.FormatInt(ov.OperId, 10)
menuIdStr := strconv.FormatInt(ov.MenuId, 10)
if publicmethod.IsInTrue[string](operIdStr, operPower) {
powersList = append(powersList, fmt.Sprintf("o_%v_%v", menuIdStr, operIdStr))
}
}
}
return
}
/*
获取仓储菜单权限
@menusPower 以获得的权限
*/
func GetWmsMenuPower(menusPower []string) (powersList []string) {
var permList []int64
err := overall.CONSTANT_DB_AppPlatform.Model(&modelsstorage.AccesstoAddress{}).Select("`id`").Where("`state` = 1").Find(&permList).Error
if err != nil {
return
}
for _, v := range permList {
permStr := strconv.FormatInt(v, 10)
if publicmethod.IsInTrue[string](permStr, menusPower) {
powersList = append(powersList, fmt.Sprintf("m_%v", permStr))
}
}
return
}

41
api/version1/grantpowers/type.go

@ -0,0 +1,41 @@
package grantpowers
import (
"appPlatform/overall/publicmethod"
"github.com/gin-gonic/gin"
)
type ApiMethod struct{}
/*
*
@ 作者: 秦东
@ 时间: 2023-05-29 11:57:53
@ 功能: 系统授权
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) Index(c *gin.Context) {
outputCont := publicmethod.MapOut[string]()
outputCont["index"] = "系统授权"
publicmethod.Result(0, outputCont, c)
}
/*
根据系统获取岗位已配置的权限
*/
type GetPostPowerCont struct {
OrdId string `json:"ordid"` //行政组织
PostId string `json:"postid"` //岗位
SystemName string `json:"name"` //系统识别符
}

32
api/version1/menus/menus.go

@ -4,6 +4,7 @@ import (
"appPlatform/models/modelAppPlatform"
"appPlatform/overall"
"appPlatform/overall/publicmethod"
"fmt"
"time"
"github.com/gin-gonic/gin"
@ -55,12 +56,16 @@ func (a *ApiMethod) GetMenusThree(c *gin.Context) {
#
*/
func (a *ApiMethod) GetMenusListTree(c *gin.Context) {
var requestData ShearMenu
c.ShouldBindJSON(&requestData)
// var requestData ShearMenu
// c.ShouldBindJSON(&requestData)
// c.ShouldBindQuery(&requestData)
// id := c.Query("id")
requestData := c.Query("keywords")
fmt.Printf("没有路由!=====>%v\n", requestData)
var menusList []modelAppPlatform.Menus
gormDb := overall.CONSTANT_DB_AppPlatform.Where("visible IN ?", []int{1, 2})
if requestData.Title != "" {
gormDb = gormDb.Where("`name` LIKE ?", "%"+requestData.Title+"%")
if requestData != "" {
gormDb = gormDb.Where("`name` LIKE ?", "%"+requestData+"%")
}
err := gormDb.Find(&menusList).Error
if err != nil && len(menusList) < 1 {
@ -134,7 +139,17 @@ func (a *ApiMethod) AddNewMenu(c *gin.Context) {
menuCont.Name = requestData.Name //菜单名称"`
menuCont.Types = types //菜单类型(1-菜单;2-目录;3-外链;4-按钮权限"`
menuCont.Path = requestData.Path //路由路径"`
if types == 2 {
if requestData.ParentId == 0 {
menuCont.Component = "Layout" //组件路径(vue页面完整路径,省略.vue后缀)"`
} else {
menuCont.Component = "public/index" //组件路径(vue页面完整路径,省略.vue后缀)"`
}
} else {
menuCont.Component = requestData.Component //组件路径(vue页面完整路径,省略.vue后缀)"`
}
menuCont.Perm = publicmethod.GetUUid(3) //权限标识"`
menuCont.Visible = requestData.Visible //显示状态(1:显示;2:隐藏,3:删除)"`
menuCont.Sort = requestData.Sort //排序(数字越小排名越靠前))"`
@ -252,8 +267,17 @@ func (a *ApiMethod) EditMenusCont(c *gin.Context) {
editCont["path"] = requestData.Path
}
if requestData.Component != menuCont.Component {
if types != menuCont.Types && types == 2 {
if requestData.ParentId != 0 {
editCont["component"] = "public/index"
} else {
editCont["component"] = "Layout"
}
} else {
editCont["component"] = requestData.Component
}
}
if requestData.Visible == 0 {
requestData.Visible = 1
}

7
api/version1/menus/type.go

@ -1,6 +1,7 @@
package menus
import (
"appPlatform/models/modelAppPlatform"
"appPlatform/overall/publicmethod"
"sync"
@ -63,3 +64,9 @@ type EditMenuCont struct {
type GetSunMenus struct {
Id []int `json:"id"` //菜单Id
}
// 输出菜单树
type SendMenusThrees struct {
modelAppPlatform.Menus
PermCode string `json:"permcode"`
}

2
apirouter/entry.go

@ -3,6 +3,7 @@ package apirouter
import (
"appPlatform/apirouter/apishiyan"
dictrouters "appPlatform/apirouter/v1/dict_routers"
"appPlatform/apirouter/v1/grantsystempower"
menusrouters "appPlatform/apirouter/v1/menusRouters"
userrouters "appPlatform/apirouter/v1/userRouters"
)
@ -13,6 +14,7 @@ type RouterGroup struct {
UserRouter userrouters.ApiRouter
MenusRouter menusrouters.ApiRouter
DictRouter dictrouters.ApiRouter
GrantPowerRouter grantsystempower.ApiRouter
}
var RouterGroupEntry = new(RouterGroup)

20
apirouter/v1/grantsystempower/pc.go

@ -0,0 +1,20 @@
package grantsystempower
import (
"appPlatform/api/version1"
"github.com/gin-gonic/gin"
)
// 权力配置
func (a *ApiRouter) RouterGroupPc(router *gin.RouterGroup) {
apiRouter := router.Group("grant")
var methodBinding = version1.AppApiEntry.GranSystemPowerApi
{
apiRouter.GET("", methodBinding.Index) //入口
apiRouter.POST("", methodBinding.Index) //入口
apiRouter.POST("get_post_grant_powers", methodBinding.GetPostGrantPowers) //获取岗位已配置的权限
}
}

4
apirouter/v1/grantsystempower/type.go

@ -0,0 +1,4 @@
package grantsystempower
//菜单路由
type ApiRouter struct{}

3
initialization/route/initRoute.go

@ -48,6 +48,9 @@ func InitialRouter() *gin.Engine {
//字典
dictRouterApi := apirouter.RouterGroupEntry.DictRouter
dictRouterApi.RouterGroupPc(VerifyIdentity)
//配置权限路由
trantPowersRouterApi := apirouter.RouterGroupEntry.GrantPowerRouter
trantPowersRouterApi.RouterGroupPc(VerifyIdentity)
}
//验证身份接口 无需鉴权Url(主要web端使用)

1
overall/publicmethod/technique.go

@ -2189,6 +2189,7 @@ func GetAppMenuThree(parentId int, threeData []modelAppPlatform.Menus) []AppMenu
node.ParentId = v.ParentId //父菜单ID"`
node.Time = v.Time //创建时间"`
node.Class = MenuType(v.Types)
node.PermCode = strconv.FormatInt(v.Perm, 10)
node.Children = child //子路由列表
// // fmt.Printf("GetMenuThree-22222--%v--->%v\n", v.Id, node)
treeList = append(treeList, node)

1
overall/publicmethod/type.go

@ -317,6 +317,7 @@ type MenusRouterThreeMet struct {
type AppMenusThree struct {
modelAppPlatform.Menus
PermCode string `json:"permcode"`
Class string `json:"class"` //类型对照
Children []AppMenusThree `json:"children"` //子路由列表
}

Loading…
Cancel
Save