265 lines
6.9 KiB
Go
265 lines
6.9 KiB
Go
package api
|
||
|
||
import (
|
||
"SciencesServer/app/api/controller/role"
|
||
"SciencesServer/app/service"
|
||
|
||
"github.com/gin-gonic/gin"
|
||
)
|
||
|
||
type Role struct{}
|
||
|
||
func (a *Role) List(c *gin.Context) {
|
||
form := &struct {
|
||
Name string `json:"name" form:"name"`
|
||
Status int `json:"status" form:"status"`
|
||
pageForm
|
||
}{}
|
||
if err := bind(form)(c); err != nil {
|
||
APIFailure(err.(error))(c)
|
||
return
|
||
}
|
||
data, err := role.NewInstance()(getSession()(c).(*service.Session)).List(form.Name, form.Status, form.Page, form.PageSize)
|
||
APIResponse(err, data)(c)
|
||
}
|
||
|
||
func (a *Role) Select(c *gin.Context) {
|
||
data, err := role.NewInstance()(getSession()(c).(*service.Session)).Select()
|
||
APIResponse(err, data)(c)
|
||
}
|
||
|
||
func (a *Role) Add(c *gin.Context) {
|
||
form := &struct {
|
||
Name string `json:"name" form:"name" binding:"required"`
|
||
Remark string `json:"remark" form:"remark" binding:"required"`
|
||
Sort int `json:"sort" form:"sort"`
|
||
}{}
|
||
if err := bind(form)(c); err != nil {
|
||
APIFailure(err.(error))(c)
|
||
return
|
||
}
|
||
err := role.NewInstance()(getSession()(c).(*service.Session)).Data(0, form.Name, form.Remark, form.Sort)
|
||
APIResponse(err)(c)
|
||
}
|
||
|
||
func (a *Role) Edit(c *gin.Context) {
|
||
form := &struct {
|
||
idForm
|
||
Name string `json:"name" form:"name" binding:"required"`
|
||
Remark string `json:"remark" form:"remark" binding:"required"`
|
||
Sort int `json:"sort" form:"sort"`
|
||
}{}
|
||
if err := bind(form)(c); err != nil {
|
||
APIFailure(err.(error))(c)
|
||
return
|
||
}
|
||
err := role.NewInstance()(getSession()(c).(*service.Session)).Data(form.ID, form.Name, form.Remark, form.Sort)
|
||
APIResponse(err)(c)
|
||
}
|
||
|
||
func (a *Role) Status(c *gin.Context) {
|
||
form := &struct {
|
||
idForm
|
||
Status int `json:"status" form:"status" binding:"required"`
|
||
}{}
|
||
if err := bind(form)(c); err != nil {
|
||
APIFailure(err.(error))(c)
|
||
return
|
||
}
|
||
err := role.NewInstance()(getSession()(c).(*service.Session)).Status(form.ID, form.Status)
|
||
APIResponse(err)(c)
|
||
}
|
||
|
||
func (a *Role) Delete(c *gin.Context) {
|
||
form := new(idForm)
|
||
|
||
if err := bind(form)(c); err != nil {
|
||
APIFailure(err.(error))(c)
|
||
return
|
||
}
|
||
err := role.NewInstance()(getSession()(c).(*service.Session)).Delete(form.ID)
|
||
APIResponse(err)(c)
|
||
}
|
||
|
||
/**
|
||
* @api {post} /api/role/menu 菜单信息
|
||
* @apiVersion 1.0.0
|
||
* @apiName RoleMenu
|
||
* @apiGroup Role
|
||
*
|
||
* @apiHeader {string} x-token token
|
||
*
|
||
* @apiSuccess (200) {Number} code 成功响应状态码!
|
||
* @apiSuccess (200) {String} msg 成功提示
|
||
* @apiSuccess (200) {Array} data 具体信息
|
||
* @apiSuccess (200) {Number} data.id 菜单ID
|
||
* @apiSuccess (200) {Number} data.parent_id 父级ID
|
||
* @apiSuccess (200) {String} data.name 菜单名称
|
||
* @apiSuccess (200) {Number} data.kind 类型(1:目录,2:菜单)
|
||
* @apiSuccess (200) {String} data.link 访问地址
|
||
* @apiSuccess (200) {String} data.component 组件
|
||
* @apiSuccess (200) {Array} data.children="[]" 子集
|
||
*
|
||
* @apiSuccessExample {json} Success response:
|
||
* HTTPS 200 OK
|
||
* {
|
||
* "code": 200
|
||
* "msg": "ok"
|
||
* "data": [
|
||
* "id": 1,
|
||
* "parent_id": 0,
|
||
* "name": "系统管理",
|
||
* "kind": 1,
|
||
* "link": "1"
|
||
* "component": ""
|
||
* "children": [
|
||
* {
|
||
* "id": 2,
|
||
* "parent_id": 1,
|
||
* "name": "用户管理",
|
||
* "kind": 1,
|
||
* "link": "1"
|
||
* "component": ""
|
||
* "children": [],
|
||
* }
|
||
* ]
|
||
* ]
|
||
* }
|
||
*/
|
||
func (a *Role) Menu(c *gin.Context) {
|
||
form := &struct {
|
||
RoleID uint64 `json:"role_id" form:"role_id" binding:"required"`
|
||
}{}
|
||
if err := bind(form)(c); err != nil {
|
||
APIFailure(err.(error))(c)
|
||
return
|
||
}
|
||
data, err := role.NewMenu()(getSession()(c).(*service.Session)).List(form.RoleID)
|
||
APIResponse(err, data)(c)
|
||
}
|
||
|
||
/**
|
||
* @api {post} /api/role/menu/bind 菜单绑定
|
||
* @apiVersion 1.0.0
|
||
* @apiName RoleMenuBind
|
||
* @apiGroup Role
|
||
*
|
||
* @apiHeader {string} x-token token
|
||
*
|
||
* @apiParam {Number} role_id 角色ID
|
||
* @apiParam {Array.Number} menu_ids 菜单ID
|
||
*
|
||
* @apiSuccess (200) {Number} code=200 成功响应状态码!
|
||
* @apiSuccess (200) {String} msg="ok" 成功提示
|
||
*
|
||
* @apiSuccessExample {json} Success response:
|
||
* HTTPS 200 OK
|
||
* {
|
||
* "code": 200
|
||
* "msg": "ok"
|
||
* "data": null
|
||
* }
|
||
*/
|
||
func (a *Role) MenuBind(c *gin.Context) {
|
||
form := &struct {
|
||
RoleID uint64 `json:"role_id" form:"role_id" binding:"required"`
|
||
MenuIDs []uint64 `json:"menu_ids" form:"menu_ids" binding:"required"`
|
||
}{}
|
||
if err := bind(form)(c); err != nil {
|
||
APIFailure(err.(error))(c)
|
||
return
|
||
}
|
||
err := role.NewMenu()(getSession()(c).(*service.Session)).Bind(form.RoleID, form.MenuIDs)
|
||
APIResponse(err)(c)
|
||
}
|
||
|
||
/**
|
||
* @api {post} /api/role/auth 权限信息
|
||
* @apiVersion 1.0.0
|
||
* @apiName RoleAuth
|
||
* @apiGroup Role
|
||
*
|
||
* @apiHeader {string} x-token token
|
||
*
|
||
* @apiParam {Number} role_id 角色ID
|
||
*
|
||
* @apiSuccess (200) {Number} code 成功响应状态码!
|
||
* @apiSuccess (200) {String} msg 成功提示
|
||
* @apiSuccess (200) {Array} data 具体信息
|
||
* @apiSuccess (200) {Number} data.id ID
|
||
* @apiSuccess (200) {Number} data.kind_title 权限类型名称
|
||
* @apiSuccess (200) {String} data.kind 权限类型
|
||
* @apiSuccess (200) {String} data.name 权限名称
|
||
* @apiSuccess (200) {String} data.auth 权限信息
|
||
* @apiSuccess (200) {Bool} data.checked 选中状态
|
||
* @apiSuccess (200) {String} data.remark 备注信息
|
||
* @apiSuccess (200) {Array} data.children 子集
|
||
*
|
||
* @apiSuccessExample {json} Success response:
|
||
* HTTPS 200 OK
|
||
* {
|
||
* "code": 200
|
||
* "msg": "ok"
|
||
* "data": {
|
||
* {
|
||
* "id": 1,
|
||
* "kind": 1,
|
||
* "name": "测试",
|
||
* "auth": "",
|
||
* "checked": false,
|
||
* "remark": "",
|
||
* "created_at": "2021-09-15T13:59:35+08:00",
|
||
* "updated_at": "2021-09-15T13:59:35+08:00",
|
||
* "kind_title": "模块",
|
||
* "children": []
|
||
* }
|
||
* }
|
||
* }
|
||
*/
|
||
func (a *Role) Auth(c *gin.Context) {
|
||
form := &struct {
|
||
RoleID uint64 `json:"role_id" form:"role_id" binding:"required"`
|
||
}{}
|
||
if err := bind(form)(c); err != nil {
|
||
APIFailure(err.(error))(c)
|
||
return
|
||
}
|
||
data, err := role.NewAuth()(getSession()(c).(*service.Session)).List(form.RoleID)
|
||
APIResponse(err, data)(c)
|
||
}
|
||
|
||
/**
|
||
* @api {post} /api/role/auth/bind 权限绑定
|
||
* @apiVersion 1.0.0
|
||
* @apiName RoleAuthBind
|
||
* @apiGroup Role
|
||
*
|
||
* @apiHeader {string} x-token token
|
||
*
|
||
* @apiParam {Number} role_id 角色ID
|
||
* @apiParam {Array.Number} auth_ids 权限ID
|
||
*
|
||
* @apiSuccess (200) {Number} code 成功响应状态码!
|
||
* @apiSuccess (200) {String} msg 成功提示
|
||
*
|
||
* @apiSuccessExample {json} Success response:
|
||
* HTTPS 200 OK
|
||
* {
|
||
* "code": 200
|
||
* "msg": "ok"
|
||
* "data": null
|
||
* }
|
||
*/
|
||
func (a *Role) AuthBind(c *gin.Context) {
|
||
form := &struct {
|
||
RoleID uint64 `json:"role_id" form:"role_id" binding:"required"`
|
||
AuthIDs []uint64 `json:"auth_ids" form:"auth_ids" binding:"required"`
|
||
}{}
|
||
if err := bind(form)(c); err != nil {
|
||
APIFailure(err.(error))(c)
|
||
return
|
||
}
|
||
err := role.NewAuth()(getSession()(c).(*service.Session)).Bind(form.RoleID, form.AuthIDs)
|
||
APIResponse(err)(c)
|
||
}
|