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

481 lines
14 KiB

3 years ago
package grantpowers
import (
"appPlatform/models/modelAppPlatform"
"appPlatform/models/modelsschool"
"appPlatform/models/modelsstorage"
"appPlatform/models/modelssystempermission"
"appPlatform/overall"
"appPlatform/overall/publicmethod"
"fmt"
"strconv"
"strings"
"time"
3 years ago
"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`")
3 years ago
if err != nil {
publicmethod.Result(0, powerList, c)
return
}
1 year ago
fmt.Printf(" empowerCont.PointId--->%v--->%v\n", requestData.SystemName, empowerCont.PointId)
3 years ago
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)
3 years ago
}
/*
获取平台菜单权限
@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 {
1 year ago
permStr := strconv.FormatInt(int64(v), 10)
// permStr := strconv.Itoa(v.Id)
3 years ago
if publicmethod.IsInTrue[string](permStr, menusPower) {
powersList = append(powersList, fmt.Sprintf("m_%v", permStr))
}
}
1 year ago
fmt.Printf("------------>%v\n", powersList)
3 years ago
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
3 years ago
err := overall.CONSTANT_DB_Storage.Model(&modelsstorage.AccesstoAddress{}).Select("`id`").Where("`state` = 1").Find(&permList).Error
3 years ago
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
}
3 years ago
/*
*
@ 作者: 秦东
@ 时间: 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`")
3 years ago
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)
3 years ago
}
/*
*
@ 作者: 秦东
@ 时间: 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)
}
}