56 lines
1.3 KiB
Go
56 lines
1.3 KiB
Go
package models
|
|
|
|
type RolePrivilege struct {
|
|
RolePrivilegeID uint `orm:"pk"` // role_privilege_id
|
|
RoleID uint // role_id
|
|
PrivilegeID uint // privilege_id
|
|
IsDelete int8 // is_delete
|
|
CreateTime uint // create_time
|
|
UpdateTime uint // update_time
|
|
|
|
}
|
|
|
|
//根据 role_id 获取权限
|
|
func (rolePrivilege *RolePrivilege) GetRolePrivilegesByRoleId(roleId int) (rolePrivileges []map[string]string, err error) {
|
|
|
|
db := G.DB()
|
|
res, err := db.Query(db.AR().From("role_privilege").Where(map[string]interface{}{
|
|
"role_id": roleId,
|
|
}))
|
|
if(err != nil) {
|
|
return
|
|
}
|
|
|
|
rolePrivileges = res.Rows()
|
|
return
|
|
}
|
|
|
|
//角色授权
|
|
func (rolePrivilege *RolePrivilege) GrantRolePrivileges(roleId int, privilegeIds []string) (res bool, err error) {
|
|
|
|
res = false
|
|
db := G.DB()
|
|
//先删除
|
|
_, err = db.Exec(db.AR().Delete("role_privilege", map[string]interface{}{
|
|
"role_id": roleId,
|
|
}))
|
|
if(err != nil) {
|
|
return
|
|
}
|
|
|
|
rolePrivileges := []map[string]interface{}{}
|
|
for _, privilegeId := range privilegeIds {
|
|
rolePrivilege := map[string]interface{}{
|
|
"role_id": roleId,
|
|
"privilege_id": privilegeId,
|
|
}
|
|
rolePrivileges = append(rolePrivileges, rolePrivilege)
|
|
}
|
|
//批量插入
|
|
_, err = db.Exec(db.AR().InsertBatch("role_privilege", rolePrivileges))
|
|
if err != nil {
|
|
return
|
|
}
|
|
res = true
|
|
return
|
|
} |