89 lines
2.7 KiB
Go
89 lines
2.7 KiB
Go
package system
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
"kra/internal/biz/system"
|
|
|
|
"github.com/go-kratos/kratos/v2/errors"
|
|
"github.com/go-kratos/kratos/v2/transport/http"
|
|
)
|
|
|
|
// AuthorityBtnService 角色按钮权限服务
|
|
type AuthorityBtnService struct {
|
|
uc *system.AuthorityBtnUsecase
|
|
}
|
|
|
|
// NewAuthorityBtnService 创建角色按钮权限服务
|
|
func NewAuthorityBtnService(uc *system.AuthorityBtnUsecase) *AuthorityBtnService {
|
|
return &AuthorityBtnService{uc: uc}
|
|
}
|
|
|
|
// GetAuthorityBtnRequest 获取角色按钮权限请求
|
|
type GetAuthorityBtnRequest struct {
|
|
AuthorityId uint `json:"authorityId"`
|
|
MenuID uint `json:"menuID"`
|
|
}
|
|
|
|
// GetAuthorityBtnResponse 获取角色按钮权限响应
|
|
type GetAuthorityBtnResponse struct {
|
|
Selected []uint `json:"selected"`
|
|
}
|
|
|
|
// SetAuthorityBtnRequest 设置角色按钮权限请求
|
|
type SetAuthorityBtnRequest struct {
|
|
AuthorityId uint `json:"authorityId"`
|
|
MenuID uint `json:"menuID"`
|
|
Selected []uint `json:"selected"`
|
|
}
|
|
|
|
// RegisterRoutes 注册路由
|
|
func (s *AuthorityBtnService) RegisterRoutes(rg *RouterGroup) {
|
|
// 角色按钮权限(不需要操作记录)
|
|
rg.Private.POST("/authorityBtn/getAuthorityBtn", s.handleGetAuthorityBtn)
|
|
rg.Private.POST("/authorityBtn/setAuthorityBtn", s.handleSetAuthorityBtn)
|
|
rg.Private.POST("/authorityBtn/canRemoveAuthorityBtn", s.handleCanRemoveAuthorityBtn)
|
|
}
|
|
|
|
func (s *AuthorityBtnService) handleGetAuthorityBtn(ctx http.Context) error {
|
|
var req GetAuthorityBtnRequest
|
|
if err := ctx.Bind(&req); err != nil {
|
|
return err
|
|
}
|
|
selected, err := s.uc.GetAuthorityBtn(ctx, req.AuthorityId, req.MenuID)
|
|
if err != nil {
|
|
return errors.InternalServer("QUERY_ERROR", err.Error())
|
|
}
|
|
return ctx.Result(200, map[string]any{
|
|
"code": 0,
|
|
"msg": "查询成功",
|
|
"data": GetAuthorityBtnResponse{Selected: selected},
|
|
})
|
|
}
|
|
|
|
func (s *AuthorityBtnService) handleSetAuthorityBtn(ctx http.Context) error {
|
|
var req SetAuthorityBtnRequest
|
|
if err := ctx.Bind(&req); err != nil {
|
|
return err
|
|
}
|
|
if err := s.uc.SetAuthorityBtn(ctx, req.AuthorityId, req.MenuID, req.Selected); err != nil {
|
|
return errors.InternalServer("SET_ERROR", err.Error())
|
|
}
|
|
return ctx.Result(200, map[string]any{"code": 0, "msg": "分配成功"})
|
|
}
|
|
|
|
func (s *AuthorityBtnService) handleCanRemoveAuthorityBtn(ctx http.Context) error {
|
|
idStr := ctx.Request().URL.Query().Get("id")
|
|
if idStr == "" {
|
|
return errors.BadRequest("INVALID_ID", "id参数不能为空")
|
|
}
|
|
id, err := strconv.ParseUint(idStr, 10, 64)
|
|
if err != nil {
|
|
return errors.BadRequest("INVALID_ID", "id参数格式错误")
|
|
}
|
|
if err := s.uc.CanRemoveAuthorityBtn(ctx, uint(id)); err != nil {
|
|
return errors.BadRequest("BTN_IN_USE", err.Error())
|
|
}
|
|
return ctx.Result(200, map[string]any{"code": 0, "msg": "删除成功"})
|
|
}
|