package grantpowers
import (
"appPlatform/models/modelAppPlatform"
"appPlatform/models/modelsschool"
"appPlatform/models/modelsstorage"
"appPlatform/models/modelssystempermission"
"appPlatform/overall"
"appPlatform/overall/publicmethod"
"fmt"
"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 custForm modelAppPlatform . CustomerForm
list , _ := custForm . ContMap ( map [ string ] interface { } { "`states`" : 1 , "`classify`" : 3 } , "`name`" , "`signCode`" , "`id`" )
var sendList [ ] interface { }
for _ , 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
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 )
}
}