package setupRoule import ( "appPlatform/models/modelAppPlatform" "appPlatform/models/modelssystempermission" "appPlatform/overall" "appPlatform/overall/publicmethod" "encoding/json" "sort" "strconv" "time" "github.com/gin-gonic/gin" ) // 获取平台授权项目 func (a *ApiMethod) AppPowerUnit(c *gin.Context) { dataVal, err := publicmethod.ReceiveData(c) //接收数据处理 if err != nil { publicmethod.Result(102, err, c) return } var requestData GetPowerUnitParameter err = json.Unmarshal(dataVal, &requestData) if err != nil { publicmethod.Result(102, err, c) return } // var requestData GetPowerUnitParameter // err := c.ShouldBindJSON(&requestData) // if err != nil { // publicmethod.Result(100, err, c) // return // } if requestData.PowerType == "" { requestData.PowerType = "org" } if requestData.AppSystem == "" { requestData.AppSystem = "system" } if requestData.RoleId == "" { requestData.RoleId = "0" } powerInfo, _ := publicmethod.GetSystemPower(requestData.PowerType, requestData.AppSystem, requestData.RoleId, requestData.AppId) // jsonVal, _ := json.Marshal(powerInfo) // fmt.Printf("powerInfo-------------->%v\n\n", string(jsonVal)) var appPowerTrue []AppPowerTree switch requestData.AppSystem { default: appPowerTrue = AppMenuPower(requestData.PowerType, requestData.RoleId, powerInfo) } publicmethod.Result(0, appPowerTrue, c) } /* * @ 作者: 秦东 @ 时间: 2025-11-10 10:02:54 @ 功能: 数通智联平台菜单 */ func AppMenuPower(powerType, unitId string, powerInfo publicmethod.SendSystemPower) []AppPowerTree { var menuList []AppPowerInfo overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.Menus{}).Where("`visible` = 1 OR `visible` = 2").Find(&menuList) sort.Slice(menuList, func(i, j int) bool { return menuList[i].Sort < menuList[j].Sort }) var noButMenu []AppPowerInfo var ButMenu []AppPowerInfo for _, v := range menuList { if v.Types != 4 { noButMenu = append(noButMenu, v) } else { ButMenu = append(ButMenu, v) } } // noButMenujsh, _ := json.Marshal(noButMenu) // ButMenujsh, _ := json.Marshal(ButMenu) // fmt.Printf("数通智联平台菜单---->%v\n\n\n\n%v\n\n\n\n", string(noButMenujsh), string(ButMenujsh)) ButMenues := ButIsPick(ButMenu, powerInfo) // ButMenujshsss, _ := json.Marshal(ButMenues) // fmt.Printf("数通智联平台菜单--ButMenujshsss-->%v\n\n\n\n%v\n\n\n\n", string(ButMenujshsss), string(ButMenujsh)) menhjs := MenuButList(noButMenu, ButMenues) // Bumenhjs, _ := json.Marshal(menhjs) // fmt.Printf("数通智联平台菜单--Bumenhjs-->%v\n\n\n\n%v\n\n\n\n", string(ButMenujshsss), string(Bumenhjs)) butList := MenuPower(menhjs, powerInfo) return AppMenuTrue(0, butList) } /* * @ 作者: 秦东 @ 时间: 2026-01-14 09:41:58 @ 功能: 判断按钮是否选中 */ func ButIsPick(ButMenu []AppPowerInfo, powerInfo publicmethod.SendSystemPower) []AppPowerInfo { var butIsTrue []string for _, v := range powerInfo.PowerList { if len(v.ButPower) > 0 { for _, bv := range v.ButPower { if !publicmethod.IsInTrue[string](bv, butIsTrue) { butIsTrue = append(butIsTrue, bv) } } } } if len(butIsTrue) > 0 { for i, v := range ButMenu { if publicmethod.IsInTrue[string](v.Perm, butIsTrue) { ButMenu[i].IsTrue = true } } } return ButMenu } /* * @ 作者: 秦东 @ 时间: 2025-11-21 14:20:46 @ 功能: 判断按钮 */ func JuadgeBut(menuInfo []AppPowerInfo, powerInfo publicmethod.ItemInfo) (butPower []AppPowerInfo) { for _, v := range menuInfo { idStr := strconv.Itoa(v.Id) if publicmethod.IsInTrue[string](idStr, powerInfo.ButPower) { v.IsTrue = true } else { v.IsTrue = false } butPower = append(butPower, v) } return } // 组合菜单按钮 func MenuButList(noButMenu, ButMenu []AppPowerInfo) (menuButList []AppMenuBut) { // var but []int64 for _, v := range noButMenu { // fmt.Printf("v.Perm --> %v-->\n\n\n\n", v.Perm) var menuButInfo AppMenuBut menuButInfo.Id = v.Id menuButInfo.Name = v.Name //菜单名称 menuButInfo.Types = v.Types //菜单类型(1-菜单;2-目录;3-外链;4-按钮权限) menuButInfo.Perm = v.Perm //权限标识 menuButInfo.Sort = v.Sort //排序(数字越小排名越靠前) menuButInfo.ParentId = v.ParentId //父菜单ID menuButInfo.IsTrue = v.IsTrue menuButInfo.AppPowerList = []int64{1} menuButInfo.Visible = 1 menuButInfo.VisibleRange.Types = 1 for _, bv := range ButMenu { if bv.ParentId == v.Id { // var butInfo AppPowerInfo // butInfo.Id = v.Id //int // butInfo.Name = v.Name //string // butInfo.Types = v.Types //int // butInfo.Perm = v.Perm //string // butInfo.Sort = v.Sort //int // butInfo.ParentId = v.ParentId //int // butInfo.IsTrue = v.IsTrue //bool menuButInfo.ButtenPower = append(menuButInfo.ButtenPower, bv) } } menuButList = append(menuButList, menuButInfo) } return } func AppMenuTrue(parentId int, list []AppMenuBut) []AppPowerTree { treeList := []AppPowerTree{} for _, v := range list { if v.ParentId == parentId { var treeInfo AppPowerTree treeInfo.Id = v.Id // treeInfo.Name = v.Name //菜单名称 treeInfo.Types = v.Types //菜单类型(1-菜单;2-目录;3-外链;4-按钮权限) treeInfo.Perm = v.Perm //权限标识 treeInfo.Sort = v.Sort //排序(数字越小排名越靠前) treeInfo.ParentId = v.ParentId //父菜单ID treeInfo.IsTrue = v.IsTrue // treeInfo.Visible = v.Visible treeInfo.ButtenPower = v.ButtenPower treeInfo.VisibleRange.Types = v.VisibleRange.Types treeInfo.VisibleRange.Val = v.VisibleRange.Val if v.Types != 4 { treeInfo.Children = AppMenuTrue(v.Id, list) } treeList = append(treeList, treeInfo) } } return treeList } /* * @ 作者: 秦东 @ 时间: 2025-11-21 14:12:32 @ 功能: 菜单判断是否选中 */ func MenuPower(menuInfo []AppMenuBut, powerInfo publicmethod.SendSystemPower) (menuPower []AppMenuBut) { for _, v := range menuInfo { for _, pv := range powerInfo.PowerList { if pv.ItemId == int64(v.Id) { v.IsTrue = pv.IsPick v.Visible = 1 if pv.VisibleRange > 1 { v.Visible = pv.VisibleRange } v.VisibleRange.Types = 1 if pv.VisibleRange > 1 { v.VisibleRange.Types = pv.VisibleRange } if len(pv.VisibleOrg) > 0 { // var visStr []string // for _, visv := range pv.VisibleOrg { // visStr = append(visStr, strconv.FormatInt(visv, 10)) // } v.VisibleRange.Val = pv.VisibleOrg } // v.ButtenPower = JuadgeBut(v.ButtenPower, pv) } } menuPower = append(menuPower, v) } return } /* * @ 作者: 秦东 @ 时间: 2026-01-15 16:12:02 @ 功能: 复制角色 */ func (a *ApiMethod) CopyRolePower(c *gin.Context) { dataVal, err := publicmethod.ReceiveData(c) //接收数据处理 if err != nil { publicmethod.Result(102, err, c) return } var requestData CopyRolePowerInfo err = json.Unmarshal(dataVal, &requestData) if err != nil { publicmethod.Result(102, err, c) return } // var requestData CopyRolePowerInfo // err := c.ShouldBindJSON(&requestData) // if err != nil { // publicmethod.Result(100, err, c) // return // } if requestData.Label == "" { publicmethod.Result(1, requestData, c, "角色为命名!") return } if requestData.Id == "" { publicmethod.Result(1, requestData, c, "未知角色源头!") return } var roleInfo modelssystempermission.SystemRole err = roleInfo.GetCont(map[string]interface{}{"`id`": requestData.Id}) if err != nil { publicmethod.Result(100, err, c) return } if roleInfo.Name == requestData.Label { publicmethod.Result(1, requestData, c, "该名称已经存在!不可重复使用!") return } var newRoleInfo modelssystempermission.SystemRole newRoleInfo.Name = requestData.Label //系统名称"` newRoleInfo.State = 1 //状态(1:启用;2:禁用;3:删除)"` newRoleInfo.Time = time.Now().Unix() //创建时间"` newRoleInfo.Sort = roleInfo.Sort //排序"` newRoleInfo.Types = roleInfo.Types //类型"` newRoleInfo.Superior = roleInfo.Superior //上级"` // newRoleInfo.Roleuser = roleInfo.Roleuser //nt:使用人员"` err = overall.CONSTANT_DB_System_Permission.Create(&newRoleInfo).Error if err != nil { publicmethod.Result(100, err, c) return } if roleInfo.Id != 0 { CopyGroupPower(roleInfo.Id, newRoleInfo) CopyRolePowerAry(roleInfo.Id, newRoleInfo) } publicmethod.Result(0, err, c) } /* * @ 作者: 秦东return @ 时间: 2026-01-16 11:06:28 @ 功能: 复制角色权限 */ func CopyRolePowerAry(oldRoleId int64, newRoleInfoEntry modelssystempermission.SystemRole) (err error) { var authPowerList []modelssystempermission.AuthPower err = overall.CONSTANT_DB_System_Permission.Where("`orgPowerType` = ? AND `orgOrUserKey` = ?", "role", oldRoleId).Find(&authPowerList).Error if err != nil { return } var saveNewRole []modelssystempermission.AuthPower var oldUuid []int64 var uuid int64 for _, v := range authPowerList { // uuid := publicmethod.GetUUid(int64(i)) for { uuid = publicmethod.GetUUid(1) if !publicmethod.IsInTrue[int64](uuid, oldUuid) { oldUuid = append(oldUuid, uuid) break } } var newRoleInfo modelssystempermission.AuthPower newRoleInfo.Id = uuid // newRoleInfo.OrgPowerType = v.OrgPowerType //赋权类型(org:组织;job:岗位;role:角色;person:个人)\` newRoleInfo.OrgOrUserKey = newRoleInfoEntry.Id //行政组织或角色、人员识别符` newRoleInfo.AppType = v.AppType //系统类型(system:系统平台;app:自定义表单与应用)" ` newRoleInfo.AppKey = v.AppKey //自定义应用App" ` newRoleInfo.Time = time.Now().Unix() //d;default:0;comment:编辑时间;NOT NULL" json:"time"` newRoleInfo.IsTrue = v.IsTrue //default:0;comment:是否有权(1:有;非1:无);NOT NULL" json:"isTrue"` newRoleInfo.PowerInfo = v.PowerInfo //权限结构体" json:"powerInfo"` newRoleInfo.AppButPower = v.AppButPower //t:自定义应用按钮授权" json:"appButPower"` saveNewRole = append(saveNewRole, newRoleInfo) CopyRoleItemPower(v.Id, uuid) } if len(saveNewRole) > 0 { err = overall.CONSTANT_DB_System_Permission.Create(&saveNewRole).Error } return } /* * @ 作者: 秦东 @ 时间: 2026-01-16 11:25:07 @ 功能: 复制具体栏目角色权限 */ func CopyRoleItemPower(oldAuthId, newAuthId int64) (err error) { var oldPowerItemAry []modelssystempermission.PowerInfo err = overall.CONSTANT_DB_System_Permission.Where("`authId` = ? ", oldAuthId).Find(&oldPowerItemAry).Error if err != nil { return } if len(oldPowerItemAry) > 0 { var newSaveData []modelssystempermission.PowerInfo for _, v := range oldPowerItemAry { var saveCont modelssystempermission.PowerInfo saveCont.AuthId = newAuthId //归属权限;` saveCont.ItemId = v.ItemId //项目` saveCont.IsPick = v.IsPick //是否有权(1:有;非1:无)` saveCont.TablePower = v.TablePower //表单权限" saveCont.ListPower = v.ListPower //列表权限"` saveCont.VisibleRange = v.VisibleRange //可见范围(1:本人;2:本岗位;3:本部门;4:本分部;5:指定行政组织;6:所有)` saveCont.VisibleOrg = v.VisibleOrg //可见范围辅助参数" saveCont.ButPower = v.ButPower //按钮权限" saveCont.Time = time.Now().Unix() //编辑时间 saveCont.PageButPower = v.PageButPower //页面表单权限" newSaveData = append(newSaveData, saveCont) } if len(newSaveData) > 0 { err = overall.CONSTANT_DB_System_Permission.Create(&newSaveData).Error } } return } // 复制角色分组权限 func CopyGroupPower(oldRoleId int64, newRoleInfo modelssystempermission.SystemRole) (err error) { var oldRoleGroupAry []modelssystempermission.AuthGroupPower err = overall.CONSTANT_DB_System_Permission.Where("`orgPowerType` = ? AND `orgOrUserKey` = ?", "role", oldRoleId).Find(&oldRoleGroupAry).Error if err != nil { return } var oldUuid []int64 var uuid int64 var saveNewRoleGroup []modelssystempermission.AuthGroupPower for _, v := range oldRoleGroupAry { for { uuid = publicmethod.GetUUid(1) if !publicmethod.IsInTrue[int64](uuid, oldUuid) { oldUuid = append(oldUuid, uuid) break } } var newCont modelssystempermission.AuthGroupPower newCont.Id = uuid // newCont.AppType = v.AppType //系统类型(system:系统平台;app:自定义表单与应用)" newCont.OrgPowerType = v.OrgPowerType //赋权类型(org:组织;job:岗位;role:角色;person:个人)" newCont.OrgOrUserKey = newRoleInfo.Id //行政组织或角色、人员识别符 newCont.Time = time.Now().Unix() //编辑时间 newCont.PowerInfo = v.PowerInfo //权限结构体" newCont.GroupStatus = v.GroupStatus //分组权限状态" saveNewRoleGroup = append(saveNewRoleGroup, newCont) } if len(saveNewRoleGroup) > 0 { err = overall.CONSTANT_DB_System_Permission.Create(&saveNewRoleGroup).Error } return }