diff --git a/overall/publicmethod/entry.go b/overall/publicmethod/entry.go new file mode 100644 index 0000000..3313849 --- /dev/null +++ b/overall/publicmethod/entry.go @@ -0,0 +1,42 @@ +package publicmethod + +import ( + "appPlatform/models/modelssystempermission" + "sync" +) + +// 协程设置 +var syncSeting = sync.WaitGroup{} + +// 协程处理其他权限 +type XieChengPowerSys struct { + MenuId []int64 //赋权的菜单 + SystemPower []SystemInfoPower `json:"systemPower"` + SysTemList []modelssystempermission.AuthPowerList + + AppUUID []string //赋权的菜单 + FormTable []AppMyPower +} + +type AppMyPower struct { + AppId string `json:"AppId"` + IsPick bool `json:"isPick` + FormTrue []string `json:"formTrue"` + FormPower []AppMyPowerTable `json:"formPower"` + ButPower []string `json:"butPower"` +} +type AppMyPowerTable struct { + AppId string `json:"AppId"` + IsPick bool `json:"isPick` + ListPower []string `json:"listPower"` + TablePower []string `json:"tablePower"` + Scope int `json:"scope"` + ScopeManAry []int `json:"scopeManAry"` + PagePower []string `json:"PagePower"` +} + +// 获取行政组织矩阵权限 +type OrgAryPower struct { + PowerAry []string + GroupPowerAry []string +} diff --git a/overall/publicmethod/powerRedis.go b/overall/publicmethod/powerRedis.go index 2a7c1cc..e588ac6 100644 --- a/overall/publicmethod/powerRedis.go +++ b/overall/publicmethod/powerRedis.go @@ -2,7 +2,9 @@ package publicmethod import ( "appPlatform/middleware/grocerystore" + "appPlatform/models/modelshr" "appPlatform/overall" + "encoding/json" "fmt" "strconv" @@ -33,6 +35,13 @@ func GetSystemPowerInfo(userKey int64) (powerInfo SendAllPower) { isTrue, powerStr := redisClient.Get(redisFileKey) if isTrue { json.Unmarshal([]byte(powerStr), &powerInfo) + } else { + var myContInfo modelshr.ManCont + myContInfo.GetCont(map[string]interface{}{"`key`": userKey}) + AllPowerConfig, _ := GetMyPowerPusr("person", myContInfo.Role, myContInfo.Key, myContInfo.AdminOrg, myContInfo.Position) + + writeRedisData, _ := json.Marshal(AllPowerConfig) + SetupPowerInfo(myContInfo.Key, string(writeRedisData)) } return } diff --git a/overall/publicmethod/setPower.go b/overall/publicmethod/setPower.go new file mode 100644 index 0000000..3c49e42 --- /dev/null +++ b/overall/publicmethod/setPower.go @@ -0,0 +1,676 @@ +package publicmethod + +import ( + "appPlatform/models/modelAppPlatform" + "appPlatform/models/modelshr" + "appPlatform/models/modelssystempermission" + "appPlatform/overall" + "encoding/json" + "fmt" + "strconv" + "strings" +) + +/* +* +@ 作者: 秦东 +@ 时间: 2025-11-24 08:30:44 +@ 功能: 获取个人系统权限 +*/ +func GetMyPowerPusr(powerType, role string, oupk, org, poetId int64) (allPower SendAllPowers, err error) { + + allPower.AppGroupPower, allPower.AppGroupMenu = GainAppGroupPoweresing(oupk, org, poetId, role) + + //获取系统权限 + var systemPower []modelssystempermission.AuthPowerList + err = overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.AuthPowerList{}).Where("`appType` = 'system' AND `orgPowerType` = 'person' AND `orgOrUserKey` = ? AND `appKey` = 0", oupk).Find(&systemPower).Error + fmt.Printf("\n\nsystemPower--------->%v----->%v\n\n", oupk, systemPower) + if len(systemPower) > 0 { //首先判断个人是否已经赋权 + for _, v := range systemPower { + var sysPower SystemInfoPower + sysPower.AppId = strconv.FormatInt(v.ItemId, 10) + if v.IsPick == 1 { + sysPower.IsPick = true + if !IsInTrue[int64](v.ItemId, allPower.MenuIdAry) { + allPower.MenuIdAry = append(allPower.MenuIdAry, v.ItemId) + } + } else { + sysPower.IsPick = false + } + if v.ButPower != "" && v.ButPower != "null" { + json.Unmarshal([]byte(v.ButPower), &sysPower.ButIdAry) + } + sysPower.Scope = v.VisibleRange + if v.VisibleRange == 5 && v.ButPower != "" && v.ButPower != "null" { + json.Unmarshal([]byte(v.VisibleOrg), &sysPower.ScopeManAry) + } + allPower.MenuButIdAry = append(allPower.MenuButIdAry, v.ButPower) + allPower.SystemPower = append(allPower.SystemPower, sysPower) + } + } else { + // var systemPower []modelssystempermission.AuthPowerList + // err = overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.AuthPowerList{}).Where("`appType` = 'system' AND `orgPowerType` IN ('org','job','role') AND `orgOrUserKey` = ? AND `appKey` = 0", oupk).Find(&systemPower).Error + var mySysMenuPower XieChengPowerSys + mySysMenuPower.GetPowerSystem(systemPower) + allPower.MenuIdAry = mySysMenuPower.MenuId + allPower.SystemPower = mySysMenuPower.SystemPower + syncSeting.Add(1) + go mySysMenuPower.GetOrgSysPower("system", "org", org) + syncSeting.Add(1) + go mySysMenuPower.GetOrgSysPower("system", "job", poetId) + syncSeting.Add(1) + go mySysMenuPower.GetOrgSysPower("system", "role", oupk) + syncSeting.Wait() + mySysMenuPower.GetPowerSystem(mySysMenuPower.SysTemList) + allPower.MenuIdAry = mySysMenuPower.MenuId + var butAryStr []string + for _, v := range allPower.SystemPower { + for _, bv := range v.ButIdAry { + butAryStr = append(butAryStr, bv) + } + } + allPower.MenuButIdAry = append(allPower.MenuButIdAry, butAryStr...) + + var menuList []modelAppPlatform.Menus + if len(mySysMenuPower.MenuId) > 0 { + overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.Menus{}).Select("`id`,`name`").Where("`id` IN ?", mySysMenuPower.MenuId).Find(&menuList) + } + + for _, v := range menuList { + for si, sv := range mySysMenuPower.SystemPower { + if strconv.Itoa(v.Id) == sv.AppId { + mySysMenuPower.SystemPower[si].Name = v.Name + } + } + } + allPower.SystemPower = mySysMenuPower.SystemPower + } + + //获取自定义表单权限 + var appPower []modelssystempermission.AuthPower + overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.AuthPower{}).Where("`appType` = 'app' AND `orgPowerType` = 'person' AND `orgOrUserKey` = ?", oupk).Find(&appPower) + if len(appPower) > 0 { //首先判断个人是否已经赋权 + for _, v := range appPower { + var myAppInfo AppMyPower + myAppInfo.AppId = strconv.FormatInt(v.AppKey, 10) + if v.IsTrue == 1 { + allPower.AppKeyAry = append(allPower.AppKeyAry, strconv.FormatInt(v.AppKey, 10)) + myAppInfo.IsPick = true + } else { + myAppInfo.IsPick = false + } + if v.AppButPower != "" && v.AppButPower != "null" { + json.Unmarshal([]byte(v.AppButPower), &myAppInfo.ButPower) + } + myAppInfo.FormTrue, myAppInfo.FormPower = GetTablePower(v.Id) + allPower.AppSystemPower = append(allPower.AppSystemPower, myAppInfo) + } + } else { + var myAppPower XieChengPowerSys + syncSeting.Add(1) + go myAppPower.GetAppFormPower("app", "org", org) + syncSeting.Add(1) + go myAppPower.GetAppFormPower("app", "job", poetId) + syncSeting.Add(1) + go myAppPower.GetAppFormPower("app", "role", oupk) + syncSeting.Wait() + var tableId []string + for _, v := range myAppPower.AppUUID { + if !IsInTrue[string](v, tableId) { + tableId = append(tableId, v) + } + } + + allPower.AppKeyAry = tableId + allPower.AppSystemPower = MergePower(myAppPower.FormTable) + } + for _, v := range allPower.SystemPower { + if len(v.ButIdAry) > 0 { + for _, bv := range v.ButIdAry { + allPower.MenuButIdAry = append(allPower.MenuButIdAry, bv) + } + } + } + return +} + +/* +* +@ 作者: 秦东 +@ 时间: 2025-12-11 15:44:48 +@ 功能: 获取自定义App分组的权限 + + #oupk 个人识别符 + #org 行政组织 + #poetId 岗位 +*/ +func GainAppGroupPoweresing(oupk, org, poetId int64, roleId string) (groupPower, groupAuth []string) { + + //Step1: 判断有没有设定个人权限 + groupPower, groupAuth = GainGroupAppPower("person", oupk) + if len(groupPower) > 0 { + return + } + + //Step2: 获取职位权限 + postPowerArt, postGroupAuth := GainGroupAppPower("job", poetId) + if len(postPowerArt) > 0 { + for _, v := range postPowerArt { + if !IsInTrue[string](v, groupPower) { + groupPower = append(groupPower, v) + } + } + } + if len(postGroupAuth) > 0 { + for _, v := range postGroupAuth { + if !IsInTrue[string](v, groupAuth) { + groupAuth = append(groupAuth, v) + } + } + } + //Step3: 行政组织 + if org != 0 { + var orgPowerList OrgAryPower + orgPowerList.GetOrgPower(org) + + if len(orgPowerList.PowerAry) > 0 { + for _, v := range orgPowerList.PowerAry { + if !IsInTrue[string](v, groupPower) { + groupPower = append(groupPower, v) + } + } + } + if len(orgPowerList.GroupPowerAry) > 0 { + for _, v := range orgPowerList.GroupPowerAry { + if !IsInTrue[string](v, groupAuth) { + groupAuth = append(groupAuth, v) + } + } + } + + } + //Step4: 获取角色权限 + if roleId != "" { + roleIdAry := strings.Split(roleId, ",") + // var roleIdAry []int64 + // err := json.Unmarshal([]byte(roleId), &roleIdAry) + // fmt.Printf("%v----%v----%v----%v\n\n", oupk, org, err, roleIdAry) + for _, v := range roleIdAry { + roId, _ := strconv.ParseInt(v, 10, 64) + rolePowerArt, roleGroupAuth := GainGroupAppPower("role", roId) + for _, rv := range rolePowerArt { + if !IsInTrue[string](rv, groupPower) { + groupPower = append(groupPower, rv) + } + } + for _, rv := range roleGroupAuth { + if !IsInTrue[string](rv, groupAuth) { + groupAuth = append(groupAuth, rv) + } + } + } + } + + // rolePowerArt, roleGroupAuth := GainGroupAppPower("role", oupk) + // if len(rolePowerArt) > 0 { + // for _, v := range rolePowerArt { + // if !IsInTrue[string](v, groupPower) { + // groupPower = append(groupPower, v) + // } + // } + // } + // if len(roleGroupAuth) > 0 { + // for _, v := range roleGroupAuth { + // if !IsInTrue[string](v, groupAuth) { + // groupAuth = append(groupAuth, v) + // } + // } + // } + fmt.Printf("%v----%v----%v----%v\n\n", oupk, org, poetId, roleId) + return +} + +func (o *OrgAryPower) GetOrgPower(orgId int64) { + if orgId != 0 { + orgPowerArt, groupAuth := GainGroupAppPower("org", orgId) + if len(orgPowerArt) > 0 { + for _, v := range orgPowerArt { + if !IsInTrue[string](v, o.PowerAry) { + o.PowerAry = append(o.PowerAry, v) + } + } + } else { + var orgInfo modelshr.AdministrativeOrganization + orgInfo.GetCont(map[string]interface{}{"`id`": orgId}, "`superior`") + if orgInfo.Superior != 0 { + o.GetOrgPower(orgInfo.Superior) + } + } + + if len(groupAuth) > 0 { + for _, v := range groupAuth { + if !IsInTrue[string](v, o.GroupPowerAry) { + o.GroupPowerAry = append(o.GroupPowerAry, v) + } + } + } else { + var orgInfo modelshr.AdministrativeOrganization + orgInfo.GetCont(map[string]interface{}{"`id`": orgId}, "`superior`") + if orgInfo.Superior != 0 { + o.GetOrgPower(orgInfo.Superior) + } + } + } +} + +/* +* +@ 作者: 秦东 +@ 时间: 2025-12-11 16:00:06 +@ 功能: 获取分组授权 +*/ +func GainGroupAppPower(types string, id int64) (powerArt []string, groupAuth []string) { + var myPower modelssystempermission.AuthGroupPower + err := overall.CONSTANT_DB_System_Permission.Where("`appType` = 'app' AND `orgPowerType` = ? AND `orgOrUserKey` = ?", types, id).First(&myPower).Error + if err == nil || myPower.Id != 0 { + if myPower.PowerInfo != "" && myPower.PowerInfo != "null" { + json.Unmarshal([]byte(myPower.PowerInfo), &powerArt) + } + if myPower.GroupStatus != "" && myPower.GroupStatus != "null" { + json.Unmarshal([]byte(myPower.GroupStatus), &groupAuth) + } + } + return +} + +// 合并组织、角色、岗位权限 +func MergePower(FormTable []AppMyPower) (list []AppMyPower) { + for _, v := range FormTable { //循环所有授权 + isNewApp := true + for li, lv := range list { //循环已合并过的授权 + if v.AppId == lv.AppId { //判断在已合并中是否已经存在 + isNewApp = false + for _, fv := range v.FormTrue { //合并App中已经授权的表单 + if !IsInTrue[string](fv, lv.FormTrue) { + list[li].FormTrue = append(list[li].FormTrue, fv) + } + } + for _, pv := range v.FormPower { //相应表单权限细节整合 + if pv.IsPick { + if !IsInTrue[string](pv.AppId, list[li].FormTrue) { + list[li].FormTrue = append(list[li].FormTrue, pv.AppId) + } + } + isNewTable := true + for fpi, fpv := range lv.FormPower { + if pv.AppId == fpv.AppId { + isNewTable = false + list[li].FormPower[fpi].ListPower = MergeStruct[string](pv.ListPower, fpv.ListPower) + list[li].FormPower[fpi].TablePower = MergeStruct[string](pv.TablePower, fpv.TablePower) + if pv.Scope < 1 { + pv.Scope = 1 + } + if pv.Scope >= fpv.Scope { + list[li].FormPower[fpi].Scope = pv.Scope + list[li].FormPower[fpi].ScopeManAry = MergeStruct[int](pv.ScopeManAry, fpv.ScopeManAry) + } + } + } + if isNewTable { + list[li].FormPower = append(list[li].FormPower, pv) + } + } + + } + } + if isNewApp { + list = append(list, v) + } + } + return +} + +// 自定义App +func (x *XieChengPowerSys) GetAppFormPower(sysType, powerType string, key int64) { + defer syncSeting.Done() + switch powerType { + case "org": + //Step 1:获取可见App + var appAuthPower []modelssystempermission.AuthPower + overall.CONSTANT_DB_System_Permission.Where("`appType` = ? AND `orgPowerType` = ? AND `orgOrUserKey` = ? AND `appKey` <> 0", sysType, powerType, key).Find(&appAuthPower) + if len(appAuthPower) > 0 { + for _, v := range appAuthPower { + appKeyStr := strconv.FormatInt(v.AppKey, 10) + var appSetUpPower AppMyPower + appSetUpPower.AppId = appKeyStr + if v.IsTrue == 1 { + appSetUpPower.IsPick = true + + if !IsInTrue[string](appKeyStr, x.AppUUID) { + x.AppUUID = append(x.AppUUID, appKeyStr) + } + } else { + appSetUpPower.IsPick = false + } + if v.AppButPower != "" && v.AppButPower != "null" { + json.Unmarshal([]byte(v.AppButPower), &appSetUpPower.ButPower) + } + appSetUpPower.FormTrue, appSetUpPower.FormPower = GetMyAppTableForm(v.Id) + x.FormTable = append(x.FormTable, appSetUpPower) + } + } else { + var allFirstOrgId GetOrgAllParent + allFirstOrgId.GetOrgFirst(key) + if len(allFirstOrgId.Id) > 0 { //继承最近父级授权 + for _, v := range allFirstOrgId.Id { + var appAuthFirstPower []modelssystempermission.AuthPower + overall.CONSTANT_DB_System_Permission.Where("`appType` = ? AND `orgPowerType` = ? AND `orgOrUserKey` = ? AND `appKey` <> 0", sysType, powerType, v).Find(&appAuthFirstPower) + if len(appAuthFirstPower) > 0 { + for _, v := range appAuthFirstPower { + appKeyStr := strconv.FormatInt(v.AppKey, 10) + var appSetUpPower AppMyPower + appSetUpPower.AppId = appKeyStr + if v.IsTrue == 1 { + appSetUpPower.IsPick = true + + if !IsInTrue[string](appKeyStr, x.AppUUID) { + x.AppUUID = append(x.AppUUID, appKeyStr) + } + } else { + appSetUpPower.IsPick = false + } + if v.AppButPower != "" && v.AppButPower != "null" { + json.Unmarshal([]byte(v.AppButPower), &appSetUpPower.ButPower) + } + appSetUpPower.FormTrue, appSetUpPower.FormPower = GetMyAppTableForm(v.Id) + x.FormTable = append(x.FormTable, appSetUpPower) + } + } + } + } + } + case "role": + var roleId []int64 + overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Select("`id`").Where("FIND_IN_SET(?, `roleuser`)", key).Find(&roleId) + if len(roleId) > 0 { + var appAuthPower []modelssystempermission.AuthPower + overall.CONSTANT_DB_System_Permission.Where("`appType` = ? AND `orgPowerType` = ? AND `orgOrUserKey` IN ? AND `appKey` <> 0", sysType, powerType, roleId).Find(&appAuthPower) + if len(appAuthPower) > 0 { + for _, v := range appAuthPower { + appKeyStr := strconv.FormatInt(v.AppKey, 10) + var appSetUpPower AppMyPower + appSetUpPower.AppId = appKeyStr + if v.IsTrue == 1 { + appSetUpPower.IsPick = true + + if !IsInTrue[string](appKeyStr, x.AppUUID) { + x.AppUUID = append(x.AppUUID, appKeyStr) + } + } else { + appSetUpPower.IsPick = false + } + if v.AppButPower != "" && v.AppButPower != "null" { + json.Unmarshal([]byte(v.AppButPower), &appSetUpPower.ButPower) + } + appSetUpPower.FormTrue, appSetUpPower.FormPower = GetMyAppTableForm(v.Id) + x.FormTable = append(x.FormTable, appSetUpPower) + } + } + } + default: + var appAuthPower []modelssystempermission.AuthPower + overall.CONSTANT_DB_System_Permission.Where("`appType` = ? AND `orgPowerType` = ? AND `orgOrUserKey` = ? AND `appKey` <> 0", sysType, powerType, key).Find(&appAuthPower) + if len(appAuthPower) > 0 { + for _, v := range appAuthPower { + appKeyStr := strconv.FormatInt(v.AppKey, 10) + var appSetUpPower AppMyPower + appSetUpPower.AppId = appKeyStr + if v.IsTrue == 1 { + appSetUpPower.IsPick = true + if !IsInTrue[string](appKeyStr, x.AppUUID) { + x.AppUUID = append(x.AppUUID, appKeyStr) + } + } else { + appSetUpPower.IsPick = false + } + if v.AppButPower != "" && v.AppButPower != "null" { + json.Unmarshal([]byte(v.AppButPower), &appSetUpPower.ButPower) + } + appSetUpPower.FormTrue, appSetUpPower.FormPower = GetMyAppTableForm(v.Id) + x.FormTable = append(x.FormTable, appSetUpPower) + } + } + } +} + +// 获取自定义App表单 +func GetMyAppTableForm(authid int64) (formId []string, list []AppMyPowerTable) { + var formListPow []modelssystempermission.PowerInfo + overall.CONSTANT_DB_System_Permission.Where("`authId` = ? ", authid).Find(&formListPow) + for _, v := range formListPow { + idStr := strconv.FormatInt(v.ItemId, 10) + var formInfo AppMyPowerTable + formInfo.AppId = idStr + if v.IsPick == 1 { + formInfo.IsPick = true + if !IsInTrue[string](idStr, formId) { + formId = append(formId, idStr) + } + } else { + formInfo.IsPick = false + } + if v.ListPower != "" && v.ListPower != "null" { + json.Unmarshal([]byte(v.ListPower), &formInfo.ListPower) + } + if v.TablePower != "" && v.TablePower != "null" { + json.Unmarshal([]byte(v.TablePower), &formInfo.TablePower) + } + if v.VisibleRange == 0 { + v.VisibleRange = 1 + } + formInfo.Scope = v.VisibleRange + if v.VisibleOrg != "" && v.VisibleOrg != "null" { + json.Unmarshal([]byte(v.VisibleOrg), &formInfo.ScopeManAry) + } + if v.PageButPower != "" && v.PageButPower != "null" { + json.Unmarshal([]byte(v.PageButPower), &formInfo.PagePower) + } + list = append(list, formInfo) + } + return +} + +// 系统菜单 +func (x *XieChengPowerSys) GetOrgSysPower(sysType, powerType string, key int64) { + defer syncSeting.Done() + // var systemPower []modelssystempermission.AuthPowerList + goromDb := overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.AuthPowerList{}).Where("`appType` = ? AND `orgPowerType` = ? AND `appKey` = 0", sysType, powerType) + switch powerType { + case "org": + + var orgPowList []modelssystempermission.AuthPowerList + overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.AuthPowerList{}).Where("`appType` = ? AND `orgPowerType` = ? AND `appKey` = 0 AND `orgOrUserKey` = ? ", sysType, powerType, key).Find(&orgPowList) + if len(orgPowList) > 0 { + x.SysTemList = append(x.SysTemList, orgPowList...) + } else { + var allFirstOrgId GetOrgAllParent + allFirstOrgId.GetOrgFirst(key) + if len(allFirstOrgId.Id) > 0 { + for _, v := range allFirstOrgId.Id { + var fatherOrgPower []modelssystempermission.AuthPowerList + overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.AuthPowerList{}).Where("`appType` = ? AND `orgPowerType` = ? AND `appKey` = 0 AND `orgOrUserKey` = ?", sysType, powerType, v).Find(&fatherOrgPower) + if len(fatherOrgPower) > 0 { + fmt.Printf("Org--%v--->%v\n\n", v, len(fatherOrgPower)) + x.SysTemList = append(x.SysTemList, fatherOrgPower...) + break + } + } + } + } + + // var allFirstOrgId GetOrgAllParent + // allFirstOrgId.GetOrgFirst(key) + // allFirstOrgId.Id = append(allFirstOrgId.Id, key) + + // goromDb = goromDb.Where("`orgOrUserKey` IN ?", allFirstOrgId.Id) + // goromDb.Find(&x.SysTemList) + case "role": + var roleId []int64 + overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Select("`id`").Where("FIND_IN_SET(?, `roleuser`)", key).Find(&roleId) + fmt.Printf("role----->%v----->%v\n\n", roleId, len(roleId)) + if len(roleId) > 0 { + goromDb = goromDb.Where("`orgOrUserKey` IN ?", roleId) + goromDb.Find(&x.SysTemList) + } + + default: + // fmt.Printf("post----->%v\n\n", key) + goromDb = goromDb.Where("`orgOrUserKey` = ?", key) + goromDb.Find(&x.SysTemList) + + } + + // if len(systemPower) > 0 { + // x.GetPowerSystem(systemPower) + // } +} + +func (x *XieChengPowerSys) GetPowerSystem(list []modelssystempermission.AuthPowerList) { + // fmt.Printf("管理范围----list--->%v--->%v\n\n\n", len(list), len(x.SystemPower)) + for _, v := range list { + // fmt.Printf("管理范围----list--->%v--->%v--->%v\n\n\n", len(list), v.VisibleRange, len(v.VisibleOrg)) + appId := strconv.FormatInt(v.ItemId, 10) + if len(x.SystemPower) > 0 { //判断是否已经存在该项赋值 + isWrite := true + for xi, xv := range x.SystemPower { + if appId == xv.AppId { //存在赋值,修改 + // fmt.Printf("管理范围-----%v----->%v----->%v\n\n\n", appId, v.VisibleRange, xv.Scope) + + isWrite = false + if v.IsPick == 1 { + x.SystemPower[xi].IsPick = true + } + if v.ButPower != "" && v.ButPower != "null" { + var butPow []string + json.Unmarshal([]byte(v.ButPower), &butPow) + for _, bv := range butPow { + if !IsInTrue[string](bv, x.SystemPower[xi].ButIdAry) { + x.SystemPower[xi].ButIdAry = append(x.SystemPower[xi].ButIdAry, bv) + } + } + } + if v.VisibleRange == 0 { + v.VisibleRange = 1 + } + if v.VisibleRange > xv.Scope { + x.SystemPower[xi].Scope = v.VisibleRange + if v.VisibleOrg != "" && v.VisibleOrg != "null" { + var visAry []int + json.Unmarshal([]byte(v.VisibleOrg), &visAry) + for _, vv := range visAry { + if !IsInTrue[int](vv, x.SystemPower[xi].ScopeManAry) { + x.SystemPower[xi].ScopeManAry = append(x.SystemPower[xi].ScopeManAry, vv) + } + } + } + } + + } + } + if isWrite { //没有赋值新增 + var menuPower SystemInfoPower + menuPower.AppId = appId + if v.IsPick == 1 { + menuPower.IsPick = true + } else { + menuPower.IsPick = false + } + if v.ButPower != "" && v.ButPower != "null" { + json.Unmarshal([]byte(v.ButPower), &menuPower.ButIdAry) + } else { + menuPower.ButIdAry = []string{} + } + if v.VisibleRange == 0 { + v.VisibleRange = 1 + } + menuPower.Scope = v.VisibleRange + if v.VisibleOrg != "" && v.VisibleOrg != "null" { + json.Unmarshal([]byte(v.VisibleOrg), &menuPower.ScopeManAry) + } else { + menuPower.ScopeManAry = []int{} + } + x.SystemPower = append(x.SystemPower, menuPower) + } + } else { //没有赋值新增 + var menuPower SystemInfoPower + menuPower.AppId = appId + if v.IsPick == 1 { + menuPower.IsPick = true + } else { + menuPower.IsPick = false + } + if v.ButPower != "" && v.ButPower != "null" { + json.Unmarshal([]byte(v.ButPower), &menuPower.ButIdAry) + } else { + menuPower.ButIdAry = []string{} + } + menuPower.Scope = 1 + if v.VisibleRange > menuPower.Scope { + menuPower.Scope = v.VisibleRange + } + + if v.VisibleOrg != "" && v.VisibleOrg != "null" { + json.Unmarshal([]byte(v.VisibleOrg), &menuPower.ScopeManAry) + } else { + menuPower.ScopeManAry = []int{} + } + x.SystemPower = append(x.SystemPower, menuPower) + } + if v.IsPick == 1 { + // idStr := strconv.FormatInt(v.ItemId, 10) + if !IsInTrue[int64](v.ItemId, x.MenuId) { + x.MenuId = append(x.MenuId, v.ItemId) + } + } + + } +} + +/* +* +@ 作者: 秦东 +@ 时间: 2025-11-24 14:55:49 +@ 功能: 获取自定义表单权限解析 +*/ +func GetTablePower(authId int64) (itenIdAry []string, TableList []AppMyPowerTable) { + var tableInfo []modelssystempermission.PowerInfo + overall.CONSTANT_DB_System_Permission.Where("`authId` = ?", authId).Find(&tableInfo) + for _, v := range tableInfo { + var formPwInfo AppMyPowerTable + itemIdSte := strconv.FormatInt(v.ItemId, 10) + formPwInfo.AppId = itemIdSte + if v.IsPick == 1 { + if !IsInTrue[string](itemIdSte, itenIdAry) { + itenIdAry = append(itenIdAry, itemIdSte) + } + formPwInfo.IsPick = true + } else { + formPwInfo.IsPick = false + } + formPwInfo.Scope = v.VisibleRange + if v.VisibleRange == 5 && v.ButPower != "" && v.ButPower != "null" { + json.Unmarshal([]byte(v.VisibleOrg), &formPwInfo.ScopeManAry) + } + if v.TablePower != "" && v.TablePower != "null" { + json.Unmarshal([]byte(v.TablePower), &formPwInfo.TablePower) + } + if v.ListPower != "" && v.ListPower != "null" { + json.Unmarshal([]byte(v.ListPower), &formPwInfo.ListPower) + } + if v.PageButPower != "" && v.PageButPower != "null" { + json.Unmarshal([]byte(v.PageButPower), &formPwInfo.PagePower) + } + TableList = append(TableList, formPwInfo) + } + return +} diff --git a/overall/publicmethod/type.go b/overall/publicmethod/type.go index b1074ed..cf28c7b 100644 --- a/overall/publicmethod/type.go +++ b/overall/publicmethod/type.go @@ -433,22 +433,7 @@ type SystemInfoPower struct { OutPowerInfo } type OutPowerInfo struct { - ButIdAry []int64 `json:"butIdAry"` - Scope int `json:"scope"` - ScopeManAry []int `json:"scopeManAry"` -} -type AppMyPower struct { - AppId string `json:"AppId"` - IsPick bool `json:"isPick` - FormTrue []string `json:"formTrue"` - FormPower []AppMyPowerTable `json:"formPower"` - ButPower []string `json:"butPower"` -} -type AppMyPowerTable struct { - AppId string `json:"AppId"` - IsPick bool `json:"isPick` - ListPower []string `json:"listPower"` - TablePower []string `json:"tablePower"` + ButIdAry []string `json:"butIdAry"` Scope int `json:"scope"` ScopeManAry []int `json:"scopeManAry"` } @@ -472,3 +457,15 @@ type PowerTimeSql struct { StartTime interface{} EndTime interface{} } + +// 输出权限列表 +type SendAllPowers struct { + SystemPower []SystemInfoPower `json:"systemPower"` //系统权限 + MenuIdAry []int64 `json:"menuIdAry"` //菜单 + MenuButIdAry []string `json:"menuButIdAry"` //菜单按钮 + AppSystemPower []AppMyPower `json:"appSystemPower"` //自定义App权限 + AppKeyAry []string `json:"appKeyAry"` //自定义App识别码 + AppGroupPower []string `json:"appGroupPower"` //自定义App分组权限 + AppGroupMenu []string `json:"appGroupMenu"` //自定义分组菜单 + Level int64 `json:"level"` //等级 +}