package publicmethod
import (
"appPlatform/middleware/grocerystore"
"appPlatform/models/modelshr"
"appPlatform/models/modelssystempermission"
"appPlatform/overall"
"encoding/json"
"fmt"
"strconv"
)
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 11 - 26 14 : 04 : 11
@ 功能 : 设置权限Redis
* /
func SetupPowerInfo ( userKey int64 , powerInfo string ) {
redisFileKey := fmt . Sprintf ( "SystemPower:AllPower_%v_%v" , overall . CONSTANT_CONFIG . RedisPrefixStr . Alias , userKey )
redisClient := grocerystore . RunRedis ( overall . CONSTANT_REDIS4 )
redisClient . SetRedisTime ( 86400 )
redisClient . Set ( redisFileKey , powerInfo )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2026 - 03 - 21 0 8 : 24 : 04
@ 功能 : 获取个人权限
* /
func ObtainPersonalPermission ( userKey int64 , key ... int ) ( powerInfo SendAllPower ) {
//Step1:获取个人基础信息
var myInfo modelshr . PersonArchives
myInfo . GetCont ( map [ string ] interface { } { "`key`" : userKey } , "`role`" , "`admin_org`" , "`position`" )
//Step2:获取个人拥有的角色
oupkString := strconv . FormatInt ( userKey , 10 )
var roleId [ ] int64
overall . CONSTANT_DB_System_Permission . Model ( & modelssystempermission . SystemRole { } ) . Select ( "`id`" ) . Where ( "`state` = 1 AND `roleuser` IS NOT NULL AND FIND_IN_SET(?, `roleuser`)" , oupkString ) . Find ( & roleId )
fmt . Printf ( "\n\n-------2-----writeRedisData------1----->%v\n\n" , len ( roleId ) )
AllPowerConfig , _ := MyHavePermission ( myInfo . Key , myInfo . AdminOrg , myInfo . Position , roleId , myInfo . Role )
writeRedisData , _ := json . Marshal ( AllPowerConfig )
// fmt.Printf("\n\n------------writeRedisData----------->%v\n\n", string(writeRedisData))
SetupPowerInfo ( myInfo . Key , string ( writeRedisData ) )
json . Unmarshal ( writeRedisData , & powerInfo )
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 11 - 26 14 : 0 8 : 15
@ 功能 : 获取权限
* /
func GetSystemPowerInfo ( userKey int64 , key ... int ) ( powerInfo SendAllPower ) {
if len ( key ) > 0 {
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 )
// fmt.Printf("\n\n------------writeRedisData----------->%v\n\n", string(writeRedisData))
SetupPowerInfo ( myContInfo . Key , string ( writeRedisData ) )
json . Unmarshal ( writeRedisData , & powerInfo )
} else {
redisFileKey := fmt . Sprintf ( "SystemPower:AllPower_%v_%v" , overall . CONSTANT_CONFIG . RedisPrefixStr . Alias , userKey )
redisClient := grocerystore . RunRedis ( overall . CONSTANT_REDIS4 )
isTrue , powerStr := redisClient . Get ( redisFileKey )
// fmt.Printf("\n\n获取权限------GetSystemPowerInfo---------->%v\n\n\n\n", isTrue)
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 )
// fmt.Printf("\n\n------------writeRedisData----------->%v\n\n", string(writeRedisData))
SetupPowerInfo ( myContInfo . Key , string ( writeRedisData ) )
json . Unmarshal ( writeRedisData , & powerInfo )
}
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 11 - 27 15 : 21 : 00
@ 功能 : 获取我的菜单权限
* /
func GetMyMenuPower ( userKey int64 , menuId string ) ( menuPower SystemInfoPower ) {
myPower := GetSystemPowerInfo ( userKey )
for _ , v := range myPower . SystemPower {
if v . AppId == menuId {
menuPower = v
}
}
return
}
func GetMyMenuPowerNew ( userKey int64 , menuId string , key int ) ( menuPower SystemInfoPower ) {
myPower := GetSystemPowerInfo ( userKey , key )
for _ , v := range myPower . SystemPower {
if v . AppId == menuId {
menuPower = v
}
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 12 - 10 13 : 31 : 59
@ 功能 : 获取自定义应用表单权限
* /
func GetMyTableMenuPower ( userKey int64 , menuId string ) ( menuPower SendAppTabelPower ) {
myPower := GetSystemPowerInfo ( userKey )
for _ , v := range myPower . AppSystemPower {
if v . AppId == menuId {
menuPower . FormPower = v . FormPower
menuPower . FormTrue = v . FormTrue
menuPower . ButPower = v . ButPower
}
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 12 - 12 15 : 35 : 29
@ 功能 : 获取自定义应用具体单一表单权限
* /
func GetMyFormPower ( userKey , appKey , formKey int64 ) ( menuPower AppMyPowerTable ) {
appKeyStr := strconv . FormatInt ( appKey , 10 )
formKeyStr := strconv . FormatInt ( formKey , 10 )
myPower := GetSystemPowerInfo ( userKey )
for _ , v := range myPower . AppSystemPower {
if v . AppId == appKeyStr {
for _ , fv := range v . FormPower {
if fv . AppId == formKeyStr {
menuPower = fv
}
}
}
}
return
}