From a3d4d10fe5f50653c7585e7094af4726e2f9288b Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Fri, 16 Jan 2026 13:23:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=8D=E5=88=B6=E8=A7=92=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/version1/grantpowers/appMenuPower.go | 3 + api/version1/grantpowers/postpower.go | 17 ++ api/version1/menus/menus.go | 8 +- api/version1/setupRoule/authorization.go | 31 ++++ api/version1/setupRoule/entry.go | 11 ++ api/version1/setupRoule/power.go | 194 ++++++++++++++++++++++- api/version1/user/setPower.go | 24 ++- apirouter/appPower/powerRole.go | 1 + overall/publicmethod/getUserPower.go | 1 + overall/publicmethod/setPower.go | 1 + 10 files changed, 283 insertions(+), 8 deletions(-) diff --git a/api/version1/grantpowers/appMenuPower.go b/api/version1/grantpowers/appMenuPower.go index 627d413..ff8566b 100644 --- a/api/version1/grantpowers/appMenuPower.go +++ b/api/version1/grantpowers/appMenuPower.go @@ -224,6 +224,9 @@ func GetGroupAppListIng(uuId, powerType, appType, powerId string) (appAry []AppI if len(appCont.OperationButton) < 1 { appCont.OperationButton = []string{} } + if len(appCont.OperationButton) == 12 { + appCont.IsPick = true + } if len(appCont.AppMenuTree) < 1 { appCont.AppMenuTree = []AppMenuTreeInit{} } diff --git a/api/version1/grantpowers/postpower.go b/api/version1/grantpowers/postpower.go index c11e229..12e0f71 100644 --- a/api/version1/grantpowers/postpower.go +++ b/api/version1/grantpowers/postpower.go @@ -929,6 +929,23 @@ func AppTreeMenus(parentId int64, authId []int64, menuList []modelAppPlatform.Ap 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) + + if len(menuCont.PagePower) == 5 { + menuCont.PagePowerIsAll = true + } else { + menuCont.PagePowerIsAll = false + } + if len(menuCont.FormPower) == 5 { + menuCont.FormPowerIsAll = true + } else { + menuCont.FormPowerIsAll = false + } + if len(menuCont.ListPower) == 8 { + menuCont.ListPowerIsAll = true + } else { + menuCont.ListPowerIsAll = false + } + menuCont.Children = AppTreeMenus(v.Id, authId, menuList) menusTree = append(menusTree, menuCont) } diff --git a/api/version1/menus/menus.go b/api/version1/menus/menus.go index a04b385..622ae05 100644 --- a/api/version1/menus/menus.go +++ b/api/version1/menus/menus.go @@ -54,13 +54,13 @@ func (a *ApiMethod) GetMenusThree(c *gin.Context) { // sort.Slice(menusList, func(i, j int) bool { // return menusList[i].Sort > menusList[j].Sort // }) - // powerInfo := publicmethod.GetSystemPowerInfo(myContInfo.Key) + powerInfo := publicmethod.GetSystemPowerInfo(myContInfo.Key) var havePowerMenu []modelAppPlatform.Menus for _, v := range menusList { - // if publicmethod.IsInTrue[int64](int64(v.Id), powerInfo.MenuIdAry) { - havePowerMenu = append(havePowerMenu, v) - // } + if publicmethod.IsInTrue[int64](int64(v.Id), powerInfo.MenuIdAry) { + havePowerMenu = append(havePowerMenu, v) + } } routerThree := publicmethod.GetMenuRouterThree(0, havePowerMenu) diff --git a/api/version1/setupRoule/authorization.go b/api/version1/setupRoule/authorization.go index 89deed8..377c361 100644 --- a/api/version1/setupRoule/authorization.go +++ b/api/version1/setupRoule/authorization.go @@ -5,6 +5,7 @@ import ( "appPlatform/overall" "appPlatform/overall/publicmethod" "encoding/json" + "fmt" "strconv" "time" @@ -64,6 +65,12 @@ func (a *ApiMethod) SystemAppAuthorization(c *gin.Context) { jsonPowerInfo, _ := json.Marshal(powerInfo) appButPowerJson, _ := json.Marshal(requestData.AppFormButConfig) + if len(requestData.AppFormButConfig) < 1 { + var appButPworAry AppInfoButInfo + appButPworAry.CaijieAppList(requestData.SystemPower) + appButPowerJson, _ = json.Marshal(appButPworAry.Id) + } + fmt.Printf("\n\nappButPowerJson-------------》%v----1----》%v\n\n", requestData.AppFormButConfig, appButPowerJson) err := gormDb.First(&powerMastInfo).Error uuid := publicmethod.GetUUid(1) oukId, _ := strconv.ParseInt(requestData.RoleId, 10, 64) @@ -107,6 +114,30 @@ func (a *ApiMethod) SystemAppAuthorization(c *gin.Context) { publicmethod.Result(0, err, c) } +/* +* +@ 作者: 秦东 +@ 时间: 2026-01-14 08:46:22 +@ 功能: 接卸授权书 +*/ +func (a *AppInfoButInfo) CaijieAppList(appPowerTree []AppPowerTree) { + for _, v := range appPowerTree { + if len(v.ButtenPower) > 0 { + for _, bv := range v.ButtenPower { + if bv.IsTrue && bv.Types == 4 { + idStr := strconv.Itoa(bv.Id) + if !publicmethod.IsInTrue(idStr, a.Id) { + a.Id = append(a.Id, idStr) + } + } + } + } + if len(v.Children) > 0 { + a.CaijieAppList(v.Children) + } + } +} + /* * @ 作者: 秦东 diff --git a/api/version1/setupRoule/entry.go b/api/version1/setupRoule/entry.go index 0fbc370..3336c15 100644 --- a/api/version1/setupRoule/entry.go +++ b/api/version1/setupRoule/entry.go @@ -152,3 +152,14 @@ type SetupRoleMan struct { RoleId int64 `json:"roleId"` UserKey []string `json:"userKey"` } + +// 获取按钮应用按钮 +type AppInfoButInfo struct { + Id []string +} + +// 复制角色 +type CopyRolePowerInfo struct { + publicmethod.PublicId + Label string `json:"label"` +} diff --git a/api/version1/setupRoule/power.go b/api/version1/setupRoule/power.go index 2092a8f..843c107 100644 --- a/api/version1/setupRoule/power.go +++ b/api/version1/setupRoule/power.go @@ -2,10 +2,12 @@ package setupRoule import ( "appPlatform/models/modelAppPlatform" + "appPlatform/models/modelssystempermission" "appPlatform/overall" "appPlatform/overall/publicmethod" "sort" "strconv" + "time" "github.com/gin-gonic/gin" ) @@ -28,7 +30,8 @@ func (a *ApiMethod) AppPowerUnit(c *gin.Context) { requestData.RoleId = "0" } powerInfo, _ := publicmethod.GetSystemPower(requestData.PowerType, requestData.AppSystem, requestData.RoleId, requestData.AppId) - + // jsonVal, _ := json.Marshal(powerInfo) + // fmt.Printf("powerInfo-------------->%v\n\n", string(jsonVal)) var appPowerTrue []AppPowerTree switch requestData.AppSystem { default: @@ -59,10 +62,48 @@ func AppMenuPower(powerType, unitId string, powerInfo publicmethod.SendSystemPow ButMenu = append(ButMenu, v) } } - butList := MenuPower(MenuButList(noButMenu, ButMenu), powerInfo) + // noButMenujsh, _ := json.Marshal(noButMenu) + // ButMenujsh, _ := json.Marshal(ButMenu) + // fmt.Printf("数通智联平台菜单---->%v\n\n\n\n%v\n\n\n\n", string(noButMenujsh), string(ButMenujsh)) + + ButMenues := ButIsPick(ButMenu, powerInfo) + // ButMenujshsss, _ := json.Marshal(ButMenues) + // fmt.Printf("数通智联平台菜单--ButMenujshsss-->%v\n\n\n\n%v\n\n\n\n", string(ButMenujshsss), string(ButMenujsh)) + menhjs := MenuButList(noButMenu, ButMenues) + + // Bumenhjs, _ := json.Marshal(menhjs) + // fmt.Printf("数通智联平台菜单--Bumenhjs-->%v\n\n\n\n%v\n\n\n\n", string(ButMenujshsss), string(Bumenhjs)) + butList := MenuPower(menhjs, powerInfo) return AppMenuTrue(0, butList) } +/* +* +@ 作者: 秦东 +@ 时间: 2026-01-14 09:41:58 +@ 功能: 判断按钮是否选中 +*/ +func ButIsPick(ButMenu []AppPowerInfo, powerInfo publicmethod.SendSystemPower) []AppPowerInfo { + var butIsTrue []string + for _, v := range powerInfo.PowerList { + if len(v.ButPower) > 0 { + for _, bv := range v.ButPower { + if !publicmethod.IsInTrue[string](bv, butIsTrue) { + butIsTrue = append(butIsTrue, bv) + } + } + } + } + if len(butIsTrue) > 0 { + for i, v := range ButMenu { + if publicmethod.IsInTrue[string](v.Perm, butIsTrue) { + ButMenu[i].IsTrue = true + } + } + } + return ButMenu +} + /* * @ 作者: 秦东 @@ -168,10 +209,157 @@ func MenuPower(menuInfo []AppMenuBut, powerInfo publicmethod.SendSystemPower) (m // } v.VisibleRange.Val = pv.VisibleOrg } - v.ButtenPower = JuadgeBut(v.ButtenPower, pv) + // v.ButtenPower = JuadgeBut(v.ButtenPower, pv) } } menuPower = append(menuPower, v) } return } + +/* +* +@ 作者: 秦东 +@ 时间: 2026-01-15 16:12:02 +@ 功能: 复制角色 +*/ +func (a *ApiMethod) CopyRolePower(c *gin.Context) { + var requestData CopyRolePowerInfo + + err := c.ShouldBindJSON(&requestData) + if err != nil { + publicmethod.Result(100, err, c) + return + } + if requestData.Label == "" { + publicmethod.Result(1, requestData, c, "角色为命名!") + return + } + if requestData.Id == "" { + publicmethod.Result(1, requestData, c, "未知角色源头!") + return + } + var roleInfo modelssystempermission.SystemRole + err = roleInfo.GetCont(map[string]interface{}{"`id`": requestData.Id}) + if err != nil { + publicmethod.Result(100, err, c) + return + } + if roleInfo.Name == requestData.Label { + publicmethod.Result(1, requestData, c, "该名称已经存在!不可重复使用!") + return + } + var newRoleInfo modelssystempermission.SystemRole + newRoleInfo.Name = requestData.Label //系统名称"` + newRoleInfo.State = 1 //状态(1:启用;2:禁用;3:删除)"` + newRoleInfo.Time = time.Now().Unix() //创建时间"` + newRoleInfo.Sort = roleInfo.Sort //排序"` + newRoleInfo.Types = roleInfo.Types //类型"` + newRoleInfo.Superior = roleInfo.Superior //上级"` + newRoleInfo.Roleuser = roleInfo.Roleuser //nt:使用人员"` + err = overall.CONSTANT_DB_System_Permission.Create(&newRoleInfo).Error + if err != nil { + publicmethod.Result(100, err, c) + return + } + if roleInfo.Id != 0 { + CopyGroupPower(roleInfo.Id, newRoleInfo) + CopyRolePowerAry(roleInfo.Id, newRoleInfo) + } + publicmethod.Result(0, err, c) +} + +/* +* +@ 作者: 秦东return +@ 时间: 2026-01-16 11:06:28 +@ 功能: 复制角色权限 +*/ +func CopyRolePowerAry(oldRoleId int64, newRoleInfoEntry modelssystempermission.SystemRole) (err error) { + var authPowerList []modelssystempermission.AuthPower + err = overall.CONSTANT_DB_System_Permission.Where("`orgPowerType` = ? AND `orgOrUserKey` = ?", "role", oldRoleId).Find(&authPowerList).Error + if err != nil { + return + } + var saveNewRole []modelssystempermission.AuthPower + for i, v := range authPowerList { + uuid := publicmethod.GetUUid(int64(i)) + var newRoleInfo modelssystempermission.AuthPower + newRoleInfo.Id = uuid // + newRoleInfo.OrgPowerType = v.OrgPowerType //赋权类型(org:组织;job:岗位;role:角色;person:个人)\` + newRoleInfo.OrgOrUserKey = newRoleInfoEntry.Id //行政组织或角色、人员识别符` + newRoleInfo.AppType = v.AppType //系统类型(system:系统平台;app:自定义表单与应用)" ` + newRoleInfo.AppKey = v.AppKey //自定义应用App" ` + newRoleInfo.Time = time.Now().Unix() //d;default:0;comment:编辑时间;NOT NULL" json:"time"` + newRoleInfo.IsTrue = v.IsTrue //default:0;comment:是否有权(1:有;非1:无);NOT NULL" json:"isTrue"` + newRoleInfo.PowerInfo = v.PowerInfo //权限结构体" json:"powerInfo"` + newRoleInfo.AppButPower = v.AppButPower //t:自定义应用按钮授权" json:"appButPower"` + saveNewRole = append(saveNewRole, newRoleInfo) + + CopyRoleItemPower(v.Id, uuid) + } + if len(saveNewRole) > 0 { + err = overall.CONSTANT_DB_System_Permission.Create(&saveNewRole).Error + } + return +} + +/* +* +@ 作者: 秦东 +@ 时间: 2026-01-16 11:25:07 +@ 功能: 复制具体栏目角色权限 +*/ +func CopyRoleItemPower(oldAuthId, newAuthId int64) (err error) { + var oldPowerItemAry []modelssystempermission.PowerInfo + err = overall.CONSTANT_DB_System_Permission.Where("`authId` = ? ", oldAuthId).Find(&oldPowerItemAry).Error + if err != nil { + return + } + if len(oldPowerItemAry) > 0 { + var newSaveData []modelssystempermission.PowerInfo + for _, v := range oldPowerItemAry { + var saveCont modelssystempermission.PowerInfo + saveCont.AuthId = newAuthId //归属权限;` + saveCont.ItemId = v.ItemId //项目` + saveCont.IsPick = v.IsPick //是否有权(1:有;非1:无)` + saveCont.TablePower = v.TablePower //表单权限" + saveCont.ListPower = v.ListPower //列表权限"` + saveCont.VisibleRange = v.VisibleRange //可见范围(1:本人;2:本岗位;3:本部门;4:本分部;5:指定行政组织;6:所有)` + saveCont.VisibleOrg = v.VisibleOrg //可见范围辅助参数" + saveCont.ButPower = v.ButPower //按钮权限" + saveCont.Time = time.Now().Unix() //编辑时间 + saveCont.PageButPower = v.PageButPower //页面表单权限" + newSaveData = append(newSaveData, saveCont) + } + if len(newSaveData) > 0 { + err = overall.CONSTANT_DB_System_Permission.Create(&newSaveData).Error + } + } + return +} + +// 复制角色分组权限 +func CopyGroupPower(oldRoleId int64, newRoleInfo modelssystempermission.SystemRole) (err error) { + var oldRoleGroupAry []modelssystempermission.AuthGroupPower + err = overall.CONSTANT_DB_System_Permission.Where("`orgPowerType` = ? AND `orgOrUserKey` = ?", "role", oldRoleId).Find(&oldRoleGroupAry).Error + if err != nil { + return + } + var saveNewRoleGroup []modelssystempermission.AuthGroupPower + for i, v := range oldRoleGroupAry { + var newCont modelssystempermission.AuthGroupPower + newCont.Id = publicmethod.GetUUid(int64(i)) // + newCont.AppType = v.AppType //系统类型(system:系统平台;app:自定义表单与应用)" + newCont.OrgPowerType = v.OrgPowerType //赋权类型(org:组织;job:岗位;role:角色;person:个人)" + newCont.OrgOrUserKey = newRoleInfo.Id //行政组织或角色、人员识别符 + newCont.Time = time.Now().Unix() //编辑时间 + newCont.PowerInfo = v.PowerInfo //权限结构体" + newCont.GroupStatus = v.GroupStatus //分组权限状态" + saveNewRoleGroup = append(saveNewRoleGroup, newCont) + } + if len(saveNewRoleGroup) > 0 { + err = overall.CONSTANT_DB_System_Permission.Create(&saveNewRoleGroup).Error + } + return +} diff --git a/api/version1/user/setPower.go b/api/version1/user/setPower.go index ca3b8f7..62278e2 100644 --- a/api/version1/user/setPower.go +++ b/api/version1/user/setPower.go @@ -308,6 +308,7 @@ func MergePower(FormTable []AppMyPower) (list []AppMyPower) { isNewTable = false list[li].FormPower[fpi].ListPower = publicmethod.MergeStruct[string](pv.ListPower, fpv.ListPower) list[li].FormPower[fpi].TablePower = publicmethod.MergeStruct[string](pv.TablePower, fpv.TablePower) + list[li].FormPower[fpi].PagePower = publicmethod.MergeStruct[string](pv.PagePower, fpv.PagePower) if pv.Scope < 1 { pv.Scope = 1 } @@ -321,7 +322,13 @@ func MergePower(FormTable []AppMyPower) (list []AppMyPower) { list[li].FormPower = append(list[li].FormPower, pv) } } - + if len(v.ButPower) > 0 { + for _, bv := range v.ButPower { + if !publicmethod.IsInTrue[string](bv, lv.ButPower) { + list[li].ButPower = append(list[li].ButPower, bv) + } + } + } } } if isNewApp { @@ -410,10 +417,25 @@ func (x *XieChengPowerSys) GetAppFormPower(sysType, powerType string, key int64) } else { appSetUpPower.IsPick = false } + // if v.AppKey == 303803342310608896 { + // fmt.Printf("\n\n\n303803342310608896------------------------->%v\n\n\n", v.AppButPower) + // var butMap []string + // err := json.Unmarshal([]byte(v.AppButPower), &butMap) + // fmt.Printf("\n\n\n303803342310608896---------butMap-------%v--------->%v\n\n\n", err, butMap) + // if v.AppButPower != "" && v.AppButPower != "null" { + // err = json.Unmarshal([]byte(v.AppButPower), &appSetUpPower.ButPower) + // fmt.Printf("\n\n\n303803342310608896----appSetUpPower-----butMap-------%v--------->%v\n\n\n", err, appSetUpPower.ButPower) + // } + // } + if v.AppButPower != "" && v.AppButPower != "null" { json.Unmarshal([]byte(v.AppButPower), &appSetUpPower.ButPower) } appSetUpPower.FormTrue, appSetUpPower.FormPower = GetMyAppTableForm(v.Id) + // if v.AppKey == 303803342310608896 { + // jsapUpPw, err := json.Marshal(appSetUpPower) + // fmt.Printf("\n\n\n303803342310608896----jsapUpPw-----butMap-------%v--------->%v\n\n\n", err, string(jsapUpPw)) + // } x.FormTable = append(x.FormTable, appSetUpPower) } } diff --git a/apirouter/appPower/powerRole.go b/apirouter/appPower/powerRole.go index 3ad929d..785a41d 100644 --- a/apirouter/appPower/powerRole.go +++ b/apirouter/appPower/powerRole.go @@ -27,6 +27,7 @@ func (a *ApiRouter) RouterGroup(router *gin.RouterGroup) { apiRouter.POST("systemAppAuthorization", methodBinding.SystemAppAuthorization) //授权 apiRouter.POST("getRolePeople", methodBinding.GetRolePeople) //获取角色使用人 apiRouter.POST("savePickRoleMan", methodBinding.SavePickRoleMan) //保存角色使用人 + apiRouter.POST("copyRolePower", methodBinding.CopyRolePower) //复制角色 } } diff --git a/overall/publicmethod/getUserPower.go b/overall/publicmethod/getUserPower.go index d754111..f3d46f6 100644 --- a/overall/publicmethod/getUserPower.go +++ b/overall/publicmethod/getUserPower.go @@ -331,6 +331,7 @@ func GetSystemPower(powerType, systemTyep, powerId, systemId string) (powerInfo fmt.Printf("没有个人授权--->%v\n\n\n", masterPower) return } + fmt.Printf("tableBut---->223--->%v\n\n\n", tableBut) if masterPower.IsTrue == 1 { powerInfo.SystemIsPick = true } diff --git a/overall/publicmethod/setPower.go b/overall/publicmethod/setPower.go index 3c49e42..850f2c5 100644 --- a/overall/publicmethod/setPower.go +++ b/overall/publicmethod/setPower.go @@ -307,6 +307,7 @@ func MergePower(FormTable []AppMyPower) (list []AppMyPower) { isNewTable = false list[li].FormPower[fpi].ListPower = MergeStruct[string](pv.ListPower, fpv.ListPower) list[li].FormPower[fpi].TablePower = MergeStruct[string](pv.TablePower, fpv.TablePower) + list[li].FormPower[fpi].PagePower = MergeStruct[string](pv.PagePower, fpv.PagePower) if pv.Scope < 1 { pv.Scope = 1 }