Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
401 lines
9.7 KiB
Go
401 lines
9.7 KiB
Go
package web_acc
|
|
|
|
import (
|
|
"videoweb/pub/common"
|
|
"videoweb/pub/common/pageopt"
|
|
"videoweb/pub/common/srvdef"
|
|
"videoweb/pub/models/mwacc"
|
|
"videoweb/pub/pubdef"
|
|
"videoweb/web/service/srv_mwacc"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
)
|
|
|
|
// @Tags 角色
|
|
// @Summary 角色-列表
|
|
// @Description 角色-列表
|
|
// @Accept json
|
|
// @Produce json
|
|
// @Param param body pubdef.Page true "参数列表"
|
|
// @Success 200 {object} MwRoleListResp "成功"
|
|
// @Failure 400 {string} string "获取失败的返回结果"
|
|
// @Security ApiKeyAuth
|
|
// @Router /api/web/role/list [GET]
|
|
func RoleGetList(c *gin.Context) {
|
|
var req pubdef.Page
|
|
|
|
if err := c.ShouldBindQuery(&req); err != nil {
|
|
common.ServerJSON(c, srvdef.ErrParamError, err.Error())
|
|
return
|
|
}
|
|
if req.PageNum <= 0 {
|
|
req.PageNum = 1
|
|
}
|
|
if req.PageSize <= 0 {
|
|
req.PageSize = 10
|
|
}
|
|
|
|
skip := (req.PageNum - 1) * req.PageSize
|
|
limit := req.PageSize
|
|
|
|
// 获取分页信息
|
|
var mats []pageopt.Matcher
|
|
dbRoleRec, err := mwacc.GetRoleList(c, skip, limit, mats...)
|
|
if err != nil {
|
|
common.ServerJSON(c, srvdef.Failure, "")
|
|
return
|
|
}
|
|
|
|
// 获取总条数
|
|
roleCount, err := mwacc.RoleCountByFilter(c, bson.M{})
|
|
|
|
if err != nil {
|
|
common.ServerJSON(c, srvdef.Failure, "")
|
|
return
|
|
}
|
|
|
|
webRoleRec := make([]*MwRoleRec, 0)
|
|
for _, v := range dbRoleRec {
|
|
webRoleRec = append(webRoleRec, &MwRoleRec{
|
|
Id: v.Id,
|
|
Name: v.Name,
|
|
Desc: v.Desc,
|
|
IsEnb: v.IsEnb,
|
|
ApiMenus: v.ApiMenus[:],
|
|
CreatedAt: v.CreatedAt,
|
|
UpdatedAt: v.UpdatedAt,
|
|
})
|
|
}
|
|
|
|
// 返回正确信息
|
|
common.ServerJSON(c, srvdef.Success, MwRoleListResp{TotalCount: roleCount, RoleRecs: webRoleRec})
|
|
return
|
|
}
|
|
|
|
// @Tags 角色
|
|
// @Summary 角色-添加
|
|
// @Description 角色-添加
|
|
// @Accept json
|
|
// @Produce json
|
|
// @Param param body MwRoleAddReq true "参数列表"
|
|
// @Success 200 {object} MwRoleAddResp "成功"
|
|
// @Failure 400 {string} string "获取失败的返回结果"
|
|
// @Security ApiKeyAuth
|
|
// @Router /api/web/role/add [POST]
|
|
func RoleAdd(c *gin.Context) {
|
|
var req MwRoleAddReq
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
common.ServerJSON(c, srvdef.ErrParamError, err.Error())
|
|
return
|
|
}
|
|
|
|
ok, _ := mwacc.RoleAdd(c, req.Name, req.Desc, req.IsEnb)
|
|
if !ok {
|
|
common.ServerJSON(c, srvdef.Failure, "")
|
|
return
|
|
}
|
|
// 返回正确信息
|
|
common.ServerJSON(c, srvdef.Success, MwRoleAddResp{Result: true})
|
|
return
|
|
}
|
|
|
|
// @Tags 角色
|
|
// @Summary 角色-删除
|
|
// @Description 角色-删除
|
|
// @Accept json
|
|
// @Produce json
|
|
// @Param param body MwRoleDelReq true "参数列表"
|
|
// @Success 200 {object} MwRoleDelResp "成功"
|
|
// @Failure 400 {string} string "获取失败的返回结果"
|
|
// @Security ApiKeyAuth
|
|
// @Router /api/web/role/del [POST]
|
|
func RoleDel(c *gin.Context) {
|
|
var req MwRoleDelReq
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
common.ServerJSON(c, srvdef.ErrParamError, err.Error())
|
|
return
|
|
}
|
|
ok, err := srv_mwacc.RoleDel(c, req.Id)
|
|
if !ok {
|
|
common.ServerJSON(c, srvdef.ErrParamError, err.Error())
|
|
return
|
|
}
|
|
|
|
common.ServerJSON(c, srvdef.Success, MwRoleDelResp{Result: true})
|
|
return
|
|
}
|
|
|
|
// @Tags 角色
|
|
// @Summary 角色-获取信息
|
|
// @Description 角色-获取信息
|
|
// @Accept json
|
|
// @Produce json
|
|
// @Param param body MwRoleGetInfoReq true "参数列表"
|
|
// @Success 200 {object} MwRoleGetInfoResp "成功"
|
|
// @Failure 400 {string} string "获取失败的返回结果"
|
|
// @Security ApiKeyAuth
|
|
// @Router /api/web/role/getinfo [GET]
|
|
func RoleGetInfo(c *gin.Context) {
|
|
|
|
var req MwRoleGetInfoReq
|
|
|
|
if err := c.ShouldBindQuery(&req); err != nil {
|
|
common.ServerJSON(c, srvdef.ErrParamError, err.Error())
|
|
return
|
|
}
|
|
|
|
roleInfo, err := srv_mwacc.RoleGetInfo(c, req.Id)
|
|
|
|
if err != nil {
|
|
common.ServerJSON(c, srvdef.ErrParamError, err.Error())
|
|
return
|
|
}
|
|
|
|
resq := &MwRoleGetInfoResp{
|
|
RoleRec: &MwRoleRec{
|
|
Id: roleInfo.Id,
|
|
Name: roleInfo.Name,
|
|
Desc: roleInfo.Desc,
|
|
IsEnb: roleInfo.IsEnb,
|
|
ApiMenus: roleInfo.ApiMenus[:],
|
|
CreatedAt: roleInfo.CreatedAt,
|
|
UpdatedAt: roleInfo.UpdatedAt,
|
|
},
|
|
}
|
|
common.ServerJSON(c, srvdef.Success, resq)
|
|
return
|
|
}
|
|
|
|
// @Tags 角色
|
|
// @Summary 角色-更新
|
|
// @Description 角色-更新
|
|
// @Accept json
|
|
// @Produce json
|
|
// @Param param body MwRoleUpReq true "参数列表"
|
|
// @Success 200 {object} MwRoleUpResp "成功"
|
|
// @Failure 400 {string} string "获取失败的返回结果"
|
|
// @Security ApiKeyAuth
|
|
// @Router /api/web/role/up [POST]
|
|
func RoleUp(c *gin.Context) {
|
|
|
|
var req MwRoleUpReq
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
common.ServerJSON(c, srvdef.ErrParamError, err.Error())
|
|
return
|
|
}
|
|
|
|
// RoleUp
|
|
_, err := srv_mwacc.RoleUp(c, req.Id, req.Name, req.Desc, req.IsEnb)
|
|
if err != nil {
|
|
common.ServerJSON(c, srvdef.Failure, MwRoleUpResp{Result: false})
|
|
return
|
|
}
|
|
|
|
common.ServerJSON(c, srvdef.Success, MwRoleUpResp{Result: true})
|
|
return
|
|
}
|
|
|
|
// @Tags 角色
|
|
// @Summary 角色-使能
|
|
// @Description 角色-使能
|
|
// @Accept json
|
|
// @Produce json
|
|
// @Param param body MwRoleEnableReq true "参数列表"
|
|
// @Success 200 {object} MwRoleEnableResp "成功"
|
|
// @Failure 400 {string} string "获取失败的返回结果"
|
|
// @Security ApiKeyAuth
|
|
// @Router /api/web/role/enable [POST]
|
|
func RoleEnable(c *gin.Context) {
|
|
|
|
var req MwRoleEnableReq
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
common.ServerJSON(c, srvdef.ErrParamError, err.Error())
|
|
return
|
|
}
|
|
|
|
_, err := srv_mwacc.RoleEnable(c, req.Id, req.IsEnb)
|
|
if err != nil {
|
|
common.ServerJSON(c, err.Code, err.Msg)
|
|
return
|
|
}
|
|
common.ServerJSON(c, srvdef.Success, MwRoleEnableResp{Result: true})
|
|
return
|
|
}
|
|
|
|
// @Tags 角色
|
|
// @Summary 角色-下拉列表
|
|
// @Description 角色-下拉列表
|
|
// @Accept json
|
|
// @Produce json
|
|
// @Success 200 {object} MwRoleDropResp "成功"
|
|
// @Failure 400 {string} string "获取失败的返回结果"
|
|
// @Security ApiKeyAuth
|
|
// @Router /api/web/role/drop [POST]
|
|
func RoleGetDrop(c *gin.Context) {
|
|
data, _ := mwacc.RoleDrop(c)
|
|
|
|
roleDropArr := make([]*MwRoleDrop, 0)
|
|
for _, v := range data {
|
|
roleDropArr = append(roleDropArr, &MwRoleDrop{Id: v.Id, Name: v.Name})
|
|
}
|
|
common.ServerJSON(c, srvdef.Success, MwRoleDropResp{RoleDrop: roleDropArr})
|
|
return
|
|
}
|
|
|
|
func DbRouterToWebRouter(dbRouter *mwacc.Router) (webRouter *Router) {
|
|
if dbRouter == nil {
|
|
return
|
|
}
|
|
|
|
webRouter = &Router{
|
|
Path: dbRouter.Path,
|
|
Component: dbRouter.Component,
|
|
Redirect: dbRouter.Redirect,
|
|
Name: dbRouter.Name,
|
|
IsShow: dbRouter.IsShow,
|
|
Hidden: dbRouter.Hidden,
|
|
Meta: &Router_Meta{
|
|
Title: dbRouter.Meta.Title,
|
|
Icon: dbRouter.Meta.Icon,
|
|
NoCache: dbRouter.Meta.NoCache,
|
|
},
|
|
Children: make([]*Router, 0),
|
|
ApiUrl: make([]*Router_ApiUrl, 0),
|
|
}
|
|
for _, v := range dbRouter.Children {
|
|
webRouter.Children = append(webRouter.Children, DbRouterToWebRouter(&v))
|
|
}
|
|
for _, v := range dbRouter.ApiUrl {
|
|
webRouter.ApiUrl = append(webRouter.ApiUrl, &Router_ApiUrl{
|
|
Url: v.Url[:],
|
|
Desc: v.Desc,
|
|
Status: v.Status,
|
|
Method: v.Method[:],
|
|
})
|
|
}
|
|
return
|
|
}
|
|
|
|
// @Tags 角色
|
|
// @Summary 角色-获取权限
|
|
// @Description 角色-获取权限
|
|
// @Accept json
|
|
// @Produce json
|
|
// @Param param body MwRoleGetAuthReq true "参数列表"
|
|
// @Success 200 {object} MwRoleGetAuthResp "成功"
|
|
// @Failure 400 {string} string "获取失败的返回结果"
|
|
// @Security ApiKeyAuth
|
|
// @Router /api/web/role/getauth [GET]
|
|
func RoleGetAuth(c *gin.Context) {
|
|
var req MwRoleGetAuthReq
|
|
|
|
if err := c.ShouldBindQuery(&req); err != nil {
|
|
common.ServerJSON(c, srvdef.ErrParamError, err.Error())
|
|
return
|
|
}
|
|
roleInfo, err := srv_mwacc.RoleGetInfo(c, req.Id)
|
|
if err != nil {
|
|
common.ServerJSON(c, srvdef.Failure, err.Error())
|
|
return
|
|
}
|
|
|
|
if roleInfo == nil {
|
|
common.ServerJSON(c, srvdef.Failure, "没找到角色")
|
|
return
|
|
}
|
|
|
|
if roleInfo.Id == 0 {
|
|
common.ServerJSON(c, srvdef.Failure, "没找到角色2")
|
|
return
|
|
}
|
|
|
|
resq := &MwRoleGetAuthResp{
|
|
Id: req.Id,
|
|
Router: make([]*Router, 0),
|
|
}
|
|
|
|
for _, v := range roleInfo.Router {
|
|
|
|
resq.Router = append(resq.Router, DbRouterToWebRouter(&v))
|
|
}
|
|
|
|
common.ServerJSON(c, srvdef.Success, resq)
|
|
return
|
|
}
|
|
|
|
// 网站Router转数据库Router
|
|
func WebRouterToDbRouter(webRouter *Router) (dbRouter *mwacc.Router) {
|
|
|
|
if webRouter == nil {
|
|
return
|
|
}
|
|
|
|
dbRouter = &mwacc.Router{
|
|
Path: webRouter.Path,
|
|
Component: webRouter.Component,
|
|
Redirect: webRouter.Redirect,
|
|
Name: webRouter.Name,
|
|
IsShow: webRouter.IsShow,
|
|
Hidden: webRouter.Hidden,
|
|
Meta: mwacc.Meta{
|
|
Title: webRouter.Meta.Title,
|
|
Icon: webRouter.Meta.Icon,
|
|
NoCache: webRouter.Meta.NoCache,
|
|
},
|
|
Children: make([]mwacc.Router, 0),
|
|
ApiUrl: make([]mwacc.Apiurl, 0),
|
|
}
|
|
for _, v := range webRouter.Children {
|
|
dbRouter.Children = append(dbRouter.Children, *WebRouterToDbRouter(v))
|
|
}
|
|
for _, v := range webRouter.ApiUrl {
|
|
dbRouter.ApiUrl = append(dbRouter.ApiUrl, mwacc.Apiurl{
|
|
Url: v.Url[:],
|
|
Desc: v.Desc,
|
|
Status: v.Status,
|
|
Method: v.Method[:],
|
|
})
|
|
}
|
|
return
|
|
}
|
|
|
|
// @Tags 角色
|
|
// @Summary 角色-更新权限
|
|
// @Description 角色-更新权限
|
|
// @Accept json
|
|
// @Produce json
|
|
// @Param param body MwRoleUpAuthReq true "参数列表"
|
|
// @Success 200 {object} MwRoleUpAuthResp "成功"
|
|
// @Failure 400 {string} string "获取失败的返回结果"
|
|
// @Security ApiKeyAuth
|
|
// @Router /api/web/role/upauth [GET]
|
|
func RoleUpAuth(c *gin.Context) {
|
|
|
|
var req MwRoleUpAuthReq
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
common.ServerJSON(c, srvdef.ErrParamError, err.Error())
|
|
return
|
|
}
|
|
|
|
dataSave := make([]*mwacc.Router, 0)
|
|
for _, v := range req.Router {
|
|
dataSave = append(dataSave, WebRouterToDbRouter(v))
|
|
}
|
|
|
|
_, err := srv_mwacc.UpAuth(c, req.Id, dataSave)
|
|
if err != nil {
|
|
common.ServerJSON(c, srvdef.Failure, MwRoleUpAuthResp{Result: false})
|
|
return
|
|
}
|
|
|
|
// auth.ClearRoleMap()
|
|
common.ServerJSON(c, srvdef.Success, MwRoleUpAuthResp{Result: true})
|
|
return
|
|
}
|