perf👌 : 岗位、角色功能改造

This commit is contained in:
wenjianzhang
2021-01-16 21:46:57 +08:00
parent ad42b6489a
commit 792c8874aa
21 changed files with 1575 additions and 103 deletions
+43 -43
View File
@@ -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, "")
}
+38 -4
View File
@@ -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, "")
}
+281
View File
@@ -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, "")
}
+174
View File
@@ -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(), "删除成功")
}
+175
View File
@@ -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(), "删除成功")
}
+30
View File
@@ -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
}
+33
View File
@@ -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
}
+32
View File
@@ -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)
}
}
+39
View File
@@ -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)
}
}
+26
View File
@@ -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)
}
}
+25
View File
@@ -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)
}
}
+28 -28
View File
@@ -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")
+1
View File
@@ -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:"部门名称"` //部门名称
+117
View File
@@ -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
}
+128
View File
@@ -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
}
+54 -10
View File
@@ -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
}
+80 -16
View File
@@ -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
}
+109
View File
@@ -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
}
+109
View File
@@ -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
})
}
+12
View File
@@ -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})
}
}