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.
767 lines
26 KiB
767 lines
26 KiB
package publicmethod
|
|
|
|
import (
|
|
"appPlatform/models/modelshr"
|
|
"appPlatform/models/modelssystempermission"
|
|
"appPlatform/overall"
|
|
|
|
"encoding/json"
|
|
"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).Find(&rolePowerList)
|
|
for _, v := range rolePowerList {
|
|
fmt.Printf("Level------------->%v\n\n", v.Level)
|
|
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:
|
|
}
|
|
}
|
|
}
|
|
fmt.Printf("powerInfo.System.Level------------->%v\n\n", powerInfo.System.Level)
|
|
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()
|
|
// js, _ := json.Marshal(powerInfo)
|
|
fmt.Printf("\n\n\n等级-----%v--- ---->%v\n\n\n", isOdeb, powerInfo)
|
|
if isOdeb == "yes" {
|
|
switch powerInfo.AppSystem.Level {
|
|
case 2, 3, 4, 5:
|
|
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, 5:
|
|
if len(powerInfo.AppSystem.OrgList) > 0 {
|
|
gormDb = gormDb.Where("f.`createrOrg` IN ?", powerInfo.AppSystem.OrgList)
|
|
} else {
|
|
gormDb = gormDb.Where("f.`creater` = ?", userCont.Key)
|
|
}
|
|
fmt.Printf("语句7===》%v\n", powerInfo.AppSystem)
|
|
case 6:
|
|
fmt.Printf("语句8===》%v\n", powerInfo.AppSystem)
|
|
default:
|
|
fmt.Printf("语句9===》%v\n", powerInfo.AppSystem)
|
|
// gormDb = gormDb.Where("f.`creater` = ?", userCont.Key)
|
|
}
|
|
}
|
|
|
|
return gormDb
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2025-11-21 09:38:23
|
|
@ 功能: 根据系统参数获取权限
|
|
*/
|
|
func GetSystemPower(powerType, systemTyep, powerId, systemId string) (powerInfo SendSystemPower) {
|
|
powerInfo.PowerType = powerType
|
|
powerInfo.SystemTyep = systemTyep
|
|
powerInfo.PowerId = powerId
|
|
powerInfo.SystemId = systemId
|
|
powerInfo.SystemIsPick = false
|
|
if powerType == "" || systemTyep == "" || powerId == "" {
|
|
return
|
|
}
|
|
if systemId != "system" && systemId == "" {
|
|
return
|
|
}
|
|
|
|
var masterPower modelssystempermission.AuthPower
|
|
gormDb := overall.CONSTANT_DB_System_Permission.Model(&masterPower).Where("`orgPowerType` = ? AND `orgOrUserKey` = ? AND `appType` = ?", powerType, powerId, 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 {
|
|
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 {
|
|
powerInfo.SystemIsPick = true
|
|
}
|
|
var poserList []modelssystempermission.PowerInfo
|
|
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.PowerInfo{}).Where("`authId` = ?", masterPower.Id).Find(&poserList)
|
|
if len(poserList) > 0 {
|
|
for _, v := range poserList {
|
|
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" {
|
|
// 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)
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2025-12-05 09:19:08
|
|
@ 功能: 当个人没有设定自定义权限的时候返回其所在其他维度的赋权情况
|
|
*/
|
|
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
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2025-11-21 16:34:31
|
|
@ 功能: 自定义应用权限
|
|
*/
|
|
func GetSystemAppPower(powerType, systemTyep, powerId string) (powerAry []SendSystemAppPower) {
|
|
// powerInfo.PowerType = powerType
|
|
// powerInfo.SystemTyep = systemTyep
|
|
// powerInfo.PowerId = powerId
|
|
// powerInfo.SystemId = systemId
|
|
// powerInfo.SystemIsPick = false
|
|
if powerType == "" || systemTyep == "" || powerId == "" {
|
|
return
|
|
}
|
|
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 || 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 {
|
|
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)
|
|
}
|
|
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:09
|
|
@ 功能: 合并自定义表单数据
|
|
*/
|
|
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
|
|
overall.CONSTANT_DB_HR.Model(&modelshr.OrgContType{}).Where("`state` = 1 AND `id` IN ?", orgAry).Find(&orgLevel)
|
|
if len(orgLevel) > 0 {
|
|
var OrgIdLevelInfo OrgIdLevel
|
|
OrgIdLevelInfo.Level = 6
|
|
OrgIdLevelInfo.Id = 0
|
|
for _, v := range orgLevel {
|
|
if v.Level <= OrgIdLevelInfo.Level {
|
|
OrgIdLevelInfo.Id = v.Superior
|
|
}
|
|
}
|
|
orgId = OrgIdLevelInfo.Id
|
|
} else {
|
|
orgId = 0
|
|
}
|
|
|
|
return
|
|
}
|
|
|