18 changed files with 820 additions and 89 deletions
File diff suppressed because one or more lines are too long
@ -0,0 +1,437 @@ |
|||
package publicmethod |
|||
|
|||
import ( |
|||
"appPlatform/models/modelAppPlatform" |
|||
"appPlatform/models/modelssystempermission" |
|||
"appPlatform/overall" |
|||
"encoding/json" |
|||
"fmt" |
|||
"strconv" |
|||
) |
|||
|
|||
/* |
|||
* |
|||
@ 作者: 秦东 |
|||
@ 时间: 2026-03-21 08:37:17 |
|||
@ 功能: 解析个人拥有的权限 |
|||
*/ |
|||
func MyHavePermission(userKey, orgId, postId int64, roleoId []int64, roleStr string) (allPower SendAllPowers, err error) { |
|||
allPower.AppGroupMenu, allPower.AppGroupPower = MyAppGroupPoswer(userKey, orgId, postId, roleoId) |
|||
|
|||
//获取个人的系统权限设置
|
|||
var mySystemPower []modelssystempermission.AuthPowerList |
|||
err = overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.AuthPowerList{}).Where("`appType` = 'system' AND `orgPowerType` = 'person' AND `orgOrUserKey` = ? ", userKey).Find(&mySystemPower).Error |
|||
fmt.Printf("\n\n-------1-----mySystemPower------1----->%v\n\n", len(mySystemPower)) |
|||
if len(mySystemPower) > 0 { //存在个人设置的单一权限
|
|||
for _, v := range mySystemPower { |
|||
// if v.AppType == "app" { //低代码自定义表单权限
|
|||
|
|||
// } else { //低代码系统权限
|
|||
var sysPower SystemInfoPower |
|||
sysPower.AppId = strconv.FormatInt(v.ItemId, 10) |
|||
sysPower.IsPick = false |
|||
if v.IsPick == 1 { |
|||
sysPower.IsPick = true |
|||
//处理已选中的菜单
|
|||
if !IsInTrue[int64](v.ItemId, allPower.MenuIdAry) { |
|||
allPower.MenuIdAry = append(allPower.MenuIdAry, v.ItemId) |
|||
} |
|||
//处理菜单按钮权限
|
|||
if v.ButPower != "" && v.ButPower != "null" { |
|||
var butIdStrAry []string |
|||
json.Unmarshal([]byte(v.ButPower), &butIdStrAry) |
|||
if len(butIdStrAry) > 0 { |
|||
for _, bv := range butIdStrAry { |
|||
if !IsInTrue[string](bv, sysPower.ButIdAry) { |
|||
sysPower.ButIdAry = append(sysPower.ButIdAry, bv) |
|||
} |
|||
if !IsInTrue[string](bv, allPower.MenuButIdAry) { |
|||
allPower.MenuButIdAry = append(allPower.MenuButIdAry, bv) |
|||
} |
|||
|
|||
} |
|||
} |
|||
} |
|||
sysPower.Scope = v.VisibleRange |
|||
if v.VisibleRange == 5 && v.ButPower != "" && v.ButPower != "null" { //自定义可见范围
|
|||
var scopeManAry []int |
|||
json.Unmarshal([]byte(v.VisibleOrg), &scopeManAry) //解析可见分为
|
|||
if len(scopeManAry) > 0 { |
|||
for _, bv := range scopeManAry { |
|||
if !IsInTrue[int](bv, sysPower.ScopeManAry) { |
|||
sysPower.ScopeManAry = append(sysPower.ScopeManAry, bv) |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
} |
|||
allPower.SystemPower = append(allPower.SystemPower, sysPower) |
|||
// }
|
|||
} |
|||
} else { //不存在个人单独设置的权限
|
|||
var mySysMenuPower XieChengPowerSys |
|||
syncSetingSystem.Add(1) |
|||
go mySysMenuPower.HaveSystemMeunPower("system", "org", orgId) |
|||
syncSetingSystem.Add(1) |
|||
go mySysMenuPower.HaveSystemMeunPower("system", "job", postId) |
|||
for _, rv := range roleoId { |
|||
syncSetingSystem.Add(1) |
|||
go mySysMenuPower.HaveSystemMeunPower("system", "role", rv) |
|||
} |
|||
syncSetingSystem.Wait() |
|||
fmt.Printf("\n\n-------1-----mySystemPower------2----->%v\n\n", len(mySysMenuPower.SysTemList)) |
|||
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 myAppSystemPower []modelssystempermission.AuthPowerList |
|||
err = overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.AuthPowerList{}).Where("`appType` = 'app' AND `orgPowerType` = 'person' AND `orgOrUserKey` = ? ", userKey).Find(&myAppSystemPower).Error |
|||
fmt.Printf("\n\n-------2-----myAppSystemPower------1----->%v\n\n", len(myAppSystemPower)) |
|||
if len(myAppSystemPower) > 0 { //存在个人设置的单一权限
|
|||
for _, v := range myAppSystemPower { |
|||
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", orgId) |
|||
syncSeting.Add(1) |
|||
go myAppPower.GetAppFormPower("app", "job", postId) |
|||
syncSeting.Add(1) |
|||
go myAppPower.GetAppFormPower("app", "role", userKey) |
|||
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) |
|||
} |
|||
return |
|||
} |
|||
|
|||
/* |
|||
* |
|||
@ 作者: 秦东 |
|||
@ 时间: 2026-03-21 14:02:08 |
|||
@ 功能: 按系统授权分类获取权限数据 |
|||
*/ |
|||
func (x *XieChengPowerSys) HaveSystemMeunPower(sysType, powerType string, key int64) { |
|||
defer syncSetingSystem.Done() |
|||
var orgPowList []modelssystempermission.AuthPowerList |
|||
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.AuthPowerList{}).Where("`appType` = ? AND `orgPowerType` = ? AND `orgOrUserKey` = ? AND `appKey` = 0", sysType, powerType, key).Find(&orgPowList) |
|||
|
|||
fmt.Printf("\n\n-------1-----按系统授权分类获取权限数据------1----->%v\n\n", len(orgPowList)) |
|||
|
|||
if len(orgPowList) > 0 { |
|||
for _, v := range orgPowList { |
|||
isTrue := true |
|||
for si, sv := range x.SysTemList { |
|||
if v.Id == sv.Id { |
|||
isTrue = false |
|||
if v.IsPick == 1 { |
|||
x.SysTemList[si].IsPick = v.IsPick |
|||
|
|||
if v.TablePower != "" && v.TablePower != "null" { |
|||
var tableAry []string |
|||
json.Unmarshal([]byte(v.TablePower), &tableAry) |
|||
if len(tableAry) > 0 { |
|||
var tablePower []string |
|||
json.Unmarshal([]byte(sv.TablePower), &tablePower) |
|||
tabAllAry := MergeStruct[string](tableAry, tablePower) |
|||
tabAllAryStr, _ := json.Marshal(tabAllAry) |
|||
x.SysTemList[si].TablePower = string(tabAllAryStr) |
|||
} |
|||
} |
|||
|
|||
if v.ListPower != "" && v.ListPower != "null" { |
|||
var listPowerAry []string |
|||
json.Unmarshal([]byte(v.ListPower), &listPowerAry) |
|||
if len(listPowerAry) > 0 { |
|||
var oldListPower []string |
|||
json.Unmarshal([]byte(sv.ListPower), &oldListPower) |
|||
listAllAry := MergeStruct[string](listPowerAry, oldListPower) |
|||
listAllAryStr, _ := json.Marshal(listAllAry) |
|||
x.SysTemList[si].ListPower = string(listAllAryStr) |
|||
} |
|||
} |
|||
maxRange := sv.VisibleRange |
|||
if v.VisibleRange > sv.VisibleRange { |
|||
x.SysTemList[si].VisibleRange = v.VisibleRange |
|||
x.SysTemList[si].PowerInfo = v.PowerInfo |
|||
maxRange = v.VisibleRange |
|||
if maxRange == 5 { |
|||
if v.VisibleOrg != "" && v.VisibleOrg != "null" { |
|||
var btPwAry []int |
|||
json.Unmarshal([]byte(v.VisibleOrg), &btPwAry) |
|||
if len(btPwAry) > 0 { |
|||
var oldBTPAry []int |
|||
json.Unmarshal([]byte(sv.VisibleOrg), &oldBTPAry) |
|||
btpwAll := MergeStruct[int](btPwAry, oldBTPAry) |
|||
btpwAllAryStr, _ := json.Marshal(btpwAll) |
|||
x.SysTemList[si].VisibleOrg = string(btpwAllAryStr) |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
if v.ButPower != "" && v.ButPower != "null" { |
|||
var butertPowerAry []string |
|||
json.Unmarshal([]byte(v.ButPower), &butertPowerAry) |
|||
if len(butertPowerAry) > 0 { |
|||
var oldButPower []string |
|||
json.Unmarshal([]byte(sv.ButPower), &oldButPower) |
|||
butWerAllAry := MergeStruct[string](butertPowerAry, oldButPower) |
|||
butWerAllAryStr, _ := json.Marshal(butWerAllAry) |
|||
x.SysTemList[si].ButPower = string(butWerAllAryStr) |
|||
} |
|||
} |
|||
|
|||
if v.PageButPower != "" && v.PageButPower != "null" { |
|||
var pageButPowerAry []string |
|||
json.Unmarshal([]byte(v.PageButPower), &pageButPowerAry) |
|||
if len(pageButPowerAry) > 0 { |
|||
var oldPageButPower []string |
|||
json.Unmarshal([]byte(sv.PageButPower), &oldPageButPower) |
|||
pageButAllAry := MergeStruct[string](pageButPowerAry, oldPageButPower) |
|||
pageButAllAryStr, _ := json.Marshal(pageButAllAry) |
|||
x.SysTemList[si].PageButPower = string(pageButAllAryStr) |
|||
} |
|||
} |
|||
|
|||
if v.AppButPower != "" && v.AppButPower != "null" { |
|||
var appButPowerAry []string |
|||
json.Unmarshal([]byte(v.AppButPower), &appButPowerAry) |
|||
if len(appButPowerAry) > 0 { |
|||
var oldAppButPoweres []string |
|||
json.Unmarshal([]byte(sv.AppButPower), &oldAppButPoweres) |
|||
appButAllAry := MergeStruct[string](appButPowerAry, oldAppButPoweres) |
|||
appButAllAryStr, _ := json.Marshal(appButAllAry) |
|||
x.SysTemList[si].AppButPower = string(appButAllAryStr) |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
if isTrue { |
|||
x.SysTemList = append(x.SysTemList, v) |
|||
} |
|||
} |
|||
} else { |
|||
|
|||
if powerType == "org" { |
|||
var allFirstOrgId GetOrgAllParent |
|||
allFirstOrgId.GetOrgFirst(key) |
|||
fmt.Printf("\n\n-------1-----按系统授权分类获取权限数据------2----->%v\n\n", len(allFirstOrgId.Id)) |
|||
if len(allFirstOrgId.Id) > 0 { |
|||
for _, v := range allFirstOrgId.Id { |
|||
if v != 0 { |
|||
var orgFirstPowList []modelssystempermission.AuthPowerList |
|||
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.AuthPowerList{}).Where("`appType` = ? AND `orgPowerType` = ? AND `orgOrUserKey` = ? AND `appKey` = 0", sysType, powerType, v).Find(&orgFirstPowList) |
|||
fmt.Printf("\n\n-------1-----按系统授权分类获取权限数据------3----->%v--->%v\n\n", v, len(orgFirstPowList)) |
|||
if len(orgFirstPowList) > 0 { |
|||
for _, v := range orgFirstPowList { |
|||
isTrue := true |
|||
for si, sv := range x.SysTemList { |
|||
if v.Id == sv.Id { |
|||
isTrue = false |
|||
if v.IsPick == 1 { |
|||
x.SysTemList[si].IsPick = v.IsPick |
|||
|
|||
if v.TablePower != "" && v.TablePower != "null" { |
|||
var tableAry []string |
|||
json.Unmarshal([]byte(v.TablePower), &tableAry) |
|||
if len(tableAry) > 0 { |
|||
var tablePower []string |
|||
json.Unmarshal([]byte(sv.TablePower), &tablePower) |
|||
tabAllAry := MergeStruct[string](tableAry, tablePower) |
|||
tabAllAryStr, _ := json.Marshal(tabAllAry) |
|||
x.SysTemList[si].TablePower = string(tabAllAryStr) |
|||
} |
|||
} |
|||
|
|||
if v.ListPower != "" && v.ListPower != "null" { |
|||
var listPowerAry []string |
|||
json.Unmarshal([]byte(v.ListPower), &listPowerAry) |
|||
if len(listPowerAry) > 0 { |
|||
var oldListPower []string |
|||
json.Unmarshal([]byte(sv.ListPower), &oldListPower) |
|||
listAllAry := MergeStruct[string](listPowerAry, oldListPower) |
|||
listAllAryStr, _ := json.Marshal(listAllAry) |
|||
x.SysTemList[si].ListPower = string(listAllAryStr) |
|||
} |
|||
} |
|||
maxRange := sv.VisibleRange |
|||
if v.VisibleRange > sv.VisibleRange { |
|||
x.SysTemList[si].VisibleRange = v.VisibleRange |
|||
x.SysTemList[si].PowerInfo = v.PowerInfo |
|||
maxRange = v.VisibleRange |
|||
if maxRange == 5 { |
|||
if v.VisibleOrg != "" && v.VisibleOrg != "null" { |
|||
var btPwAry []int |
|||
json.Unmarshal([]byte(v.VisibleOrg), &btPwAry) |
|||
if len(btPwAry) > 0 { |
|||
var oldBTPAry []int |
|||
json.Unmarshal([]byte(sv.VisibleOrg), &oldBTPAry) |
|||
btpwAll := MergeStruct[int](btPwAry, oldBTPAry) |
|||
btpwAllAryStr, _ := json.Marshal(btpwAll) |
|||
x.SysTemList[si].VisibleOrg = string(btpwAllAryStr) |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
if v.ButPower != "" && v.ButPower != "null" { |
|||
var butertPowerAry []string |
|||
json.Unmarshal([]byte(v.ButPower), &butertPowerAry) |
|||
if len(butertPowerAry) > 0 { |
|||
var oldButPower []string |
|||
json.Unmarshal([]byte(sv.ButPower), &oldButPower) |
|||
butWerAllAry := MergeStruct[string](butertPowerAry, oldButPower) |
|||
butWerAllAryStr, _ := json.Marshal(butWerAllAry) |
|||
x.SysTemList[si].ButPower = string(butWerAllAryStr) |
|||
} |
|||
} |
|||
|
|||
if v.PageButPower != "" && v.PageButPower != "null" { |
|||
var pageButPowerAry []string |
|||
json.Unmarshal([]byte(v.PageButPower), &pageButPowerAry) |
|||
if len(pageButPowerAry) > 0 { |
|||
var oldPageButPower []string |
|||
json.Unmarshal([]byte(sv.PageButPower), &oldPageButPower) |
|||
pageButAllAry := MergeStruct[string](pageButPowerAry, oldPageButPower) |
|||
pageButAllAryStr, _ := json.Marshal(pageButAllAry) |
|||
x.SysTemList[si].PageButPower = string(pageButAllAryStr) |
|||
} |
|||
} |
|||
|
|||
if v.AppButPower != "" && v.AppButPower != "null" { |
|||
var appButPowerAry []string |
|||
json.Unmarshal([]byte(v.AppButPower), &appButPowerAry) |
|||
if len(appButPowerAry) > 0 { |
|||
var oldAppButPoweres []string |
|||
json.Unmarshal([]byte(sv.AppButPower), &oldAppButPoweres) |
|||
appButAllAry := MergeStruct[string](appButPowerAry, oldAppButPoweres) |
|||
appButAllAryStr, _ := json.Marshal(appButAllAry) |
|||
x.SysTemList[si].AppButPower = string(appButAllAryStr) |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
if isTrue { |
|||
x.SysTemList = append(x.SysTemList, v) |
|||
} |
|||
} |
|||
break |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
/* |
|||
* |
|||
@ 作者: 秦东 |
|||
@ 时间: 2026-03-21 08:56:38 |
|||
@ 功能: 获取自定义App分组权限 |
|||
*/ |
|||
func MyAppGroupPoswer(userKey, orgId, postId int64, roleoId []int64) (groupPower, groupAuth []string) { |
|||
//Step1: 获取个人权限
|
|||
groupAuth, groupPower = GainGroupAppPower("person", userKey) |
|||
if len(groupPower) > 0 { |
|||
return |
|||
} |
|||
//Step2: 获取职位权限
|
|||
postPowerArt, postGroupAuth := GainGroupAppPower("job", postId) |
|||
if len(postGroupAuth) > 0 { |
|||
for _, v := range postGroupAuth { |
|||
if !IsInTrue[string](v, groupPower) { |
|||
groupPower = append(groupPower, v) |
|||
} |
|||
} |
|||
if len(postPowerArt) > 0 { |
|||
for _, v := range postPowerArt { |
|||
if !IsInTrue[string](v, groupAuth) { |
|||
groupAuth = append(groupAuth, v) |
|||
} |
|||
} |
|||
} |
|||
} |
|||
//Step3: 行政组织
|
|||
var orgPowerList OrgAryPower |
|||
orgPowerList.GetOrgPower(orgId) |
|||
if len(orgPowerList.GroupPowerAry) > 0 { |
|||
for _, v := range orgPowerList.GroupPowerAry { |
|||
if !IsInTrue[string](v, groupPower) { |
|||
groupPower = append(groupPower, v) |
|||
} |
|||
} |
|||
if len(orgPowerList.PowerAry) > 0 { |
|||
for _, v := range orgPowerList.PowerAry { |
|||
if !IsInTrue[string](v, groupAuth) { |
|||
groupAuth = append(groupAuth, v) |
|||
} |
|||
} |
|||
} |
|||
} |
|||
//Step4: 获取角色权限
|
|||
if len(roleoId) > 0 { |
|||
for _, rv := range roleoId { |
|||
rolePowerArt, roleGroupAuth := GainGroupAppPower("role", rv) |
|||
if len(roleGroupAuth) > 0 { |
|||
for _, v := range roleGroupAuth { |
|||
if !IsInTrue[string](v, groupPower) { |
|||
groupPower = append(groupPower, v) |
|||
} |
|||
} |
|||
if len(rolePowerArt) > 0 { |
|||
for _, v := range rolePowerArt { |
|||
if !IsInTrue[string](v, groupAuth) { |
|||
groupAuth = append(groupAuth, v) |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
return |
|||
} |
|||
Loading…
Reference in new issue