diff --git a/app/admin/apis/system/sys_dept/sys_dept.go b/app/admin/apis/system/sys_dept/sys_dept.go index 1708b504..69bbd30d 100644 --- a/app/admin/apis/system/sys_dept/sys_dept.go +++ b/app/admin/apis/system/sys_dept/sys_dept.go @@ -1,6 +1,7 @@ package sys_dept import ( + "github.com/go-admin-team/go-admin-core/sdk/pkg" "net/http" "github.com/gin-gonic/gin" @@ -254,30 +255,33 @@ func (e *SysDept) GetDeptTree(c *gin.Context) { e.OK(c, list, "") } -//func (e *SysDept) GetDeptTreeRoleSelect(c *gin.Context) { -// log := e.GetLogger(c) -// db, err := tools.GetOrm(c) -// if err != nil { -// log.Error(err) -// return -// } -// -// s := service.SysDept{} -// s.Orm = db -// s.MsgID = msgID -// id, err := tools.StringToInt(c.Param("roleId")) -// result, err := s.SetDeptLabel() -// if err != nil { -// log.Errorf("SetDeptLabel error, %s", msgID, err.Error()) -// e.Error(c, http.StatusInternalServerError, err, "") -// } -// menuIds := make([]int, 0) -// if id != 0 { -// menuIds, err = s.GetRoleDeptId(id) -// tools.HasError(err, "抱歉未找到相关信息", -1) -// } -// e.OK(c, gin.H{ -// "depts": result, -// "checkedKeys": menuIds, -// }, "") -//} +func (e *SysDept) GetDeptTreeRoleSelect(c *gin.Context) { + log := e.GetLogger(c) + db, err := e.GetOrm(c) + if err != nil { + log.Error(err) + return + } + + s := service.SysDept{} + s.Orm = db + s.Log = log + id, err := pkg.StringToInt(c.Param("roleId")) + result, err := s.SetDeptLabel() + if err != nil { + log.Errorf("SetDeptLabel error, %s", err.Error()) + e.Error(c, http.StatusInternalServerError, err, "") + } + menuIds := make([]int, 0) + if id != 0 { + menuIds, err = s.GetRoleDeptId(id) + if err != nil { + log.Errorf("抱歉未找到相关信息, %s", err.Error()) + e.Error(c, http.StatusInternalServerError, err, "") + } + } + e.OK(c, gin.H{ + "depts": result, + "checkedKeys": menuIds, + }, "") +} \ No newline at end of file diff --git a/app/admin/router/sys_router.go b/app/admin/router/sys_router.go index 921dc27f..596cc504 100644 --- a/app/admin/router/sys_router.go +++ b/app/admin/router/sys_router.go @@ -1,6 +1,7 @@ package router import ( + "go-admin/app/admin/apis/system/sys_dept" "go-admin/app/admin/apis/system/sys_menu" //"go-admin/app/admin/models/tools" middleware2 "go-admin/common/middleware" @@ -119,12 +120,14 @@ func sysCheckRoleRouterInit(r *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddle func registerBaseRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { api := sys_menu.SysMenu{} + api2 := sys_dept.SysDept{} v1auth := v1.Group("").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole()) { //v1auth.GET("/getinfo", system.GetInfo) v1auth.GET("/roleMenuTreeselect/:roleId", api.GetMenuTreeSelect) v1.GET("/menuTreeselect", api.GetMenuTreeSelect) - //v1auth.GET("/roleDeptTreeselect/:roleId", system.GetDeptTreeRoleselect) + v1auth.GET("/roleDeptTreeselect/:roleId", api2.GetDeptTreeRoleSelect ) + //GetDeptTreeRoleselect) v1auth.POST("/logout", handler.LogOut) } } @@ -214,4 +217,4 @@ func registerPublicRouter(v1 *gin.RouterGroup) { file := &public.File{} p.POST("/uploadFile", file.UploadFile) } -} +} \ No newline at end of file diff --git a/app/admin/service/dto/sys_role.go b/app/admin/service/dto/sys_role.go index 260cffc6..0b8b98f0 100644 --- a/app/admin/service/dto/sys_role.go +++ b/app/admin/service/dto/sys_role.go @@ -50,7 +50,7 @@ type SysRoleControl struct { Flag string `form:"flag" comment:"标记"` // 标记 Remark string `form:"remark" comment:"备注"` // 备注 Admin bool `form:"admin" comment:"是否管理员"` - DataScope string `form:"dataScope" comment:"是否管理员"` + DataScope string `form:"dataScope"` MenuIds []int `json:"menuIds"` } @@ -123,4 +123,4 @@ type RoleDataScopeReq struct { type DeptIdList struct { DeptId int `json:"DeptId"` -} +} \ No newline at end of file diff --git a/app/admin/service/sys_dept.go b/app/admin/service/sys_dept.go index ae71d067..c8ddfd8d 100644 --- a/app/admin/service/sys_dept.go +++ b/app/admin/service/sys_dept.go @@ -2,6 +2,7 @@ package service import ( "errors" + log "github.com/go-admin-team/go-admin-core/logger" "github.com/go-admin-team/go-admin-core/sdk/pkg" "gorm.io/gorm" @@ -220,66 +221,66 @@ func (e *SysDept) deptPageCall(deptlist *[]system.SysDept, menu system.SysDept) return menu } -//// GetRoleDeptId 获取角色的部门ID集合 -//func (e *SysDept) GetRoleDeptId(roleId int) ([]int, error) { -// deptIds := make([]int, 0) -// deptList := make([]dto.DeptIdList, 0) -// if err := e.Orm.Table("sys_role_dept"). -// Select("sys_role_dept.dept_id"). -// Joins("LEFT JOIN sys_dept on sys_dept.dept_id=sys_role_dept.dept_id"). -// Where("role_id = ? ", roleId). -// Where(" sys_role_dept.dept_id not in(select sys_dept.parent_id from sys_role_dept LEFT JOIN sys_dept on sys_dept.dept_id=sys_role_dept.dept_id where role_id =? )", roleId). -// Find(&deptList).Error; err != nil { -// return nil, err -// } -// -// for i := 0; i < len(deptList); i++ { -// deptIds = append(deptIds, deptList[i].DeptId) -// } -// -// return deptIds, nil -//} -// -//func (e *SysDept) SetDeptLabel() (m []dto.DeptLabel, err error) { -// list := make([]models.SysDept, 0) -// err = e.Orm.Find(&list).Error -// if err != nil { -// log.Error("find dept list error, %s", e.err) -// return -// } -// -// m = make([]dto.DeptLabel, 0) -// var item dto.DeptLabel -// for i := range list { -// if list[i].ParentId != 0 { -// continue -// } -// item = dto.DeptLabel{} -// item.Id = list[i].DeptId -// item.Label = list[i].DeptName -// deptInfo := digitDeptLabel(&list, item) -// -// m = append(m, deptInfo) -// } -// return -//} -// -//// digitDeptLabel -//func digitDeptLabel(deptList *[]models.SysDept, dept dto.DeptLabel) dto.DeptLabel { -// list := *deptList -// -// var mi dto.DeptLabel -// min := make([]dto.DeptLabel, 0) -// for j := 0; j < len(list); j++ { -// -// if dept.Id != list[j].ParentId { -// continue -// } -// mi = dto.DeptLabel{Id: list[j].DeptId, Label: list[j].DeptName, Children: []dto.DeptLabel{}} -// ms := digitDeptLabel(deptList, mi) -// min = append(min, ms) -// -// } -// dept.Children = min -// return dept -//} +// GetRoleDeptId 获取角色的部门ID集合 +func (e *SysDept) GetRoleDeptId(roleId int) ([]int, error) { + deptIds := make([]int, 0) + deptList := make([]dto.DeptIdList, 0) + if err := e.Orm.Table("sys_role_dept"). + Select("sys_role_dept.dept_id"). + Joins("LEFT JOIN sys_dept on sys_dept.dept_id=sys_role_dept.dept_id"). + Where("role_id = ? ", roleId). + Where(" sys_role_dept.dept_id not in(select sys_dept.parent_id from sys_role_dept LEFT JOIN sys_dept on sys_dept.dept_id=sys_role_dept.dept_id where role_id =? )", roleId). + Find(&deptList).Error; err != nil { + return nil, err + } + + for i := 0; i < len(deptList); i++ { + deptIds = append(deptIds, deptList[i].DeptId) + } + + return deptIds, nil +} + +func (e *SysDept) SetDeptLabel() (m []dto.DeptLabel, err error) { + list := make([]system.SysDept, 0) + err = e.Orm.Find(&list).Error + if err != nil { + log.Error("find dept list error, %s", err.Error()) + return + } + + m = make([]dto.DeptLabel, 0) + var item dto.DeptLabel + for i := range list { + if list[i].ParentId != 0 { + continue + } + item = dto.DeptLabel{} + item.Id = list[i].DeptId + item.Label = list[i].DeptName + deptInfo := digitDeptLabel(&list, item) + + m = append(m, deptInfo) + } + return +} + +// digitDeptLabel +func digitDeptLabel(deptList *[]system.SysDept, dept dto.DeptLabel) dto.DeptLabel { + list := *deptList + + var mi dto.DeptLabel + min := make([]dto.DeptLabel, 0) + for j := 0; j < len(list); j++ { + + if dept.Id != list[j].ParentId { + continue + } + mi = dto.DeptLabel{Id: list[j].DeptId, Label: list[j].DeptName, Children: []dto.DeptLabel{}} + ms := digitDeptLabel(deptList, mi) + min = append(min, ms) + + } + dept.Children = min + return dept +} \ No newline at end of file diff --git a/app/admin/service/sys_role.go b/app/admin/service/sys_role.go index a81fdcb4..fedff993 100644 --- a/app/admin/service/sys_role.go +++ b/app/admin/service/sys_role.go @@ -197,7 +197,7 @@ func (e *SysRole) UpdateDataScope(c *system.SysRole) (err error) { tx.Commit() } }() - err = tx.Model(&system.SysRole{}).Where("role_id = ?", c.RoleId).Select("data_scope, update_by").Updates(c).Error + err = tx.Model(&system.SysRole{}).Where("role_id = ?", c.RoleId).Select("data_scope", "update_by").Updates(c).Error if err != nil { return err } @@ -221,4 +221,4 @@ func (e *SysRole) UpdateDataScope(c *system.SysRole) (err error) { } } return err -} +} \ No newline at end of file