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 08: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:08: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 }