4 changed files with 740 additions and 16 deletions
@ -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 |
||||
|
} |
||||
@ -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 |
||||
|
} |
||||
Loading…
Reference in new issue