You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
376 lines
12 KiB
376 lines
12 KiB
package systemuser
|
|
|
|
import (
|
|
"fmt"
|
|
"sort"
|
|
"strconv"
|
|
"time"
|
|
|
|
"gin_server_admin/commonus"
|
|
"gin_server_admin/global"
|
|
"gin_server_admin/model/common/response"
|
|
"gin_server_admin/model/systemuser"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// 菜单相关
|
|
func (s *SysTemMenuApi) SystemMenuList(c *gin.Context) {
|
|
// response.Result(101, global.Gva_Authority_Authentication, "数据获取失败!", c)
|
|
var systemMenuList []systemuser.SystemMenu
|
|
menuOperErr := global.GVA_DB_Master.Where("`m_steat` IN ?", []int{1, 2}).Order("m_sort asc").Order("m_id desc").Find(&systemMenuList).Error
|
|
if menuOperErr != nil {
|
|
response.Result(101, menuOperErr, "数据获取失败!", c)
|
|
return
|
|
}
|
|
systemListMenu := GetMenuThree(1, 0, systemMenuList)
|
|
sendData := commonus.MapOut()
|
|
sendData["list"] = systemListMenu
|
|
response.Result(0, sendData, "数据获取成功!", c)
|
|
}
|
|
|
|
// 递归无限树
|
|
func GetMenuThree(jurisd int, parentId int64, threeData []systemuser.SystemMenu) []SystemMenuThree {
|
|
treeList := []SystemMenuThree{}
|
|
for _, v := range threeData {
|
|
if v.ParentId == parentId {
|
|
child := GetMenuThree(jurisd, v.Id, threeData)
|
|
node := SystemMenuThree{
|
|
Id: v.Id,
|
|
Title: v.Title,
|
|
State: v.State,
|
|
ParentId: v.ParentId,
|
|
ApiUrl: v.ApiUrl,
|
|
Time: v.Time,
|
|
EiteTime: v.EiteTime,
|
|
UserId: v.UserId,
|
|
Sort: v.Sort,
|
|
}
|
|
isTrue, menuOper := MenuOperation(jurisd, v.Id)
|
|
if isTrue == true {
|
|
node.MenuOperation = menuOper
|
|
}
|
|
node.Child = child
|
|
treeList = append(treeList, node)
|
|
}
|
|
}
|
|
return treeList
|
|
}
|
|
|
|
// 获取菜单操作项目
|
|
func MenuOperation(jurisd int, menuId int64) (isTrue bool, operation []systemuser.MenuOperation) {
|
|
isTrue = false
|
|
if jurisd != 1 {
|
|
operErr := global.GVA_DB_Master.Where("`menu_id` = ? AND oper_id IN ?", menuId, global.Gva_Authority_Authentication).Order("oper_id desc").Find(&operation).Error
|
|
if operErr == nil {
|
|
isTrue = true
|
|
}
|
|
} else {
|
|
operErr := global.GVA_DB_Master.Where("`menu_id` = ?", menuId).Order("oper_id desc").Find(&operation).Error
|
|
if operErr == nil {
|
|
isTrue = true
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
// 获取左侧菜单栏
|
|
func (s *SysTemMenuApi) GetMenu(c *gin.Context) {
|
|
fmt.Printf("菜单-------->%v\n", global.Gva_Authority_Authentication_Subsidiary)
|
|
var systemMenuList []systemuser.SystemMenu
|
|
menuOperErr := global.GVA_DB_Master.Where("`m_steat` = ? AND m_id IN ?", 1, global.Gva_Authority_Authentication_Subsidiary).Order("m_sort asc").Order("m_id desc").Find(&systemMenuList).Error
|
|
if menuOperErr != nil {
|
|
response.Result(101, menuOperErr, "数据获取失败!", c)
|
|
return
|
|
}
|
|
systemListMenu := GetMenuThree(2, 0, systemMenuList)
|
|
//按照最大值排序
|
|
sort.Slice(systemListMenu, func(i int, j int) bool {
|
|
return systemListMenu[i].Sort < systemListMenu[j].Sort
|
|
})
|
|
sendData := commonus.MapOut()
|
|
sendData["list"] = systemListMenu
|
|
response.Result(0, sendData, "数据获取成功!", c)
|
|
}
|
|
|
|
// 菜单列表(不带操作)
|
|
func (s *SysTemMenuApi) GetMenuList(c *gin.Context) {
|
|
var systemMenuList []systemuser.SystemMenu
|
|
menuOperErr := global.GVA_DB_Master.Where("`m_steat` IN ? AND `m_parent` = 0", []int{1, 2}).Order("m_sort asc").Order("m_id desc").Find(&systemMenuList).Error
|
|
if menuOperErr != nil {
|
|
response.Result(101, menuOperErr, "数据获取失败!", c)
|
|
return
|
|
}
|
|
sendData := commonus.MapOut()
|
|
sendData["list"] = systemMenuList
|
|
// systemListMenu := GetMenuThree(1, 0, systemMenuList)
|
|
response.Result(0, sendData, "数据获取成功!", c)
|
|
}
|
|
|
|
// 添加菜单
|
|
func (s *SysTemMenuApi) AddMenu(c *gin.Context) {
|
|
// isTrue, userCont := commonus.AdminClientIdentity()
|
|
isTrue, userCont := commonus.ClientIdentity()
|
|
if isTrue != true {
|
|
response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c)
|
|
return
|
|
}
|
|
var requestData addMenuData
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
response.Result(102, err, "参数错误!请重新提交!", c)
|
|
return
|
|
}
|
|
if requestData.Title == "" {
|
|
response.Result(103, err, "请输入栏目名称!", c)
|
|
return
|
|
}
|
|
if requestData.MenuUrl == "" {
|
|
response.Result(104, err, "请输入栏目URL!", c)
|
|
return
|
|
}
|
|
if requestData.Sort == 0 {
|
|
requestData.Sort = 50
|
|
}
|
|
// _, attriButeErr := strconv.ParseInt(userCont.AttriBute, 10, 64) //转换管理员属性部门
|
|
// if attriButeErr != nil {
|
|
// response.Result(105, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c)
|
|
// return
|
|
// }
|
|
// var menuCont systemuser.SystemMenu
|
|
// judgeErr := global.GVA_DB_Master.Model(&systemuser.SystemMenu{}).Select("m_id").Where("`m_title` = ?", requestData.Title).First(&menuCont).Error
|
|
// if judgeErr == nil {
|
|
// response.Result(106, isTrue, "该菜单名称已经存在!请不要重复添加!", c)
|
|
// return
|
|
// }
|
|
// judgeUrlErr := global.GVA_DB_Master.Model(&systemuser.SystemMenu{}).Select("m_id").Where("`m_url` = ?", requestData.MenuUrl).First(&menuCont).Error
|
|
// if judgeUrlErr == nil {
|
|
// response.Result(107, isTrue, "该菜单URL已经存在!请不要重复添加!", c)
|
|
// return
|
|
// }
|
|
var saveMenu systemuser.SystemMenu
|
|
saveMenu.Title = requestData.Title
|
|
saveMenu.State = 1
|
|
saveMenu.ParentId = int64(requestData.ParentId)
|
|
saveMenu.ApiUrl = requestData.MenuUrl
|
|
saveMenu.Time = time.Now().Unix()
|
|
saveMenu.EiteTime = time.Now().Unix()
|
|
userKey, userKeyErr := strconv.ParseInt(userCont.Key, 10, 64)
|
|
if userKeyErr == nil {
|
|
saveMenu.UserId = userKey
|
|
}
|
|
saveMenu.Sort = requestData.Sort
|
|
addassessInfoErr := global.GVA_DB_Master.Create(&saveMenu).Error
|
|
if addassessInfoErr != nil {
|
|
response.Result(108, saveMenu, "数据写入失败!", c)
|
|
} else {
|
|
response.Result(0, saveMenu, "数据写入成功!", c)
|
|
}
|
|
}
|
|
|
|
// 修改菜单
|
|
func (s *SysTemMenuApi) EiteMenu(c *gin.Context) {
|
|
// isTrue, _ := commonus.AdminClientIdentity()
|
|
isTrue, _ := commonus.ClientIdentity()
|
|
if isTrue != true {
|
|
response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c)
|
|
return
|
|
}
|
|
var requestData eiteMenuData
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
response.Result(102, err, "参数错误!请重新提交!", c)
|
|
return
|
|
}
|
|
if requestData.Id == 0 {
|
|
response.Result(103, err, "请选择您要修改的菜单!", c)
|
|
return
|
|
}
|
|
if requestData.Title == "" {
|
|
response.Result(104, err, "请输入栏目名称!", c)
|
|
return
|
|
}
|
|
if requestData.MenuUrl == "" {
|
|
response.Result(105, err, "请输入栏目URL!", c)
|
|
return
|
|
}
|
|
if requestData.Sort == 0 {
|
|
requestData.Sort = 50
|
|
}
|
|
|
|
var menuCont systemuser.SystemMenu
|
|
judgeOldErr := global.GVA_DB_Master.Model(&systemuser.SystemMenu{}).Select("m_id", "m_title", "m_url").Where("`m_id` = ?", requestData.Id).First(&menuCont).Error
|
|
if judgeOldErr != nil {
|
|
response.Result(106, isTrue, "该菜单不存在!请确认后再修改", c)
|
|
return
|
|
}
|
|
|
|
judgeErr := global.GVA_DB_Master.Model(&systemuser.SystemMenu{}).Select("m_id").Where("`m_title` = ? AND `m_title` <> ?", requestData.Title, menuCont.Title).First(&menuCont).Error
|
|
if judgeErr == nil {
|
|
response.Result(107, isTrue, "该菜单名称已经存在!请不要重复添加!", c)
|
|
return
|
|
}
|
|
var menuConts systemuser.SystemMenu
|
|
judgeUrlErr := global.GVA_DB_Master.Model(&systemuser.SystemMenu{}).Select("m_id").Where("`m_url` = ? AND `m_url` <> ?", requestData.MenuUrl, menuCont.ApiUrl).First(&menuConts).Error
|
|
if judgeUrlErr == nil {
|
|
response.Result(108, isTrue, "该菜单URL已经存在!请不要重复添加!", c)
|
|
return
|
|
}
|
|
saveData := commonus.MapOut()
|
|
saveData["m_title"] = requestData.Title
|
|
saveData["m_parent"] = int64(requestData.ParentId)
|
|
saveData["m_url"] = requestData.MenuUrl
|
|
saveData["m_sort"] = requestData.Sort
|
|
saveData["m_eite_time"] = time.Now().Unix()
|
|
isErr := eiteAssEssInfoCont(int64(requestData.Id), saveData)
|
|
if isErr != nil {
|
|
response.Result(109, isErr, "修改失败!", c)
|
|
return
|
|
}
|
|
response.Result(0, saveData, "修改成功!", c)
|
|
}
|
|
|
|
// 菜单编辑操作
|
|
func eiteAssEssInfoCont(saveId int64, saveData map[string]interface{}) (menuErr error) {
|
|
var menuCont systemuser.SystemMenu
|
|
menuErr = global.GVA_DB_Master.Model(&menuCont).Where("m_id = ?", saveId).Updates(saveData).Error
|
|
return
|
|
}
|
|
|
|
// 菜单删除
|
|
func (s *SysTemMenuApi) DelMenu(c *gin.Context) {
|
|
// isTrue, _ := commonus.AdminClientIdentity()
|
|
isTrue, _ := commonus.ClientIdentity()
|
|
if isTrue != true {
|
|
response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c)
|
|
return
|
|
}
|
|
var requestData commonus.DelParameter
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
response.Result(101, err, "参数错误!请重新提交!", c)
|
|
return
|
|
}
|
|
if requestData.Id == 0 && requestData.OutId == "" {
|
|
response.Result(102, err, "参数错误!请重新提交!", c)
|
|
return
|
|
}
|
|
if requestData.OutId != "" {
|
|
idInt, inIntErr := strconv.ParseInt(requestData.OutId, 10, 64)
|
|
if inIntErr == nil {
|
|
requestData.Id = idInt
|
|
}
|
|
}
|
|
if requestData.State == 0 {
|
|
requestData.State = 1
|
|
}
|
|
saveData := commonus.MapOut()
|
|
saveData["m_steat"] = requestData.State
|
|
saveData["m_eite_time"] = time.Now().Unix()
|
|
if requestData.IsDel != 1 {
|
|
isErr := eiteAssEssInfoCont(requestData.Id, saveData)
|
|
if isErr != nil {
|
|
response.Result(109, isErr, "修改失败!", c)
|
|
return
|
|
}
|
|
response.Result(0, saveData, "修改成功!", c)
|
|
} else {
|
|
if requestData.State == 3 {
|
|
var menuConts systemuser.SystemMenu
|
|
archiveInfoErr := global.GVA_DB_Master.Where("m_id = ? OR `m_parent` = ?", requestData.Id, requestData.Id).Delete(&menuConts).Error
|
|
if archiveInfoErr != nil {
|
|
response.Result(104, requestData, "删除失败!", c)
|
|
return
|
|
}
|
|
response.Result(0, requestData, "删除成功!", c)
|
|
} else {
|
|
isErr := eiteAssEssInfoCont(requestData.Id, saveData)
|
|
if isErr != nil {
|
|
response.Result(109, isErr, "修改失败!", c)
|
|
return
|
|
}
|
|
response.Result(0, saveData, "修改成功!", c)
|
|
}
|
|
}
|
|
}
|
|
|
|
// 添加菜单操作
|
|
func (s *SysTemMenuApi) AddMenuOperation(c *gin.Context) {
|
|
// isTrue, _ := commonus.AdminClientIdentity()
|
|
isTrue, _ := commonus.ClientIdentity()
|
|
if isTrue != true {
|
|
response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c)
|
|
return
|
|
}
|
|
var requestData addMenuOper
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
response.Result(101, err, "参数错误!请重新提交!", c)
|
|
return
|
|
}
|
|
if requestData.MenuId == "" {
|
|
response.Result(102, err, "参数错误!请重新提交!", c)
|
|
return
|
|
}
|
|
var menuIdInt int64
|
|
idInt, inIntErr := strconv.ParseInt(requestData.MenuId, 10, 64)
|
|
if inIntErr == nil {
|
|
menuIdInt = idInt
|
|
} else {
|
|
response.Result(102, err, "参数错误!请重新提交!", c)
|
|
return
|
|
}
|
|
if requestData.Title == "" {
|
|
response.Result(102, err, "参数错误!请重新提交!", c)
|
|
return
|
|
}
|
|
var menuCont systemuser.MenuOperation
|
|
judgeErr := global.GVA_DB_Master.Model(&systemuser.MenuOperation{}).Select("m_id").Where("`menu_id` = ?", menuIdInt).Where("`oper_title` = ?", requestData.Title).First(&menuCont).Error
|
|
if judgeErr == nil {
|
|
response.Result(106, isTrue, "该菜单的此操作名称已经存在!请不要重复添加!", c)
|
|
return
|
|
}
|
|
var saveMenuOper systemuser.MenuOperation
|
|
saveMenuOper.OperTitle = requestData.Title
|
|
saveMenuOper.MenuId = menuIdInt
|
|
addassessInfoErr := global.GVA_DB_Master.Create(&saveMenuOper).Error
|
|
if addassessInfoErr != nil {
|
|
response.Result(108, saveMenuOper, "数据写入失败!", c)
|
|
} else {
|
|
response.Result(0, saveMenuOper, "数据写入成功!", c)
|
|
}
|
|
}
|
|
|
|
// 删除菜单操作
|
|
func (s *SysTemMenuApi) DelMenuOperation(c *gin.Context) {
|
|
// isTrue, _ := commonus.AdminClientIdentity()
|
|
isTrue, _ := commonus.ClientIdentity()
|
|
if isTrue != true {
|
|
response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c)
|
|
return
|
|
}
|
|
var requestData commonus.DelParameter
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
response.Result(101, err, "参数错误!请重新提交!", c)
|
|
return
|
|
}
|
|
if requestData.Id == 0 && requestData.OutId == "" {
|
|
response.Result(102, err, "参数错误!请重新提交!", c)
|
|
return
|
|
}
|
|
if requestData.OutId != "" {
|
|
idInt, inIntErr := strconv.ParseInt(requestData.OutId, 10, 64)
|
|
if inIntErr == nil {
|
|
requestData.Id = idInt
|
|
}
|
|
}
|
|
|
|
var menuContOper systemuser.MenuOperation
|
|
archiveInfoErr := global.GVA_DB_Master.Where("oper_id = ?", requestData.Id).Delete(&menuContOper).Error
|
|
if archiveInfoErr != nil {
|
|
response.Result(104, requestData, "删除失败!", c)
|
|
return
|
|
}
|
|
response.Result(0, requestData, "删除成功!", c)
|
|
}
|
|
|