Browse Source

复制角色

qin_v2
herenshan112 7 days ago
parent
commit
a3d4d10fe5
  1. 3
      api/version1/grantpowers/appMenuPower.go
  2. 17
      api/version1/grantpowers/postpower.go
  3. 8
      api/version1/menus/menus.go
  4. 31
      api/version1/setupRoule/authorization.go
  5. 11
      api/version1/setupRoule/entry.go
  6. 194
      api/version1/setupRoule/power.go
  7. 24
      api/version1/user/setPower.go
  8. 1
      apirouter/appPower/powerRole.go
  9. 1
      overall/publicmethod/getUserPower.go
  10. 1
      overall/publicmethod/setPower.go

3
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{}
}

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

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

31
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)
}
}
}
/*
*
@ 作者: 秦东

11
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"`
}

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

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

1
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) //复制角色
}
}

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

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

Loading…
Cancel
Save