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:08: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:08 @ 功能: 解析自定义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) } } } }