@ -4,6 +4,7 @@ import (
"appPlatform/models/modelshr"
"appPlatform/models/modelssystempermission"
"appPlatform/overall"
"encoding/json"
"fmt"
"strconv"
@ -287,6 +288,15 @@ func GetSystemPower(powerType, systemTyep, powerId, systemId string) (powerInfo
}
err := gormDb . First ( & masterPower ) . Error
if err != nil {
if powerType == "person" {
var userInfo modelshr . PersonArchives
userInfo . GetCont ( map [ string ] interface { } { "`key`" : powerId } , "`id`" , "`company`" , "`maindeparment`" , "`admin_org`" , "`position`" )
var roleId [ ] int64
overall . CONSTANT_DB_System_Permission . Model ( & modelssystempermission . SystemRole { } ) . Select ( "`id`" ) . Where ( "FIND_IN_SET(?, `roleuser`)" , powerId ) . Find ( & roleId )
powerInfo . SystemIsPick , powerInfo . PowerList = PersonalAuthorization ( systemTyep , systemId , roleId , userInfo )
}
fmt . Printf ( "没有个人授权--->%v\n\n\n" , masterPower )
return
}
if masterPower . IsTrue == 1 {
@ -313,7 +323,14 @@ func GetSystemPower(powerType, systemTyep, powerId, systemId string) (powerInfo
}
itemContent . VisibleRange = v . VisibleRange
if v . VisibleOrg != "" && v . VisibleOrg != "null" {
json . Unmarshal ( [ ] byte ( v . VisibleOrg ) , & itemContent . VisibleOrg )
// var visStrAry []string
// err := json.Unmarshal([]byte(v.VisibleOrg), &visStrAry)
// for _, arv := range visStrAry {
// intVal, _ := strconv.ParseInt(arv, 10, 64)
// itemContent.VisibleOrg = append(itemContent.VisibleOrg, intVal)
// }
err := json . Unmarshal ( [ ] byte ( v . VisibleOrg ) , & itemContent . VisibleOrg )
fmt . Printf ( "装欢---》%v\n\n" , err )
}
powerInfo . PowerList = append ( powerInfo . PowerList , itemContent )
}
@ -321,6 +338,245 @@ func GetSystemPower(powerType, systemTyep, powerId, systemId string) (powerInfo
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 12 - 05 0 9 : 19 : 0 8
@ 功能 : 当个人没有设定自定义权限的时候返回其所在其他维度的赋权情况
* /
func PersonalAuthorization ( systemTyep , systemId string , roleId [ ] int64 , userInfo modelshr . PersonArchives ) ( isTrue bool , PowerList [ ] ItemInfo ) {
//获取角色相关授权
var masterPower [ ] modelssystempermission . AuthPower
gormDb := overall . CONSTANT_DB_System_Permission . Model ( & masterPower ) . Where ( "`orgPowerType` = 'role' AND `orgOrUserKey` IN ? AND `appType` = ?" , roleId , systemTyep )
switch systemTyep {
case "app" :
gormDb = gormDb . Where ( "`appKey` = ?" , systemId )
case "system" :
gormDb = gormDb . Where ( "`appKey` = 0" )
default :
}
err := gormDb . Find ( & masterPower ) . Error
if err == nil && len ( masterPower ) > 0 {
var autId [ ] int64
for _ , v := range masterPower {
if v . IsTrue == 1 {
isTrue = true
}
autId = append ( autId , v . Id )
}
if len ( autId ) > 0 {
var poserListAry [ ] modelssystempermission . PowerInfo
overall . CONSTANT_DB_System_Permission . Model ( & modelssystempermission . PowerInfo { } ) . Where ( "`authId` IN ?" , autId ) . Find ( & poserListAry )
PowerList = append ( PowerList , mergePowerAry ( poserListAry , PowerList ) ... )
}
}
//根据岗位
if userInfo . Position != 0 {
var masterPowerPost modelssystempermission . AuthPower
gormDb := overall . CONSTANT_DB_System_Permission . Model ( & masterPowerPost ) . Where ( "`orgPowerType` = 'job' AND `orgOrUserKey` = ? AND `appType` = ?" , userInfo . Position , systemTyep )
switch systemTyep {
case "app" :
gormDb = gormDb . Where ( "`appKey` = ?" , systemId )
case "system" :
gormDb = gormDb . Where ( "`appKey` = 0" )
default :
}
err = gormDb . First ( & masterPowerPost ) . Error
if err == nil {
if ! isTrue {
if masterPowerPost . IsTrue == 1 {
isTrue = true
}
}
var poserListPost [ ] modelssystempermission . PowerInfo
overall . CONSTANT_DB_System_Permission . Model ( & modelssystempermission . PowerInfo { } ) . Where ( "`authId` = ?" , masterPowerPost . Id ) . Find ( & poserListPost )
PowerList = append ( PowerList , mergePowerAry ( poserListPost , PowerList ) ... )
}
}
//根据行政组织
if userInfo . AdminOrg != 0 {
adOrgList , isTrues := OrgGetPower ( systemTyep , systemId , userInfo . AdminOrg )
isTrue = isTrues
if len ( adOrgList ) > 0 {
PowerList = append ( PowerList , mergePowerAry ( adOrgList , PowerList ) ... )
} else if userInfo . MainDeparment != 0 {
adOrgList , isTrues := OrgGetPower ( systemTyep , systemId , userInfo . MainDeparment )
isTrue = isTrues
if len ( adOrgList ) > 0 {
PowerList = append ( PowerList , mergePowerAry ( adOrgList , PowerList ) ... )
} else if userInfo . Company != 0 {
adOrgList , isTrues := OrgGetPower ( systemTyep , systemId , userInfo . Company )
isTrue = isTrues
if len ( adOrgList ) > 0 {
PowerList = append ( PowerList , mergePowerAry ( adOrgList , PowerList ) ... )
}
}
} else if userInfo . Company != 0 {
adOrgList , isTrues := OrgGetPower ( systemTyep , systemId , userInfo . Company )
isTrue = isTrues
if len ( adOrgList ) > 0 {
PowerList = append ( PowerList , mergePowerAry ( adOrgList , PowerList ) ... )
}
}
} else if userInfo . MainDeparment != 0 {
adOrgList , isTrues := OrgGetPower ( systemTyep , systemId , userInfo . MainDeparment )
isTrue = isTrues
if len ( adOrgList ) > 0 {
PowerList = append ( PowerList , mergePowerAry ( adOrgList , PowerList ) ... )
} else if userInfo . Company != 0 {
adOrgList , isTrues := OrgGetPower ( systemTyep , systemId , userInfo . Company )
isTrue = isTrues
if len ( adOrgList ) > 0 {
PowerList = append ( PowerList , mergePowerAry ( adOrgList , PowerList ) ... )
}
}
} else if userInfo . Company != 0 {
adOrgList , isTrues := OrgGetPower ( systemTyep , systemId , userInfo . Company )
isTrue = isTrues
if len ( adOrgList ) > 0 {
PowerList = append ( PowerList , mergePowerAry ( adOrgList , PowerList ) ... )
}
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 12 - 05 11 : 04 : 26
@ 功能 : 根据行政组织获取授权
* /
func OrgGetPower ( systemTyep , systemId string , orgId int64 ) ( PowerList [ ] modelssystempermission . PowerInfo , isTrue bool ) {
var masterPower modelssystempermission . AuthPower
gormDb := overall . CONSTANT_DB_System_Permission . Model ( & masterPower ) . Where ( "`orgPowerType` = 'org' AND `orgOrUserKey` = ? AND `appType` = ?" , orgId , systemTyep )
switch systemTyep {
case "app" :
gormDb = gormDb . Where ( "`appKey` = ?" , systemId )
case "system" :
gormDb = gormDb . Where ( "`appKey` = 0" )
default :
}
err := gormDb . First ( & masterPower ) . Error
if err != nil {
return
}
if masterPower . IsTrue == 1 {
isTrue = true
}
overall . CONSTANT_DB_System_Permission . Model ( & modelssystempermission . PowerInfo { } ) . Where ( "`authId` = ?" , masterPower . Id ) . Find ( & PowerList )
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 12 - 05 10 : 39 : 53
@ 功能 : 合并两个权限组
* /
func mergePowerAry ( poserListAry [ ] modelssystempermission . PowerInfo , PowerList [ ] ItemInfo ) [ ] ItemInfo {
for _ , v := range poserListAry {
if len ( PowerList ) > 0 {
isWrite := true
for pi , pv := range PowerList {
if pv . ItemId == v . ItemId {
if v . IsPick == 1 {
PowerList [ pi ] . IsPick = true
}
if v . TablePower != "" && v . TablePower != "null" {
if len ( pv . TablePower ) > 0 {
var tpAry [ ] string
json . Unmarshal ( [ ] byte ( v . TablePower ) , & tpAry )
PowerList [ pi ] . TablePower = MergeStruct [ string ] ( pv . TablePower , tpAry )
} else {
json . Unmarshal ( [ ] byte ( v . TablePower ) , & PowerList [ pi ] . TablePower )
}
// json.Unmarshal([]byte(v.TablePower), &itemContent.TablePower)
}
if v . ListPower != "" && v . ListPower != "null" {
if len ( pv . ListPower ) > 0 {
var tpListAry [ ] string
json . Unmarshal ( [ ] byte ( v . ListPower ) , & tpListAry )
PowerList [ pi ] . ListPower = MergeStruct [ string ] ( pv . ListPower , tpListAry )
} else {
json . Unmarshal ( [ ] byte ( v . ListPower ) , & PowerList [ pi ] . ListPower )
}
// json.Unmarshal([]byte(v.ListPower), &itemContent.ListPower)
}
if v . ButPower != "" && v . ButPower != "null" {
if len ( pv . ButPower ) > 0 {
var butistAry [ ] string
json . Unmarshal ( [ ] byte ( v . ButPower ) , & butistAry )
PowerList [ pi ] . ButPower = MergeStruct [ string ] ( pv . ButPower , butistAry )
} else {
json . Unmarshal ( [ ] byte ( v . ButPower ) , & PowerList [ pi ] . ButPower )
}
// json.Unmarshal([]byte(v.ButPower), &itemContent.ButPower)
}
if v . VisibleRange >= pv . VisibleRange {
PowerList [ pi ] . VisibleRange = v . VisibleRange
}
if v . VisibleOrg != "" && v . VisibleOrg != "null" {
if len ( pv . VisibleOrg ) > 0 {
var visistAry [ ] int64
json . Unmarshal ( [ ] byte ( v . VisibleOrg ) , & visistAry )
PowerList [ pi ] . VisibleOrg = MergeStruct [ int64 ] ( pv . VisibleOrg , visistAry )
} else {
json . Unmarshal ( [ ] byte ( v . VisibleOrg ) , & PowerList [ pi ] . VisibleOrg )
}
// json.Unmarshal([]byte(v.VisibleOrg), &itemContent.VisibleOrg)
}
isWrite = false
}
}
if isWrite {
var itemContent ItemInfo
itemContent . ItemId = v . ItemId
itemContent . IsPick = false
if v . IsPick == 1 {
itemContent . IsPick = true
}
if v . TablePower != "" && v . TablePower != "null" {
json . Unmarshal ( [ ] byte ( v . TablePower ) , & itemContent . TablePower )
}
if v . ListPower != "" && v . ListPower != "null" {
json . Unmarshal ( [ ] byte ( v . ListPower ) , & itemContent . ListPower )
}
if v . ButPower != "" && v . ButPower != "null" {
json . Unmarshal ( [ ] byte ( v . ButPower ) , & itemContent . ButPower )
}
itemContent . VisibleRange = v . VisibleRange
if v . VisibleOrg != "" && v . VisibleOrg != "null" {
json . Unmarshal ( [ ] byte ( v . VisibleOrg ) , & itemContent . VisibleOrg )
}
PowerList = append ( PowerList , itemContent )
}
} else {
var itemContent ItemInfo
itemContent . ItemId = v . ItemId
itemContent . IsPick = false
if v . IsPick == 1 {
itemContent . IsPick = true
}
if v . TablePower != "" && v . TablePower != "null" {
json . Unmarshal ( [ ] byte ( v . TablePower ) , & itemContent . TablePower )
}
if v . ListPower != "" && v . ListPower != "null" {
json . Unmarshal ( [ ] byte ( v . ListPower ) , & itemContent . ListPower )
}
if v . ButPower != "" && v . ButPower != "null" {
json . Unmarshal ( [ ] byte ( v . ButPower ) , & itemContent . ButPower )
}
itemContent . VisibleRange = v . VisibleRange
if v . VisibleOrg != "" && v . VisibleOrg != "null" {
json . Unmarshal ( [ ] byte ( v . VisibleOrg ) , & itemContent . VisibleOrg )
}
PowerList = append ( PowerList , itemContent )
}
}
return PowerList
}
/ *
*
@ 作者 : 秦东
@ -338,7 +594,31 @@ func GetSystemAppPower(powerType, systemTyep, powerId string) (powerAry []SendSy
}
var masterPower [ ] modelssystempermission . AuthPower
err := overall . CONSTANT_DB_System_Permission . Where ( "`orgPowerType` = ? AND `orgOrUserKey` = ? AND `appType` = ?" , powerType , powerId , systemTyep ) . Find ( & masterPower ) . Error
if err != nil {
if err != nil || len ( masterPower ) <= 0 {
if powerType == "person" {
var userInfo modelshr . PersonArchives
userInfo . GetCont ( map [ string ] interface { } { "`key`" : powerId } , "`id`" , "`company`" , "`maindeparment`" , "`admin_org`" , "`position`" )
var roleId [ ] int64
overall . CONSTANT_DB_System_Permission . Model ( & modelssystempermission . SystemRole { } ) . Select ( "`id`" ) . Where ( "FIND_IN_SET(?, `roleuser`)" , powerId ) . Find ( & roleId )
// PersonalAuthorizationApp(systemTyep, powerId, roleId, userInfo)
// powerAry = append(powerAry, )
powerAryList := PersonalAuthorizationApp ( systemTyep , powerId , roleId , userInfo )
if len ( powerAryList ) > 0 {
for _ , v := range powerAryList {
var powerInfo SendSystemAppPower
powerInfo . PowerType = powerType
powerInfo . SystemTyep = systemTyep
powerInfo . PowerId = powerId
powerInfo . SystemId = v . AppKey
powerInfo . SystemIsPick = false
if v . IsTrue == 1 {
powerInfo . SystemIsPick = true
}
powerAry = append ( powerAry , powerInfo )
}
}
}
fmt . Printf ( "没有个人App收取那\n%v\n\n" , masterPower )
return
}
for _ , v := range masterPower {
@ -356,6 +636,115 @@ func GetSystemAppPower(powerType, systemTyep, powerId string) (powerAry []SendSy
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 12 - 05 13 : 22 : 27
@ 功能 : 获取自定义表单项目权限
* /
func PersonalAuthorizationApp ( systemTyep , powerId string , roleId [ ] int64 , userInfo modelshr . PersonArchives ) ( powerAry [ ] modelssystempermission . AuthPower ) {
var masterPower [ ] modelssystempermission . AuthPower
//根据角色
if len ( roleId ) > 0 {
var masterPowerRole [ ] modelssystempermission . AuthPower
overall . CONSTANT_DB_System_Permission . Where ( "`orgPowerType` = 'role' AND `orgOrUserKey` IN ? AND `appType` = ?" , roleId , systemTyep ) . Find ( & masterPowerRole )
masterPower = append ( masterPower , HeBingTable ( masterPowerRole , masterPower ) ... )
}
//根据岗位
if userInfo . Position != 0 {
var masterPowerPost [ ] modelssystempermission . AuthPower
overall . CONSTANT_DB_System_Permission . Where ( "`orgPowerType` = 'job' AND `orgOrUserKey` = ? AND `appType` = ?" , userInfo . Position , systemTyep ) . Find ( & masterPowerPost )
masterPower = append ( masterPower , HeBingTable ( masterPowerPost , masterPower ) ... )
}
//根据行政组织
if userInfo . AdminOrg != 0 {
var masterPowerOrg [ ] modelssystempermission . AuthPower
overall . CONSTANT_DB_System_Permission . Where ( "`orgPowerType` = 'org' AND `orgOrUserKey` = ? AND `appType` = ?" , userInfo . AdminOrg , systemTyep ) . Find ( & masterPowerOrg )
orgAdminAry := HeBingTable ( masterPowerOrg , masterPower )
if len ( orgAdminAry ) > 0 {
masterPower = append ( masterPower , orgAdminAry ... )
} else if userInfo . MainDeparment != 0 {
var masterPowerMain [ ] modelssystempermission . AuthPower
overall . CONSTANT_DB_System_Permission . Where ( "`orgPowerType` = 'org' AND `orgOrUserKey` = ? AND `appType` = ?" , userInfo . MainDeparment , systemTyep ) . Find ( & masterPowerMain )
orgMainAry := HeBingTable ( masterPowerMain , masterPower )
if len ( orgMainAry ) > 0 {
masterPower = append ( masterPower , orgMainAry ... )
} else if userInfo . Company != 0 {
var masterPowerCom [ ] modelssystempermission . AuthPower
overall . CONSTANT_DB_System_Permission . Where ( "`orgPowerType` = 'org' AND `orgOrUserKey` = ? AND `appType` = ?" , userInfo . Company , systemTyep ) . Find ( & masterPowerCom )
orgAry := HeBingTable ( masterPowerCom , masterPower )
if len ( orgAry ) > 0 {
masterPower = append ( masterPower , orgAry ... )
}
}
} else if userInfo . Company != 0 {
var masterPowerCom [ ] modelssystempermission . AuthPower
overall . CONSTANT_DB_System_Permission . Where ( "`orgPowerType` = 'org' AND `orgOrUserKey` = ? AND `appType` = ?" , userInfo . Company , systemTyep ) . Find ( & masterPowerCom )
orgAry := HeBingTable ( masterPowerCom , masterPower )
if len ( orgAry ) > 0 {
masterPower = append ( masterPower , orgAry ... )
}
}
} else if userInfo . MainDeparment != 0 {
var masterPowerMain [ ] modelssystempermission . AuthPower
overall . CONSTANT_DB_System_Permission . Where ( "`orgPowerType` = 'org' AND `orgOrUserKey` = ? AND `appType` = ?" , userInfo . MainDeparment , systemTyep ) . Find ( & masterPowerMain )
orgMainAry := HeBingTable ( masterPowerMain , masterPower )
if len ( orgMainAry ) > 0 {
masterPower = append ( masterPower , orgMainAry ... )
} else if userInfo . Company != 0 {
var masterPowerCom [ ] modelssystempermission . AuthPower
overall . CONSTANT_DB_System_Permission . Where ( "`orgPowerType` = 'org' AND `orgOrUserKey` = ? AND `appType` = ?" , userInfo . Company , systemTyep ) . Find ( & masterPowerCom )
orgAry := HeBingTable ( masterPowerCom , masterPower )
if len ( orgAry ) > 0 {
masterPower = append ( masterPower , orgAry ... )
}
}
} else if userInfo . Company != 0 {
var masterPowerCom [ ] modelssystempermission . AuthPower
overall . CONSTANT_DB_System_Permission . Where ( "`orgPowerType` = 'org' AND `orgOrUserKey` = ? AND `appType` = ?" , userInfo . Company , systemTyep ) . Find ( & masterPowerCom )
orgAry := HeBingTable ( masterPowerCom , masterPower )
if len ( orgAry ) > 0 {
masterPower = append ( masterPower , orgAry ... )
}
}
if len ( masterPower ) > 0 {
powerAry = HeBingTable ( masterPower , powerAry )
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 12 - 05 13 : 33 : 0 9
@ 功能 : 合并自定义表单数据
* /
func HeBingTable ( masterPowerOld , masterPower [ ] modelssystempermission . AuthPower ) [ ] modelssystempermission . AuthPower {
for _ , v := range masterPowerOld {
if len ( masterPower ) > 0 {
isWrite := true
for mi , mv := range masterPower {
if mv . AppKey == v . AppKey {
isWrite = false
if v . IsTrue == 1 {
masterPower [ mi ] . IsTrue = v . IsTrue
masterPower [ mi ] . PowerInfo = v . PowerInfo
}
}
}
if isWrite {
masterPower = append ( masterPower , v )
}
} else {
masterPower = append ( masterPower , v )
}
}
return masterPower
}
// 获取综合行政组织上级
func GetFristOrgId ( orgAry [ ] int64 ) ( orgId int64 ) {
var orgLevel [ ] modelshr . OrgContType