You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
252 lines
7.2 KiB
252 lines
7.2 KiB
|
6 months ago
|
package publicmethod
|
||
|
|
|
||
|
|
import (
|
||
|
|
"appPlatform/models/modelshr"
|
||
|
|
"appPlatform/models/modelssystempermission"
|
||
|
|
"appPlatform/overall"
|
||
|
|
"fmt"
|
||
|
|
"strconv"
|
||
|
|
"strings"
|
||
|
|
|
||
|
|
"gorm.io/gorm"
|
||
|
|
)
|
||
|
|
|
||
|
|
/*
|
||
|
|
*
|
||
|
|
@ 作者: 秦东
|
||
|
|
@ 时间: 2025-05-21 08:44:35
|
||
|
|
@ 功能: 获取用户权限
|
||
|
|
@ 参数
|
||
|
|
|
||
|
|
#
|
||
|
|
|
||
|
|
@ 返回值
|
||
|
|
|
||
|
|
#
|
||
|
|
|
||
|
|
@ 方法原型
|
||
|
|
|
||
|
|
#
|
||
|
|
*/
|
||
|
|
func (g *GainUserPower) GetUserPower() (powerInfo SendUserPower) {
|
||
|
|
//正常系统权限配置
|
||
|
|
orgLook := []int64{}
|
||
|
|
if g.RoleId != "" {
|
||
|
|
roleAry := strings.Split(g.RoleId, ",")
|
||
|
|
if len(roleAry) > 0 {
|
||
|
|
var rolePowerList []modelssystempermission.RoleEmpower
|
||
|
|
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.RoleEmpower{}).Where("`state` = 1 AND `system` = ? AND `role_id` IN ?", g.SystemName, roleAry).Updates(&rolePowerList)
|
||
|
|
for _, v := range rolePowerList {
|
||
|
|
if v.Level >= powerInfo.System.Level {
|
||
|
|
powerInfo.System.Level = v.Level
|
||
|
|
}
|
||
|
|
if v.PointId != "" {
|
||
|
|
pointIdAry := strings.Split(v.PointId, ",")
|
||
|
|
for _, pv := range pointIdAry {
|
||
|
|
if !IsInTrue[string](pv, powerInfo.System.PointId) {
|
||
|
|
powerInfo.System.PointId = append(powerInfo.System.PointId, pv)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if v.Operation != "" {
|
||
|
|
operationAry := strings.Split(v.Operation, ",")
|
||
|
|
for _, ov := range operationAry {
|
||
|
|
if !IsInTrue[string](ov, powerInfo.System.Operation) {
|
||
|
|
powerInfo.System.Operation = append(powerInfo.System.Operation, ov)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if v.Organization != "" {
|
||
|
|
orgtionAry := strings.Split(v.Organization, ",")
|
||
|
|
for _, pv := range orgtionAry {
|
||
|
|
pvInt, _ := strconv.ParseInt(pv, 10, 64)
|
||
|
|
if !IsInTrue[int64](pvInt, orgLook) {
|
||
|
|
orgLook = append(orgLook, pvInt)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if g.PostId != 0 && g.OrgId != 0 {
|
||
|
|
var postPower modelssystempermission.Empower
|
||
|
|
postPower.GetCont(map[string]interface{}{"`state`": 1, "`ordid`": g.OrgId, "`post_id`": g.PostId, "`system`": g.SystemName})
|
||
|
|
if postPower.Level >= powerInfo.System.Level {
|
||
|
|
powerInfo.System.Level = postPower.Level
|
||
|
|
}
|
||
|
|
if postPower.PointId != "" {
|
||
|
|
pointIdAry := strings.Split(postPower.PointId, ",")
|
||
|
|
for _, pv := range pointIdAry {
|
||
|
|
if !IsInTrue[string](pv, powerInfo.System.PointId) {
|
||
|
|
powerInfo.System.PointId = append(powerInfo.System.PointId, pv)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if postPower.Operation != "" {
|
||
|
|
operationAry := strings.Split(postPower.Operation, ",")
|
||
|
|
for _, ov := range operationAry {
|
||
|
|
if !IsInTrue[string](ov, powerInfo.System.Operation) {
|
||
|
|
powerInfo.System.Operation = append(powerInfo.System.Operation, ov)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if postPower.Organization != "" {
|
||
|
|
orgtionAry := strings.Split(postPower.Organization, ",")
|
||
|
|
for _, pv := range orgtionAry {
|
||
|
|
pvInt, _ := strconv.ParseInt(pv, 10, 64)
|
||
|
|
if !IsInTrue[int64](pvInt, orgLook) {
|
||
|
|
orgLook = append(orgLook, pvInt)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
_, companyId, departmentId, _, workShopId := GetOrgStructure(g.OrgId)
|
||
|
|
switch powerInfo.System.Level {
|
||
|
|
case 1:
|
||
|
|
powerInfo.System.OrgList = []int64{}
|
||
|
|
var sunOrg GetOrgAllParent
|
||
|
|
sunOrg.GetOrgSun(workShopId)
|
||
|
|
sunOrg.Id = append(sunOrg.Id, workShopId)
|
||
|
|
powerInfo.System.OrgList = append(powerInfo.System.OrgList, sunOrg.Id...)
|
||
|
|
case 2:
|
||
|
|
powerInfo.System.OrgList = []int64{}
|
||
|
|
var sunOrgDepart GetOrgAllParent
|
||
|
|
sunOrgDepart.GetOrgSun(departmentId)
|
||
|
|
sunOrgDepart.Id = append(sunOrgDepart.Id, departmentId)
|
||
|
|
powerInfo.System.OrgList = append(powerInfo.System.OrgList, sunOrgDepart.Id...)
|
||
|
|
case 3:
|
||
|
|
powerInfo.System.OrgList = []int64{}
|
||
|
|
var sunOrgCompan GetOrgAllParent
|
||
|
|
sunOrgCompan.GetOrgSun(companyId)
|
||
|
|
sunOrgCompan.Id = append(sunOrgCompan.Id, companyId)
|
||
|
|
powerInfo.System.OrgList = append(powerInfo.System.OrgList, sunOrgCompan.Id...)
|
||
|
|
case 4:
|
||
|
|
powerInfo.System.OrgList = orgLook
|
||
|
|
case 5:
|
||
|
|
powerInfo.System.OrgList = []int64{}
|
||
|
|
default:
|
||
|
|
}
|
||
|
|
//低代码权限系统配置
|
||
|
|
if g.RoleId != "" {
|
||
|
|
orgLookApp := []int64{}
|
||
|
|
roleAry := strings.Split(g.RoleId, ",")
|
||
|
|
if len(roleAry) > 0 {
|
||
|
|
|
||
|
|
var tablePower []modelssystempermission.CustomTableAuthorize
|
||
|
|
|
||
|
|
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.CustomTableAuthorize{}).Where("`app_sign_code` = ? AND `table_sign_code` = ? AND `role_id` IN ?", g.AppKey, g.TableId, roleAry).Find(&tablePower)
|
||
|
|
|
||
|
|
for _, v := range tablePower {
|
||
|
|
if v.PowerLerver >= powerInfo.System.Level {
|
||
|
|
powerInfo.AppSystem.Level = v.PowerLerver
|
||
|
|
}
|
||
|
|
|
||
|
|
if v.TablePower != "" {
|
||
|
|
tableAry := strings.Split(v.TablePower, ",")
|
||
|
|
for _, tv := range tableAry {
|
||
|
|
if !IsInTrue[string](tv, powerInfo.AppSystem.PointId) {
|
||
|
|
powerInfo.AppSystem.PointId = append(powerInfo.AppSystem.PointId, tv)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if v.ListPower != "" {
|
||
|
|
listAry := strings.Split(v.ListPower, ",")
|
||
|
|
for _, lv := range listAry {
|
||
|
|
if !IsInTrue[string](lv, powerInfo.AppSystem.Operation) {
|
||
|
|
powerInfo.AppSystem.Operation = append(powerInfo.AppSystem.Operation, lv)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if v.Organization != "" {
|
||
|
|
orgtionAry := strings.Split(v.Organization, ",")
|
||
|
|
for _, pv := range orgtionAry {
|
||
|
|
pvInt, _ := strconv.ParseInt(pv, 10, 64)
|
||
|
|
if !IsInTrue[int64](pvInt, orgLookApp) {
|
||
|
|
orgLookApp = append(orgLookApp, pvInt)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
switch powerInfo.AppSystem.Level {
|
||
|
|
case 2:
|
||
|
|
powerInfo.AppSystem.OrgList = []int64{}
|
||
|
|
var sunOrg GetOrgAllParent
|
||
|
|
sunOrg.GetOrgSun(workShopId)
|
||
|
|
sunOrg.Id = append(sunOrg.Id, workShopId)
|
||
|
|
powerInfo.AppSystem.OrgList = append(powerInfo.AppSystem.OrgList, sunOrg.Id...)
|
||
|
|
case 3:
|
||
|
|
powerInfo.AppSystem.OrgList = []int64{}
|
||
|
|
var sunOrgDepart GetOrgAllParent
|
||
|
|
sunOrgDepart.GetOrgSun(departmentId)
|
||
|
|
sunOrgDepart.Id = append(sunOrgDepart.Id, departmentId)
|
||
|
|
powerInfo.AppSystem.OrgList = append(powerInfo.AppSystem.OrgList, sunOrgDepart.Id...)
|
||
|
|
case 4:
|
||
|
|
powerInfo.AppSystem.OrgList = []int64{}
|
||
|
|
var sunOrgCompan GetOrgAllParent
|
||
|
|
sunOrgCompan.GetOrgSun(companyId)
|
||
|
|
sunOrgCompan.Id = append(sunOrgCompan.Id, companyId)
|
||
|
|
powerInfo.AppSystem.OrgList = append(powerInfo.AppSystem.OrgList, sunOrgCompan.Id...)
|
||
|
|
case 5:
|
||
|
|
powerInfo.AppSystem.OrgList = orgLookApp
|
||
|
|
case 6:
|
||
|
|
powerInfo.AppSystem.OrgList = []int64{}
|
||
|
|
default:
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
/*
|
||
|
|
*
|
||
|
|
@ 作者: 秦东
|
||
|
|
@ 时间: 2025-05-22 13:53:17
|
||
|
|
@ 功能: 权限结构查询语句
|
||
|
|
@ 参数
|
||
|
|
授权范围等级(1:本人;2:本岗位;3:本部门;4:本分部;5:指定行政组织;6:所有)
|
||
|
|
|
||
|
|
#
|
||
|
|
|
||
|
|
@ 返回值
|
||
|
|
|
||
|
|
#
|
||
|
|
|
||
|
|
@ 方法原型
|
||
|
|
|
||
|
|
#
|
||
|
|
*/
|
||
|
|
func (g *GainUserPower) MakeSearchSql(gormDb *gorm.DB, userCont modelshr.ManCont, isOdeb string) *gorm.DB {
|
||
|
|
powerInfo := g.GetUserPower()
|
||
|
|
fmt.Printf("\n\n\n等级-----%v------->%v\n\n\n", powerInfo.AppSystem.Level, g)
|
||
|
|
if isOdeb == "yes" {
|
||
|
|
switch powerInfo.AppSystem.Level {
|
||
|
|
case 2, 3, 4:
|
||
|
|
if len(powerInfo.AppSystem.OrgList) > 0 {
|
||
|
|
gormDb = gormDb.Where("`createrOrg` IN ?", powerInfo.AppSystem.OrgList)
|
||
|
|
} else {
|
||
|
|
gormDb = gormDb.Where("`creater` = ?", userCont.Key)
|
||
|
|
}
|
||
|
|
case 6:
|
||
|
|
|
||
|
|
default:
|
||
|
|
gormDb = gormDb.Where("`creater` = ?", userCont.Key)
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
switch powerInfo.AppSystem.Level {
|
||
|
|
case 2, 3, 4:
|
||
|
|
if len(powerInfo.AppSystem.OrgList) > 0 {
|
||
|
|
gormDb = gormDb.Where("f.`createrOrg` IN ?", powerInfo.AppSystem.OrgList)
|
||
|
|
} else {
|
||
|
|
gormDb = gormDb.Where("f.`creater` = ?", userCont.Key)
|
||
|
|
}
|
||
|
|
case 6:
|
||
|
|
|
||
|
|
default:
|
||
|
|
gormDb = gormDb.Where("f.`creater` = ?", userCont.Key)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return gormDb
|
||
|
|
}
|