go-zero单体服务(权限管理-4)

角色关联权限资源新增删除

新增api/role_permission_resource.api


type (

RolePermissionResourceListRequest {

RoleId int64  `form:"role_id"`

}

RolePermissionResource {

Id int64  `json:"id"`

Name string  `json:"name"`

URL string  `json:"url"`

Ctime int64  `json:"ctime"`

}

RolePermissionResourceListResponse {

Code int64  `json:"code"`

Msg string  `json:"msg"`

Data []RolePermissionResource `json:"data"`

}

RolePermissionResourceEditRequest {

RoleId int64  `form:"role_id"`

Data string  `form:"data"`

}

RolePermissionResourceEditResponse {

Code int64  `json:"code"`

Msg string  `json:"msg"`

}

)

修改 project.api


...

import (

"./api/routers.api"

"./api/user.api"

"./api/permission_resource.api"

"./api/role_permission_resource.api"  // 新增

)

...

// 角色资源列表

@handler RolePermissionResourceList

post /api/role/permission/resource/list(RolePermissionResourceListRequest) returns (RolePermissionResourceListResponse)

// 角色分配资源

@handler RolePermissionResourceEdit

post /api/role/permission/resource/edit(RolePermissionResourceEditRequest) returns (RolePermissionResourceEditResponse)

...

运行 make api 生成代码

修改internal/logic/rolepermissionresourceeditlogic.go


func (l *RolePermissionResourceEditLogic) RolePermissionResourceEdit(req *types.RolePermissionResourceEditRequest) (resp *types.RolePermissionResourceEditResponse, err error) {

r := l.svcCtx.BkModel.RolePermissionResource

// 先删除

_, err = r.WithContext(l.ctx).Where(r.RoleID.Eq(req.RoleId)).Delete()

if err != nil {

return &types.RolePermissionResourceEditResponse{

Code: 500,

Msg: err.Error(),

}, nil

}

var  data []*model.RolePermissionResource

ids := strings.Split(req.Data, ",")

for  _, item := range ids {

i, _ := strconv.Atoi(item)

p := &model.RolePermissionResource{

RoleID: req.RoleId,

Prid: int64(i),

Ctime: int32(time.Now().Unix()),

Utime: int32(time.Now().Unix()),

}

data = append(data, p)

}

// 分配权限

if data != nil {

r.WithContext(l.ctx).Create(data...)

}

return &types.RolePermissionResourceEditResponse{

Code: 200,

Msg: "成功",

}, nil

}

修改internal/logic/rolepermissionresourcelistlogic.go


func (l *RolePermissionResourceListLogic) RolePermissionResourceList(req *types.RolePermissionResourceListRequest) (resp *types.RolePermissionResourceListResponse, err error) {

// join查询

r := l.svcCtx.BkModel.RolePermissionResource

p := l.svcCtx.BkModel.PermissionResource

var  data []types.RolePermissionResource

err = r.WithContext(l.ctx).Select(p.ID.As("Id"), r.Ctime, p.Name, p.URL).LeftJoin(p, r.Prid.EqCol(p.ID)).Scan(&data)

if err != nil {

return &types.RolePermissionResourceListResponse{

Code: 200,

Msg: err.Error(),

}, nil

}

return &types.RolePermissionResourceListResponse{

Code: 200,

Msg: "成功",

Data: data,

}, nil

}

列表

192.168.1.13:8888/api/role/permission/resource/list?role_id=2


{

"code": 200,

"msg": "成功",

"data": [

{

"id": 2,

"name": "用户信息",

"url": "/api/user/info",

"ctime": 1676356348

}

]

}

编辑

192.168.1.13:8888/api/role/permission/resource/edit?role_id=2&data=2


{

"code": 200,

"msg": "成功"

}
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!