go-zero单体服务(权限管理-3)
go-zero单体服务(权限管理-3)
go-zero单体服务(权限管理-1)获取路由列表就是为了这个接口,提供可用的URL,其实也可以手动编写URL来传入这个接口。(手动不安全还是通过代码获取比较合理)
新建 api/permission_resource.api
type(
PermissionResourceListRequest {
}
PermissionResource {
Name string `form:"name"`
Url string `form:"url"`
Ctime int64 `form:"ctime"`
}
PermissionResourceListResponse {
Code int64 `json:"code"`
Msg string `json:"msg"`
Data []PermissionResource `json:"data"`
}
PermissionResourceEditRequest {
Id int64 `form:"id"`
Name string `form:"name"`
Url string `form:"url"`
}
PermissionResourceEditResponse {
Code int64 `json:"code"`
Msg string `json:"msg"`
}
PermissionResourceDeleteRequest {
Id int64 `form:"id"`
}
PermissionResourceDeleteResponse {
Code int64 `json:"code"`
Msg string `json:"msg"`
}
)
修改project.api
...
import (
"./api/routers.api"
"./api/user.api"
"./api/permission_resource.api"
)
...
// 权限资源列表
@handler PermissionResourceList
post /api/permission/resource/list(PermissionResourceListRequest) returns (PermissionResourceListResponse)
// 权限资源列表
@handler PermissionResourceEdit
post /api/permission/resource/edit(PermissionResourceEditRequest) returns (PermissionResourceEditResponse)
// 权限资源删除
@handler PermissionResourceDelete
post /api/permission/resource/delete(PermissionResourceDeleteRequest) returns (PermissionResourceDeleteResponse)
运行 make api 生成代码
修改 internal/logic/permissionresourcelistlogic.go
func (l *PermissionResourceListLogic) PermissionResourceList(req *types.PermissionResourceListRequest) (resp *types.PermissionResourceListResponse, err error) {
p := l.svcCtx.BkModel.PermissionResource
pr, err := p.WithContext(l.ctx).Where(p.Status.Eq(1)).Find()
if err != nil {
return &types.PermissionResourceListResponse{
Code: 500,
Msg: err.Error(),
}, nil
}
var data []types.PermissionResource
if pr != nil {
for _, item := range pr {
d := types.PermissionResource{
Name: item.Name,
Url: item.URL,
Ctime: int64(item.Ctime),
}
data = append(data, d)
}
}
return &types.PermissionResourceListResponse{
Code: 200,
Msg: "成功",
Data: data,
}, nil
}
修改 internal/logic/permissionresourceeditlogic.go
func (l *PermissionResourceEditLogic) PermissionResourceEdit(req *types.PermissionResourceEditRequest) (resp *types.PermissionResourceEditResponse, err error) {
p := l.svcCtx.BkModel.PermissionResource
// 只做新增,不做修改
// 查询数据是否存在
rp, _ := p.WithContext(l.ctx).Where(p.URL.Eq(req.Url)).Where(p.Status.Eq(1)).First()
if rp != nil {
return &types.PermissionResourceEditResponse{
Code: 500,
Msg: "资源已存在",
}, nil
}
// 新建
err = p.WithContext(l.ctx).Create(&model.PermissionResource{
Name: req.Name,
URL: req.Url,
Ctime: int32(time.Now().Unix()),
Utime: int32(time.Now().Unix()),
})
if err != nil {
return &types.PermissionResourceEditResponse{
Code: 500,
Msg: "新建失败",
}, nil
}
return &types.PermissionResourceEditResponse{
Code: 200,
Msg: "成功",
}, nil
}
修改 internal/logic/permissionresourcedeletelogic.go
func (l *PermissionResourceDeleteLogic) PermissionResourceDelete(req *types.PermissionResourceDeleteRequest) (resp *types.PermissionResourceDeleteResponse, err error) {
p := l.svcCtx.BkModel.PermissionResource
// 标记删除
_, err = p.WithContext(l.ctx).Where(p.ID.Eq(req.Id)).Updates(&model.PermissionResource{
Status: 2,
Utime: int32(time.Now().Unix()),
})
if err != nil {
return &types.PermissionResourceDeleteResponse{
Code: 500,
Msg: err.Error(),
}, nil
}
return &types.PermissionResourceDeleteResponse{
Code: 200,
Msg: "成功",
}, nil
}
运行 make:dev
创建
192.168.1.13:8888/api/permission/resource/edit?name=用户信息&url=/api/user/info&id=0
{
"code": 200,
"msg": "成功"
}
查询
192.168.1.13:8888/api/permission/resource/list
{
"code": 200,
"msg": "成功",
"data": [
{
"Name": "用户信息",
"Url": "/api/user/info",
"Ctime": 1676297045
}
]
}
删除
192.168.1.13:8888/api/permission/resource/delete?id=1
{
"code": 200,
"msg": "成功"
}
本作品采用《CC 协议》,转载必须注明作者和本文链接