Browse Source

修改BUG

qin_s2
herenshan112 1 day ago
parent
commit
2f0204136b
  1. 2
      api/shiyan/maptostruct/shiyan.go
  2. 5
      api/version1/customerform/form.go
  3. 5
      api/version1/menus/menus.go
  4. 3
      api/version1/taskplatform/taskflowing/appTaskFlow.go
  5. 136
      api/version1/taskplatform/taskflowing/taskFlow.go
  6. 6
      api/version1/taskplatform/taskflowing/workflow.go
  7. 13
      api/version1/taskplatform/taskmanagement/ruanTask.go
  8. 76
      api/version1/user/setPower.go
  9. 48
      api/version1/user/userCont.go
  10. 2
      apirouter/v1/userRouters/pc.go
  11. 38
      config/configDatabase/database.yaml
  12. 3
      log/202603/20260320.txt
  13. 1
      overall/publicmethod/entry.go
  14. 2
      overall/publicmethod/formatOutput.go
  15. 43
      overall/publicmethod/getUserPower.go
  16. 25
      overall/publicmethod/powerRedis.go
  17. 64
      overall/publicmethod/setPower.go
  18. 437
      overall/publicmethod/verifyPermissions.go

2
api/shiyan/maptostruct/shiyan.go

@ -950,7 +950,7 @@ func (a *ApiMethod) Sm4JiemiVal(c *gin.Context) {
publicmethod.ResultNoJiami(100, err, c)
return
}
fmt.Printf("--2--------------->%v---------->%v\n\n", err, err)
fmt.Printf("--2--------------->%v---------->%v\n\n", err, requestData)
if requestData.Data == "" {
publicmethod.ResultNoJiami(100, err, c)
return

5
api/version1/customerform/form.go

@ -1,6 +1,7 @@
package customerform
import (
"appPlatform/api/version1/user"
"appPlatform/models/modelAppPlatform"
"appPlatform/models/modelshr"
"appPlatform/overall"
@ -56,10 +57,12 @@ func (a *ApiMethod) CustomerFormList(c *gin.Context) {
context, _ := c.Get(overall.MyContJwt)
var userCont modelshr.ManCont
userCont.GetLoginCont(context)
AllPowerConfig, _ := user.GetMyPower("person", userCont.Role, userCont.Key, userCont.AdminOrg, userCont.Position)
// fmt.Printf("requestData---->%v---->%v\n", requestData, ersr)
// var formList []modelAppPlatform.CustomerForm
var formList []SendCustomerForm
gormDb := overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.CustomerForm{}).Where("`states` BETWEEN ? AND ?", 1, 2)
gormDb := overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.CustomerForm{}).Where("`signCode` IN ? AND `states` BETWEEN ? AND ?", AllPowerConfig.AppKeyAry, 1, 2)
if requestData.GroupId == "100" {
var oftenAppInfo modelAppPlatform.OftenApp

5
api/version1/menus/menus.go

@ -54,8 +54,8 @@ 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, 1)
// powerInfo := publicmethod.ObtainPersonalPermission(myContInfo.Key, 1)
var havePowerMenu []modelAppPlatform.Menus
for _, v := range menusList {
if publicmethod.IsInTrue[int64](int64(v.Id), powerInfo.MenuIdAry) {
@ -66,6 +66,7 @@ func (a *ApiMethod) GetMenusThree(c *gin.Context) {
routerThree := publicmethod.GetMenuRouterThree(0, havePowerMenu)
publicmethod.Result(0, routerThree, c)
// publicmethod.ResultInterface(powerInfo, c)
}
/*

3
api/version1/taskplatform/taskflowing/appTaskFlow.go

@ -40,6 +40,7 @@ func (a *ApiMethod) GainAppTaskList(c *gin.Context) {
publicmethod.Result(100, err, c)
return
}
fmt.Printf("获取App任务(任务流版本)------>%v\n", string(dataVal))
var requestData AppTaskSearch
err = json.Unmarshal(dataVal, &requestData)
// if err != nil {
@ -68,7 +69,7 @@ func (a *ApiMethod) GainAppTaskList(c *gin.Context) {
case 2: //待办事宜
gormDb = gormDb.Where("`status` = 3 AND FIND_IN_SET(?,`next_executor`)", userCont.Key)
case 3: //已办事宜
gormDb = gormDb.Where("`status` IN (2,3,4) AND FIND_IN_SET(?,`participants`) AND NOT FIND_IN_SET(?,`next_executor`) AND `creater` <> ?", userCont.Key, userCont.Key, userCont.Key)
gormDb = gormDb.Where("`status` IN (2,3,4) AND FIND_IN_SET(?,`participants`) AND NOT FIND_IN_SET(?,`next_executor`) ", userCont.Key, userCont.Key)
case 4: //草稿箱
gormDb = gormDb.Where("`status` = 1 AND `creater` = ?", userCont.Key)
case 5: //抄送我的

136
api/version1/taskplatform/taskflowing/taskFlow.go

@ -2,6 +2,7 @@ package taskflowing
import (
"appPlatform/api/version1/workWechat"
"appPlatform/models/customerForm"
"appPlatform/models/modelAppPlatform"
"appPlatform/models/modelshr"
"appPlatform/models/reviseform"
@ -34,42 +35,136 @@ import (
#
*/
func (a *ApiMethod) TaskFlowList(c *gin.Context) {
// dataVal, err := publicmethod.ReceiveData(c) //接收数据处理
// if err != nil {
// publicmethod.Result(100, err, c)
// return
// }
// fmt.Printf("获取App任务(任务流版本)---1--->%v\n", string(dataVal))
// var requestData AppTaskSearch
// err = json.Unmarshal(dataVal, &requestData)
// if err != nil {
// publicmethod.Result(100, err, c)
// return
// }
// // var requestData QueryTaskFlow
// // err := c.ShouldBindJSON(&requestData)
// // if err != nil {
// // publicmethod.Result(100, err, c)
// // return
// // }
// if requestData.Page == 0 {
// requestData.Page = 1
// }
// if requestData.PageSize == 0 {
// requestData.PageSize = 10
// }
// context, _ := c.Get(overall.MyContJwt)
// var userCont modelshr.ManCont
// userCont.GetLoginCont(context) //当前操作人
// gormDb := overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.RunTaskFlow{}).Select("`id`").Where("appKey = ?", requestData.Id)
// switch requestData.Class {
// case 2: //待办事宜
// gormDb = gormDb.Where("`status` = 3 AND FIND_IN_SET(?,`next_executor`)", userCont.Key)
// case 3: //已办事宜
// gormDb = gormDb.Where("`status` IN (2,3,4) AND FIND_IN_SET(?,`participants`) AND NOT FIND_IN_SET(?,`next_executor`) AND `creater` <> ?", userCont.Key, userCont.Key, userCont.Key)
// case 4: //草稿箱
// gormDb = gormDb.Where("`status` = 1 AND `creater` = ?", userCont.Key)
// default: //我的请求
// gormDb = gormDb.Where("`status` IN (1,2,3,4) AND `creater` = ?", userCont.Key)
// }
// if requestData.Title != "" {
// gormDb = gormDb.Where("`title` LIKE ?", "%"+requestData.Title+"%")
// }
// if requestData.State != 0 {
// gormDb = gormDb.Where("`status` = ?", requestData.State)
// }
// //获取总数
// var total int64
// totalErr := gormDb.Count(&total).Error
// if totalErr != nil {
// total = 0
// }
// var idAry []int64
// gormDb = publicmethod.PageTurningSettings(gormDb, requestData.Page, requestData.PageSize)
// // err = gormDb.Order("`status` asc").Order("`start_time` desc").Find(&idAry).Error
// err = gormDb.Order("`start_time` desc").Find(&idAry).Error
// var userList []SendTaskFlowInfo
// if err != nil || len(idAry) < 1 {
// publicmethod.ResultList(0, requestData.Page, requestData.PageSize, total, int64(len(userList)), userList, c)
// return
// }
// overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.RunTaskFlow{}).Where("`id` IN ?", idAry).Order("`start_time` desc").Find(&userList)
// for i := 0; i < len(userList); i++ {
// userList[i].FormVersionId = strconv.FormatInt(userList[i].VersionId, 10)
// userList[i].IdStr = strconv.FormatInt(userList[i].Id, 10)
// userList[i].FlowKeys = strconv.FormatInt(userList[i].FlowKey, 10)
// userList[i].CreaterInfo = GainSmaillUserInfo[int64](userList[i].Creater)
// if userList[i].NextExecutor != "" {
// nextAry := strings.Split(userList[i].NextExecutor, ",")
// for _, v := range nextAry {
// userList[i].CurrentNodeUser = append(userList[i].CurrentNodeUser, GainSmaillUserInfo[string](v))
// }
// }
// userList[i].StartDate = publicmethod.UnixTimeToDay(userList[i].StartTime, 27)
// if userList[i].NextStep != 0 {
// nodeCont, idTrue := GainCurreNode(userList[i].FlowCont, userList[i].CurrentStep, userList[i].NextStep, userList[i].Status)
// if idTrue {
// userList[i].CurrentNodeName = nodeCont.NodeName
// }
// }
// if userList[i].MastesForm == "" || userList[i].MastesFormJson == "" {
// userList[i].MastesForm, userList[i].MastesFormJson = GainTaskFormData(userList[i].FlowKey)
// }
// if userList[i].Status == 3 && userList[i].NextStep != 0 {
// if userList[i].CurrentStep == 1 {
// userList[i].IsRetract = true
// }
// }
// }
// publicmethod.ResultList(0, requestData.Page, requestData.PageSize, total, int64(len(userList)), userList, c)
//新天地
dataVal, err := publicmethod.ReceiveData(c) //接收数据处理
if err != nil {
publicmethod.Result(100, err, c)
return
}
var requestData QueryTaskFlow
fmt.Printf("获取App任务(任务流版本)------>%v\n", string(dataVal))
var requestData AppTaskSearch
err = json.Unmarshal(dataVal, &requestData)
if err != nil {
publicmethod.Result(100, err, c)
return
}
// var requestData QueryTaskFlow
// err := c.ShouldBindJSON(&requestData)
// if err != nil {
// publicmethod.Result(100, err, c)
// return
// }
// var requestData AppTaskSearch
// c.ShouldBindJSON(&requestData)
if requestData.Id == "" {
publicmethod.Result(100, requestData, c)
return
}
if requestData.Page == 0 {
requestData.Page = 1
}
if requestData.PageSize == 0 {
requestData.PageSize = 10
}
context, _ := c.Get(overall.MyContJwt)
var userCont modelshr.ManCont
userCont.GetLoginCont(context) //当前操作人
gormDb := overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.RunTaskFlow{}).Select("`id`")
gormDb := overall.CONSTANT_DB_CustomerForm.Model(&customerForm.RunFlowTask{}).Select("`id`").Where("appKey = ?", requestData.Id)
switch requestData.Class {
case 2: //待办事宜
gormDb = gormDb.Where("`status` = 3 AND FIND_IN_SET(?,`next_executor`)", userCont.Key)
case 3: //已办事宜
gormDb = gormDb.Where("`status` IN (2,3,4) AND FIND_IN_SET(?,`participants`) AND NOT FIND_IN_SET(?,`next_executor`) AND `creater` <> ?", userCont.Key, userCont.Key, userCont.Key)
gormDb = gormDb.Where("`status` IN (2,3,4) AND FIND_IN_SET(?,`participants`) AND NOT FIND_IN_SET(?,`next_executor`) ", userCont.Key, userCont.Key)
case 4: //草稿箱
gormDb = gormDb.Where("`status` = 1 AND `creater` = ?", userCont.Key)
case 5: //抄送我的
gormDb = gormDb.Where("`status` IN (2,3,4) AND FIND_IN_SET(?,`makeCopy`)", userCont.Key)
default: //我的请求
gormDb = gormDb.Where("`status` IN (1,2,3,4) AND `creater` = ?", userCont.Key)
}
@ -87,19 +182,31 @@ func (a *ApiMethod) TaskFlowList(c *gin.Context) {
}
var idAry []int64
gormDb = publicmethod.PageTurningSettings(gormDb, requestData.Page, requestData.PageSize)
// err = gormDb.Order("`status` asc").Order("`start_time` desc").Find(&idAry).Error
err = gormDb.Order("`start_time` desc").Find(&idAry).Error
var userList []SendTaskFlowInfo
err = gormDb.Order("`update_time` desc").Find(&idAry).Error
var userList []SendAppTaskFlowInfo
if err != nil || len(idAry) < 1 {
publicmethod.ResultList(0, requestData.Page, requestData.PageSize, total, int64(len(userList)), userList, c)
return
}
overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.RunTaskFlow{}).Where("`id` IN ?", idAry).Order("`start_time` desc").Find(&userList)
overall.CONSTANT_DB_CustomerForm.Model(&customerForm.RunFlowTask{}).Where("`id` IN ?", idAry).Order("`start_time` desc").Find(&userList)
for i := 0; i < len(userList); i++ {
userList[i].FormVersionId = strconv.FormatInt(userList[i].VersionId, 10)
if userList[i].VersionId != 0 {
var cfvInfo modelAppPlatform.CustomerFormVersion
cfvInfo.GetCont(map[string]interface{}{"`id`": userList[i].VersionId})
if cfvInfo.PowerStr != "" {
// var powerAry []NodePowerInfoNew
json.Unmarshal([]byte(cfvInfo.PowerStr), &userList[i].PowerAry)
}
}
userList[i].IdStr = strconv.FormatInt(userList[i].Id, 10)
userList[i].RunFlowIdStr = strconv.FormatInt(userList[i].Id, 10)
userList[i].FlowKeys = strconv.FormatInt(userList[i].FlowKey, 10)
userList[i].CreaterInfo = GainSmaillUserInfo[int64](userList[i].Creater)
userList[i].MastersKeyStr = strconv.FormatInt(userList[i].MastersKey, 10)
userList[i].AppKeyStr = strconv.FormatInt(userList[i].AppKey, 10)
userList[i].TableKeyStr = strconv.FormatInt(userList[i].TableKey, 10)
if userList[i].NextExecutor != "" {
nextAry := strings.Split(userList[i].NextExecutor, ",")
for _, v := range nextAry {
@ -111,6 +218,7 @@ func (a *ApiMethod) TaskFlowList(c *gin.Context) {
nodeCont, idTrue := GainCurreNode(userList[i].FlowCont, userList[i].CurrentStep, userList[i].NextStep, userList[i].Status)
if idTrue {
userList[i].CurrentNodeName = nodeCont.NodeName
userList[i].CurrentNodeKey = nodeCont.NodeKey
}
}
if userList[i].MastesForm == "" || userList[i].MastesFormJson == "" {

6
api/version1/taskplatform/taskflowing/workflow.go

@ -185,7 +185,7 @@ func (a *ApiMethod) GainNodeFactor(c *gin.Context) {
}
}
for _, v := range masterUnit {
fmt.Printf("组件类型---->%v\n", v.Type)
// fmt.Printf("组件类型---->%v\n", v.Type)
var sendCont SendFormNodeFactor
if requestData.Types == 1 && publicmethod.IsInTrue[string](v.Type, []string{"expand-user"}) {
sendCont.Id = v.Name
@ -992,8 +992,8 @@ func (a *ApiMethod) GainOrgOfPeopleNodeFactor(c *gin.Context) {
}
for _, v := range masterUnit {
isWrite := true
jsonVal, _ := json.Marshal(v)
fmt.Printf("组件类型---->%v\n", string(jsonVal))
// jsonVal, _ := json.Marshal(v)
// fmt.Printf("组件类型---->%v\n", string(jsonVal))
var sendCont SendRangField
sendCont.Lable = v.Item.Label
sendCont.Fields = v.Name

13
api/version1/taskplatform/taskmanagement/ruanTask.go

@ -1938,6 +1938,9 @@ func (n *NodePublicInfo) CircularParsing(step int, creater modelshr.ManCont, org
case 4:
case 5:
jsonCont, _ := json.Marshal(n.ConditionNodes)
fmt.Printf("\n\n\n条件判断------------->%v\n\n\n", string(jsonCont))
if len(n.ConditionNodes) > 0 { //判断条件,当节点是路由时有效
//根据维度序号排序,确定条件执行的优先级
sort.Slice(n.ConditionNodes, func(i, j int) bool {
@ -1946,6 +1949,8 @@ func (n *NodePublicInfo) CircularParsing(step int, creater modelshr.ManCont, org
lastStrp := step
for _, pv := range n.ConditionNodes { //循环解析相关条件
routerNodes := pv.ResolveRouting(step, creater, orgId, condition, nodelPeople)
routerNodesJson, _ := json.Marshal(routerNodes)
fmt.Printf("\n\n\n条件判断结果------------->%v\n\n\n", string(routerNodesJson))
if len(routerNodes) > 0 {
lastStrp = lastStrp + len(routerNodes)
nodeList = append(nodeList, routerNodes...)
@ -2303,6 +2308,7 @@ func (n *NodePublicInfoES) ResolveRouting(step int, creater modelshr.ManCont, or
if len(n.ConditionList) > 0 {
termAry := 0
for _, v := range n.ConditionList {
fmt.Printf("\n\n解析条件----条件判断类型---->%v\n\n", v.Types)
switch v.Types { //条件类型:1:人员、行政组织、角色;2:自定义字段;3:关联表单字段;
case 1:
if JudgingTermPeoOrgRoles(v.NodeUserList, creater) { //判断申请人是否在可允许范围之内
@ -2356,7 +2362,10 @@ func ProcessMultipleSelectionResults(judging ConditionListInfo, presetVal []Cond
return
}
for _, v := range presetVal {
fmt.Printf("\n\n解析条件--1--处理选择条件---->%v---->%v---->%v\n\n", v.Types, judging.Factorid, v.Factorid)
if v.Types == 3 && judging.Factorid == v.Factorid {
fmt.Printf("\n\n解析条件--2--处理选择条件---->%v\n\n", judging.IsCheckbox)
if judging.IsCheckbox {
//多选
if len(v.Answers) <= len(judging.Answers) { //判断答案个数是否小于等于设定条件值个数
@ -2368,12 +2377,16 @@ func ProcessMultipleSelectionResults(judging ConditionListInfo, presetVal []Cond
}
}
} else { //单选
vJson, _ := json.Marshal(v)
juJson, _ := json.Marshal(judging)
fmt.Printf("\n\n解析条件--3--处理选择条件---->%v---->%v\n\n", string(vJson), string(juJson))
if v.Oneanswer == judging.Oneanswer {
isTrue = true
}
}
}
}
fmt.Printf("\n\n解析条件----处理选择条件---->%v\n\n", isTrue)
return
}

76
api/version1/user/setPower.go

@ -19,7 +19,7 @@ import (
@ 功能: 获取个人系统权限
*/
func GetMyPower(powerType, role string, oupk, org, poetId int64) (allPower SendAllPower, err error) {
oupkString := strconv.FormatInt(oupk, 10)
allPower.AppGroupPower, allPower.AppGroupMenu = GainAppGroupPower(oupk, org, poetId, role)
//获取系统权限
@ -58,13 +58,34 @@ func GetMyPower(powerType, role string, oupk, org, poetId int64) (allPower SendA
mySysMenuPower.GetPowerSystem(systemPower)
allPower.MenuIdAry = mySysMenuPower.MenuId
allPower.SystemPower = mySysMenuPower.SystemPower
syncSeting.Add(1)
go mySysMenuPower.GetOrgSysPower("system", "org", org)
syncSeting.Add(1)
go mySysMenuPower.GetOrgSysPower("system", "job", poetId)
syncSeting.Add(1)
go mySysMenuPower.GetOrgSysPower("system", "role", oupk)
var orgInfo modelshr.AdministrativeOrganization
orgInfo.GetCont(map[string]interface{}{"`id`": org}, "`state`")
if orgInfo.State == 1 {
syncSeting.Add(1)
go mySysMenuPower.GetOrgSysPower("system", "org", org)
} else {
syncSeting.Add(1)
go mySysMenuPower.GetOrgSysPower("system", "org", 312)
}
var postInfo modelshr.Position
postInfo.GetCont(map[string]interface{}{"`id`": poetId}, "`state`")
if postInfo.State == 1 {
syncSeting.Add(1)
go mySysMenuPower.GetOrgSysPower("system", "job", poetId)
}
fmt.Printf("获取角色----1------>%v\n\n", oupkString)
var roleInfo modelssystempermission.SystemRole
err = overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Where("`state` = 1 AND `roleuser` IS NOT NULL AND FIND_IN_SET(?, `roleuser`)", oupkString).First(&roleInfo).Error
// roleInfo.GetCont(map[string]interface{}{"`id`": oupk}, "`state`")
fmt.Printf("获取角色---------->%v\n\n", err)
if roleInfo.State == 1 {
syncSeting.Add(1)
go mySysMenuPower.GetOrgSysPower("system", "role", oupk)
}
syncSeting.Wait()
mySysMenuPower.GetPowerSystem(mySysMenuPower.SysTemList)
allPower.MenuIdAry = mySysMenuPower.MenuId
var butAryStr []string
@ -111,12 +132,29 @@ func GetMyPower(powerType, role string, oupk, org, poetId int64) (allPower SendA
}
} else {
var myAppPower XieChengPowerSys
syncSeting.Add(1)
go myAppPower.GetAppFormPower("app", "org", org)
syncSeting.Add(1)
go myAppPower.GetAppFormPower("app", "job", poetId)
syncSeting.Add(1)
go myAppPower.GetAppFormPower("app", "role", oupk)
var orgInfo modelshr.AdministrativeOrganization
orgInfo.GetCont(map[string]interface{}{"`id`": org}, "`state`")
if orgInfo.State == 1 {
syncSeting.Add(1)
go myAppPower.GetAppFormPower("app", "org", org)
} else {
syncSeting.Add(1)
go myAppPower.GetAppFormPower("app", "org", 312)
}
var postInfo modelshr.Position
postInfo.GetCont(map[string]interface{}{"`id`": poetId}, "`state`")
if postInfo.State == 1 {
syncSeting.Add(1)
go myAppPower.GetAppFormPower("app", "job", poetId)
}
fmt.Printf("获取角色---222------->%v\n\n", oupk)
var roleInfo modelssystempermission.SystemRole
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Where("`state` = 1 AND `roleuser` IS NOT NULL AND FIND_IN_SET(?, `roleuser`)", oupkString).First(&roleInfo)
if roleInfo.State == 1 {
syncSeting.Add(1)
go myAppPower.GetAppFormPower("app", "role", oupk)
}
syncSeting.Wait()
var tableId []string
for _, v := range myAppPower.AppUUID {
@ -401,8 +439,9 @@ func (x *XieChengPowerSys) GetAppFormPower(sysType, powerType string, key int64)
}
}
case "role":
keyStr := strconv.FormatInt(key, 10)
var roleId []int64
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Select("`id`").Where("FIND_IN_SET(?, `roleuser`)", key).Find(&roleId)
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Select("`id`").Where("`state` = 1 AND `roleuser` IS NOT NULL AND FIND_IN_SET(?, `roleuser`)", keyStr).Find(&roleId)
if len(roleId) > 0 {
var appAuthPower []modelssystempermission.AuthPower
overall.CONSTANT_DB_System_Permission.Where("`appType` = ? AND `orgPowerType` = ? AND `orgOrUserKey` IN ? AND `appKey` <> 0", sysType, powerType, roleId).Find(&appAuthPower)
@ -527,7 +566,11 @@ func (x *XieChengPowerSys) GetOrgSysPower(sysType, powerType string, key int64)
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.AuthPowerList{}).Where("`appType` = ? AND `orgPowerType` = ? AND `appKey` = 0 AND `orgOrUserKey` = ?", sysType, powerType, v).Find(&fatherOrgPower)
if len(fatherOrgPower) > 0 {
fmt.Printf("Org--%v--->%v\n\n", v, len(fatherOrgPower))
x.SysTemList = append(x.SysTemList, fatherOrgPower...)
for _, kvf := range fatherOrgPower {
x.SysTemList = append(x.SysTemList, kvf)
}
fmt.Printf("Org-1111-%v--->%v\n\n", v, len(x.SysTemList))
// x.SysTemList = append(x.SysTemList, fatherOrgPower...)
break
}
}
@ -541,8 +584,9 @@ func (x *XieChengPowerSys) GetOrgSysPower(sysType, powerType string, key int64)
// goromDb = goromDb.Where("`orgOrUserKey` IN ?", allFirstOrgId.Id)
// goromDb.Find(&x.SysTemList)
case "role":
keyStr := strconv.FormatInt(key, 10)
var roleId []int64
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Select("`id`").Where("FIND_IN_SET(?, `roleuser`)", key).Find(&roleId)
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Select("`id`").Where("`state` = 1 AND `roleuser` IS NOT NULL AND FIND_IN_SET(?, `roleuser`)", keyStr).Find(&roleId)
fmt.Printf("role----->%v----->%v\n\n", roleId, len(roleId))
if len(roleId) > 0 {
goromDb = goromDb.Where("`orgOrUserKey` IN ?", roleId)

48
api/version1/user/userCont.go

@ -189,34 +189,38 @@ func GainOrgPostLog(uid int64) (postLog []string) {
#func GetUserPower(appType string, postId int64, roleList []string) (menuPoint []string, opeart []string, orgList []string)
*/
func GetUserPower(appType string, postId int64, roleList []string) (menuPoint, opeart, orgList []string, lever int) {
if postId == 0 {
return
}
//获取职务权限
var emPower modelssystempermission.Empower
err := emPower.GetCont(map[string]interface{}{"`post_id`": postId, "`system`": appType})
if err == nil {
if emPower.PointId != "" {
pointIdList := strings.Split(emPower.PointId, ",")
menuPoint = publicmethod.MergeStruct[string](pointIdList, menuPoint)
}
if emPower.Operation != "" {
operationIdList := strings.Split(emPower.Operation, ",")
opeart = publicmethod.MergeStruct[string](operationIdList, opeart)
}
if emPower.Organization != "" {
orgIdList := strings.Split(emPower.Organization, ",")
orgList = publicmethod.MergeStruct[string](orgIdList, orgList)
}
if lever <= emPower.Level {
lever = emPower.Level
if postId != 0 {
var postInfo modelshr.Position
postInfo.GetCont(map[string]interface{}{"`id`": postId}, "`state`")
if postInfo.State == 1 {
//获取职务权限
var emPower modelssystempermission.Empower
err := emPower.GetCont(map[string]interface{}{"`post_id`": postId, "`system`": appType})
if err == nil {
if emPower.PointId != "" {
pointIdList := strings.Split(emPower.PointId, ",")
menuPoint = publicmethod.MergeStruct[string](pointIdList, menuPoint)
}
if emPower.Operation != "" {
operationIdList := strings.Split(emPower.Operation, ",")
opeart = publicmethod.MergeStruct[string](operationIdList, opeart)
}
if emPower.Organization != "" {
orgIdList := strings.Split(emPower.Organization, ",")
orgList = publicmethod.MergeStruct[string](orgIdList, orgList)
}
if lever <= emPower.Level {
lever = emPower.Level
}
}
}
}
// fmt.Printf("职务权限:---->%v\n:---->%v\n", len(roleList), roleList)
//获取角色权限
if len(roleList) > 0 {
var roleId []int64
err = overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Select("`id`").Where("`state` = 1 AND `id` IN ?", roleList).Find(&roleId).Error
err := overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Select("`id`").Where("`state` = 1 AND `id` IN ?", roleList).Find(&roleId).Error
if err == nil && len(roleId) > 0 {
for _, v := range roleId {
var roleEmpower modelssystempermission.RoleEmpower

2
apirouter/v1/userRouters/pc.go

@ -14,6 +14,8 @@ func (a *ApiRouter) RouterGroupPc(router *gin.RouterGroup) {
{
apiRouter.GET("", methodBinding.Index) //入口
apiRouter.POST("", methodBinding.Index) //入口
apiRouter.GET("/", methodBinding.Index) //入口
apiRouter.POST("/8", methodBinding.Index) //入口
apiRouter.GET("get_user_cont", methodBinding.GetUserCont) //获取登陆人信息
apiRouter.POST("statisticalAgeRatio", methodBinding.StatisticalAgeRatio) //获取登陆人信息
apiRouter.POST("lookOnePeopleArchives", methodBinding.LookOnePeopleArchives) //获取人员信息单页(手机)查看权限

38
config/configDatabase/database.yaml

@ -215,17 +215,17 @@ systemPermission:
#应用平台数据库
appPlatformDatabase:
# url_path: '172.20.5.34' #数据库地址
# port: 4000 #数据库端口
# name: 'app_platform' #数据库名称
# username: 'root' #数据库用户民
# password: '9z_Bu28r1*DZ3K6@+a' #数据库密码
url_path: '127.0.0.1' #数据库地址
port: 3306 #数据库端口
url_path: '172.20.5.34' #数据库地址
port: 4000 #数据库端口
name: 'app_platform' #数据库名称
username: 'root' #数据库用户民
password: 'root' #数据库密码
password: '9z_Bu28r1*DZ3K6@+a' #数据库密码
# url_path: '127.0.0.1' #数据库地址
# port: 3306 #数据库端口
# name: 'app_platform' #数据库名称
# username: 'root' #数据库用户民
# password: 'root' #数据库密码
charset: 'utf8mb4' #数据库编码方式
@ -287,17 +287,17 @@ tidbrmaster:
#自定义数据库
customerFormDatabase:
# url_path: '172.20.5.34' #数据库地址
# port: 4000 #数据库端口
# name: 'customer_form' #数据库名称
# username: 'root' #数据库用户民
# password: '9z_Bu28r1*DZ3K6@+a' #数据库密码
url_path: '127.0.0.1' #数据库地址
port: 3306 #数据库端口
url_path: '172.20.5.34' #数据库地址
port: 4000 #数据库端口
name: 'customer_form' #数据库名称
username: 'root' #数据库用户民
password: 'root' #数据库密码
password: '9z_Bu28r1*DZ3K6@+a' #数据库密码
# url_path: '127.0.0.1' #数据库地址
# port: 3306 #数据库端口
# name: 'customer_form' #数据库名称
# username: 'root' #数据库用户民
# password: 'root' #数据库密码
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
@ -350,7 +350,7 @@ charactercolor:
password: '9z_Bu28r1*DZ3K6@+a' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 1500 #最大打开数量
gorm_log: false #是否开启gorm日志
gorm_log: true #是否开启gorm日志
#HR内网数据库
hrdatabaseinside:
url_path: '120.224.6.6' #数据库地址

3
log/202603/20260320.txt

File diff suppressed because one or more lines are too long

1
overall/publicmethod/entry.go

@ -7,6 +7,7 @@ import (
// 协程设置
var syncSeting = sync.WaitGroup{}
var syncSetingSystem = sync.WaitGroup{}
// 协程处理其他权限
type XieChengPowerSys struct {

2
overall/publicmethod/formatOutput.go

@ -287,7 +287,7 @@ func ReceiveData(c *gin.Context) ([]byte, error) {
// fmt.Printf("\n\n接收参数解析------sm4Iv16-------->%v\n\n", sm4Iv16)
// fmt.Printf("\n\n接收参数解析------dataCont.EncryptedFile-------->%v\n\n", dataCont.EncryptedFile)
jieMi, err := SM4DecryptNew(dataCont.EncryptedFile, sm4Iv16)
fmt.Printf("\n\n接收参数解析------err-------->%v------->%v\n\n", err, string(jieMi))
// fmt.Printf("\n\n接收参数解析------err-------->%v------->%v\n\n", err, string(jieMi))
if err != nil {
return json.Marshal(val)
}

43
overall/publicmethod/getUserPower.go

@ -316,6 +316,45 @@ func GetSystemPower(powerType, systemTyep, powerId, systemId string) (powerInfo
default:
}
err := gormDb.First(&masterPower).Error
isPower := false
switch masterPower.OrgPowerType {
case "role":
var roleInfo modelssystempermission.SystemRole
roleInfo.GetCont(map[string]interface{}{"`id`": powerId}, "`state`")
if roleInfo.State != 1 {
isPower = true
}
case "org":
var orgInfo modelshr.AdministrativeOrganization
orgInfo.GetCont(map[string]interface{}{"`id`": powerId}, "`state`")
if orgInfo.State != 1 {
isPower = true
}
case "person":
var usInfo modelshr.PersonArchives
usInfo.GetCont(map[string]interface{}{"`key`": powerId}, "`emp_type`")
if usInfo.EmpType > 10 {
isPower = true
}
case "job":
var postInfo modelshr.Position
postInfo.GetCont(map[string]interface{}{"`id`": powerId}, "`state`")
if postInfo.State != 1 {
isPower = true
}
default:
}
if isPower { //没有授权的话,采用最外层性质组织的权限
gormDb := overall.CONSTANT_DB_System_Permission.Model(&masterPower).Where("`orgPowerType` = ? AND `orgOrUserKey` = ? AND `appType` = ?", powerType, 312, systemTyep)
switch systemTyep {
case "app":
gormDb = gormDb.Where("`appKey` = ?", systemId)
case "system":
gormDb = gormDb.Where("`appKey` = 0")
default:
}
err = gormDb.First(&masterPower).Error
}
if masterPower.AppButPower != "" {
json.Unmarshal([]byte(masterPower.AppButPower), &tableBut)
}
@ -324,7 +363,7 @@ func GetSystemPower(powerType, systemTyep, powerId, systemId string) (powerInfo
var userInfo modelshr.PersonArchives
userInfo.GetCont(map[string]interface{}{"`key`": powerId}, "`id`", "`company`", "`maindeparment`", "`admin_org`", "`position`")
var roleId []int64
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Select("`id`").Where("FIND_IN_SET(?, `roleuser`)", powerId).Find(&roleId)
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Select("`id`").Where("`state` = 1 AND `roleuser` IS NOT NULL AND FIND_IN_SET(?, `roleuser`)", powerId).Find(&roleId)
powerInfo.SystemIsPick, powerInfo.PowerList, tableBut = PersonalAuthorization(systemTyep, systemId, roleId, userInfo)
}
@ -663,7 +702,7 @@ func GetSystemAppPower(powerType, systemTyep, powerId string) (powerAry []SendSy
var userInfo modelshr.PersonArchives
userInfo.GetCont(map[string]interface{}{"`key`": powerId}, "`id`", "`company`", "`maindeparment`", "`admin_org`", "`position`")
var roleId []int64
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Select("`id`").Where("FIND_IN_SET(?, `roleuser`)", powerId).Find(&roleId)
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Select("`id`").Where("`state` = 1 AND `roleuser` IS NOT NULL AND FIND_IN_SET(?, `roleuser`)", powerId).Find(&roleId)
// PersonalAuthorizationApp(systemTyep, powerId, roleId, userInfo)
// powerAry = append(powerAry, )
powerAryList := PersonalAuthorizationApp(systemTyep, powerId, roleId, userInfo)

25
overall/publicmethod/powerRedis.go

@ -3,6 +3,7 @@ package publicmethod
import (
"appPlatform/middleware/grocerystore"
"appPlatform/models/modelshr"
"appPlatform/models/modelssystempermission"
"appPlatform/overall"
"encoding/json"
@ -23,6 +24,30 @@ func SetupPowerInfo(userKey int64, powerInfo string) {
redisClient.Set(redisFileKey, powerInfo)
}
/*
*
@ 作者: 秦东
@ 时间: 2026-03-21 08:24:04
@ 功能: 获取个人权限
*/
func ObtainPersonalPermission(userKey int64, key ...int) (powerInfo SendAllPower) {
//Step1:获取个人基础信息
var myInfo modelshr.PersonArchives
myInfo.GetCont(map[string]interface{}{"`key`": userKey}, "`role`", "`admin_org`", "`position`")
//Step2:获取个人拥有的角色
oupkString := strconv.FormatInt(userKey, 10)
var roleId []int64
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Select("`id`").Where("`state` = 1 AND `roleuser` IS NOT NULL AND FIND_IN_SET(?, `roleuser`)", oupkString).Find(&roleId)
fmt.Printf("\n\n-------2-----writeRedisData------1----->%v\n\n", len(roleId))
AllPowerConfig, _ := MyHavePermission(myInfo.Key, myInfo.AdminOrg, myInfo.Position, roleId, myInfo.Role)
writeRedisData, _ := json.Marshal(AllPowerConfig)
// fmt.Printf("\n\n------------writeRedisData----------->%v\n\n", string(writeRedisData))
SetupPowerInfo(myInfo.Key, string(writeRedisData))
json.Unmarshal(writeRedisData, &powerInfo)
return
}
/*
*
@ 作者: 秦东

64
overall/publicmethod/setPower.go

@ -6,6 +6,7 @@ import (
"appPlatform/models/modelssystempermission"
"appPlatform/overall"
"encoding/json"
"errors"
"fmt"
"strconv"
"strings"
@ -29,6 +30,7 @@ func GetMyPowerPusr(powerType, role string, oupk, org, poetId int64) (allPower S
for _, v := range systemPower {
var sysPower SystemInfoPower
sysPower.AppId = strconv.FormatInt(v.ItemId, 10)
fmt.Printf("\n\nsystemPower---1111111------>%v----->%v\n\n", v.IsPick, v.AuthId)
if v.IsPick == 1 {
sysPower.IsPick = true
if !IsInTrue[int64](v.ItemId, allPower.MenuIdAry) {
@ -61,6 +63,7 @@ func GetMyPowerPusr(powerType, role string, oupk, org, poetId int64) (allPower S
syncSeting.Add(1)
go mySysMenuPower.GetOrgSysPower("system", "role", oupk)
syncSeting.Wait()
mySysMenuPower.GetPowerSystem(mySysMenuPower.SysTemList)
allPower.MenuIdAry = mySysMenuPower.MenuId
var butAryStr []string
@ -490,9 +493,11 @@ func (x *XieChengPowerSys) GetOrgSysPower(sysType, powerType string, key int64)
case "org":
var orgPowList []modelssystempermission.AuthPowerList
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.AuthPowerList{}).Where("`appType` = ? AND `orgPowerType` = ? AND `appKey` = 0 AND `orgOrUserKey` = ? ", sysType, powerType, key).Find(&orgPowList)
goromDb.Where("`orgOrUserKey` = ? ", key).Find(&orgPowList)
if len(orgPowList) > 0 {
x.SysTemList = append(x.SysTemList, orgPowList...)
// x.SysTemList = append(x.SysTemList, orgPowList...)
x.quchong(orgPowList)
WriteLog("write", "写入自定义表单", orgPowList, errors.New("org1"))
} else {
var allFirstOrgId GetOrgAllParent
allFirstOrgId.GetOrgFirst(key)
@ -502,13 +507,16 @@ func (x *XieChengPowerSys) GetOrgSysPower(sysType, powerType string, key int64)
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.AuthPowerList{}).Where("`appType` = ? AND `orgPowerType` = ? AND `appKey` = 0 AND `orgOrUserKey` = ?", sysType, powerType, v).Find(&fatherOrgPower)
if len(fatherOrgPower) > 0 {
fmt.Printf("Org--%v--->%v\n\n", v, len(fatherOrgPower))
x.SysTemList = append(x.SysTemList, fatherOrgPower...)
// x.SysTemList = append(x.SysTemList, fatherOrgPower...)
x.quchong(fatherOrgPower)
break
}
WriteLog("write", v, fatherOrgPower, errors.New("org2"))
}
}
}
WriteLog("write", "写入自定义表单", orgPowList, errors.New("org12"))
// var allFirstOrgId GetOrgAllParent
// allFirstOrgId.GetOrgFirst(key)
// allFirstOrgId.Id = append(allFirstOrgId.Id, key)
@ -519,25 +527,66 @@ func (x *XieChengPowerSys) GetOrgSysPower(sysType, powerType string, key int64)
var roleId []int64
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Select("`id`").Where("FIND_IN_SET(?, `roleuser`)", key).Find(&roleId)
fmt.Printf("role----->%v----->%v\n\n", roleId, len(roleId))
var orgPowList []modelssystempermission.AuthPowerList
if len(roleId) > 0 {
goromDb = goromDb.Where("`orgOrUserKey` IN ?", roleId)
goromDb.Find(&x.SysTemList)
goromDb.Find(&orgPowList)
}
// if len(orgPowList) > 0 {
// x.SysTemList = append(x.SysTemList, orgPowList...)
// }
x.quchong(orgPowList)
WriteLog("write", "写入自定义表单", orgPowList, errors.New("role"))
default:
// fmt.Printf("post----->%v\n\n", key)
var orgPowList []modelssystempermission.AuthPowerList
goromDb = goromDb.Where("`orgOrUserKey` = ?", key)
goromDb.Find(&x.SysTemList)
goromDb.Find(&orgPowList)
// if len(orgPowList) > 0 {
// x.SysTemList = append(x.SysTemList, orgPowList...)
// }
x.quchong(orgPowList)
WriteLog("write", "写入自定义表单", orgPowList, errors.New("default"))
}
// outData := MapOut[string]()
// outData["RoleType"] = powerType
// outData["SysTemList"] = x.SysTemList
// if len(systemPower) > 0 {
// x.GetPowerSystem(systemPower)
// }
}
// 去重写入
func (x *XieChengPowerSys) quchong(orgPowList []modelssystempermission.AuthPowerList) {
if len(orgPowList) > 0 {
if len(x.SysTemList) > 0 {
for _, v := range orgPowList {
isTrue := true
for oi, ov := range x.SysTemList {
if v.Id == ov.Id {
isTrue = false
if v.IsPick == 1 {
x.SysTemList[oi].IsPick = v.IsPick
}
}
}
if isTrue {
x.SysTemList = append(x.SysTemList, v)
}
}
} else {
x.SysTemList = append(x.SysTemList, orgPowList...)
}
}
}
func (x *XieChengPowerSys) GetPowerSystem(list []modelssystempermission.AuthPowerList) {
// fmt.Printf("管理范围----list--->%v--->%v\n\n\n", len(list), len(x.SystemPower))
fmt.Printf("管理范围----list--->%v--->%v\n\n\n", len(list), len(x.SystemPower))
for _, v := range list {
// fmt.Printf("管理范围----list--->%v--->%v--->%v\n\n\n", len(list), v.VisibleRange, len(v.VisibleOrg))
appId := strconv.FormatInt(v.ItemId, 10)
@ -627,6 +676,7 @@ func (x *XieChengPowerSys) GetPowerSystem(list []modelssystempermission.AuthPowe
}
x.SystemPower = append(x.SystemPower, menuPower)
}
fmt.Printf("\n\nsystemPower---1111111------>%v----->%v----->%v\n\n", v.IsPick, v.ItemId, x.MenuId)
if v.IsPick == 1 {
// idStr := strconv.FormatInt(v.ItemId, 10)
if !IsInTrue[int64](v.ItemId, x.MenuId) {

437
overall/publicmethod/verifyPermissions.go

@ -0,0 +1,437 @@
package publicmethod
import (
"appPlatform/models/modelAppPlatform"
"appPlatform/models/modelssystempermission"
"appPlatform/overall"
"encoding/json"
"fmt"
"strconv"
)
/*
*
@ 作者: 秦东
@ 时间: 2026-03-21 08:37:17
@ 功能: 解析个人拥有的权限
*/
func MyHavePermission(userKey, orgId, postId int64, roleoId []int64, roleStr string) (allPower SendAllPowers, err error) {
allPower.AppGroupMenu, allPower.AppGroupPower = MyAppGroupPoswer(userKey, orgId, postId, roleoId)
//获取个人的系统权限设置
var mySystemPower []modelssystempermission.AuthPowerList
err = overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.AuthPowerList{}).Where("`appType` = 'system' AND `orgPowerType` = 'person' AND `orgOrUserKey` = ? ", userKey).Find(&mySystemPower).Error
fmt.Printf("\n\n-------1-----mySystemPower------1----->%v\n\n", len(mySystemPower))
if len(mySystemPower) > 0 { //存在个人设置的单一权限
for _, v := range mySystemPower {
// if v.AppType == "app" { //低代码自定义表单权限
// } else { //低代码系统权限
var sysPower SystemInfoPower
sysPower.AppId = strconv.FormatInt(v.ItemId, 10)
sysPower.IsPick = false
if v.IsPick == 1 {
sysPower.IsPick = true
//处理已选中的菜单
if !IsInTrue[int64](v.ItemId, allPower.MenuIdAry) {
allPower.MenuIdAry = append(allPower.MenuIdAry, v.ItemId)
}
//处理菜单按钮权限
if v.ButPower != "" && v.ButPower != "null" {
var butIdStrAry []string
json.Unmarshal([]byte(v.ButPower), &butIdStrAry)
if len(butIdStrAry) > 0 {
for _, bv := range butIdStrAry {
if !IsInTrue[string](bv, sysPower.ButIdAry) {
sysPower.ButIdAry = append(sysPower.ButIdAry, bv)
}
if !IsInTrue[string](bv, allPower.MenuButIdAry) {
allPower.MenuButIdAry = append(allPower.MenuButIdAry, bv)
}
}
}
}
sysPower.Scope = v.VisibleRange
if v.VisibleRange == 5 && v.ButPower != "" && v.ButPower != "null" { //自定义可见范围
var scopeManAry []int
json.Unmarshal([]byte(v.VisibleOrg), &scopeManAry) //解析可见分为
if len(scopeManAry) > 0 {
for _, bv := range scopeManAry {
if !IsInTrue[int](bv, sysPower.ScopeManAry) {
sysPower.ScopeManAry = append(sysPower.ScopeManAry, bv)
}
}
}
}
}
allPower.SystemPower = append(allPower.SystemPower, sysPower)
// }
}
} else { //不存在个人单独设置的权限
var mySysMenuPower XieChengPowerSys
syncSetingSystem.Add(1)
go mySysMenuPower.HaveSystemMeunPower("system", "org", orgId)
syncSetingSystem.Add(1)
go mySysMenuPower.HaveSystemMeunPower("system", "job", postId)
for _, rv := range roleoId {
syncSetingSystem.Add(1)
go mySysMenuPower.HaveSystemMeunPower("system", "role", rv)
}
syncSetingSystem.Wait()
fmt.Printf("\n\n-------1-----mySystemPower------2----->%v\n\n", len(mySysMenuPower.SysTemList))
mySysMenuPower.GetPowerSystem(mySysMenuPower.SysTemList)
allPower.MenuIdAry = mySysMenuPower.MenuId
var butAryStr []string
for _, v := range allPower.SystemPower {
for _, bv := range v.ButIdAry {
butAryStr = append(butAryStr, bv)
}
}
allPower.MenuButIdAry = append(allPower.MenuButIdAry, butAryStr...)
var menuList []modelAppPlatform.Menus
if len(mySysMenuPower.MenuId) > 0 {
overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.Menus{}).Select("`id`,`name`").Where("`id` IN ?", mySysMenuPower.MenuId).Find(&menuList)
}
for _, v := range menuList {
for si, sv := range mySysMenuPower.SystemPower {
if strconv.Itoa(v.Id) == sv.AppId {
mySysMenuPower.SystemPower[si].Name = v.Name
}
}
}
allPower.SystemPower = mySysMenuPower.SystemPower
}
//获取低代码平台自定义表单权限
var myAppSystemPower []modelssystempermission.AuthPowerList
err = overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.AuthPowerList{}).Where("`appType` = 'app' AND `orgPowerType` = 'person' AND `orgOrUserKey` = ? ", userKey).Find(&myAppSystemPower).Error
fmt.Printf("\n\n-------2-----myAppSystemPower------1----->%v\n\n", len(myAppSystemPower))
if len(myAppSystemPower) > 0 { //存在个人设置的单一权限
for _, v := range myAppSystemPower {
var myAppInfo AppMyPower
myAppInfo.AppId = strconv.FormatInt(v.AppKey, 10)
if v.IsTrue == 1 {
allPower.AppKeyAry = append(allPower.AppKeyAry, strconv.FormatInt(v.AppKey, 10))
myAppInfo.IsPick = true
} else {
myAppInfo.IsPick = false
}
if v.AppButPower != "" && v.AppButPower != "null" {
json.Unmarshal([]byte(v.AppButPower), &myAppInfo.ButPower)
}
myAppInfo.FormTrue, myAppInfo.FormPower = GetTablePower(v.Id)
allPower.AppSystemPower = append(allPower.AppSystemPower, myAppInfo)
}
} else {
//不存在个人单独设置的权限
var myAppPower XieChengPowerSys
syncSeting.Add(1)
go myAppPower.GetAppFormPower("app", "org", orgId)
syncSeting.Add(1)
go myAppPower.GetAppFormPower("app", "job", postId)
syncSeting.Add(1)
go myAppPower.GetAppFormPower("app", "role", userKey)
syncSeting.Wait()
var tableId []string
for _, v := range myAppPower.AppUUID {
if !IsInTrue[string](v, tableId) {
tableId = append(tableId, v)
}
}
allPower.AppKeyAry = tableId
allPower.AppSystemPower = MergePower(myAppPower.FormTable)
}
return
}
/*
*
@ 作者: 秦东
@ 时间: 2026-03-21 14:02:08
@ 功能: 按系统授权分类获取权限数据
*/
func (x *XieChengPowerSys) HaveSystemMeunPower(sysType, powerType string, key int64) {
defer syncSetingSystem.Done()
var orgPowList []modelssystempermission.AuthPowerList
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.AuthPowerList{}).Where("`appType` = ? AND `orgPowerType` = ? AND `orgOrUserKey` = ? AND `appKey` = 0", sysType, powerType, key).Find(&orgPowList)
fmt.Printf("\n\n-------1-----按系统授权分类获取权限数据------1----->%v\n\n", len(orgPowList))
if len(orgPowList) > 0 {
for _, v := range orgPowList {
isTrue := true
for si, sv := range x.SysTemList {
if v.Id == sv.Id {
isTrue = false
if v.IsPick == 1 {
x.SysTemList[si].IsPick = v.IsPick
if v.TablePower != "" && v.TablePower != "null" {
var tableAry []string
json.Unmarshal([]byte(v.TablePower), &tableAry)
if len(tableAry) > 0 {
var tablePower []string
json.Unmarshal([]byte(sv.TablePower), &tablePower)
tabAllAry := MergeStruct[string](tableAry, tablePower)
tabAllAryStr, _ := json.Marshal(tabAllAry)
x.SysTemList[si].TablePower = string(tabAllAryStr)
}
}
if v.ListPower != "" && v.ListPower != "null" {
var listPowerAry []string
json.Unmarshal([]byte(v.ListPower), &listPowerAry)
if len(listPowerAry) > 0 {
var oldListPower []string
json.Unmarshal([]byte(sv.ListPower), &oldListPower)
listAllAry := MergeStruct[string](listPowerAry, oldListPower)
listAllAryStr, _ := json.Marshal(listAllAry)
x.SysTemList[si].ListPower = string(listAllAryStr)
}
}
maxRange := sv.VisibleRange
if v.VisibleRange > sv.VisibleRange {
x.SysTemList[si].VisibleRange = v.VisibleRange
x.SysTemList[si].PowerInfo = v.PowerInfo
maxRange = v.VisibleRange
if maxRange == 5 {
if v.VisibleOrg != "" && v.VisibleOrg != "null" {
var btPwAry []int
json.Unmarshal([]byte(v.VisibleOrg), &btPwAry)
if len(btPwAry) > 0 {
var oldBTPAry []int
json.Unmarshal([]byte(sv.VisibleOrg), &oldBTPAry)
btpwAll := MergeStruct[int](btPwAry, oldBTPAry)
btpwAllAryStr, _ := json.Marshal(btpwAll)
x.SysTemList[si].VisibleOrg = string(btpwAllAryStr)
}
}
}
}
if v.ButPower != "" && v.ButPower != "null" {
var butertPowerAry []string
json.Unmarshal([]byte(v.ButPower), &butertPowerAry)
if len(butertPowerAry) > 0 {
var oldButPower []string
json.Unmarshal([]byte(sv.ButPower), &oldButPower)
butWerAllAry := MergeStruct[string](butertPowerAry, oldButPower)
butWerAllAryStr, _ := json.Marshal(butWerAllAry)
x.SysTemList[si].ButPower = string(butWerAllAryStr)
}
}
if v.PageButPower != "" && v.PageButPower != "null" {
var pageButPowerAry []string
json.Unmarshal([]byte(v.PageButPower), &pageButPowerAry)
if len(pageButPowerAry) > 0 {
var oldPageButPower []string
json.Unmarshal([]byte(sv.PageButPower), &oldPageButPower)
pageButAllAry := MergeStruct[string](pageButPowerAry, oldPageButPower)
pageButAllAryStr, _ := json.Marshal(pageButAllAry)
x.SysTemList[si].PageButPower = string(pageButAllAryStr)
}
}
if v.AppButPower != "" && v.AppButPower != "null" {
var appButPowerAry []string
json.Unmarshal([]byte(v.AppButPower), &appButPowerAry)
if len(appButPowerAry) > 0 {
var oldAppButPoweres []string
json.Unmarshal([]byte(sv.AppButPower), &oldAppButPoweres)
appButAllAry := MergeStruct[string](appButPowerAry, oldAppButPoweres)
appButAllAryStr, _ := json.Marshal(appButAllAry)
x.SysTemList[si].AppButPower = string(appButAllAryStr)
}
}
}
}
}
if isTrue {
x.SysTemList = append(x.SysTemList, v)
}
}
} else {
if powerType == "org" {
var allFirstOrgId GetOrgAllParent
allFirstOrgId.GetOrgFirst(key)
fmt.Printf("\n\n-------1-----按系统授权分类获取权限数据------2----->%v\n\n", len(allFirstOrgId.Id))
if len(allFirstOrgId.Id) > 0 {
for _, v := range allFirstOrgId.Id {
if v != 0 {
var orgFirstPowList []modelssystempermission.AuthPowerList
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.AuthPowerList{}).Where("`appType` = ? AND `orgPowerType` = ? AND `orgOrUserKey` = ? AND `appKey` = 0", sysType, powerType, v).Find(&orgFirstPowList)
fmt.Printf("\n\n-------1-----按系统授权分类获取权限数据------3----->%v--->%v\n\n", v, len(orgFirstPowList))
if len(orgFirstPowList) > 0 {
for _, v := range orgFirstPowList {
isTrue := true
for si, sv := range x.SysTemList {
if v.Id == sv.Id {
isTrue = false
if v.IsPick == 1 {
x.SysTemList[si].IsPick = v.IsPick
if v.TablePower != "" && v.TablePower != "null" {
var tableAry []string
json.Unmarshal([]byte(v.TablePower), &tableAry)
if len(tableAry) > 0 {
var tablePower []string
json.Unmarshal([]byte(sv.TablePower), &tablePower)
tabAllAry := MergeStruct[string](tableAry, tablePower)
tabAllAryStr, _ := json.Marshal(tabAllAry)
x.SysTemList[si].TablePower = string(tabAllAryStr)
}
}
if v.ListPower != "" && v.ListPower != "null" {
var listPowerAry []string
json.Unmarshal([]byte(v.ListPower), &listPowerAry)
if len(listPowerAry) > 0 {
var oldListPower []string
json.Unmarshal([]byte(sv.ListPower), &oldListPower)
listAllAry := MergeStruct[string](listPowerAry, oldListPower)
listAllAryStr, _ := json.Marshal(listAllAry)
x.SysTemList[si].ListPower = string(listAllAryStr)
}
}
maxRange := sv.VisibleRange
if v.VisibleRange > sv.VisibleRange {
x.SysTemList[si].VisibleRange = v.VisibleRange
x.SysTemList[si].PowerInfo = v.PowerInfo
maxRange = v.VisibleRange
if maxRange == 5 {
if v.VisibleOrg != "" && v.VisibleOrg != "null" {
var btPwAry []int
json.Unmarshal([]byte(v.VisibleOrg), &btPwAry)
if len(btPwAry) > 0 {
var oldBTPAry []int
json.Unmarshal([]byte(sv.VisibleOrg), &oldBTPAry)
btpwAll := MergeStruct[int](btPwAry, oldBTPAry)
btpwAllAryStr, _ := json.Marshal(btpwAll)
x.SysTemList[si].VisibleOrg = string(btpwAllAryStr)
}
}
}
}
if v.ButPower != "" && v.ButPower != "null" {
var butertPowerAry []string
json.Unmarshal([]byte(v.ButPower), &butertPowerAry)
if len(butertPowerAry) > 0 {
var oldButPower []string
json.Unmarshal([]byte(sv.ButPower), &oldButPower)
butWerAllAry := MergeStruct[string](butertPowerAry, oldButPower)
butWerAllAryStr, _ := json.Marshal(butWerAllAry)
x.SysTemList[si].ButPower = string(butWerAllAryStr)
}
}
if v.PageButPower != "" && v.PageButPower != "null" {
var pageButPowerAry []string
json.Unmarshal([]byte(v.PageButPower), &pageButPowerAry)
if len(pageButPowerAry) > 0 {
var oldPageButPower []string
json.Unmarshal([]byte(sv.PageButPower), &oldPageButPower)
pageButAllAry := MergeStruct[string](pageButPowerAry, oldPageButPower)
pageButAllAryStr, _ := json.Marshal(pageButAllAry)
x.SysTemList[si].PageButPower = string(pageButAllAryStr)
}
}
if v.AppButPower != "" && v.AppButPower != "null" {
var appButPowerAry []string
json.Unmarshal([]byte(v.AppButPower), &appButPowerAry)
if len(appButPowerAry) > 0 {
var oldAppButPoweres []string
json.Unmarshal([]byte(sv.AppButPower), &oldAppButPoweres)
appButAllAry := MergeStruct[string](appButPowerAry, oldAppButPoweres)
appButAllAryStr, _ := json.Marshal(appButAllAry)
x.SysTemList[si].AppButPower = string(appButAllAryStr)
}
}
}
}
}
if isTrue {
x.SysTemList = append(x.SysTemList, v)
}
}
break
}
}
}
}
}
}
}
/*
*
@ 作者: 秦东
@ 时间: 2026-03-21 08:56:38
@ 功能: 获取自定义App分组权限
*/
func MyAppGroupPoswer(userKey, orgId, postId int64, roleoId []int64) (groupPower, groupAuth []string) {
//Step1: 获取个人权限
groupAuth, groupPower = GainGroupAppPower("person", userKey)
if len(groupPower) > 0 {
return
}
//Step2: 获取职位权限
postPowerArt, postGroupAuth := GainGroupAppPower("job", postId)
if len(postGroupAuth) > 0 {
for _, v := range postGroupAuth {
if !IsInTrue[string](v, groupPower) {
groupPower = append(groupPower, v)
}
}
if len(postPowerArt) > 0 {
for _, v := range postPowerArt {
if !IsInTrue[string](v, groupAuth) {
groupAuth = append(groupAuth, v)
}
}
}
}
//Step3: 行政组织
var orgPowerList OrgAryPower
orgPowerList.GetOrgPower(orgId)
if len(orgPowerList.GroupPowerAry) > 0 {
for _, v := range orgPowerList.GroupPowerAry {
if !IsInTrue[string](v, groupPower) {
groupPower = append(groupPower, v)
}
}
if len(orgPowerList.PowerAry) > 0 {
for _, v := range orgPowerList.PowerAry {
if !IsInTrue[string](v, groupAuth) {
groupAuth = append(groupAuth, v)
}
}
}
}
//Step4: 获取角色权限
if len(roleoId) > 0 {
for _, rv := range roleoId {
rolePowerArt, roleGroupAuth := GainGroupAppPower("role", rv)
if len(roleGroupAuth) > 0 {
for _, v := range roleGroupAuth {
if !IsInTrue[string](v, groupPower) {
groupPower = append(groupPower, v)
}
}
if len(rolePowerArt) > 0 {
for _, v := range rolePowerArt {
if !IsInTrue[string](v, groupAuth) {
groupAuth = append(groupAuth, v)
}
}
}
}
}
}
return
}
Loading…
Cancel
Save