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) } }