1 Star 0 Fork 0

aurora-engine / adman

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
tool.go 3.61 KB
一键复制 编辑 原始数据 按行查看 历史
package configuration
import (
"gitee.com/aurora-engine/adman/mappers"
"gitee.com/aurora-engine/adman/models"
"gitee.com/aurora-engine/adman/primary"
"gitee.com/aurora-engine/adman/utils/tokenutils"
"database/sql"
"errors"
"gitee.com/aurora-engine/utils/rep"
"gitee.com/aurora-engine/web"
)
type ToolManagement[T primary.Key] struct {
*mappers.ToolManageMapper[T]
*mappers.RoleManageMapper[T]
DB *sql.DB
}
func NewToolManagement[T primary.Key]() web.Constructor {
return func() any {
return &ToolManagement[T]{}
}
}
// List
// @Description :
// @Param args :
// [Get] => /api/configuration/tool/list
func (manage *ToolManagement[T]) List(args map[string]any) (rep.Response, error) {
var err error
var list []*models.Tool
if list, err = manage.SelectToolList(args); err != nil {
return rep.Fail(err, "查询失败"), err
}
return rep.Success(list), nil
}
// ToolRoleList
// @Description :
// @Param args :
// @Param token :
// [Get] => /api/configuration/tool/role/list
func (manage *ToolManagement[T]) ToolRoleList(args map[string]any, token *tokenutils.Token[T]) (rep.Response, error) {
var err error
var list []*models.Tool
args["userId"] = token.ID
if list, err = manage.SelectRoleTool(args); err != nil {
return rep.Fail(err, "工具栏列表查询失败"), err
}
return rep.Success(list), nil
}
// Add
// @Description :
// @Param args :
// [Post] => /api/configuration/tool/add
func (manage *ToolManagement[T]) Add(args map[string]any) (rep.Response, error) {
var err error
var id int64
var tx *sql.Tx
if tx, err = manage.DB.Begin(); err != nil {
return rep.Fail(err, "工具栏添加失败"), err
}
// todo 待验证 工具栏 path 路径 是否唯一
if _, id, err = manage.InsertTool(args, tx); err != nil {
tx.Rollback()
return rep.Fail(err, "添加工具失败"), err
}
args["roleId"] = 1
args["toolId"] = id
// 查询所有超级管理员
var list []*models.Authorization
if list, err = manage.SelectSuperAdminUser(); err != nil {
tx.Rollback()
return rep.Fail(err, "功能添加失败"), err
}
auths := make([]*models.RoleUserToolAuth, 0)
for _, userInfo := range list {
auth := &models.RoleUserToolAuth{
Id: 0,
OrgId: userInfo.UserId,
UserId: userInfo.UserId,
RoleId: userInfo.RoleId,
ToolId: int(id),
}
auths = append(auths, auth)
}
args["auths"] = auths
// todo 新入库的 功能,需要给超级管理员同时赋权 , 若不更新会产生逻辑bug,超级管理员也是需要更具权限才能操作给其他角色分配权限属性
if err = manage.AuthSuperAdminRoleTool(args, tx); err != nil {
tx.Rollback()
return rep.Fail(err, "超级管理员角色授权失败"), err
}
if err = manage.AuthSuperAdminUserTool(args, tx); err != nil {
tx.Rollback()
return rep.Fail(err, "超级管理员用户授权失败"), err
}
tx.Commit()
return rep.Success(true), nil
}
// Del
// @Description :
// @Param args :
// [Post] => /api/configuration/tool/del
func (manage *ToolManagement[T]) Del(args map[string]int) (rep.Response, error) {
var err error
ok := false
if _, ok = args["toolId"]; !ok {
err = errors.New("参数错误")
return rep.Fail(err, "工具栏错误"), err
}
var ids []int
if ids, err = manage.IsAuth(args); err != nil {
return rep.Fail(err, "工具栏角色校验失败"), err
}
if ids != nil && len(ids) > 0 {
err = errors.New("工具栏再用")
return rep.Fail(err, "删除失败"), err
}
if err = manage.DelTool(args); err != nil {
return rep.Fail(err, "工具删除失败"), err
}
return rep.Success(true), nil
}
func (manage *ToolManagement[T]) Edit(args map[string]any) (rep.Response, error) {
return rep.Success(nil), nil
}
Go
1
https://gitee.com/aurora-engine/adman.git
git@gitee.com:aurora-engine/adman.git
aurora-engine
adman
adman
v0.0.2

搜索帮助