应用集成平台服务端
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.

768 lines
26 KiB

package publicmethod
import (
"appPlatform/models/modelshr"
"appPlatform/models/modelssystempermission"
"appPlatform/overall"
2 weeks ago
"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 {
2 weeks ago
fmt.Printf("Level------------->%v\n\n", v.Level)
if v.Level >= powerInfo.System.Level {
powerInfo.System.Level = v.Level
}
2 weeks ago
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:
}
}
}
2 weeks ago
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()
2 weeks ago
// 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)
}
2 weeks ago
fmt.Printf("语句7===》%v\n", powerInfo.AppSystem)
case 6:
2 weeks ago
fmt.Printf("语句8===》%v\n", powerInfo.AppSystem)
default:
2 weeks ago
fmt.Printf("语句9===》%v\n", powerInfo.AppSystem)
// gormDb = gormDb.Where("f.`creater` = ?", userCont.Key)
}
}
return gormDb
}
2 weeks ago
/*
*
@ 作者: 秦东
@ 时间: 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)
2 weeks ago
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)
2 weeks ago
}
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
}
2 weeks ago
/*
*
@ 作者: 秦东
@ 时间: 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)
2 weeks ago
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
}
2 weeks ago
/*
*
@ 作者: 秦东
@ 时间: 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
}
2 weeks ago
// 获取综合行政组织上级
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
}