修改角色菜单
This commit is contained in:
@@ -207,3 +207,77 @@ func UpdateUserRole(ctx *jxcontext.Context, userIDs []string, roleIDs []int) (er
|
|||||||
dao.Commit(db)
|
dao.Commit(db)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetRoleMenu(ctx *jxcontext.Context, roleID int) (roleMenus []*model.RoleMenu, err error) {
|
||||||
|
return dao.GetRoleMenu(dao.GetDB(), []int{roleID}, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func UpdateRoleMenu(ctx *jxcontext.Context, roleIDs, menuIDs []int) (err error) {
|
||||||
|
var (
|
||||||
|
db = dao.GetDB()
|
||||||
|
menuIDMap = make(map[int]int)
|
||||||
|
nowMenuIDMap = make(map[int]int)
|
||||||
|
roleMenuMap = make(map[int][]int)
|
||||||
|
addRoleMenuMap = make(map[int][]int)
|
||||||
|
deleteRoleMenuMap = make(map[int][]int)
|
||||||
|
)
|
||||||
|
for _, v := range menuIDs {
|
||||||
|
menuIDMap[v] = 1
|
||||||
|
}
|
||||||
|
roleMenus, err := dao.GetRoleMenu(db, roleIDs, nil)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if len(roleMenus) > 0 {
|
||||||
|
for _, v := range roleMenus {
|
||||||
|
roleMenuMap[v.RoleID] = append(roleMenuMap[v.RoleID], v.MenuID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, roleID := range roleIDs {
|
||||||
|
nowMenuIDs := roleMenuMap[roleID]
|
||||||
|
for _, nowMenuID := range nowMenuIDs {
|
||||||
|
if menuIDMap[nowMenuID] == 0 {
|
||||||
|
deleteRoleMenuMap[roleID] = append(deleteRoleMenuMap[roleID], nowMenuID)
|
||||||
|
}
|
||||||
|
nowMenuIDMap[nowMenuID] = 1
|
||||||
|
}
|
||||||
|
for _, menuID := range menuIDMap {
|
||||||
|
if nowMenuIDMap[menuID] == 0 {
|
||||||
|
addRoleMenuMap[menuID] = append(addRoleMenuMap[menuID], menuID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dao.Begin(db)
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
panic(r)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
if len(addRoleMenuMap) > 0 {
|
||||||
|
for roleID, menuIDs := range addRoleMenuMap {
|
||||||
|
for _, menuID := range menuIDs {
|
||||||
|
roleMenu := &model.RoleMenu{
|
||||||
|
RoleID: roleID,
|
||||||
|
MenuID: menuID,
|
||||||
|
}
|
||||||
|
dao.WrapAddIDCULDEntity(roleMenu, ctx.GetUserName())
|
||||||
|
err = dao.CreateEntity(db, roleMenu)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(deleteRoleMenuMap) > 0 {
|
||||||
|
for roleID, menuIDs := range deleteRoleMenuMap {
|
||||||
|
for _, menuID := range menuIDs {
|
||||||
|
roleMenus, _ := dao.GetRoleMenu(db, []int{roleID}, []int{menuID})
|
||||||
|
if len(roleMenus) > 0 {
|
||||||
|
roleMenus[0].DeletedAt = time.Now()
|
||||||
|
roleMenus[0].LastOperator = ctx.GetUserName()
|
||||||
|
_, err = dao.UpdateEntity(db, roleMenus[0], "DeletedAt", "LastOperator")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dao.Commit(db)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|||||||
@@ -70,3 +70,24 @@ func GetUserRole(db *DaoDB, userIDs []string, roleIDs []int) (userRoles []*model
|
|||||||
err = GetRows(db, &userRoles, sql, sqlParams)
|
err = GetRows(db, &userRoles, sql, sqlParams)
|
||||||
return userRoles, err
|
return userRoles, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetRoleMenu(db *DaoDB, roleIDs, menuIDs []int) (roleMenus []*model.RoleMenu, err error) {
|
||||||
|
sql := `
|
||||||
|
SELECT *
|
||||||
|
FROM role_menu
|
||||||
|
WHERE deleted_at = ?
|
||||||
|
`
|
||||||
|
sqlParams := []interface{}{
|
||||||
|
utils.DefaultTimeValue,
|
||||||
|
}
|
||||||
|
if len(roleIDs) > 0 {
|
||||||
|
sql += " AND role_id IN (" + GenQuestionMarks(len(roleIDs)) + ")"
|
||||||
|
sqlParams = append(sqlParams, roleIDs)
|
||||||
|
}
|
||||||
|
if len(menuIDs) > 0 {
|
||||||
|
sql += " AND menu_id IN (" + GenQuestionMarks(len(menuIDs)) + ")"
|
||||||
|
sqlParams = append(sqlParams, menuIDs)
|
||||||
|
}
|
||||||
|
err = GetRows(db, &roleMenus, sql, sqlParams)
|
||||||
|
return roleMenus, err
|
||||||
|
}
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ func (c *PowerController) UpdateRole() {
|
|||||||
// @Title 查询用户角色
|
// @Title 查询用户角色
|
||||||
// @Description查询用户角色
|
// @Description查询用户角色
|
||||||
// @Param token header string true "认证token"
|
// @Param token header string true "认证token"
|
||||||
// @Param userID formData string false "用户ID"
|
// @Param userID query string false "用户ID"
|
||||||
// @Success 200 {object} controllers.CallResult
|
// @Success 200 {object} controllers.CallResult
|
||||||
// @Failure 200 {object} controllers.CallResult
|
// @Failure 200 {object} controllers.CallResult
|
||||||
// @router /GetUserRole [get]
|
// @router /GetUserRole [get]
|
||||||
@@ -139,3 +139,37 @@ func (c *PowerController) UpdateUserRole() {
|
|||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Title 查询角色菜单
|
||||||
|
// @Description 查询角色菜单
|
||||||
|
// @Param token header string true "认证token"
|
||||||
|
// @Param roleID query int false "用户ID"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /GetRoleMenu [get]
|
||||||
|
func (c *PowerController) GetRoleMenu() {
|
||||||
|
c.callGetRoleMenu(func(params *tPowerGetRoleMenuParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
retVal, err = cms.GetRoleMenu(params.Ctx, params.RoleID)
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Title 修改角色菜单
|
||||||
|
// @Description 修改角色菜单
|
||||||
|
// @Param token header string true "认证token"
|
||||||
|
// @Param roleIDs formData string true "角色IDs"
|
||||||
|
// @Param menuIDs formData string true "菜单IDs"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /UpdateRoleMenu [put]
|
||||||
|
func (c *PowerController) UpdateRoleMenu() {
|
||||||
|
c.callUpdateRoleMenu(func(params *tPowerUpdateRoleMenuParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
var (
|
||||||
|
roleIDs, menuIDs []int
|
||||||
|
)
|
||||||
|
if err = jxutils.Strings2Objs(params.RoleIDs, &roleIDs, params.MenuIDs, &menuIDs); err == nil {
|
||||||
|
err = cms.UpdateRoleMenu(params.Ctx, roleIDs, menuIDs)
|
||||||
|
}
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -1467,6 +1467,15 @@ func init() {
|
|||||||
Filters: nil,
|
Filters: nil,
|
||||||
Params: nil})
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:PowerController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:PowerController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "GetRoleMenu",
|
||||||
|
Router: `/GetRoleMenu`,
|
||||||
|
AllowHTTPMethods: []string{"get"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Filters: nil,
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:PowerController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:PowerController"],
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:PowerController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:PowerController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "GetUserRole",
|
Method: "GetUserRole",
|
||||||
@@ -1494,6 +1503,15 @@ func init() {
|
|||||||
Filters: nil,
|
Filters: nil,
|
||||||
Params: nil})
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:PowerController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:PowerController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "UpdateRoleMenu",
|
||||||
|
Router: `/UpdateRoleMenu`,
|
||||||
|
AllowHTTPMethods: []string{"put"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Filters: nil,
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:PowerController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:PowerController"],
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:PowerController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:PowerController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "UpdateUserRole",
|
Method: "UpdateUserRole",
|
||||||
|
|||||||
Reference in New Issue
Block a user