mirror of
https://github.com/go-admin-team/go-admin.git
synced 2026-09-21 18:20:50 +00:00
perf👌 : 岗位、角色功能改造
This commit is contained in:
@@ -46,49 +46,6 @@ func GetMenu(c *gin.Context) {
|
|||||||
app.OK(c, result, "")
|
app.OK(c, result, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetMenuTreeRoleselect 角色修改中的菜单列表
|
|
||||||
func GetMenuTreeRoleselect(c *gin.Context) {
|
|
||||||
var Menu models.Menu
|
|
||||||
var SysRole models.SysRole
|
|
||||||
|
|
||||||
id, err := tools.StringToInt(c.Param("roleId"))
|
|
||||||
SysRole.RoleId = id
|
|
||||||
//var r *models.SysRole
|
|
||||||
r, err := SysRole.Get()
|
|
||||||
|
|
||||||
var result *[]models.MenuLable
|
|
||||||
menuIds := make([]int, 0)
|
|
||||||
if r.RoleKey != "admin" {
|
|
||||||
result, err = Menu.SetMenuLabel()
|
|
||||||
tools.HasError(err, "抱歉未找到相关信息", -1)
|
|
||||||
if id != 0 {
|
|
||||||
menuIds, err = SysRole.GetRoleMeunId()
|
|
||||||
tools.HasError(err, "抱歉未找到相关信息", -1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
app.Custum(c, gin.H{
|
|
||||||
"code": 200,
|
|
||||||
"menus": result,
|
|
||||||
"checkedKeys": menuIds,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// @Summary 获取菜单树
|
|
||||||
// @Description 获取JSON
|
|
||||||
// @Tags 菜单
|
|
||||||
// @Accept application/x-www-form-urlencoded
|
|
||||||
// @Product application/x-www-form-urlencoded
|
|
||||||
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
|
|
||||||
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
|
|
||||||
// @Router /api/v1/menuTreeselect [get]
|
|
||||||
// @Security Bearer
|
|
||||||
func GetMenuTreeelect(c *gin.Context) {
|
|
||||||
var data models.Menu
|
|
||||||
result, err := data.SetMenuLabel()
|
|
||||||
tools.HasError(err, "抱歉未找到相关信息", -1)
|
|
||||||
app.OK(c, result, "")
|
|
||||||
}
|
|
||||||
|
|
||||||
// @Summary 创建菜单
|
// @Summary 创建菜单
|
||||||
// @Description 获取JSON
|
// @Description 获取JSON
|
||||||
// @Tags 菜单
|
// @Tags 菜单
|
||||||
@@ -183,3 +140,46 @@ func GetMenuIDS(c *gin.Context) {
|
|||||||
tools.HasError(err, "获取失败", 500)
|
tools.HasError(err, "获取失败", 500)
|
||||||
app.OK(c, result, "")
|
app.OK(c, result, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetMenuTreeRoleselect 角色修改中的菜单列表
|
||||||
|
func GetMenuTreeRoleselect(c *gin.Context) {
|
||||||
|
var Menu models.Menu
|
||||||
|
var SysRole models.SysRole
|
||||||
|
|
||||||
|
id, err := tools.StringToInt(c.Param("roleId"))
|
||||||
|
SysRole.RoleId = id
|
||||||
|
//var r *models.SysRole
|
||||||
|
r, err := SysRole.Get()
|
||||||
|
|
||||||
|
var result *[]models.MenuLable
|
||||||
|
menuIds := make([]int, 0)
|
||||||
|
if r.RoleKey != "admin" {
|
||||||
|
result, err = Menu.SetMenuLabel()
|
||||||
|
tools.HasError(err, "抱歉未找到相关信息", -1)
|
||||||
|
if id != 0 {
|
||||||
|
menuIds, err = SysRole.GetRoleMeunId()
|
||||||
|
tools.HasError(err, "抱歉未找到相关信息", -1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
app.Custum(c, gin.H{
|
||||||
|
"code": 200,
|
||||||
|
"menus": result,
|
||||||
|
"checkedKeys": menuIds,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Summary 获取菜单树
|
||||||
|
// @Description 获取JSON
|
||||||
|
// @Tags 菜单
|
||||||
|
// @Accept application/x-www-form-urlencoded
|
||||||
|
// @Product application/x-www-form-urlencoded
|
||||||
|
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
|
||||||
|
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
|
||||||
|
// @Router /api/v1/menuTreeselect [get]
|
||||||
|
// @Security Bearer
|
||||||
|
func GetMenuTreeelect(c *gin.Context) {
|
||||||
|
var data models.Menu
|
||||||
|
result, err := data.SetMenuLabel()
|
||||||
|
tools.HasError(err, "抱歉未找到相关信息", -1)
|
||||||
|
app.OK(c, result, "")
|
||||||
|
}
|
||||||
@@ -3,7 +3,6 @@ package sys_dept
|
|||||||
import (
|
import (
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"go-admin/app/admin/models"
|
"go-admin/app/admin/models"
|
||||||
|
|
||||||
"go-admin/app/admin/service"
|
"go-admin/app/admin/service"
|
||||||
"go-admin/app/admin/service/dto"
|
"go-admin/app/admin/service/dto"
|
||||||
"go-admin/common/apis"
|
"go-admin/common/apis"
|
||||||
@@ -34,17 +33,16 @@ func (e *SysDept) GetSysDeptList(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
list := make([]models.SysDept, 0)
|
list := make([]models.SysDept, 0)
|
||||||
var count int64
|
|
||||||
serviceStudent := service.SysDept{}
|
serviceStudent := service.SysDept{}
|
||||||
serviceStudent.MsgID = msgID
|
serviceStudent.MsgID = msgID
|
||||||
serviceStudent.Orm = db
|
serviceStudent.Orm = db
|
||||||
err = serviceStudent.GetSysDeptPage(d, &list, &count)
|
list, err = serviceStudent.SetDeptPage(d)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
|
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
e.PageOK(c, list, int(count), d.GetPageIndex(), d.GetPageSize(), "查询成功")
|
e.OK(c, list, "查询成功")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *SysDept) GetSysDept(c *gin.Context) {
|
func (e *SysDept) GetSysDept(c *gin.Context) {
|
||||||
@@ -172,3 +170,39 @@ func (e *SysDept) DeleteSysDept(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
e.OK(c, control.GetId(), "删除成功")
|
e.OK(c, control.GetId(), "删除成功")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetDeptTree 用户管理 左侧部门树
|
||||||
|
func (e *SysDept) GetDeptTree(c *gin.Context) {
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(c)
|
||||||
|
d := new(dto.SysDeptSearch)
|
||||||
|
db, err := tools.GetOrm(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//查询列表
|
||||||
|
err = d.Bind(c)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
list := make([]dto.DeptLabel, 0)
|
||||||
|
serviceStudent := service.SysDept{}
|
||||||
|
serviceStudent.MsgID = msgID
|
||||||
|
serviceStudent.Orm = db
|
||||||
|
list, err = serviceStudent.SetDeptTree(d)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//var Dept models.SysDepts
|
||||||
|
//Dept.DeptName = c.Request.FormValue("deptName")
|
||||||
|
//Dept.Status = c.Request.FormValue("status")
|
||||||
|
//Dept.DeptId, _ = tools.StringToInt(c.Request.FormValue("deptId"))
|
||||||
|
//result, err := Dept.SetDept(false)
|
||||||
|
//tools.HasError(err, "抱歉未找到相关信息", -1)
|
||||||
|
e.OK(c, list, "")
|
||||||
|
}
|
||||||
@@ -0,0 +1,281 @@
|
|||||||
|
package sys_menu
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"go-admin/app/admin/models"
|
||||||
|
"go-admin/app/admin/service"
|
||||||
|
"go-admin/app/admin/service/dto"
|
||||||
|
"go-admin/common/apis"
|
||||||
|
"go-admin/common/log"
|
||||||
|
"go-admin/tools"
|
||||||
|
"go-admin/tools/app"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type SysMenu struct {
|
||||||
|
apis.Api
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *SysMenu) GetSysMenuList(c *gin.Context) {
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(c)
|
||||||
|
d := new(dto.SysMenuSearch)
|
||||||
|
db, err := tools.GetOrm(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//查询列表
|
||||||
|
err = d.Bind(c)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var list *[]models.SysMenu
|
||||||
|
serviceSysMenu := service.SysMenu{}
|
||||||
|
serviceSysMenu.MsgID = msgID
|
||||||
|
serviceSysMenu.Orm = db
|
||||||
|
list, err = serviceSysMenu.GetSysMenuPage(d)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
e.OK(c, list, "查询成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *SysMenu) GetSysMenu(c *gin.Context) {
|
||||||
|
control := new(dto.SysMenuById)
|
||||||
|
db, err := tools.GetOrm(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(c)
|
||||||
|
//查看详情
|
||||||
|
err = control.Bind(c)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var object models.SysMenu
|
||||||
|
|
||||||
|
serviceSysMenu := service.SysMenu{}
|
||||||
|
serviceSysMenu.MsgID = msgID
|
||||||
|
serviceSysMenu.Orm = db
|
||||||
|
err = serviceSysMenu.GetSysMenu(control, &object)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
e.OK(c, object, "查看成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *SysMenu) InsertSysMenu(c *gin.Context) {
|
||||||
|
control := new(dto.SysMenuControl)
|
||||||
|
db, err := tools.GetOrm(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(c)
|
||||||
|
//新增操作
|
||||||
|
err = control.Bind(c)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
object, err := control.Generate()
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 设置创建人
|
||||||
|
object.SetCreateBy(tools.GetUserId(c))
|
||||||
|
|
||||||
|
serviceSysMenu := service.SysMenu{}
|
||||||
|
serviceSysMenu.Orm = db
|
||||||
|
serviceSysMenu.MsgID = msgID
|
||||||
|
err = serviceSysMenu.InsertSysMenu(object)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
e.Error(c, http.StatusInternalServerError, err, "创建失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
e.OK(c, object.GetId(), "创建成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *SysMenu) UpdateSysMenu(c *gin.Context) {
|
||||||
|
control := new(dto.SysMenuControl)
|
||||||
|
db, err := tools.GetOrm(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(c)
|
||||||
|
//更新操作
|
||||||
|
err = control.Bind(c)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
object, err := control.Generate()
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
object.SetUpdateBy(tools.GetUserId(c))
|
||||||
|
|
||||||
|
serviceSysMenu := service.SysMenu{}
|
||||||
|
serviceSysMenu.Orm = db
|
||||||
|
serviceSysMenu.MsgID = msgID
|
||||||
|
err = serviceSysMenu.UpdateSysMenu(object)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
e.OK(c, object.GetId(), "更新成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *SysMenu) DeleteSysMenu(c *gin.Context) {
|
||||||
|
control := new(dto.SysMenuById)
|
||||||
|
db, err := tools.GetOrm(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(c)
|
||||||
|
//删除操作
|
||||||
|
err = control.Bind(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("MsgID[%s] Bind error: %s", msgID, err)
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
serviceSysMenu := service.SysMenu{}
|
||||||
|
serviceSysMenu.Orm = db
|
||||||
|
serviceSysMenu.MsgID = msgID
|
||||||
|
err = serviceSysMenu.RemoveSysMenu(control)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
e.OK(c, control.GetId(), "删除成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Summary 根据角色名称获取菜单列表数据(左菜单使用)
|
||||||
|
// @Description 获取JSON
|
||||||
|
// @Tags 菜单
|
||||||
|
// @Param id path int true "id"
|
||||||
|
// @Success 200 {string} string "{"code": 200, "data": [...]}"
|
||||||
|
// @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
|
||||||
|
// @Router /api/v1/menurole [get]
|
||||||
|
// @Security Bearer
|
||||||
|
func (e *SysMenu) GetMenuRole(c *gin.Context) {
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(c)
|
||||||
|
db, err := tools.GetOrm(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
serviceSysMenu := service.SysMenu{}
|
||||||
|
serviceSysMenu.MsgID = msgID
|
||||||
|
serviceSysMenu.Orm = db
|
||||||
|
result, err := serviceSysMenu.SetMenuRole(tools.GetRoleName(c))
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
app.OK(c, result, "")
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Summary 获取角色对应的菜单id数组
|
||||||
|
// @Description 获取JSON
|
||||||
|
// @Tags 菜单
|
||||||
|
// @Param id path int true "id"
|
||||||
|
// @Success 200 {string} string "{"code": 200, "data": [...]}"
|
||||||
|
// @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
|
||||||
|
// @Router /api/v1/menuids/{id} [get]
|
||||||
|
// @Security Bearer
|
||||||
|
func (e *SysMenu) GetMenuIDS(c *gin.Context) {
|
||||||
|
var data models.RoleMenu
|
||||||
|
data.RoleName = c.GetString("role")
|
||||||
|
data.UpdateBy = tools.GetUserIdStr(c)
|
||||||
|
result, err := data.GetIDS()
|
||||||
|
tools.HasError(err, "获取失败", 500)
|
||||||
|
app.OK(c, result, "")
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMenuTreeRoleselect 角色修改中的菜单列表
|
||||||
|
func (e *SysMenu) GetMenuTreeRoleselect(c *gin.Context) {
|
||||||
|
var Menu models.Menu
|
||||||
|
var SysRole models.SysRole
|
||||||
|
|
||||||
|
id, err := tools.StringToInt(c.Param("roleId"))
|
||||||
|
SysRole.RoleId = id
|
||||||
|
//var r *models.SysRole
|
||||||
|
r, err := SysRole.Get()
|
||||||
|
|
||||||
|
var result *[]models.MenuLable
|
||||||
|
menuIds := make([]int, 0)
|
||||||
|
if r.RoleKey != "admin" {
|
||||||
|
result, err = Menu.SetMenuLabel()
|
||||||
|
tools.HasError(err, "抱歉未找到相关信息", -1)
|
||||||
|
if id != 0 {
|
||||||
|
menuIds, err = SysRole.GetRoleMeunId()
|
||||||
|
tools.HasError(err, "抱歉未找到相关信息", -1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
app.Custum(c, gin.H{
|
||||||
|
"code": 200,
|
||||||
|
"menus": result,
|
||||||
|
"checkedKeys": menuIds,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Summary 获取菜单树
|
||||||
|
// @Description 获取JSON
|
||||||
|
// @Tags 菜单
|
||||||
|
// @Accept application/x-www-form-urlencoded
|
||||||
|
// @Product application/x-www-form-urlencoded
|
||||||
|
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
|
||||||
|
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
|
||||||
|
// @Router /api/v1/menuTreeselect [get]
|
||||||
|
// @Security Bearer
|
||||||
|
func (e *SysMenu) GetMenuTreeSelect(c *gin.Context) {
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(c)
|
||||||
|
d := new(dto.SysMenuSearch)
|
||||||
|
db, err := tools.GetOrm(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err = d.Bind(c)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
serviceSysMenu := service.SysMenu{}
|
||||||
|
serviceSysMenu.MsgID = msgID
|
||||||
|
serviceSysMenu.Orm = db
|
||||||
|
result, err := serviceSysMenu.SetSysMenuLabel(d)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
e.OK(c, result, "")
|
||||||
|
}
|
||||||
@@ -0,0 +1,174 @@
|
|||||||
|
package sys_post
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
|
||||||
|
"go-admin/app/admin/models/system"
|
||||||
|
"go-admin/app/admin/service"
|
||||||
|
"go-admin/app/admin/service/dto"
|
||||||
|
"go-admin/common/apis"
|
||||||
|
"go-admin/common/log"
|
||||||
|
"go-admin/tools"
|
||||||
|
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type SysPost struct {
|
||||||
|
apis.Api
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *SysPost) GetSysPostList(c *gin.Context) {
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(c)
|
||||||
|
d := new(dto.SysPostSearch)
|
||||||
|
db, err := tools.GetOrm(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//查询列表
|
||||||
|
err = d.Bind(c)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
list := make([]system.SysPost, 0)
|
||||||
|
var count int64
|
||||||
|
serviceStudent := service.SysPost{}
|
||||||
|
serviceStudent.MsgID = msgID
|
||||||
|
serviceStudent.Orm = db
|
||||||
|
err = serviceStudent.GetSysPostPage(d, &list, &count)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
e.PageOK(c, list, int(count), d.GetPageIndex(), d.GetPageSize(), "查询成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *SysPost) GetSysPost(c *gin.Context) {
|
||||||
|
control := new(dto.SysPostById)
|
||||||
|
db, err := tools.GetOrm(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(c)
|
||||||
|
//查看详情
|
||||||
|
err = control.Bind(c)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var object system.SysPost
|
||||||
|
|
||||||
|
serviceSysOperlog := service.SysPost{}
|
||||||
|
serviceSysOperlog.MsgID = msgID
|
||||||
|
serviceSysOperlog.Orm = db
|
||||||
|
err = serviceSysOperlog.GetSysPost(control, &object)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
e.OK(c, object, "查看成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *SysPost) InsertSysPost(c *gin.Context) {
|
||||||
|
control := new(dto.SysPostControl)
|
||||||
|
db, err := tools.GetOrm(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(c)
|
||||||
|
//新增操作
|
||||||
|
err = control.Bind(c)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
object, err := control.Generate()
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 设置创建人
|
||||||
|
object.SetCreateBy(tools.GetUserId(c))
|
||||||
|
|
||||||
|
serviceSysPost := service.SysPost{}
|
||||||
|
serviceSysPost.Orm = db
|
||||||
|
serviceSysPost.MsgID = msgID
|
||||||
|
err = serviceSysPost.InsertSysPost(object)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
e.Error(c, http.StatusInternalServerError, err, "创建失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
e.OK(c, object.GetId(), "创建成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *SysPost) UpdateSysPost(c *gin.Context) {
|
||||||
|
control := new(dto.SysPostControl)
|
||||||
|
db, err := tools.GetOrm(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(c)
|
||||||
|
//更新操作
|
||||||
|
err = control.Bind(c)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
object, err := control.Generate()
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
object.SetUpdateBy(tools.GetUserId(c))
|
||||||
|
|
||||||
|
serviceSysPost := service.SysPost{}
|
||||||
|
serviceSysPost.Orm = db
|
||||||
|
serviceSysPost.MsgID = msgID
|
||||||
|
err = serviceSysPost.UpdateSysPost(object)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
e.OK(c, object.GetId(), "更新成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *SysPost) DeleteSysPost(c *gin.Context) {
|
||||||
|
control := new(dto.SysPostById)
|
||||||
|
db, err := tools.GetOrm(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(c)
|
||||||
|
//删除操作
|
||||||
|
err = control.Bind(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("MsgID[%s] Bind error: %s", msgID, err)
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
serviceSysPost := service.SysPost{}
|
||||||
|
serviceSysPost.Orm = db
|
||||||
|
serviceSysPost.MsgID = msgID
|
||||||
|
err = serviceSysPost.RemoveSysPost(control)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
e.OK(c, control.GetId(), "删除成功")
|
||||||
|
}
|
||||||
@@ -0,0 +1,175 @@
|
|||||||
|
package sys_role
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
|
||||||
|
"go-admin/app/admin/models/system"
|
||||||
|
"go-admin/app/admin/service"
|
||||||
|
"go-admin/app/admin/service/dto"
|
||||||
|
"go-admin/common/apis"
|
||||||
|
"go-admin/common/log"
|
||||||
|
"go-admin/tools"
|
||||||
|
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type SysRole struct {
|
||||||
|
apis.Api
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *SysRole) GetSysRoleList(c *gin.Context) {
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(c)
|
||||||
|
d := new(dto.SysRoleSearch)
|
||||||
|
db, err := tools.GetOrm(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//查询列表
|
||||||
|
err = d.Bind(c)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
list := make([]system.SysRole, 0)
|
||||||
|
var count int64
|
||||||
|
serviceStudent := service.SysRole{}
|
||||||
|
serviceStudent.MsgID = msgID
|
||||||
|
serviceStudent.Orm = db
|
||||||
|
err = serviceStudent.GetSysRolePage(d, &list, &count)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
e.PageOK(c, list, int(count), d.GetPageIndex(), d.GetPageSize(), "查询成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *SysRole) GetSysRole(c *gin.Context) {
|
||||||
|
control := new(dto.SysRoleById)
|
||||||
|
db, err := tools.GetOrm(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(c)
|
||||||
|
//查看详情
|
||||||
|
err = control.Bind(c)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var object system.SysRole
|
||||||
|
|
||||||
|
serviceSysOperlog := service.SysRole{}
|
||||||
|
serviceSysOperlog.MsgID = msgID
|
||||||
|
serviceSysOperlog.Orm = db
|
||||||
|
err = serviceSysOperlog.GetSysRole(control, &object)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
e.OK(c, object, "查看成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *SysRole) InsertSysRole(c *gin.Context) {
|
||||||
|
control := new(dto.SysRoleControl)
|
||||||
|
db, err := tools.GetOrm(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(c)
|
||||||
|
//新增操作
|
||||||
|
err = control.Bind(c)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
object, err := control.Generate()
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 设置创建人
|
||||||
|
object.CreateBy= tools.GetUserId(c)
|
||||||
|
|
||||||
|
serviceSysRole := service.SysRole{}
|
||||||
|
serviceSysRole.Orm = db
|
||||||
|
serviceSysRole.MsgID = msgID
|
||||||
|
err = serviceSysRole.InsertSysRole(object)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
e.Error(c, http.StatusInternalServerError, err, "创建失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
e.OK(c, object.GetId(), "创建成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *SysRole) UpdateSysRole(c *gin.Context) {
|
||||||
|
control := new(dto.SysRoleControl)
|
||||||
|
db, err := tools.GetOrm(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(c)
|
||||||
|
//更新操作
|
||||||
|
err = control.Bind(c)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
object, err := control.Generate()
|
||||||
|
if err != nil {
|
||||||
|
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
object.UpdateBy = tools.GetUserId(c)
|
||||||
|
|
||||||
|
serviceSysRole := service.SysRole{}
|
||||||
|
serviceSysRole.Orm = db
|
||||||
|
serviceSysRole.MsgID = msgID
|
||||||
|
err = serviceSysRole.UpdateSysRole(object)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
e.OK(c, object.GetId(), "更新成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *SysRole) DeleteSysRole(c *gin.Context) {
|
||||||
|
control := new(dto.SysRoleById)
|
||||||
|
db, err := tools.GetOrm(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(c)
|
||||||
|
//删除操作
|
||||||
|
err = control.Bind(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("MsgID[%s] Bind error: %s", msgID, err)
|
||||||
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
serviceSysRole := service.SysRole{}
|
||||||
|
serviceSysRole.Orm = db
|
||||||
|
serviceSysRole.MsgID = msgID
|
||||||
|
err = serviceSysRole.RemoveSysRole(control)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
e.OK(c, control.GetId(), "删除成功")
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package system
|
||||||
|
|
||||||
|
import "go-admin/common/models"
|
||||||
|
|
||||||
|
type SysPost struct {
|
||||||
|
PostId int `gorm:"primary_key;AUTO_INCREMENT" json:"postId"` //岗位编号
|
||||||
|
PostName string `gorm:"size:128;" json:"postName"` //岗位名称
|
||||||
|
PostCode string `gorm:"size:128;" json:"postCode"` //岗位代码
|
||||||
|
Sort int `gorm:"" json:"sort"` //岗位排序
|
||||||
|
Status int `gorm:"size:4;" json:"status"` //状态
|
||||||
|
Remark string `gorm:"size:255;" json:"remark"` //描述
|
||||||
|
models.ControlBy
|
||||||
|
models.ModelTime
|
||||||
|
|
||||||
|
DataScope string `gorm:"-" json:"dataScope"`
|
||||||
|
Params string `gorm:"-" json:"params"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (SysPost) TableName() string {
|
||||||
|
return "sys_post"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *SysPost) Generate() models.ActiveRecord {
|
||||||
|
o := *e
|
||||||
|
return &o
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *SysPost) GetId() interface{} {
|
||||||
|
return e.PostId
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package system
|
||||||
|
|
||||||
|
import "go-admin/common/models"
|
||||||
|
|
||||||
|
type SysRole struct {
|
||||||
|
RoleId int `json:"roleId" gorm:"primary_key;AUTO_INCREMENT"` // 角色编码
|
||||||
|
RoleName string `json:"roleName" gorm:"size:128;"` // 角色名称
|
||||||
|
Status string `json:"status" gorm:"size:4;"` //
|
||||||
|
RoleKey string `json:"roleKey" gorm:"size:128;"` //角色代码
|
||||||
|
RoleSort int `json:"roleSort" gorm:""` //角色排序
|
||||||
|
Flag string `json:"flag" gorm:"size:128;"` //
|
||||||
|
Remark string `json:"remark" gorm:"size:255;"` //备注
|
||||||
|
Admin bool `json:"admin" gorm:"size:4;"`
|
||||||
|
DataScope string `json:"dataScope" gorm:"size:128;"`
|
||||||
|
models.ControlBy
|
||||||
|
models.ModelTime
|
||||||
|
Params string `json:"params" gorm:"-"`
|
||||||
|
MenuIds []int `json:"menuIds" gorm:"-"`
|
||||||
|
DeptIds []int `json:"deptIds" gorm:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (SysRole) TableName() string {
|
||||||
|
return "sys_role"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *SysRole) Generate() models.ActiveRecord {
|
||||||
|
o := *e
|
||||||
|
return &o
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *SysRole) GetId() interface{} {
|
||||||
|
return e.RoleId
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package router
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"go-admin/app/admin/apis/system/sys_dept"
|
||||||
|
"go-admin/app/admin/middleware"
|
||||||
|
jwt "go-admin/pkg/jwtauth"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
routerCheckRole = append(routerCheckRole, registerSysDeptRouter)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 需认证的路由代码
|
||||||
|
func registerSysDeptRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
|
||||||
|
api := &sys_dept.SysDept{}
|
||||||
|
r := v1.Group("/dept").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
||||||
|
{
|
||||||
|
r.GET("", api.GetSysDeptList)
|
||||||
|
r.GET("/:id", api.GetSysDept)
|
||||||
|
r.POST("", api.InsertSysDept)
|
||||||
|
r.PUT("/:id", api.UpdateSysDept)
|
||||||
|
r.DELETE("/:id", api.DeleteSysDept)
|
||||||
|
}
|
||||||
|
|
||||||
|
r1 := v1.Group("").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
||||||
|
{
|
||||||
|
r1.GET("/deptTree", api.GetDeptTree)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
package router
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"go-admin/app/admin/apis/system/sys_menu"
|
||||||
|
"go-admin/app/admin/middleware"
|
||||||
|
jwt "go-admin/pkg/jwtauth"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
routerCheckRole = append(routerCheckRole, registerSysMenuRouter)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 需认证的路由代码
|
||||||
|
func registerSysMenuRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
|
||||||
|
api := &sys_menu.SysMenu{}
|
||||||
|
//menu := v1.Group("/menu").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
||||||
|
//{
|
||||||
|
// menu.GET("/:id", system.GetMenu)
|
||||||
|
// menu.POST("", system.InsertMenu)
|
||||||
|
// menu.PUT("", system.UpdateMenu)
|
||||||
|
// menu.DELETE("/:id", system.DeleteMenu)
|
||||||
|
//}
|
||||||
|
r := v1.Group("/menu").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
||||||
|
{
|
||||||
|
r.GET("", api.GetSysMenuList)
|
||||||
|
r.GET("/:id", api.GetSysMenu)
|
||||||
|
r.POST("", api.InsertSysMenu)
|
||||||
|
r.PUT("/:id", api.UpdateSysMenu)
|
||||||
|
r.DELETE("/:id", api.DeleteSysMenu)
|
||||||
|
}
|
||||||
|
|
||||||
|
r1 := v1.Group("").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
||||||
|
{
|
||||||
|
r1.GET("/menurole", api.GetMenuRole)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package router
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"go-admin/app/admin/apis/system/sys_post"
|
||||||
|
"go-admin/app/admin/middleware"
|
||||||
|
jwt "go-admin/pkg/jwtauth"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
routerCheckRole = append(routerCheckRole, registerSyPostRouter)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 需认证的路由代码
|
||||||
|
func registerSyPostRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
|
||||||
|
api := &sys_post.SysPost{}
|
||||||
|
r := v1.Group("/post").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
||||||
|
{
|
||||||
|
r.GET("", api.GetSysPostList)
|
||||||
|
r.GET("/:id", api.GetSysPost)
|
||||||
|
r.POST("", api.InsertSysPost)
|
||||||
|
r.PUT("/:id", api.UpdateSysPost)
|
||||||
|
r.DELETE("/:id", api.DeleteSysPost)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package router
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"go-admin/app/admin/apis/system/sys_role"
|
||||||
|
"go-admin/app/admin/middleware"
|
||||||
|
jwt "go-admin/pkg/jwtauth"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
routerCheckRole = append(routerCheckRole, registerSysRoleRouter)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 需认证的路由代码
|
||||||
|
func registerSysRoleRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
|
||||||
|
api := &sys_role.SysRole{}
|
||||||
|
r := v1.Group("/role").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
||||||
|
{
|
||||||
|
r.GET("", api.GetSysRoleList)
|
||||||
|
r.GET("/:id", api.GetSysRole)
|
||||||
|
r.POST("", api.InsertSysRole)
|
||||||
|
r.PUT("/:id", api.UpdateSysRole)
|
||||||
|
r.DELETE("/:id", api.DeleteSysRole)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -104,20 +104,20 @@ func sysCheckRoleRouterInit(r *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddle
|
|||||||
|
|
||||||
registerPageRouter(v1, authMiddleware)
|
registerPageRouter(v1, authMiddleware)
|
||||||
registerBaseRouter(v1, authMiddleware)
|
registerBaseRouter(v1, authMiddleware)
|
||||||
registerDeptRouter(v1, authMiddleware)
|
//registerDeptRouter(v1, authMiddleware)
|
||||||
registerDictRouter(v1, authMiddleware)
|
registerDictRouter(v1, authMiddleware)
|
||||||
registerSysUserRouter(v1, authMiddleware)
|
registerSysUserRouter(v1, authMiddleware)
|
||||||
registerRoleRouter(v1, authMiddleware)
|
//registerRoleRouter(v1, authMiddleware)
|
||||||
registerUserCenterRouter(v1, authMiddleware)
|
registerUserCenterRouter(v1, authMiddleware)
|
||||||
registerPostRouter(v1, authMiddleware)
|
//registerPostRouter(v1, authMiddleware)
|
||||||
registerMenuRouter(v1, authMiddleware)
|
//registerMenuRouter(v1, authMiddleware)
|
||||||
}
|
}
|
||||||
|
|
||||||
func registerBaseRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
|
func registerBaseRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
|
||||||
v1auth := v1.Group("").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
v1auth := v1.Group("").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
||||||
{
|
{
|
||||||
v1auth.GET("/getinfo", system.GetInfo)
|
v1auth.GET("/getinfo", system.GetInfo)
|
||||||
v1auth.GET("/menurole", system.GetMenuRole)
|
|
||||||
v1auth.PUT("/roledatascope", system.UpdateRoleDataScope)
|
v1auth.PUT("/roledatascope", system.UpdateRoleDataScope)
|
||||||
v1auth.GET("/roleMenuTreeselect/:roleId", system.GetMenuTreeRoleselect)
|
v1auth.GET("/roleMenuTreeselect/:roleId", system.GetMenuTreeRoleselect)
|
||||||
v1auth.GET("/roleDeptTreeselect/:roleId", system.GetDeptTreeRoleselect)
|
v1auth.GET("/roleDeptTreeselect/:roleId", system.GetDeptTreeRoleselect)
|
||||||
@@ -130,13 +130,13 @@ func registerBaseRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddlewar
|
|||||||
func registerPageRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
|
func registerPageRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
|
||||||
v1auth := v1.Group("").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
v1auth := v1.Group("").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
||||||
{
|
{
|
||||||
v1auth.GET("/deptList", system.GetDeptList)
|
//v1auth.GET("/deptList", system.GetDeptList)
|
||||||
v1auth.GET("/deptTree", system.GetDeptTree)
|
//v1auth.GET("/deptTree", system.GetDeptTree)
|
||||||
v1auth.GET("/sysUserList", system.GetSysUserList)
|
v1auth.GET("/sysUserList", system.GetSysUserList)
|
||||||
v1auth.GET("/rolelist", system.GetRoleList)
|
//v1auth.GET("/rolelist", system.GetRoleList)
|
||||||
//v1auth.GET("/configList", system.GetConfigList)
|
//v1auth.GET("/configList", system.GetConfigList)
|
||||||
v1auth.GET("/postlist", system.GetPostList)
|
//v1auth.GET("/postlist", system.GetPostList)
|
||||||
v1auth.GET("/menulist", system.GetMenuList)
|
//v1auth.GET("/menulist", system.GetMenuList)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -159,15 +159,15 @@ func registerPostRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddlewar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func registerMenuRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
|
//func registerMenuRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
|
||||||
menu := v1.Group("/menu").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
// menu := v1.Group("/menu").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
||||||
{
|
// {
|
||||||
menu.GET("/:id", system.GetMenu)
|
// menu.GET("/:id", system.GetMenu)
|
||||||
menu.POST("", system.InsertMenu)
|
// menu.POST("", system.InsertMenu)
|
||||||
menu.PUT("", system.UpdateMenu)
|
// menu.PUT("", system.UpdateMenu)
|
||||||
menu.DELETE("/:id", system.DeleteMenu)
|
// menu.DELETE("/:id", system.DeleteMenu)
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
func registerRoleRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
|
func registerRoleRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
|
||||||
role := v1.Group("/role").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
role := v1.Group("/role").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
||||||
@@ -209,15 +209,15 @@ func registerDictRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddlewar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func registerDeptRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
|
//func registerDeptRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
|
||||||
dept := v1.Group("/dept").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
// dept := v1.Group("/dept").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
||||||
{
|
// {
|
||||||
dept.GET("/:deptId", system.GetDept)
|
// dept.GET("/:deptId", system.GetDept)
|
||||||
dept.POST("", system.InsertDept)
|
// dept.POST("", system.InsertDept)
|
||||||
dept.PUT("", system.UpdateDept)
|
// dept.PUT("", system.UpdateDept)
|
||||||
dept.DELETE("/:id", system.DeleteDept)
|
// dept.DELETE("/:id", system.DeleteDept)
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
func registerSysSettingRouter(v1 *gin.RouterGroup) {
|
func registerSysSettingRouter(v1 *gin.RouterGroup) {
|
||||||
api := system.SysSetting{}
|
api := system.SysSetting{}
|
||||||
setting := v1.Group("/setting")
|
setting := v1.Group("/setting")
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import (
|
|||||||
// SysConfigSearch 列表或者搜索使用结构体
|
// SysConfigSearch 列表或者搜索使用结构体
|
||||||
type SysDeptSearch struct {
|
type SysDeptSearch struct {
|
||||||
dto.Pagination `search:"-"`
|
dto.Pagination `search:"-"`
|
||||||
|
DeptId int `form:"deptId" search:"type:exact;column:dept_id;table:sys_dept" comment:"id"` //id
|
||||||
ParentId int `form:"parentId" search:"type:exact;column:parent_id;table:sys_dept" comment:"上级部门"` //上级部门
|
ParentId int `form:"parentId" search:"type:exact;column:parent_id;table:sys_dept" comment:"上级部门"` //上级部门
|
||||||
DeptPath string `form:"deptPath" search:"type:exact;column:dept_path;table:sys_dept" comment:""` //路径
|
DeptPath string `form:"deptPath" search:"type:exact;column:dept_path;table:sys_dept" comment:""` //路径
|
||||||
DeptName string `form:"deptName" search:"type:exact;column:dept_name;table:sys_dept" comment:"部门名称"` //部门名称
|
DeptName string `form:"deptName" search:"type:exact;column:dept_name;table:sys_dept" comment:"部门名称"` //部门名称
|
||||||
|
|||||||
@@ -0,0 +1,117 @@
|
|||||||
|
package dto
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"github.com/gin-gonic/gin/binding"
|
||||||
|
"go-admin/app/admin/models/system"
|
||||||
|
"go-admin/common/dto"
|
||||||
|
"go-admin/common/log"
|
||||||
|
"go-admin/tools"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SysPostSearch 列表或者搜索使用结构体
|
||||||
|
type SysPostSearch struct {
|
||||||
|
dto.Pagination `search:"-"`
|
||||||
|
PostId int `form:"postId" search:"type:exact;column:post_id;table:sys_post" comment:"id"` // id
|
||||||
|
PostName string `form:"postName" search:"type:exact;column:post_name;table:sys_post" comment:"名称"` // 名称
|
||||||
|
PostCode string `form:"postCode" search:"type:exact;column:post_code;table:sys_post" comment:"编码"` // 编码
|
||||||
|
Sort int `form:"sort" search:"type:exact;column:sort;table:sys_post" comment:"排序"` // 排序
|
||||||
|
Status int `form:"status" search:"type:exact;column:status;table:sys_post" comment:"状态"` // 状态
|
||||||
|
Remark string `form:"remark" search:"type:exact;column:remark;table:sys_post" comment:"备注"` // 备注
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SysPostSearch) GetNeedSearch() interface{} {
|
||||||
|
return *m
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bind 映射上下文中的结构体数据
|
||||||
|
func (m *SysPostSearch) Bind(ctx *gin.Context) error {
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(ctx)
|
||||||
|
err := ctx.ShouldBind(m)
|
||||||
|
if err != nil {
|
||||||
|
log.Debugf("MsgID[%s] ShouldBind error: %s", msgID, err.Error())
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// SysConfigControl 增、改使用的结构体
|
||||||
|
type SysPostControl struct {
|
||||||
|
PostId int `uri:"id" comment:"id"` // id
|
||||||
|
PostName string `form:"postName" comment:"名称"` // 名称
|
||||||
|
PostCode string `form:"postCode" comment:"编码"` // 编码
|
||||||
|
Sort int `form:"sort" comment:"排序"` // 排序
|
||||||
|
Status int `form:"status" comment:"状态"` // 状态
|
||||||
|
Remark string `form:"remark" comment:"备注"` // 备注
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bind 映射上下文中的结构体数据
|
||||||
|
func (s *SysPostControl) Bind(ctx *gin.Context) error {
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(ctx)
|
||||||
|
err := ctx.ShouldBindUri(s)
|
||||||
|
if err != nil {
|
||||||
|
log.Debugf("MsgID[%s] ShouldBindUri error: %s", msgID, err.Error())
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = ctx.ShouldBindBodyWith(s, binding.JSON)
|
||||||
|
if err != nil {
|
||||||
|
log.Debugf("MsgID[%s] ShouldBind error: %#v", msgID, err.Error())
|
||||||
|
}
|
||||||
|
var jsonStr []byte
|
||||||
|
jsonStr, err = json.Marshal(s)
|
||||||
|
if err != nil {
|
||||||
|
log.Debugf("MsgID[%s] ShouldBind error: %#v", msgID, err.Error())
|
||||||
|
}
|
||||||
|
ctx.Set("body", string(jsonStr))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate 结构体数据转化 从 SysConfigControl 至 system.SysConfig 对应的模型
|
||||||
|
func (s *SysPostControl) Generate() (*system.SysPost, error) {
|
||||||
|
return &system.SysPost{
|
||||||
|
PostId: s.PostId,
|
||||||
|
PostName: s.PostName,
|
||||||
|
PostCode: s.PostCode,
|
||||||
|
Sort: s.Sort,
|
||||||
|
Status: s.Status,
|
||||||
|
Remark: s.Remark,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetId 获取数据对应的ID
|
||||||
|
func (s *SysPostControl) GetId() interface{} {
|
||||||
|
return s.PostId
|
||||||
|
}
|
||||||
|
|
||||||
|
// SysConfigById 获取单个或者删除的结构体
|
||||||
|
type SysPostById struct {
|
||||||
|
Id int `uri:"id"`
|
||||||
|
Ids []int `json:"ids"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *SysPostById) Generate() *SysPostById {
|
||||||
|
cp := *s
|
||||||
|
return &cp
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *SysPostById) GetId() interface{} {
|
||||||
|
return s.Id
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *SysPostById) Bind(ctx *gin.Context) error {
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(ctx)
|
||||||
|
err := ctx.ShouldBindUri(s)
|
||||||
|
if err != nil {
|
||||||
|
log.Debugf("MsgID[%s] ShouldBindUri error: %s", msgID, err.Error())
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = ctx.ShouldBind(s)
|
||||||
|
if err != nil {
|
||||||
|
log.Debugf("MsgID[%s] ShouldBind error: %#v", msgID, err.Error())
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *SysPostById) GenerateM() (*system.SysPost, error) {
|
||||||
|
return &system.SysPost{}, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,128 @@
|
|||||||
|
package dto
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"github.com/gin-gonic/gin/binding"
|
||||||
|
"go-admin/app/admin/models"
|
||||||
|
"go-admin/app/admin/models/system"
|
||||||
|
"go-admin/common/dto"
|
||||||
|
"go-admin/common/log"
|
||||||
|
"go-admin/tools"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SysRoleSearch 列表或者搜索使用结构体
|
||||||
|
type SysRoleSearch struct {
|
||||||
|
dto.Pagination `search:"-"`
|
||||||
|
|
||||||
|
RoleId int `form:"roleId" search:"type:exact;column:role_id;table:sys_role" comment:"角色编码"` // 角色编码
|
||||||
|
RoleName string `form:"roleName" search:"type:exact;column:role_name;table:sys_role" comment:"角色名称"` // 角色名称
|
||||||
|
Status string `form:"status" search:"type:exact;column:status;table:sys_role" comment:"状态"` // 状态
|
||||||
|
RoleKey string `form:"roleKey" search:"type:exact;column:role_key;table:sys_role" comment:"角色代码"` // 角色代码
|
||||||
|
RoleSort int `form:"roleSort" search:"type:exact;column:role_sort;table:sys_role" comment:"角色排序"` // 角色排序
|
||||||
|
Flag string `form:"flag" search:"type:exact;column:flag;table:sys_role" comment:"标记"` // 标记
|
||||||
|
Remark string `form:"remark" search:"type:exact;column:remark;table:sys_role" comment:"备注"` // 备注
|
||||||
|
Admin bool `form:"admin" search:"type:exact;column:admin;table:sys_role" comment:"是否管理员"`
|
||||||
|
DataScope string `form:"dataScope" search:"type:exact;column:data_scope;table:sys_role" comment:"是否管理员"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SysRoleSearch) GetNeedSearch() interface{} {
|
||||||
|
return *m
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bind 映射上下文中的结构体数据
|
||||||
|
func (m *SysRoleSearch) Bind(ctx *gin.Context) error {
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(ctx)
|
||||||
|
err := ctx.ShouldBind(m)
|
||||||
|
if err != nil {
|
||||||
|
log.Debugf("MsgID[%s] ShouldBind error: %s", msgID, err.Error())
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// SysConfigControl 增、改使用的结构体
|
||||||
|
type SysRoleControl struct {
|
||||||
|
RoleId int `uri:"roleId" comment:"角色编码"` // 角色编码
|
||||||
|
RoleName string `form:"roleName" comment:"角色名称"` // 角色名称
|
||||||
|
Status string `form:"status" comment:"状态"` // 状态
|
||||||
|
RoleKey string `form:"roleKey" comment:"角色代码"` // 角色代码
|
||||||
|
RoleSort int `form:"roleSort" comment:"角色排序"` // 角色排序
|
||||||
|
Flag string `form:"flag" comment:"标记"` // 标记
|
||||||
|
Remark string `form:"remark" comment:"备注"` // 备注
|
||||||
|
Admin bool `form:"admin" comment:"是否管理员"`
|
||||||
|
DataScope string `form:"dataScope" comment:"是否管理员"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bind 映射上下文中的结构体数据
|
||||||
|
func (s *SysRoleControl) Bind(ctx *gin.Context) error {
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(ctx)
|
||||||
|
err := ctx.ShouldBindUri(s)
|
||||||
|
if err != nil {
|
||||||
|
log.Debugf("MsgID[%s] ShouldBindUri error: %s", msgID, err.Error())
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = ctx.ShouldBindBodyWith(s, binding.JSON)
|
||||||
|
if err != nil {
|
||||||
|
log.Debugf("MsgID[%s] ShouldBind error: %#v", msgID, err.Error())
|
||||||
|
}
|
||||||
|
var jsonStr []byte
|
||||||
|
jsonStr, err = json.Marshal(s)
|
||||||
|
if err != nil {
|
||||||
|
log.Debugf("MsgID[%s] ShouldBind error: %#v", msgID, err.Error())
|
||||||
|
}
|
||||||
|
ctx.Set("body", string(jsonStr))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate 结构体数据转化 从 SysConfigControl 至 system.SysConfig 对应的模型
|
||||||
|
func (s *SysRoleControl) Generate() (*system.SysRole, error) {
|
||||||
|
return &system.SysRole{
|
||||||
|
RoleId: s.RoleId,
|
||||||
|
RoleName: s.RoleName,
|
||||||
|
Status: s.Status,
|
||||||
|
RoleKey: s.RoleKey,
|
||||||
|
RoleSort: s.RoleSort,
|
||||||
|
Flag: s.Flag,
|
||||||
|
Remark: s.Remark,
|
||||||
|
Admin: s.Admin,
|
||||||
|
DataScope: s.DataScope,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetId 获取数据对应的ID
|
||||||
|
func (s *SysRoleControl) GetId() interface{} {
|
||||||
|
return s.RoleId
|
||||||
|
}
|
||||||
|
|
||||||
|
// SysConfigById 获取单个或者删除的结构体
|
||||||
|
type SysRoleById struct {
|
||||||
|
Id int `uri:"id"`
|
||||||
|
Ids []int `json:"ids"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *SysRoleById) Generate() *SysRoleById {
|
||||||
|
cp := *s
|
||||||
|
return &cp
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *SysRoleById) GetId() interface{} {
|
||||||
|
return s.Id
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *SysRoleById) Bind(ctx *gin.Context) error {
|
||||||
|
msgID := tools.GenerateMsgIDFromContext(ctx)
|
||||||
|
err := ctx.ShouldBindUri(s)
|
||||||
|
if err != nil {
|
||||||
|
log.Debugf("MsgID[%s] ShouldBindUri error: %s", msgID, err.Error())
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = ctx.ShouldBind(s)
|
||||||
|
if err != nil {
|
||||||
|
log.Debugf("MsgID[%s] ShouldBind error: %#v", msgID, err.Error())
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *SysRoleById) GenerateM() (*models.SysRole, error) {
|
||||||
|
return &models.SysRole{}, nil
|
||||||
|
}
|
||||||
@@ -15,7 +15,7 @@ type SysDept struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetSysDeptPage 获取SysDept列表
|
// GetSysDeptPage 获取SysDept列表
|
||||||
func (e *SysDept) GetSysDeptPage(c *dto.SysDeptSearch, list *[]models.SysDept, count *int64) error {
|
func (e *SysDept) GetSysDeptPage(c *dto.SysDeptSearch, list *[]models.SysDept) error {
|
||||||
var err error
|
var err error
|
||||||
var data models.SysDept
|
var data models.SysDept
|
||||||
msgID := e.MsgID
|
msgID := e.MsgID
|
||||||
@@ -23,10 +23,8 @@ func (e *SysDept) GetSysDeptPage(c *dto.SysDeptSearch, list *[]models.SysDept, c
|
|||||||
err = e.Orm.Model(&data).
|
err = e.Orm.Model(&data).
|
||||||
Scopes(
|
Scopes(
|
||||||
cDto.MakeCondition(c.GetNeedSearch()),
|
cDto.MakeCondition(c.GetNeedSearch()),
|
||||||
cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
|
|
||||||
).
|
).
|
||||||
Find(list).Limit(-1).Offset(-1).
|
Find(list).Error
|
||||||
Count(count).Error
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
||||||
return err
|
return err
|
||||||
@@ -110,7 +108,7 @@ func (e *SysDept) RemoveSysDept(d *dto.SysDeptById) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetSysDeptList 获取组织数据
|
// GetSysDeptList 获取组织数据
|
||||||
func (e *SysDept) GetSysDeptList(c *dto.SysDeptSearch, list *[]models.SysDept) error {
|
func (e *SysDept) getSysDeptList(c *dto.SysDeptSearch, list *[]models.SysDept) error {
|
||||||
var err error
|
var err error
|
||||||
var data models.SysDept
|
var data models.SysDept
|
||||||
msgID := e.MsgID
|
msgID := e.MsgID
|
||||||
@@ -128,9 +126,9 @@ func (e *SysDept) GetSysDeptList(c *dto.SysDeptSearch, list *[]models.SysDept) e
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetDeptTree 设置组织数据
|
// SetDeptTree 设置组织数据
|
||||||
func (e *SysDept) SetDeptTree() (c *dto.SysDeptSearch, m []dto.DeptLabel, err error) {
|
func (e *SysDept) SetDeptTree(c *dto.SysDeptSearch) (m []dto.DeptLabel, err error) {
|
||||||
var list []models.SysDept
|
var list []models.SysDept
|
||||||
err = e.GetSysDeptList(c, &list)
|
err = e.getSysDeptList(c, &list)
|
||||||
|
|
||||||
m = make([]dto.DeptLabel, 0)
|
m = make([]dto.DeptLabel, 0)
|
||||||
for i := 0; i < len(list); i++ {
|
for i := 0; i < len(list); i++ {
|
||||||
@@ -140,7 +138,7 @@ func (e *SysDept) SetDeptTree() (c *dto.SysDeptSearch, m []dto.DeptLabel, err er
|
|||||||
e := dto.DeptLabel{}
|
e := dto.DeptLabel{}
|
||||||
e.Id = list[i].DeptId
|
e.Id = list[i].DeptId
|
||||||
e.Label = list[i].DeptName
|
e.Label = list[i].DeptName
|
||||||
deptsInfo := DeptCall(&list, e)
|
deptsInfo := deptTreeCall(&list, e)
|
||||||
|
|
||||||
m = append(m, deptsInfo)
|
m = append(m, deptsInfo)
|
||||||
}
|
}
|
||||||
@@ -148,7 +146,7 @@ func (e *SysDept) SetDeptTree() (c *dto.SysDeptSearch, m []dto.DeptLabel, err er
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Call 递归构造组织数据
|
// Call 递归构造组织数据
|
||||||
func DeptCall(deptlist *[]models.SysDept, dept dto.DeptLabel) dto.DeptLabel {
|
func deptTreeCall(deptlist *[]models.SysDept, dept dto.DeptLabel) dto.DeptLabel {
|
||||||
list := *deptlist
|
list := *deptlist
|
||||||
min := make([]dto.DeptLabel, 0)
|
min := make([]dto.DeptLabel, 0)
|
||||||
for j := 0; j < len(list); j++ {
|
for j := 0; j < len(list); j++ {
|
||||||
@@ -156,9 +154,55 @@ func DeptCall(deptlist *[]models.SysDept, dept dto.DeptLabel) dto.DeptLabel {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
mi := dto.DeptLabel{Id: list[j].DeptId, Label: list[j].DeptName, Children: []dto.DeptLabel{}}
|
mi := dto.DeptLabel{Id: list[j].DeptId, Label: list[j].DeptName, Children: []dto.DeptLabel{}}
|
||||||
ms := DeptCall(deptlist, mi)
|
ms := deptTreeCall(deptlist, mi)
|
||||||
min = append(min, ms)
|
min = append(min, ms)
|
||||||
}
|
}
|
||||||
dept.Children = min
|
dept.Children = min
|
||||||
return dept
|
return dept
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetDeptPage 设置dept页面数据
|
||||||
|
func (e *SysDept) SetDeptPage(c *dto.SysDeptSearch) (m []models.SysDept, err error) {
|
||||||
|
var list []models.SysDept
|
||||||
|
err = e.getSysDeptList(c, &list)
|
||||||
|
|
||||||
|
//m := make([]models.SysDept, 0)
|
||||||
|
for i := 0; i < len(list); i++ {
|
||||||
|
if list[i].ParentId != 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
info := e.deptPageCall(&list, list[i])
|
||||||
|
|
||||||
|
m = append(m, info)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *SysDept) deptPageCall(deptlist *[]models.SysDept, menu models.SysDept) models.SysDept {
|
||||||
|
list := *deptlist
|
||||||
|
|
||||||
|
min := make([]models.SysDept, 0)
|
||||||
|
for j := 0; j < len(list); j++ {
|
||||||
|
|
||||||
|
if menu.DeptId != list[j].ParentId {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
mi := models.SysDept{}
|
||||||
|
mi.DeptId = list[j].DeptId
|
||||||
|
mi.ParentId = list[j].ParentId
|
||||||
|
mi.DeptPath = list[j].DeptPath
|
||||||
|
mi.DeptName = list[j].DeptName
|
||||||
|
mi.Sort = list[j].Sort
|
||||||
|
mi.Leader = list[j].Leader
|
||||||
|
mi.Phone = list[j].Phone
|
||||||
|
mi.Email = list[j].Email
|
||||||
|
mi.Status = list[j].Status
|
||||||
|
mi.CreatedAt = list[j].CreatedAt
|
||||||
|
mi.Children = []models.SysDept{}
|
||||||
|
ms := e.deptPageCall(deptlist, mi)
|
||||||
|
min = append(min, ms)
|
||||||
|
|
||||||
|
}
|
||||||
|
menu.Children = min
|
||||||
|
return menu
|
||||||
|
}
|
||||||
|
|||||||
@@ -16,6 +16,23 @@ type SysMenu struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetSysMenuPage 获取SysMenu列表
|
// GetSysMenuPage 获取SysMenu列表
|
||||||
|
func (e *SysMenu) GetSysMenuPage(c *dto.SysMenuSearch) (*[]models.SysMenu, error) {
|
||||||
|
var m = make([]models.SysMenu, 0)
|
||||||
|
var err error
|
||||||
|
var menu = make([]models.SysMenu, 0)
|
||||||
|
err = e.getSysMenuPage(c, &menu)
|
||||||
|
for i := 0; i < len(menu); i++ {
|
||||||
|
if menu[i].ParentId != 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
menusInfo := menuCall(&menu, menu[i])
|
||||||
|
|
||||||
|
m = append(m, menusInfo)
|
||||||
|
}
|
||||||
|
return &m, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// getSysMenuPage 菜单列表
|
||||||
func (e *SysMenu) getSysMenuPage(c *dto.SysMenuSearch, list *[]models.SysMenu) error {
|
func (e *SysMenu) getSysMenuPage(c *dto.SysMenuSearch, list *[]models.SysMenu) error {
|
||||||
var err error
|
var err error
|
||||||
var data models.SysMenu
|
var data models.SysMenu
|
||||||
@@ -23,6 +40,7 @@ func (e *SysMenu) getSysMenuPage(c *dto.SysMenuSearch, list *[]models.SysMenu) e
|
|||||||
|
|
||||||
err = e.Orm.Model(&data).
|
err = e.Orm.Model(&data).
|
||||||
Scopes(
|
Scopes(
|
||||||
|
cDto.OrderDest("sort", false),
|
||||||
cDto.MakeCondition(c.GetNeedSearch()),
|
cDto.MakeCondition(c.GetNeedSearch()),
|
||||||
).
|
).
|
||||||
Find(list).Error
|
Find(list).Error
|
||||||
@@ -145,7 +163,7 @@ func (e *SysMenu) GetSysMenuList(c *dto.SysMenuSearch, list *[]models.SysMenu) e
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetSysMenuTree 设置菜单数据
|
// SetSysMenuTree 设置菜单数据
|
||||||
func (e *SysMenu) SetSysMenuTree() (c *dto.SysMenuSearch, m []dto.MenuLabel, err error) {
|
func (e *SysMenu) SetSysMenuLabel(c *dto.SysMenuSearch) (m []dto.MenuLabel, err error) {
|
||||||
var list []models.SysMenu
|
var list []models.SysMenu
|
||||||
err = e.GetSysMenuList(c, &list)
|
err = e.GetSysMenuList(c, &list)
|
||||||
|
|
||||||
@@ -164,6 +182,29 @@ func (e *SysMenu) SetSysMenuTree() (c *dto.SysMenuSearch, m []dto.MenuLabel, err
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 左侧菜单
|
||||||
|
func (e *SysMenu) GetSysMenuByRoleName(roleName string) (Menus []models.SysMenu, err error) {
|
||||||
|
var table *gorm.DB
|
||||||
|
var data models.SysMenu
|
||||||
|
msgID := e.MsgID
|
||||||
|
|
||||||
|
if roleName == "admin" {
|
||||||
|
table = e.Orm.Model(&data).Select("sys_menu.*")
|
||||||
|
table = table.Where(" menu_type in ('M','C')")
|
||||||
|
} else {
|
||||||
|
table = e.Orm.Model(&data).Select("sys_menu.*").Joins("left join sys_role_menu on sys_role_menu.menu_id=sys_menu.menu_id")
|
||||||
|
table = table.Where("sys_role_menu.role_name=? and menu_type in ('M','C')", roleName)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = table.Order("sort").Find(&Menus).Error
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// menuLabelCall 递归构造组织数据
|
// menuLabelCall 递归构造组织数据
|
||||||
func menuLabelCall(elist *[]models.SysMenu, dept dto.MenuLabel) dto.MenuLabel {
|
func menuLabelCall(elist *[]models.SysMenu, dept dto.MenuLabel) dto.MenuLabel {
|
||||||
list := *elist
|
list := *elist
|
||||||
@@ -193,21 +234,6 @@ func menuLabelCall(elist *[]models.SysMenu, dept dto.MenuLabel) dto.MenuLabel {
|
|||||||
return dept
|
return dept
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetMenuList 菜单列表
|
|
||||||
func (e *SysMenu) GetSysMenuPage() (c *dto.SysMenuSearch, m []models.SysMenu, err error) {
|
|
||||||
err = e.getSysMenuPage(c,&m)
|
|
||||||
m = make([]models.SysMenu, 0)
|
|
||||||
for i := 0; i < len(m); i++ {
|
|
||||||
if m[i].ParentId != 0 {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
menusInfo := menuCall(&m, m[i])
|
|
||||||
|
|
||||||
m = append(m, menusInfo)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func menuCall(menulist *[]models.SysMenu, menu models.SysMenu) models.SysMenu {
|
func menuCall(menulist *[]models.SysMenu, menu models.SysMenu) models.SysMenu {
|
||||||
list := *menulist
|
list := *menulist
|
||||||
|
|
||||||
@@ -247,3 +273,41 @@ func menuCall(menulist *[]models.SysMenu, menu models.SysMenu) models.SysMenu {
|
|||||||
menu.Children = min
|
menu.Children = min
|
||||||
return menu
|
return menu
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e *SysMenu) SetMenuRole(roleName string) (m []models.SysMenu, err error) {
|
||||||
|
|
||||||
|
menus, err := e.getByRoleName(roleName)
|
||||||
|
|
||||||
|
m = make([]models.SysMenu, 0)
|
||||||
|
for i := 0; i < len(menus); i++ {
|
||||||
|
if menus[i].ParentId != 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
menusInfo := menuCall(&menus, menus[i])
|
||||||
|
|
||||||
|
m = append(m, menusInfo)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *SysMenu) getByRoleName(roleName string) (Menus []models.SysMenu, err error) {
|
||||||
|
var data models.SysMenu
|
||||||
|
msgID := e.MsgID
|
||||||
|
var table *gorm.DB
|
||||||
|
if roleName == "admin" {
|
||||||
|
table = e.Orm.Model(&data).Select("sys_menu.*")
|
||||||
|
table = table.Where(" menu_type in ('M','C')")
|
||||||
|
} else {
|
||||||
|
table = e.Orm.Model(&data).Select("sys_menu.*").Joins("left join sys_role_menu on sys_role_menu.menu_id=sys_menu.menu_id")
|
||||||
|
table = table.Where("sys_role_menu.role_name=? and menu_type in ('M','C')", roleName)
|
||||||
|
}
|
||||||
|
err = table.Scopes(
|
||||||
|
cDto.OrderDest("sort", false),
|
||||||
|
).Find(&Menus).Error
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,109 @@
|
|||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"go-admin/app/admin/models/system"
|
||||||
|
"go-admin/app/admin/service/dto"
|
||||||
|
cDto "go-admin/common/dto"
|
||||||
|
"go-admin/common/log"
|
||||||
|
"go-admin/common/service"
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type SysPost struct {
|
||||||
|
service.Service
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSysPostPage 获取SysPost列表
|
||||||
|
func (e *SysPost) GetSysPostPage(c *dto.SysPostSearch, list *[]system.SysPost, count *int64) error {
|
||||||
|
var err error
|
||||||
|
var data system.SysPost
|
||||||
|
msgID := e.MsgID
|
||||||
|
|
||||||
|
err = e.Orm.Model(&data).
|
||||||
|
Scopes(
|
||||||
|
cDto.MakeCondition(c.GetNeedSearch()),
|
||||||
|
cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
|
||||||
|
).
|
||||||
|
Find(list).Limit(-1).Offset(-1).
|
||||||
|
Count(count).Error
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSysPost 获取SysPost对象
|
||||||
|
func (e *SysPost) GetSysPost(d *dto.SysPostById, model *system.SysPost) error {
|
||||||
|
var err error
|
||||||
|
var data system.SysPost
|
||||||
|
msgID := e.MsgID
|
||||||
|
|
||||||
|
db := e.Orm.Model(&data).
|
||||||
|
First(model, d.GetId())
|
||||||
|
err = db.Error
|
||||||
|
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
|
||||||
|
err = errors.New("查看对象不存在或无权查看")
|
||||||
|
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if db.Error != nil {
|
||||||
|
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// InsertSysPost 创建SysPost对象
|
||||||
|
func (e *SysPost) InsertSysPost(model *system.SysPost) error {
|
||||||
|
var err error
|
||||||
|
var data system.SysPost
|
||||||
|
msgID := e.MsgID
|
||||||
|
|
||||||
|
err = e.Orm.Model(&data).
|
||||||
|
Create(model).Error
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateSysPost 修改SysPost对象
|
||||||
|
func (e *SysPost) UpdateSysPost(c *system.SysPost) error {
|
||||||
|
var err error
|
||||||
|
var data system.SysPost
|
||||||
|
msgID := e.MsgID
|
||||||
|
|
||||||
|
db := e.Orm.Model(&data).
|
||||||
|
Where(c.GetId()).Updates(c)
|
||||||
|
if db.Error != nil {
|
||||||
|
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if db.RowsAffected == 0 {
|
||||||
|
return errors.New("无权更新该数据")
|
||||||
|
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveSysPost 删除SysPost
|
||||||
|
func (e *SysPost) RemoveSysPost(d *dto.SysPostById) error {
|
||||||
|
var err error
|
||||||
|
var data system.SysPost
|
||||||
|
msgID := e.MsgID
|
||||||
|
|
||||||
|
db := e.Orm.Model(&data).Delete(&data, d.GetId())
|
||||||
|
if db.Error != nil {
|
||||||
|
err = db.Error
|
||||||
|
log.Errorf("MsgID[%s] Delete error: %s", msgID, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if db.RowsAffected == 0 {
|
||||||
|
err = errors.New("无权删除该数据")
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"go-admin/app/admin/models/system"
|
||||||
|
"go-admin/app/admin/service/dto"
|
||||||
|
cDto "go-admin/common/dto"
|
||||||
|
"go-admin/common/log"
|
||||||
|
"go-admin/common/service"
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type SysRole struct {
|
||||||
|
service.Service
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSysRolePage 获取SysRole列表
|
||||||
|
func (e *SysRole) GetSysRolePage(c *dto.SysRoleSearch, list *[]system.SysRole, count *int64) error {
|
||||||
|
var err error
|
||||||
|
var data system.SysRole
|
||||||
|
msgID := e.MsgID
|
||||||
|
|
||||||
|
err = e.Orm.Model(&data).
|
||||||
|
Scopes(
|
||||||
|
cDto.MakeCondition(c.GetNeedSearch()),
|
||||||
|
cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
|
||||||
|
).
|
||||||
|
Find(list).Limit(-1).Offset(-1).
|
||||||
|
Count(count).Error
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSysRole 获取SysRole对象
|
||||||
|
func (e *SysRole) GetSysRole(d *dto.SysRoleById, model *system.SysRole) error {
|
||||||
|
var err error
|
||||||
|
var data system.SysRole
|
||||||
|
msgID := e.MsgID
|
||||||
|
|
||||||
|
db := e.Orm.Model(&data).
|
||||||
|
First(model, d.GetId())
|
||||||
|
err = db.Error
|
||||||
|
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
|
||||||
|
err = errors.New("查看对象不存在或无权查看")
|
||||||
|
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if db.Error != nil {
|
||||||
|
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// InsertSysRole 创建SysRole对象
|
||||||
|
func (e *SysRole) InsertSysRole(model *system.SysRole) error {
|
||||||
|
var err error
|
||||||
|
var data system.SysRole
|
||||||
|
msgID := e.MsgID
|
||||||
|
|
||||||
|
err = e.Orm.Model(&data).
|
||||||
|
Create(model).Error
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateSysRole 修改SysRole对象
|
||||||
|
func (e *SysRole) UpdateSysRole(c *system.SysRole) error {
|
||||||
|
var err error
|
||||||
|
var data system.SysRole
|
||||||
|
msgID := e.MsgID
|
||||||
|
|
||||||
|
db := e.Orm.Model(&data).
|
||||||
|
Where(c.GetId()).Updates(c)
|
||||||
|
if db.Error != nil {
|
||||||
|
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if db.RowsAffected == 0 {
|
||||||
|
return errors.New("无权更新该数据")
|
||||||
|
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveSysRole 删除SysRole
|
||||||
|
func (e *SysRole) RemoveSysRole(d *dto.SysRoleById) error {
|
||||||
|
var err error
|
||||||
|
var data system.SysRole
|
||||||
|
msgID := e.MsgID
|
||||||
|
|
||||||
|
db := e.Orm.Model(&data).Delete(&data, d.GetId())
|
||||||
|
if db.Error != nil {
|
||||||
|
err = db.Error
|
||||||
|
log.Errorf("MsgID[%s] Delete error: %s", msgID, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if db.RowsAffected == 0 {
|
||||||
|
err = errors.New("无权删除该数据")
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
package version
|
||||||
|
|
||||||
|
import (
|
||||||
|
"go-admin/app/admin/models/system"
|
||||||
|
|
||||||
|
//"go-admin/app/admin/models"
|
||||||
|
"gorm.io/gorm"
|
||||||
|
"runtime"
|
||||||
|
|
||||||
|
"go-admin/cmd/migrate/migration"
|
||||||
|
common "go-admin/common/models"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
_, fileName, _, _ := runtime.Caller(0)
|
||||||
|
migration.Migrate.SetVersion(migration.GetFilename(fileName), _1610804233204Test)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _1610804233204Test(db *gorm.DB, version string) error {
|
||||||
|
return db.Transaction(func(tx *gorm.DB) error {
|
||||||
|
|
||||||
|
// TODO: 这里开始写入要变更的内容
|
||||||
|
post := system.SysPost{}
|
||||||
|
err := tx.Model(&post).Where("status = ?", 0).Update("status", 2).Error
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
role := system.SysRole{}
|
||||||
|
err = tx.Model(&role).Where("status = ?", 0).Update("status", 2).Error
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return tx.Create(&common.Migration{
|
||||||
|
Version: version,
|
||||||
|
}).Error
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package dto
|
||||||
|
|
||||||
|
import (
|
||||||
|
"gorm.io/gorm"
|
||||||
|
"gorm.io/gorm/clause"
|
||||||
|
)
|
||||||
|
|
||||||
|
func OrderDest(sort string, bl bool) func(db *gorm.DB) *gorm.DB {
|
||||||
|
return func(db *gorm.DB) *gorm.DB {
|
||||||
|
return db.Order(clause.OrderByColumn{Column: clause.Column{Name: sort}, Desc: bl})
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user