package grantpowers
import (
"appPlatform/models/modelAppPlatform"
"appPlatform/models/modelsschool"
"appPlatform/models/modelsstorage"
"appPlatform/models/modelssystempermission"
"appPlatform/overall"
"appPlatform/overall/publicmethod"
"encoding/json"
"fmt"
"sort"
"strconv"
"strings"
"time"
"github.com/gin-gonic/gin"
)
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 05 - 29 16 : 07 : 22
@ 功能 : 获取岗位已配置的权限
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) GetPostGrantPowers ( c * gin . Context ) {
var requestData GetPostPowerCont
err := c . ShouldBindJSON ( & requestData )
if err != nil {
publicmethod . Result ( 100 , err , c )
return
}
if requestData . OrdId == "" || requestData . OrdId == "0" {
publicmethod . Result ( 1 , requestData , c , "未知行政组织!不可进行配权" )
return
}
if requestData . PostId == "" || requestData . PostId == "0" {
publicmethod . Result ( 1 , requestData , c , "未知岗位!不可进行配权" )
return
}
if requestData . SystemName == "" {
publicmethod . Result ( 1 , requestData , c , "未知配权系统!不可进行配权" )
return
}
var powerList [ ] string
var empowerCont modelssystempermission . Empower
err = empowerCont . GetCont ( map [ string ] interface { } { "`ordid`" : requestData . OrdId , "`post_id`" : requestData . PostId , "`system`" : requestData . SystemName } , "`id`" , "`point_id`" , "`operation`" , "`level`" )
if err != nil {
publicmethod . Result ( 0 , powerList , c )
return
}
fmt . Printf ( " empowerCont.PointId--->%v--->%v\n" , requestData . SystemName , empowerCont . PointId )
switch requestData . SystemName {
case "kpi" :
if empowerCont . PointId != "" || empowerCont . Operation != "" {
powerAry := strings . Split ( empowerCont . PointId , "," )
opeartionAry := strings . Split ( empowerCont . Operation , "," )
powerList = GetSysKpiMenuPower ( powerAry , opeartionAry )
}
case "cangchu" :
if empowerCont . PointId != "" {
powerAry := strings . Split ( empowerCont . PointId , "," )
powerList = GetWmsMenuPower ( powerAry )
}
default :
if empowerCont . PointId != "" {
powerAry := strings . Split ( empowerCont . PointId , "," )
powerList = GetSysAppMenuPower ( powerAry )
}
}
sendData := publicmethod . MapOut [ string ] ( )
sendData [ "powerList" ] = powerList
sendData [ "level" ] = empowerCont . Level
publicmethod . Result ( 0 , sendData , c )
}
/ *
获取平台菜单权限
@ menusPower 以获得的权限
* /
func GetSysAppMenuPower ( menusPower [ ] string ) ( powersList [ ] string ) {
var permList [ ] int64
err := overall . CONSTANT_DB_AppPlatform . Model ( & modelAppPlatform . Menus { } ) . Select ( "`perm`" ) . Where ( "visible IN ?" , [ ] int { 1 , 2 } ) . Find ( & permList ) . Error
if err != nil {
return
}
for _ , v := range permList {
permStr := strconv . FormatInt ( int64 ( v ) , 10 )
// permStr := strconv.Itoa(v.Id)
if publicmethod . IsInTrue [ string ] ( permStr , menusPower ) {
powersList = append ( powersList , fmt . Sprintf ( "m_%v" , permStr ) )
}
}
fmt . Printf ( "------------>%v\n" , powersList )
return
}
/ *
获取KPI菜单权限
@ menusPower 以获得的权限
@ operPower 以获得的权限
* /
func GetSysKpiMenuPower ( menusPower , operPower [ ] string ) ( powersList [ ] string ) {
var menuList [ ] int64
overall . CONSTANT_DB_Master . Model ( & modelsschool . SystemMenuSchool { } ) . Select ( "m_id" ) . Where ( "`m_steat` = 1" ) . Order ( "`m_sort` ASC" ) . Order ( "`m_sort` ASC" ) . Order ( "`m_id` DESC" ) . Find ( & menuList )
fmt . Printf ( "menuList--->%v\n" , menuList )
if len ( menuList ) > 0 {
for _ , mv := range menuList {
permStr := strconv . FormatInt ( mv , 10 )
if publicmethod . IsInTrue [ string ] ( permStr , menusPower ) {
powersList = append ( powersList , fmt . Sprintf ( "m_%v" , permStr ) )
}
}
}
var operList [ ] modelsschool . MenuOperation
overall . CONSTANT_DB_Master . Order ( "menu_id asc" ) . Find ( & operList )
fmt . Printf ( "operList--->%v\n" , operList )
if len ( operList ) > 0 {
for _ , ov := range operList {
operIdStr := strconv . FormatInt ( ov . OperId , 10 )
menuIdStr := strconv . FormatInt ( ov . MenuId , 10 )
if publicmethod . IsInTrue [ string ] ( operIdStr , operPower ) {
powersList = append ( powersList , fmt . Sprintf ( "o_%v_%v" , menuIdStr , operIdStr ) )
}
}
}
return
}
/ *
获取仓储菜单权限
@ menusPower 以获得的权限
* /
func GetWmsMenuPower ( menusPower [ ] string ) ( powersList [ ] string ) {
var permList [ ] int64
err := overall . CONSTANT_DB_Storage . Model ( & modelsstorage . AccesstoAddress { } ) . Select ( "`id`" ) . Where ( "`state` = 1" ) . Find ( & permList ) . Error
if err != nil {
return
}
for _ , v := range permList {
permStr := strconv . FormatInt ( v , 10 )
if publicmethod . IsInTrue [ string ] ( permStr , menusPower ) {
powersList = append ( powersList , fmt . Sprintf ( "m_%v" , permStr ) )
}
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 05 - 30 14 : 36 : 57
@ 功能 : 获取角色已配置的权限
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) GetRoleGrantPowers ( c * gin . Context ) {
var requestData GetRolePowerCont
err := c . ShouldBindJSON ( & requestData )
if err != nil {
publicmethod . Result ( 100 , err , c )
return
}
if requestData . RoleId == "" || requestData . RoleId == "0" {
publicmethod . Result ( 1 , requestData , c , "未知角色!不可进行配权" )
return
}
if requestData . SystemName == "" {
publicmethod . Result ( 1 , requestData , c , "未知配权系统!不可进行配权" )
return
}
var powerList [ ] string
var empowerCont modelssystempermission . RoleEmpower
err = empowerCont . GetCont ( map [ string ] interface { } { "`role_id`" : requestData . RoleId , "`system`" : requestData . SystemName } , "`id`" , "`point_id`" , "`operation`" , "`level`" )
if err != nil {
publicmethod . Result ( 0 , powerList , c )
return
}
switch requestData . SystemName {
case "kpi" :
if empowerCont . PointId != "" || empowerCont . Operation != "" {
powerAry := strings . Split ( empowerCont . PointId , "," )
opeartionAry := strings . Split ( empowerCont . Operation , "," )
powerList = GetSysKpiMenuPower ( powerAry , opeartionAry )
}
case "cangchu" :
fmt . Printf ( "仓储--->%v\n" , empowerCont . PointId )
if empowerCont . PointId != "" {
powerAry := strings . Split ( empowerCont . PointId , "," )
powerList = GetWmsMenuPower ( powerAry )
fmt . Printf ( "仓储--111->%v\n" , powerList )
}
default :
if empowerCont . PointId != "" {
powerAry := strings . Split ( empowerCont . PointId , "," )
powerList = GetSysAppMenuPower ( powerAry )
}
}
sendData := publicmethod . MapOut [ string ] ( )
sendData [ "powerList" ] = powerList
sendData [ "level" ] = empowerCont . Level
publicmethod . Result ( 0 , sendData , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 05 - 13 13 : 57 : 55
@ 功能 : 不分类别的自定义App列表
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) GainAppList ( c * gin . Context ) {
var requestData GainAppIdAndRoleNew
c . ShouldBindJSON ( & requestData )
if requestData . PowerType == "" {
requestData . PowerType = "org"
}
if requestData . AppType == "" {
requestData . AppType = "system"
}
if requestData . RoleId == "" {
requestData . RoleId = "0"
}
powerInfo := publicmethod . GetSystemAppPower ( requestData . PowerType , requestData . AppType , requestData . RoleId )
fmt . Printf ( "获得授权--->%v\n\n\n" , powerInfo )
var custForm modelAppPlatform . CustomerForm
list , _ := custForm . ContMap ( map [ string ] interface { } { "`states`" : 1 , "`classify`" : 3 } , "`name`" , "`signCode`" , "`id`" )
var sendList [ ] interface { }
for i , v := range list {
mapInfo := publicmethod . MapOut [ string ] ( )
mapInfo [ "id" ] = strconv . FormatInt ( v . Id , 10 )
mapInfo [ "signCode" ] = strconv . FormatInt ( v . SignCode , 10 )
mapInfo [ "name" ] = v . Name
mapInfo [ "isPick" ] = false
if i == 0 {
mapInfo [ "isPick" ] = true
}
mapInfo [ "pickAll" ] = false
for _ , pv := range powerInfo {
if pv . SystemId == v . SignCode {
mapInfo [ "pickAll" ] = pv . SystemIsPick
}
}
sendList = append ( sendList , mapInfo )
}
publicmethod . Result ( 0 , sendList , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 05 - 13 15 : 01 : 11
@ 功能 : 获取对应App下边的表单
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) GainAppTableList ( c * gin . Context ) {
var requestData GainAppIdAndRole
err := c . ShouldBindJSON ( & requestData )
if err != nil {
publicmethod . Result ( 100 , err , c )
return
}
if requestData . Id == "" {
publicmethod . Result ( 1 , err , c , "未知App!不可获取表单列表!" )
return
}
if requestData . RoleId == "" {
publicmethod . Result ( 1 , err , c , "未知角色!不可获取表单列表!" )
return
}
roleIdInt , _ := strconv . ParseInt ( requestData . RoleId , 10 , 64 )
// var appInfo modelAppPlatform.CustomerForm
// appInfo.GetCont(map[string]interface{}{"`signCode`":requestData.Id},"``")
var custForm [ ] modelAppPlatform . CustomerForm
overall . CONSTANT_DB_AppPlatform . Model ( & modelAppPlatform . CustomerForm { } ) . Where ( "`states` = 1 AND `groupid` = ? AND `classify` IN (2,4)" , requestData . Id ) . Find ( & custForm )
var sendList [ ] CusterAppTablePower
for _ , v := range custForm {
formPower := GainAppTablePower ( roleIdInt , v . Groupid , v . Id )
var sendInfo CusterAppTablePower
sendInfo . Id = strconv . FormatInt ( v . Id , 10 )
sendInfo . Name = v . Name
sendInfo . SignCode = strconv . FormatInt ( v . SignCode , 10 )
sendInfo . TablePower = formPower . TablePower
sendInfo . ListPower = formPower . ListPower
if v . ListJson != "" {
sendInfo . IstIsTrue = true
} else {
sendInfo . IstIsTrue = false
}
sendInfo . DatePower . Types = formPower . DatePower . Types
sendInfo . DatePower . Attribute = formPower . DatePower . Attribute
sendList = append ( sendList , sendInfo )
}
publicmethod . Result ( 0 , sendList , c )
// publicmethod.Result(0, custForm, c)
}
/ *
计算初始权限
* /
func GainAppTablePower ( roleId , appSignCode , tableId int64 ) ( formPower SendAppTablePower ) {
var tablePower modelssystempermission . CustomTableAuthorize
err := tablePower . GetCont ( map [ string ] interface { } { "`role_id`" : roleId , "`app_sign_code`" : appSignCode , "`table_sign_code`" : tableId } )
if err != nil {
formPower . TablePower = [ ] string { } //表单权限
formPower . ListPower = [ ] string { } //列表权限
formPower . DatePower . Types = 1 //数据权限
formPower . DatePower . Attribute = [ ] int64 { }
return
}
if tablePower . TablePower != "" {
// fmt.Printf("dskjfhsdjklfhlskdjfhlksdhfl---->%v\n\n\n", tablePower.TablePower)
formPower . TablePower = strings . Split ( tablePower . TablePower , "," ) //表单权限
} else {
formPower . TablePower = [ ] string { }
// fmt.Printf("dskjfhsdjklfhlskdjfhlksdhfl---22222->%v\n\n\n", tablePower.TablePower)
}
if tablePower . ListPower != "" {
formPower . ListPower = strings . Split ( tablePower . ListPower , "," ) //表单权限
} else {
formPower . ListPower = [ ] string { }
}
formPower . DatePower . Types = int64 ( tablePower . PowerLerver )
orgStrAry := strings . Split ( tablePower . Organization , "," )
if len ( orgStrAry ) > 0 {
for _ , v := range orgStrAry {
vInt , _ := strconv . ParseInt ( v , 10 , 64 )
formPower . DatePower . Attribute = append ( formPower . DatePower . Attribute , vInt )
}
} else {
formPower . DatePower . Attribute = [ ] int64 { }
}
return
}
/ *
* ‘
@ 作者 : 秦东
@ 时间 : 2025 - 05 - 19 16 : 16 : 16
@ 功能 : 提交APp单一表单权限
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) SetpAppTableForm ( c * gin . Context ) {
var requestData GainAppTableInfo
c . ShouldBindJSON ( & requestData )
if requestData . Id == "" {
publicmethod . Result ( 1 , requestData , c , "未知App!不可获取表单列表!" )
return
}
if requestData . RoleId == "" {
publicmethod . Result ( 1 , requestData , c , "未知角色!不可编辑权限!" )
return
}
if len ( requestData . AppTablePwoer ) < 1 {
publicmethod . Result ( 200 , requestData , c , "没有具体表单!无需配置权限!" )
return
}
var appInfo modelAppPlatform . CustomerForm
appInfo . GetCont ( map [ string ] interface { } { "`signCode`" : requestData . Id } , "id" , "name" )
var msgInfo AppTableMsgInfo
msgInfo . Id = strconv . FormatInt ( appInfo . Id , 10 )
msgInfo . SignCode = requestData . Id
msgInfo . Name = appInfo . Name
for _ , v := range requestData . AppTablePwoer {
syncSeting . Add ( 1 )
go msgInfo . AppTablePowerSave ( requestData . RoleId , requestData . Id , v )
}
syncSeting . Wait ( )
publicmethod . Result ( 0 , msgInfo , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 05 - 19 16 : 35 : 59
@ 功能 :
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * AppTableMsgInfo ) AppTablePowerSave ( roleId , appSignCode string , list CusterAppTablePower ) {
defer syncSeting . Done ( )
var errInfo ErrorInfo
var tablePower modelssystempermission . CustomTableAuthorize
err := tablePower . GetCont ( map [ string ] interface { } { "`role_id`" : roleId , "`app_sign_code`" : appSignCode , "`table_sign_code`" : list . Id } )
if err != nil { //判断是否存在。不存在的情况下进行新增。
var newAddInfo modelssystempermission . CustomTableAuthorize
newAddInfo . Roleid , _ = strconv . ParseInt ( roleId , 10 , 64 ) // 角色ID
newAddInfo . TableSignCode , _ = strconv . ParseInt ( list . Id , 10 , 64 ) // app表格唯一识别符
newAddInfo . AppCignCode , _ = strconv . ParseInt ( appSignCode , 10 , 64 ) // 归谁哪个App
newAddInfo . TablePower = strings . Join ( list . TablePower , "," ) // 表格权限
newAddInfo . ListPower = strings . Join ( list . ListPower , "," ) // 列表权限
newAddInfo . PowerLerver , _ = strconv . Atoi ( strconv . FormatInt ( list . DatePower . Types , 10 ) ) // 授权范围等级(1:本岗位;2:本部门;3:本分部;4:指定行政组织;5:所有)
var attAry [ ] string
if len ( list . DatePower . Attribute ) > 0 {
for _ , v := range list . DatePower . Attribute {
vStr := strconv . FormatInt ( v , 10 )
if ! publicmethod . IsInTrue [ string ] ( vStr , attAry ) {
attAry = append ( attAry , vStr )
}
}
}
newAddInfo . Organization = strings . Join ( attAry , "," ) // 授权范围属性
newAddInfo . Time = time . Now ( ) . Unix ( ) //
err = overall . CONSTANT_DB_System_Permission . Create ( & newAddInfo ) . Error
errInfo . Id = list . Id
errInfo . Name = list . Name
errInfo . Msg = err
if err != nil {
errInfo . Code = 1
} else {
errInfo . Code = 0
}
a . TableMsg = append ( a . TableMsg , errInfo )
} else { //存在的情况下进行编辑。
saveData := publicmethod . MapOut [ string ] ( )
saveData [ "table_power" ] = strings . Join ( list . TablePower , "," )
saveData [ "list_power" ] = strings . Join ( list . ListPower , "," )
saveData [ "power_lerver" ] , _ = strconv . Atoi ( strconv . FormatInt ( list . DatePower . Types , 10 ) )
var attAry [ ] string
if len ( list . DatePower . Attribute ) > 0 {
for _ , v := range list . DatePower . Attribute {
vStr := strconv . FormatInt ( v , 10 )
if ! publicmethod . IsInTrue [ string ] ( vStr , attAry ) {
attAry = append ( attAry , vStr )
}
}
}
saveData [ "organization" ] = strings . Join ( attAry , "," )
saveData [ "time" ] = time . Now ( ) . Unix ( )
var saveRun modelssystempermission . CustomTableAuthorize
err = saveRun . EiteCont ( map [ string ] interface { } { "`id`" : tablePower . Id } , saveData )
errInfo . Id = list . Id
errInfo . Name = list . Name
errInfo . Msg = err
if err != nil {
errInfo . Code = 1
} else {
errInfo . Code = 0
}
a . TableMsg = append ( a . TableMsg , errInfo )
}
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 11 - 11 11 : 35 : 56
@ 功能 : 获取应用基本盘面
* /
func ( a * ApiMethod ) GainAppTableListNew ( c * gin . Context ) {
var requestData GainAppIdAndRoleNew
err := c . ShouldBindJSON ( & requestData )
if err != nil {
publicmethod . Result ( 100 , err , c )
return
}
if requestData . Id == "" {
publicmethod . Result ( 1 , err , c , "未知App!不可获取表单列表!" )
return
}
// if requestData.RoleId == "" {
// publicmethod.Result(1, err, c, "未知角色!不可获取表单列表!")
// return
// }
roleIdInt , _ := strconv . ParseInt ( requestData . RoleId , 10 , 64 )
powerInfo , formButPowerList := publicmethod . GetSystemPower ( requestData . PowerType , requestData . AppType , requestData . RoleId , requestData . Id )
// var appInfo modelAppPlatform.CustomerForm
// appInfo.GetCont(map[string]interface{}{"`signCode`":requestData.Id},"``")
var custForm [ ] modelAppPlatform . CustomerForm
overall . CONSTANT_DB_AppPlatform . Model ( & modelAppPlatform . CustomerForm { } ) . Where ( "`states` = 1 AND `groupid` = ? AND `classify` IN (1,2,4)" , requestData . Id ) . Find ( & custForm )
var sendList [ ] CusterAppTablePower
for _ , v := range custForm {
powerInfo , isOk := CallBackTablePower ( v , powerInfo . PowerList )
if isOk {
sendList = append ( sendList , powerInfo )
} else {
formPower := GainAppTablePower ( roleIdInt , v . Groupid , v . Id )
var sendInfo CusterAppTablePower
sendInfo . Id = strconv . FormatInt ( v . Id , 10 )
sendInfo . Name = v . Name
sendInfo . SignCode = strconv . FormatInt ( v . SignCode , 10 )
sendInfo . TablePower = formPower . TablePower
sendInfo . ListPower = formPower . ListPower
if v . ListJson != "" {
sendInfo . IstIsTrue = true
} else {
sendInfo . IstIsTrue = false
}
sendInfo . DatePower . Types = formPower . DatePower . Types
sendInfo . DatePower . Attribute = formPower . DatePower . Attribute
sendList = append ( sendList , sendInfo )
}
}
outData := publicmethod . MapOut [ string ] ( )
outData [ "list" ] = sendList
outData [ "groupButPower" ] = [ ] string { }
outData [ "formButPower" ] = formButPowerList
//获取app按钮控制
var groupPower modelssystempermission . AuthGroupPower
groupPower . GetCont ( map [ string ] interface { } { "`appType`" : requestData . AppType , "`orgPowerType`" : requestData . PowerType , "`orgOrUserKey`" : roleIdInt } )
if groupPower . PowerInfo != "" {
var butPower [ ] string
json . Unmarshal ( [ ] byte ( groupPower . PowerInfo ) , & butPower )
outData [ "groupButPower" ] = butPower
}
publicmethod . Result ( 0 , outData , c )
// publicmethod.Result(0, custForm, c)
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 11 - 21 17 : 04 : 28
@ 功能 : 回显表单权限
* /
func CallBackTablePower ( tableInfo modelAppPlatform . CustomerForm , powerList [ ] publicmethod . ItemInfo ) ( sendInfo CusterAppTablePower , isOk bool ) {
for _ , v := range powerList {
if tableInfo . Id == v . ItemId {
sendInfo . Id = strconv . FormatInt ( tableInfo . Id , 10 )
sendInfo . Name = tableInfo . Name
sendInfo . SignCode = strconv . FormatInt ( tableInfo . SignCode , 10 )
sendInfo . TablePower = v . TablePower
sendInfo . ListPower = v . ListPower
if tableInfo . ListJson != "" {
sendInfo . IstIsTrue = true
} else {
sendInfo . IstIsTrue = false
}
sendInfo . ListIsAll = v . IsPick
sendInfo . DatePower . Types = int64 ( v . VisibleRange )
var attId [ ] int64
for _ , iv := range v . VisibleOrg {
// ivInt, _ := strconv.ParseInt(iv, 10, 64)
// attId = append(attId, ivInt)
attId = append ( attId , iv )
}
sendInfo . DatePower . Attribute = attId
isOk = true
}
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 12 - 11 13 : 33 : 37
@ 功能 : 回显自定义app菜单权限
* /
func CallBackAppMenuPower ( tableInfo modelAppPlatform . Appmenus , powerList [ ] publicmethod . ItemInfo ) ( sendInfo CusterAppTablePower , isOk bool ) {
for _ , v := range powerList {
if tableInfo . Id == v . ItemId {
sendInfo . Id = strconv . FormatInt ( tableInfo . Id , 10 )
sendInfo . Name = tableInfo . Label
sendInfo . ParentId = tableInfo . Parent
sendInfo . SignCode = strconv . FormatInt ( tableInfo . Id , 10 )
sendInfo . TablePower = v . TablePower
sendInfo . ListPower = v . ListPower
var cfInfo modelAppPlatform . CustomerForm
cfInfo . GetCont ( map [ string ] interface { } { "`signCode`" : tableInfo . Id } , "`listjson`" )
if cfInfo . ListJson != "" {
sendInfo . IstIsTrue = true
} else {
sendInfo . IstIsTrue = false
}
sendInfo . ListIsAll = v . IsPick
sendInfo . DatePower . Types = int64 ( v . VisibleRange )
var attId [ ] int64
for _ , iv := range v . VisibleOrg {
// ivInt, _ := strconv.ParseInt(iv, 10, 64)
// attId = append(attId, ivInt)
attId = append ( attId , iv )
}
sendInfo . DatePower . Attribute = attId
isOk = true
}
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 12 - 17 10 : 00 : 38
@ 功能 : 初始化应用授权选项
* /
func ( a * ApiMethod ) AppInitAuthorization ( c * gin . Context ) {
var requestData GainAppIdAndRoleNew
c . ShouldBindJSON ( & requestData )
if requestData . PowerType == "" {
requestData . PowerType = "org"
}
if requestData . AppType == "" {
requestData . AppType = "system"
}
if requestData . RoleId == "" {
requestData . RoleId = "0"
}
var groupPower modelssystempermission . AuthGroupPower
groupPower . GetCont ( map [ string ] interface { } { "`appType`" : requestData . AppType , "`orgPowerType`" : requestData . PowerType , "`orgOrUserKey`" : requestData . RoleId } )
//Step1:获取分组
var groupIsTrue [ ] string
if groupPower . GroupStatus != "" {
json . Unmarshal ( [ ] byte ( groupPower . GroupStatus ) , & groupIsTrue )
}
var AppPowerInfo [ ] AppGroupInfo
var groupInfo modelAppPlatform . CustomerFormGroup
groupAry , _ := groupInfo . ContMap ( "`state` = 1" )
//进行排序
sort . Slice ( groupAry , func ( i , j int ) bool {
return groupAry [ i ] . Sort < groupAry [ j ] . Sort
} )
for _ , v := range groupAry {
groupId := strconv . FormatInt ( v . Id , 10 )
var groupCont AppGroupInfo
groupCont . Id = groupId //识别符
groupCont . Name = v . Title //名称
groupCont . ParentId = strconv . FormatInt ( v . Superior , 10 ) //上级
groupCont . IsPick = false //是否激活
fmt . Printf ( "%v----%v---%v\n\n\n" , groupId , groupIsTrue , publicmethod . IsInTrue [ string ] ( groupId , groupIsTrue ) )
groupCont . IsTrue = publicmethod . IsInTrue [ string ] ( groupId , groupIsTrue ) //是否选中
groupCont . AppList = GetGroupApp ( v . Id , requestData . PowerType , requestData . AppType , requestData . RoleId , requestData . Id )
// syncSeting.Add(1)
// go groupCont.GetGroupApp()
AppPowerInfo = append ( AppPowerInfo , groupCont )
}
syncSeting . Wait ( )
sendData := publicmethod . MapOut [ string ] ( )
sendData [ "groupButPower" ] = [ ] string { }
if groupPower . PowerInfo != "" {
var butPower [ ] string
json . Unmarshal ( [ ] byte ( groupPower . PowerInfo ) , & butPower )
// fmt.Printf("\n\nbutPower---------->%v\n\n", butPower)
sendData [ "groupButPower" ] = butPower
}
sendData [ "appList" ] = AppPowerInfo
publicmethod . Result ( 0 , sendData , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 12 - 17 11 : 0 8 : 15
@ 功能 : 获取分组App
* /
// func (a *AppGroupInfo) GetGroupApp() {
func GetGroupApp ( uuId int64 , powerType , appType , powerId , systemId string ) ( appAry [ ] AppInfoPower ) {
// defer syncSeting.Done()
var appList [ ] modelAppPlatform . CustomerForm
overall . CONSTANT_DB_AppPlatform . Model ( & modelAppPlatform . CustomerForm { } ) . Select ( "`id`,`signCode` ,`name`,`tablename`" ) . Where ( "`classify` = 3 AND `states` = 1 AND `groupid` = ?" , uuId ) . Find ( & appList )
for _ , v := range appList {
// fmt.Printf("获取分组App----->%v----->%v\n\n", a.Id, len(appList))
var appCont AppInfoPower
appCont . Id = strconv . FormatInt ( v . SignCode , 10 ) //识别符
appCont . Name = v . Name //名称
appCont . ParentId = strconv . FormatInt ( v . Groupid , 10 ) //上级
appCont . IsPick = false
var authId [ ] int64
appCont . IsTrue , appCont . OperationButton , authId = AppCallBackShow ( v . SignCode , powerType , appType , powerId ) //是否选中
appCont . AppMenuTree = AppMenuList ( v . SignCode , authId , powerType , appType , powerId , systemId )
appAry = append ( appAry , appCont )
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 12 - 19 11 : 27 : 42
@ 功能 : 获取APP回显是否选中
# appId Id
# powerType 授权类型
# appType 授权系统
# powerId 项目Id
* /
func AppCallBackShow ( appId int64 , powerType , appType , powerId string ) ( isTrue bool , butPower [ ] string , authId [ ] int64 ) {
isTrue = false
var authPower modelssystempermission . AuthPower
authPower . GetCont ( map [ string ] interface { } { "`appType`" : appType , "`orgPowerType`" : powerType , "`orgOrUserKey`" : powerId , "`appKey`" : appId } , "`id`" , "`isTrue`" , "`appButPower`" )
if authPower . Id == 0 {
if powerType == "person" {
var authPower [ ] modelssystempermission . AuthPower
overall . CONSTANT_DB_System_Permission . Model ( & modelssystempermission . AuthPower { } ) . Where ( " `orgPowerType` IN ('org','job','role') AND `appType` = ? AND `orgOrUserKey` = ? AND `appKey` = ?" , appType , powerId , appId ) . Find ( & authPower )
if len ( authPower ) > 0 {
var allButAry [ ] string
for _ , v := range authPower {
if v . IsTrue == 1 {
isTrue = true
authId = append ( authId , v . Id )
}
if v . AppButPower != "" && v . AppButPower != "null" {
var appButAry [ ] string
json . Unmarshal ( [ ] byte ( v . AppButPower ) , & appButAry )
allButAry = append ( allButAry , appButAry ... )
}
}
if len ( allButAry ) > 0 {
for _ , av := range allButAry {
if ! publicmethod . IsInTrue ( av , butPower ) {
butPower = append ( butPower , av )
}
}
}
}
}
return
}
authId = append ( authId , authPower . Id )
if authPower . IsTrue == 1 {
isTrue = true
}
if authPower . AppButPower != "" && authPower . AppButPower != "null" {
json . Unmarshal ( [ ] byte ( authPower . AppButPower ) , & butPower )
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 12 - 17 11 : 28 : 31
@ 功能 : 获取app菜单
* /
func AppMenuList ( appId int64 , authId [ ] int64 , powerType , appType , powerId , systemId string ) ( menuTree [ ] AppMenuTreeInit ) {
var appMenuList [ ] modelAppPlatform . Appmenus
err := overall . CONSTANT_DB_AppPlatform . Where ( "`state` = 1 AND `isLock` = 2 AND `appkey` = ?" , appId ) . Find ( & appMenuList ) . Error
if err != nil {
return
}
sort . Slice ( appMenuList , func ( i , j int ) bool {
return appMenuList [ i ] . EditTime < appMenuList [ j ] . EditTime
} )
sort . Slice ( appMenuList , func ( i , j int ) bool {
return appMenuList [ i ] . Sort < appMenuList [ j ] . Sort
} )
menuTree = AppTreeMenus ( appId , authId , appMenuList )
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2024 - 04 - 23 13 : 42 : 51
@ 功能 : App菜单树处理
* /
func AppTreeMenus ( parentId int64 , authId [ ] int64 , menuList [ ] modelAppPlatform . Appmenus ) ( menusTree [ ] AppMenuTreeInit ) {
for _ , v := range menuList {
if v . Parent == parentId {
var menuCont AppMenuTreeInit
menuCont . Id = strconv . FormatInt ( v . Id , 10 ) //
menuCont . Name = v . Label //名称
menuCont . ParentId = strconv . FormatInt ( v . Parent , 10 ) //上级
menuCont . AppKey = strconv . FormatInt ( v . Appkey , 10 )
menuCont . IsPick = false //是否激活
menuCont . IsTrue = false //是否选中
menuCont . MenuType = v . Types
menuCont . VisibleRange . Types = 1
menuCont . IsTrue , menuCont . PagePower , menuCont . ListPower , menuCont . FormPower , menuCont . VisibleRange . Types , menuCont . VisibleRange . Attribute = AppMenuCallBackShow ( v . Id , authId )
menuCont . Children = AppTreeMenus ( v . Id , authId , menuList )
menusTree = append ( menusTree , menuCont )
}
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 12 - 19 11 : 27 : 42
@ 功能 : 获取APP中菜单回显是否选中
# appId Id
# powerType 授权类型
# appType 授权系统
# powerId 项目Id
* /
func AppMenuCallBackShow ( menuId int64 , authId [ ] int64 ) ( isTrue bool , pagePower , ListPower , FormPower [ ] string , types int64 , userPower [ ] int64 ) {
isTrue = false
var menuPower [ ] modelssystempermission . PowerInfo
overall . CONSTANT_DB_System_Permission . Model ( & modelssystempermission . PowerInfo { } ) . Where ( " `authId` IN ? AND `appType` = ? AND `itemId` = ? " , authId , menuId ) . Find ( & menuPower )
for _ , v := range menuPower {
if v . IsPick == 1 {
isTrue = true
}
if v . PageButPower != "" && v . PageButPower != "null" {
json . Unmarshal ( [ ] byte ( v . PageButPower ) , & pagePower )
}
if v . TablePower != "" && v . TablePower != "null" {
json . Unmarshal ( [ ] byte ( v . TablePower ) , & FormPower )
}
if v . ListPower != "" && v . ListPower != "null" {
json . Unmarshal ( [ ] byte ( v . ListPower ) , & ListPower )
}
if types <= int64 ( v . VisibleRange ) {
types = int64 ( v . VisibleRange )
}
if v . VisibleOrg != "" && v . VisibleOrg != "null" {
json . Unmarshal ( [ ] byte ( v . VisibleOrg ) , & userPower )
}
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 12 - 18 14 : 39 : 53
@ 功能 : 选项卡App授权模式
* /
func ( a * ApiMethod ) TabsAuthorizationMode ( c * gin . Context ) {
var requestData SaveAppPower
c . ShouldBindJSON ( & requestData )
if requestData . PowerType == "" {
publicmethod . Result ( 1 , requestData , c , "未知授权类型!不可编辑权限!" )
return
}
if requestData . AppType == "" {
publicmethod . Result ( 1 , requestData , c , "未知授权系统!不可编辑权限!" )
return
}
if requestData . RoleId == "" {
publicmethod . Result ( 1 , requestData , c , "未知授权项!不可编辑权限!" )
return
}
if len ( requestData . ListPower ) < 1 {
publicmethod . Result ( 1 , requestData , c , "未知授权内容!不可编辑权限!" )
return
}
var groupIdAry [ ] string
for _ , v := range requestData . ListPower {
if v . IsTrue {
if ! publicmethod . IsInTrue ( v . Id , groupIdAry ) {
groupIdAry = append ( groupIdAry , v . Id )
}
}
// if i == 0 {
// syncSeting.Add(1)
// go appPowerSetup(requestData.AppType, requestData.PowerType, requestData.RoleId, v.AppList)
// }
appPowerSetup ( requestData . AppType , requestData . PowerType , requestData . RoleId , v . AppList )
}
groupIsShow , _ := json . Marshal ( groupIdAry )
//写入App分组权限
var appGroupPower modelssystempermission . AuthGroupPower
err := appGroupPower . GetCont ( map [ string ] interface { } { "`orgPowerType`" : requestData . PowerType , "`appType`" : requestData . AppType , "`orgOrUserKey`" : requestData . RoleId } )
if err == nil && appGroupPower . Id != 0 { //编辑
saveData := publicmethod . MapOut [ string ] ( )
saveData [ "groupStatus" ] = string ( groupIsShow )
saveData [ "time" ] = time . Now ( ) . Unix ( )
var saveInfo modelssystempermission . AuthGroupPower
saveInfo . EiteCont ( map [ string ] interface { } { "`id`" : appGroupPower . Id } , saveData )
} else { //新增
uuid := publicmethod . GetUUid ( 1 )
var saveGroupPower modelssystempermission . AuthGroupPower
saveGroupPower . Id = uuid
saveGroupPower . AppType = requestData . AppType
saveGroupPower . OrgPowerType = requestData . PowerType
saveGroupPower . OrgOrUserKey , _ = strconv . ParseInt ( requestData . RoleId , 10 , 64 )
saveGroupPower . Time = time . Now ( ) . Unix ( )
saveGroupPower . PowerInfo = "['xz','dl','bj','xzapp']"
saveGroupPower . GroupStatus = string ( groupIsShow )
overall . CONSTANT_DB_System_Permission . Create ( & saveGroupPower )
}
// syncSeting.Wait()
publicmethod . Result ( 0 , err , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 12 - 18 15 : 32 : 49
@ 功能 : 批量处理App授权
# uuid 统一编码
# appType 系统类型 ( system : 系统平台 ; app : 自定义表单与应用 )
# powerType 赋权类型 ( org : 组织 ; job : 岗位 ; role : 角色 ; person : 个人 )
# roleId 具体执行人
# appList App列表
* /
func appPowerSetup ( appType , powerType , roleId string , appList [ ] AppInfoPower ) {
// defer syncSeting.Done()
for _ , v := range appList {
// if i == 0 {
uuid := publicmethod . GetUUid ( 1 )
var appPowerInfo modelssystempermission . AuthPower
appPowerInfo . GetCont ( map [ string ] interface { } { "`appType`" : appType , "`orgPowerType`" : powerType , "`orgOrUserKey`" : roleId , "`appKey`" : v . Id } )
appPowerJson , _ := json . Marshal ( v . AppMenuTree )
if appPowerInfo . Id == 0 { //新增
var newAppPowerInfo modelssystempermission . AuthPower
newAppPowerInfo . Id = uuid
newAppPowerInfo . OrgPowerType = powerType
newAppPowerInfo . OrgOrUserKey , _ = strconv . ParseInt ( roleId , 10 , 64 )
newAppPowerInfo . AppType = appType
newAppPowerInfo . AppKey , _ = strconv . ParseInt ( v . Id , 10 , 64 )
newAppPowerInfo . Time = time . Now ( ) . Unix ( )
if v . IsTrue {
newAppPowerInfo . IsTrue = 1 //1:有;非1:无)
} else {
newAppPowerInfo . IsTrue = 0
}
newAppPowerInfo . PowerInfo = string ( appPowerJson )
operAtionBut , _ := json . Marshal ( v . OperationButton )
newAppPowerInfo . AppButPower = string ( operAtionBut )
overall . CONSTANT_DB_System_Permission . Create ( & newAppPowerInfo )
// var menuPowList AppMenuAry
// menuPowList.List = []AppMenuInfo{}
// menuPowList.AppMenuTreeSub(v.AppMenuTree)
// menuPowList.EditAppMenuPoser(uuid)
var oldPower modelssystempermission . PowerInfo
oldPower . DelCont ( map [ string ] interface { } { "`authId`" : uuid } )
var menuPowList AppMenuAry
menuPowList . List = [ ] AppMenuInfo { }
menuPowList . AppMenuTreeSubNew ( v . AppMenuTree , uuid )
} else { //编辑
uuid = appPowerInfo . Id
saveData := publicmethod . MapOut [ string ] ( )
saveData [ "powerInfo" ] = string ( appPowerJson )
if v . IsTrue {
saveData [ "isTrue" ] = 1
} else {
saveData [ "isTrue" ] = 0
}
operAtionBut , _ := json . Marshal ( v . OperationButton )
saveData [ "appButPower" ] = string ( operAtionBut )
saveData [ "time" ] = time . Now ( ) . Unix ( )
var saveAppPowerInfo modelssystempermission . AuthPower
saveAppPowerInfo . EiteCont ( map [ string ] interface { } { "`id`" : appPowerInfo . Id } , saveData )
// var menuPowList AppMenuAry
// menuPowList.List = []AppMenuInfo{}
// menuPowList.AppMenuTreeSub(v.AppMenuTree)
// menuPowList.EditAppMenuPoser(appPowerInfo.Id)
var oldPower modelssystempermission . PowerInfo
oldPower . DelCont ( map [ string ] interface { } { "`authId`" : appPowerInfo . Id } )
var menuPowList AppMenuAry
menuPowList . List = [ ] AppMenuInfo { }
menuPowList . AppMenuTreeSubNew ( v . AppMenuTree , appPowerInfo . Id )
}
// }
}
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 12 - 18 16 : 51 : 04
@ 功能 : 将自定义App菜单权限写入数据库
* /
func ( a * AppMenuAry ) EditAppMenuPoser ( uuid int64 ) {
json , _ := json . Marshal ( a . List )
fmt . Printf ( "\n\n%v----------------->%v\n\n" , uuid , string ( json ) )
var oldPower modelssystempermission . PowerInfo
oldPower . DelCont ( map [ string ] interface { } { "`authId`" : uuid } )
var insterAry [ ] modelssystempermission . PowerInfo
for _ , v := range a . List {
var saveInfo modelssystempermission . PowerInfo
saveInfo . AuthId = uuid //归属权限
saveInfo . ItemId , _ = strconv . ParseInt ( v . Id , 10 , 64 ) //项目ID
if v . IsTrue {
saveInfo . IsPick = 1 //是否有权(1:有;非1:无)
} else {
saveInfo . IsPick = 0 //是否有权(1:有;非1:无)
}
tpAry := MyCreateTablePower ( v . FormPower )
if tpAry == "null" {
tpAry = "[]"
}
saveInfo . TablePower = tpAry //表单权限
lpAry := MyCreateTablePower ( v . ListPower )
if lpAry == "null" {
lpAry = "[]"
}
saveInfo . ListPower = lpAry //列表权限
pgButAry := MyCreateTablePower ( v . PagePower )
if pgButAry == "null" {
pgButAry = "[]"
}
saveInfo . PageButPower = pgButAry //列表权限
inStr := strconv . FormatInt ( v . VisibleRange . Types , 10 )
intVal , _ := strconv . Atoi ( inStr )
saveInfo . VisibleRange = intVal //可见范围(1:本人;2:本岗位;3:本部门;4:本分部;5:指定行政组织;6:所有)
// visibleOrgStr, _ := json.Marshal(v.VisibleRange.Attribute)
// saveInfo.VisibleOrg = string(visibleOrgStr) //可见范围辅助参数
saveInfo . ButPower = "[]" //按钮权限
saveInfo . Time = time . Now ( ) . Unix ( ) //编辑时间
insterAry = append ( insterAry , saveInfo )
}
if len ( insterAry ) > 0 {
overall . CONSTANT_DB_System_Permission . Create ( & insterAry )
}
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 11 - 20 11 : 39 : 52
@ 功能 : 解释自定义表单权限
* /
func MyCreateTablePower ( powerList [ ] string ) string {
if len ( powerList ) <= 0 {
return "[]"
}
var powerAry [ ] string
for _ , v := range powerList {
if ! publicmethod . IsInTrue [ string ] ( v , powerAry ) {
powerAry = append ( powerAry , v )
}
}
jsonStr , _ := json . Marshal ( powerAry )
return string ( jsonStr )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2025 - 12 - 18 16 : 30 : 0 8
@ 功能 : 解析自定义App菜单列表
* /
func ( a * AppMenuAry ) AppMenuTreeSub ( AppMenuTree [ ] AppMenuTreeInit ) {
if len ( AppMenuTree ) > 0 {
for _ , v := range AppMenuTree {
var menuInfo AppMenuInfo
menuInfo . Id = v . Id //识别符
menuInfo . Name = v . Name //名称
menuInfo . ParentId = v . ParentId //上级
menuInfo . IsPick = v . IsPick //是否激活
menuInfo . IsTrue = v . IsTrue //是否选中
menuInfo . AppKey = v . AppKey
menuInfo . PagePower = v . PagePower
menuInfo . FormPower = v . FormPower
menuInfo . ListPower = v . ListPower
menuInfo . VisibleRange = v . VisibleRange
menuInfo . MenuType = v . MenuType
a . List = append ( a . List , menuInfo )
if len ( v . Children ) > 0 {
a . AppMenuTreeSub ( v . Children )
}
}
}
}