From c4f31569199ba8679c756a20e5cd50cc512c9674 Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Mon, 12 Jan 2026 10:03:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/authentication/setupRoule.go | 185 ++++++ api/authentication/type.go | 19 + api/version1/customerApp/companyduty.go | 3 + api/version1/customerform/calendarData.go | 32 +- api/version1/customerform/formTableList.go | 8 +- api/version1/customerform/formTableView.go | 6 +- api/version1/customerform/tableList.go | 71 ++- api/version1/customerform/websub.go | 1 + api/version1/grantpowers/appMenuPower.go | 530 ++++++++++++++++++ api/version1/grantpowers/postpower.go | 136 ++++- api/version1/grantpowers/type.go | 65 ++- api/version1/humanResources/org.go | 3 +- api/version1/menus/menus.go | 8 +- api/version1/setupRoule/authorization.go | 60 ++ api/version1/setupRoule/entry.go | 3 +- api/version1/setupRoule/power.go | 16 +- api/version1/user/type.go | 21 +- api/version1/workWechat/wechat.go | 88 ++- .../authenticationroute/signcoderoute.go | 2 + apirouter/v1/grantsystempower/pc.go | 7 + config/configDatabase/database.yaml | 4 +- overall/publicmethod/getUserPower.go | 16 +- overall/publicmethod/technique.go | 2 +- overall/publicmethod/type.go | 8 + 24 files changed, 1195 insertions(+), 99 deletions(-) create mode 100644 api/version1/customerform/websub.go create mode 100644 api/version1/grantpowers/appMenuPower.go diff --git a/api/authentication/setupRoule.go b/api/authentication/setupRoule.go index e6e6fe5..9d3c670 100644 --- a/api/authentication/setupRoule.go +++ b/api/authentication/setupRoule.go @@ -8,6 +8,7 @@ import ( "fmt" "sort" "strconv" + "strings" "time" "github.com/gin-gonic/gin" @@ -311,3 +312,187 @@ func InfiniteOrgPostTree(parentId string, threeData []OrgPostPower) []OrgPostisT } return roleTree } + +/* +* +@ 作者: 秦东 +@ 时间: 2026-01-09 10:14:27 +@ 功能: 校队角色人员信息 +*/ +func (a *RoleApiMethod) VerifyInformationRolePersonnel(c *gin.Context) { + var manList []modelshr.PersonArchives + // overall.CONSTANT_DB_HR.Model(&modelshr.PersonArchives{}).Select("`id`,`key`,`number`,`role`").Where("`role` <> ?", "").Find(&manList) + overall.CONSTANT_DB_HR.Model(&modelshr.PersonArchives{}).Select("`id`,`key`,`number`,`role`").Find(&manList) + var newManAry []modelshr.PersonArchives + var userAry []JiaoDuiRole + var roleListAry JdsjRoel + for _, v := range manList { + if v.Role != "" && v.Role != "null" { + newManAry = append(newManAry, v) + roleAry := strings.Split(v.Role, ",") + // NewWriteRole(v.Key, roleAry) + + var userCont JiaoDuiRole + userCont.UserKey = strconv.FormatInt(v.Key, 10) + userCont.RoleAry = roleAry + // if len(userAry) < 199 { + // userAry = append(userAry, userCont) + // } else { + // userAry = append(userAry, userCont) + // syncSeting.Add(1) + // // go XieChengRoleXd(userAry) + // go roleListAry.XieChengRoleAry(userAry) + // userAry = []JiaoDuiRole{} + // } + userAry = append(userAry, userCont) + syncSeting.Add(1) + // go XieChengRoleXd(userAry) + go roleListAry.XieChengRoleAry(userAry) + // break + } + } + if len(userAry) > 0 { + syncSeting.Add(1) + // go XieChengRoleXd(userAry) + go roleListAry.XieChengRoleAry(userAry) + userAry = []JiaoDuiRole{} + } + syncSeting.Wait() + + fmt.Printf("总共%v人员赋权\n\n%v", len(newManAry), len(manList)) + publicmethod.Result(0, roleListAry, c) +} + +/* +* +@ 作者: 秦东 +@ 时间: 2026-01-09 11:45:38 +@ 功能: 协程处理数据 +*/ +func (j *JdsjRoel) XieChengRoleAry(userAry []JiaoDuiRole) { + syncSeting.Done() + for _, v := range userAry { + fmt.Printf("协程处理数据--->%v\n\n", v.UserKey) + for _, rv := range v.RoleAry { + fmt.Printf("协程处理数据--1->%v\n\n", rv) + j.RoleAddUserKey(v.UserKey, rv) + // if len(j.RoleList) > 0 { + // isNew := true + // for ji, jv := range j.RoleList { + // if jv.RoleId == rv { + // isNew = false + // // fmt.Printf("%v--------------->%v\n\n\n", jv.RoleId, !publicmethod.IsInTrue[string](v.UserKey, jv.UserList)) + // if !publicmethod.IsInTrue[string](v.UserKey, jv.UserList) { + + // jv.UserList = append(jv.UserList, v.UserKey) + // } + // } + // j.RoleList[ji] = jv + // } + // if isNew { + // var kj RoleUserArt + // kj.RoleId = rv + // kj.UserList = append(kj.UserList, v.UserKey) + // j.RoleList = append(j.RoleList, kj) + // } + // } else { + // var kj RoleUserArt + // kj.RoleId = rv + // kj.UserList = append(kj.UserList, v.UserKey) + // j.RoleList = append(j.RoleList, kj) + // } + + } + } +} +func (j *JdsjRoel) RoleAddUserKey(userKey, roleId string) { + isNewAdd := true + for i, v := range j.RoleList { + if v.RoleId == roleId { + if !publicmethod.IsInTrue[string](userKey, v.UserList) { + j.RoleList[i].UserList = append(j.RoleList[i].UserList, userKey) + isNewAdd = false + } + } + } + if isNewAdd { + var newRoleUs RoleUserArt + newRoleUs.RoleId = roleId + newRoleUs.UserList = append(newRoleUs.UserList, userKey) + j.RoleList = append(j.RoleList, newRoleUs) + } +} + +/* +* +@ 作者: 秦东 +@ 时间: 2026-01-09 11:23:59 +@ 功能: 协程处理角色问题 +*/ +func XieChengRoleXd(userAry []JiaoDuiRole) { + syncSeting.Done() + fmt.Printf("协程处理角色问题--->%v\n\n", len(userAry)) + for _, v := range userAry { + for _, rv := range v.RoleAry { + var roleCont modelssystempermission.SystemRole + roleCont.GetCont(map[string]interface{}{"`id`": rv}, "`id`", "`roleuser`") + if roleCont.Id != 0 { + if roleCont.Roleuser != "" && roleCont.Roleuser != "null" { + roleAry := strings.Split(roleCont.Roleuser, ",") //原角色已有的人员 + if !publicmethod.IsInTrue[string](v.UserKey, roleAry) { //当原角色不存在此人员时加载 + roleAry = append(roleAry, v.UserKey) + saveData := publicmethod.MapOut[string]() + saveData["`roleuser`"] = strings.Join(roleAry, ",") + saveData["`time`"] = time.Now().Unix() + var roleContSave modelssystempermission.SystemRole + roleContSave.EiteCont(map[string]interface{}{"`id`": roleCont.Id}, saveData) + } + } else { + var newRoleMan []string + newRoleMan = append(newRoleMan, v.UserKey) + saveData := publicmethod.MapOut[string]() + saveData["`roleuser`"] = strings.Join(newRoleMan, ",") + saveData["`time`"] = time.Now().Unix() + var roleContSave modelssystempermission.SystemRole + roleContSave.EiteCont(map[string]interface{}{"`id`": roleCont.Id}, saveData) + } + } + } + } +} + +/* +* +@ 作者: 秦东 +@ 时间: 2026-01-09 10:39:43 +@ 功能: 写入新角色系统 +*/ +func NewWriteRole(userKey int64, roleAry []string) { + fmt.Printf("%v人员有赋权----------》%v\n\n", userKey, len(roleAry)) + for _, v := range roleAry { + var roleCont modelssystempermission.SystemRole + roleCont.GetCont(map[string]interface{}{"`id`": v}, "`id`", "`roleuser`") + if roleCont.Id != 0 { + userKeyVal := strconv.FormatInt(userKey, 10) + if roleCont.Roleuser != "" && roleCont.Roleuser != "null" { + roleAry := strings.Split(roleCont.Roleuser, ",") + if !publicmethod.IsInTrue[string](userKeyVal, roleAry) { + roleAry = append(roleAry, userKeyVal) + saveData := publicmethod.MapOut[string]() + saveData["`roleuser`"] = strings.Join(roleAry, ",") + saveData["`time`"] = time.Now().Unix() + var roleContSave modelssystempermission.SystemRole + roleContSave.EiteCont(map[string]interface{}{"`id`": roleCont.Id}, saveData) + } + } else { + var newRoleMan []string + newRoleMan = append(newRoleMan, userKeyVal) + saveData := publicmethod.MapOut[string]() + saveData["`roleuser`"] = strings.Join(newRoleMan, ",") + saveData["`time`"] = time.Now().Unix() + var roleContSave modelssystempermission.SystemRole + roleContSave.EiteCont(map[string]interface{}{"`id`": roleCont.Id}, saveData) + } + } + } +} diff --git a/api/authentication/type.go b/api/authentication/type.go index 313c196..2fe638b 100644 --- a/api/authentication/type.go +++ b/api/authentication/type.go @@ -2,6 +2,7 @@ package authentication import ( "appPlatform/overall/publicmethod" + "sync" "github.com/gin-gonic/gin" ) @@ -30,6 +31,9 @@ type ApiEntry struct { var AppApiEntry = new(ApiEntry) +// 协程设置 +var syncSeting = sync.WaitGroup{} + // 验证字符串 type SignCodeStr struct { Code string `json:"code"` @@ -96,3 +100,18 @@ type RoleTreeAndUser struct { Icon string `json:"icon"` Org string `json:"org"` } + +// 校对角色 +type JiaoDuiRole struct { + UserKey string + RoleAry []string +} + +type JdsjRoel struct { + RoleList []RoleUserArt +} + +type RoleUserArt struct { + RoleId string + UserList []string +} diff --git a/api/version1/customerApp/companyduty.go b/api/version1/customerApp/companyduty.go index 2c2cbd7..83003cd 100644 --- a/api/version1/customerApp/companyduty.go +++ b/api/version1/customerApp/companyduty.go @@ -434,12 +434,15 @@ func (a *ApiMethod) GeyOneDayDuty(c *gin.Context) { dayhValInt, _ := strconv.Atoi(dayhVal) if requestData.Years != 0 { yearValInt = requestData.Years + yearVal = strconv.Itoa(requestData.Years) } if requestData.Months != 0 { monthValInt = requestData.Months + monthVal = strconv.Itoa(requestData.Months) } if requestData.Days != 0 { dayhValInt = requestData.Days + dayhVal = strconv.Itoa(requestData.Days) } sendCenter := publicmethod.MapOut[string]() var currOrgInfo GaveOrgAry diff --git a/api/version1/customerform/calendarData.go b/api/version1/customerform/calendarData.go index 84a3cd6..67b7a14 100644 --- a/api/version1/customerform/calendarData.go +++ b/api/version1/customerform/calendarData.go @@ -137,6 +137,17 @@ func (c *CalendarList) HaveEveryDayData(day TimeAryInfo, formInfo modelAppPlatfo gormDb = gormDb.Where("f.`states` = ?", 1) gormDb = AnalysisSerachTermSqlIng(listField, gormDb) //将查询条件转换成 startTime, endTime := publicmethod.OenDayStartOrEndTime(day.Date, 1) + + myPower := publicmethod.GetMyFormPower(userCont.Key, formInfo.Groupid, formInfo.SignCode) + //Step 2 权限处理 + var powerSearch publicmethod.GainUserPower + powerSearch.SystemName = "appsystem" //系统名称 + powerSearch.RoleId = userCont.Role //角色列表 + powerSearch.OrgId = userCont.AdminOrg //行政组织 + powerSearch.PostId = userCont.Position //岗位 + powerSearch.AppKey = formInfo.Groupid //归属哪个App + powerSearch.TableId = formInfo.CfId //归属哪个表格 + if class, isOk := viewCondition["date"]; isOk { //解析视图设定参数 if class.Status { //当前参数启用 if class.Form.StartTime != "" && class.Form.EndTime != "" { @@ -161,26 +172,25 @@ func (c *CalendarList) HaveEveryDayData(day TimeAryInfo, formInfo modelAppPlatfo fmt.Printf("语句5===》%v\n", whySql) gormDb = gormDb.Where(whySql) } + var timeConsfig publicmethod.PowerTimeSql + timeConsfig.IsTime = true + timeConsfig.TimeWord = "f.`creater_time`" + timeConsfig.StartTime = startTime + timeConsfig.EndTime = endTime + gormDb = powerSearch.MakeSearchSql(gormDb, userCont, formJsonCont.Form.DataSource, myPower, timeConsfig) } else { whySql := fmt.Sprintf("f.`creater_time` BETWEEN %v AND %v", startTime, endTime) fmt.Printf("语句6===》%v\n", whySql) gormDb = gormDb.Where(whySql) + var timeConsfig publicmethod.PowerTimeSql + timeConsfig.IsTime = false + gormDb = powerSearch.MakeSearchSql(gormDb, userCont, formJsonCont.Form.DataSource, myPower, timeConsfig) } - myPower := publicmethod.GetMyFormPower(userCont.Key, formInfo.Groupid, formInfo.SignCode) - //Step 2 权限处理 - var powerSearch publicmethod.GainUserPower - powerSearch.SystemName = "appsystem" //系统名称 - powerSearch.RoleId = userCont.Role //角色列表 - powerSearch.OrgId = userCont.AdminOrg //行政组织 - powerSearch.PostId = userCont.Position //岗位 - powerSearch.AppKey = formInfo.Groupid //归属哪个App - powerSearch.TableId = formInfo.CfId //归属哪个表格 - gormDb = powerSearch.MakeSearchSql(gormDb, userCont, formJsonCont.Form.DataSource, myPower) var formList []map[string]interface{} err := gormDb.Order("`id` DESC").Find(&formList).Error - fmt.Printf("查询出来的结果是------>%v\n\n\n\n", formList) + // fmt.Printf("查询出来的结果是------>%v\n\n\n\n", formList) if formInfo.ListJson != "" { var listFieldsMap ListPageFields diff --git a/api/version1/customerform/formTableList.go b/api/version1/customerform/formTableList.go index 00e4e96..c3921ea 100644 --- a/api/version1/customerform/formTableList.go +++ b/api/version1/customerform/formTableList.go @@ -93,6 +93,8 @@ func (a *ApiMethod) GainFormPageListContNew(c *gin.Context) { // gormDb = gormDb.Where("`states` BETWEEN ? AND ?", 1, 2) gormDb = AnalysisSerachTermSql(requestData.SearchData, gormDb) //处理查询条件 //Step 3 权限处理 + var timeConsfig publicmethod.PowerTimeSql + timeConsfig.IsTime = false var powerSearch publicmethod.GainUserPower powerSearch.SystemName = "appsystem" //系统名称 powerSearch.RoleId = userCont.Role //角色列表 @@ -100,7 +102,7 @@ func (a *ApiMethod) GainFormPageListContNew(c *gin.Context) { powerSearch.PostId = userCont.Position //岗位 powerSearch.AppKey = formInfo.Groupid //归属哪个App powerSearch.TableId = formInfo.CfId //归属哪个表格 - gormDb = powerSearch.MakeSearchSql(gormDb, userCont, formJsonCont.Form.DataSource, myPower) + gormDb = powerSearch.MakeSearchSql(gormDb, userCont, formJsonCont.Form.DataSource, myPower, timeConsfig) //Step 4 获取一共有多少条数据 var total int64 totalErr := gormDb.Count(&total).Error @@ -175,6 +177,8 @@ func (a *ApiMethod) GainFormPageListContNew(c *gin.Context) { gormDb = gormDb.Where("f.`states` = ?", 1) //基础查询条件 gormDb = AnalysisSerachTermSql(requestData.SearchData, gormDb) //处理查询条件 //Step 2 权限处理 + var timeConsfig publicmethod.PowerTimeSql + timeConsfig.IsTime = false var powerSearch publicmethod.GainUserPower powerSearch.SystemName = "appsystem" //系统名称 powerSearch.RoleId = userCont.Role //角色列表 @@ -182,7 +186,7 @@ func (a *ApiMethod) GainFormPageListContNew(c *gin.Context) { powerSearch.PostId = userCont.Position //岗位 powerSearch.AppKey = formInfo.Groupid //归属哪个App powerSearch.TableId = formInfo.CfId //归属哪个表格 - gormDb = powerSearch.MakeSearchSql(gormDb, userCont, formJsonCont.Form.DataSource, myPower) + gormDb = powerSearch.MakeSearchSql(gormDb, userCont, formJsonCont.Form.DataSource, myPower, timeConsfig) //Step 3 获取一共有多少条数据 var total int64 totalErr := gormDb.Count(&total).Error diff --git a/api/version1/customerform/formTableView.go b/api/version1/customerform/formTableView.go index 0671c83..094dcb1 100644 --- a/api/version1/customerform/formTableView.go +++ b/api/version1/customerform/formTableView.go @@ -54,6 +54,7 @@ func (a *ApiMethod) MultiViewPAge(c *gin.Context) { publicmethod.Result(1, err, c, "未知表单!无法获取字段!") return } + myPower := publicmethod.GetMyFormPower(userCont.Key, formInfo.Groupid, formInfo.SignCode) //解析表单列表数据结构 var formJsonCont CustomerFormMaster @@ -68,7 +69,8 @@ func (a *ApiMethod) MultiViewPAge(c *gin.Context) { // gormDb = gormDb.Where("f.`creater` = ? ", userCont.Key) gormDb = gormDb.Where("f.`states` BETWEEN ? AND ?", 1, 2) gormDb = AnalysisSerachTermSql(requestData.SearchData, gormDb) - + var timeConsfig publicmethod.PowerTimeSql + timeConsfig.IsTime = false //Step 2 权限处理 var powerSearch publicmethod.GainUserPower powerSearch.SystemName = "appsystem" //系统名称 @@ -77,7 +79,7 @@ func (a *ApiMethod) MultiViewPAge(c *gin.Context) { powerSearch.PostId = userCont.Position //岗位 powerSearch.AppKey = formInfo.Groupid //归属哪个App powerSearch.TableId = formInfo.CfId //归属哪个表格 - gormDb = powerSearch.MakeSearchSql(gormDb, userCont, formJsonCont.Form.DataSource, myPower) + gormDb = powerSearch.MakeSearchSql(gormDb, userCont, formJsonCont.Form.DataSource, myPower, timeConsfig) var total int64 totalErr := gormDb.Count(&total).Error diff --git a/api/version1/customerform/tableList.go b/api/version1/customerform/tableList.go index c8b1390..16a0b6a 100644 --- a/api/version1/customerform/tableList.go +++ b/api/version1/customerform/tableList.go @@ -100,7 +100,9 @@ func (a *ApiMethod) TableCusterField(c *gin.Context) { powerSearch.PostId = userCont.Position //岗位 powerSearch.AppKey = formInfo.Groupid //归属哪个App powerSearch.TableId = formInfo.CfId //归属哪个表格 - gormDb = powerSearch.MakeSearchSql(gormDb, userCont, formJsonCont.Form.DataSource, myPower) + var timeConsfig publicmethod.PowerTimeSql + timeConsfig.IsTime = false + gormDb = powerSearch.MakeSearchSql(gormDb, userCont, formJsonCont.Form.DataSource, myPower, timeConsfig) //Step 4 获取一共有多少条数据 totalErr := gormDb.Count(&total).Error @@ -128,7 +130,9 @@ func (a *ApiMethod) TableCusterField(c *gin.Context) { powerSearch.PostId = userCont.Position //岗位 powerSearch.AppKey = formInfo.Groupid //归属哪个App powerSearch.TableId = formInfo.CfId //归属哪个表格 - gormDb = powerSearch.MakeSearchSql(gormDb, userCont, formJsonCont.Form.DataSource, myPower) + var timeConsfig publicmethod.PowerTimeSql + timeConsfig.IsTime = false + gormDb = powerSearch.MakeSearchSql(gormDb, userCont, formJsonCont.Form.DataSource, myPower, timeConsfig) //Step 3 获取一共有多少条数据 totalErr := gormDb.Count(&total).Error @@ -306,15 +310,43 @@ func HaveImgInfo(val map[string]interface{}, view map[string]ViewInfo, unitList for _, v := range descVal { vInfoStr := publicmethod.TypeToInterface(v) descInfo := strings.Split(vInfoStr, "|#|") + // unitListJson, _ := json.Marshal(unitList) + // fmt.Printf("\n\n\n\n描述类型----->%v------------2------------->%v\n\n\n\n", vInfoStr, string(unitListJson)) + if len(descInfo) >= 2 { descAry = append(descAry, descInfo[0]) } else { if descTitle, ok := val[vInfoStr]; ok { descInfoVal := "" for _, uv := range unitList { - if uv.Name != "" && uv.Name == vInfoStr { - descInfoVal = fmt.Sprintf("%v:%v ", uv.Item.Label, publicmethod.TypeToInterface(descTitle)) + + // unitListJson, _ := json.Marshal(uv) + // fmt.Printf("\n\n\n\n描述类型--11111111--->%v------------2------------->%v\n\n\n\n", vInfoStr, string(unitListJson)) + + for _, uvm := range uv.Columns { + for _, uvmL := range uvm.List { + if uvmL.Name != "" && uvmL.Name == vInfoStr { + if len(uvmL.Options) > 0 { + title := "" + valStr := publicmethod.TypeToInterface(descTitle) + for _, ov := range uvmL.Options { + if ov.Value == valStr { + title = ov.Label + } + } + if title != "" { + descInfoVal = fmt.Sprintf("%v:%v ", uvmL.Item.Label, title) + } else { + descInfoVal = fmt.Sprintf("%v:%v ", uvmL.Item.Label, publicmethod.TypeToInterface(descTitle)) + } + } else { + descInfoVal = fmt.Sprintf("%v:%v ", uvmL.Item.Label, publicmethod.TypeToInterface(descTitle)) + } + + } + } } + } if descInfoVal == "" { descInfoVal = publicmethod.TypeToInterface(descTitle) @@ -322,7 +354,7 @@ func HaveImgInfo(val map[string]interface{}, view map[string]ViewInfo, unitList if descInfoVal != "" { descAry = append(descAry, descInfoVal) } - + // fmt.Printf("\n\n\n\n描述类型----->%v------------3------------->%v\n\n\n\n", descTitle, descTitle) } } } @@ -337,9 +369,34 @@ func HaveImgInfo(val map[string]interface{}, view map[string]ViewInfo, unitList if descTitle, ok := val[vInfoStr]; ok { descInfoVal := "" for _, uv := range unitList { - if uv.Name != "" && uv.Name == vInfoStr { - descInfoVal = fmt.Sprintf("%v:%v ", uv.Item.Label, publicmethod.TypeToInterface(descTitle)) + + for _, uvm := range uv.Columns { + for _, uvmL := range uvm.List { + if uvmL.Name != "" && uvmL.Name == vInfoStr { + if len(uvmL.Options) > 0 { + title := "" + valStr := publicmethod.TypeToInterface(descTitle) + for _, ov := range uvmL.Options { + if ov.Value == valStr { + title = ov.Label + } + } + if title != "" { + descInfoVal = fmt.Sprintf("%v:%v ", uvmL.Item.Label, title) + } else { + descInfoVal = fmt.Sprintf("%v:%v ", uvmL.Item.Label, publicmethod.TypeToInterface(descTitle)) + } + } else { + descInfoVal = fmt.Sprintf("%v:%v ", uvmL.Item.Label, publicmethod.TypeToInterface(descTitle)) + } + + } + } } + + // if uv.Name != "" && uv.Name == vInfoStr { + // descInfoVal = fmt.Sprintf("%v:%v ", uv.Item.Label, publicmethod.TypeToInterface(descTitle)) + // } } if descInfoVal == "" { descInfoVal = publicmethod.TypeToInterface(descTitle) diff --git a/api/version1/customerform/websub.go b/api/version1/customerform/websub.go new file mode 100644 index 0000000..d24e1e5 --- /dev/null +++ b/api/version1/customerform/websub.go @@ -0,0 +1 @@ +package customerform diff --git a/api/version1/grantpowers/appMenuPower.go b/api/version1/grantpowers/appMenuPower.go new file mode 100644 index 0000000..627d413 --- /dev/null +++ b/api/version1/grantpowers/appMenuPower.go @@ -0,0 +1,530 @@ +package grantpowers + +import ( + "appPlatform/models/modelAppPlatform" + "appPlatform/models/modelshr" + "appPlatform/models/modelssystempermission" + "appPlatform/overall" + "appPlatform/overall/publicmethod" + "encoding/json" + "sort" + "strconv" + "strings" + "time" + + "github.com/gin-gonic/gin" +) + +/* +* +@ 作者: 秦东 +@ 时间: 2025-12-23 13:48:02 +@ 功能: 初始化App双轴选项卡 +*/ +func (a *ApiMethod) GetAppGroupo(c *gin.Context) { + var requestData AppConfig + err := c.ShouldBindJSON(&requestData) + if err != nil { + publicmethod.Result(100, err, c) + return + } + if requestData.PowerType == "" { + publicmethod.Result(1, requestData, c, "未知配权系统!不可进行配权") + return + } + powerId := publicmethod.TypeToInterface(requestData.PowerId) + if powerId == "" { + publicmethod.Result(1, requestData, c, "未知配权系统!不可进行配权") + return + } + + groupIsTrue, pickGroupAry := GainAppGroupAuth(requestData.PowerType, powerId) + + var groupInfo modelAppPlatform.CustomerFormGroup + groupAry, _ := groupInfo.ContMap("`state` = 1") + //进行排序 + sort.Slice(groupAry, func(i, j int) bool { + return groupAry[i].Sort < groupAry[j].Sort + }) + var groupList []AppGroupInfo + + 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 + groupCont.IsTrue = publicmethod.IsInTrue[string](groupId, pickGroupAry) //是否选中 + groupList = append(groupList, groupCont) + } + sendGroupApp := publicmethod.MapOut[string]() + sendGroupApp["groupList"] = groupList + sendGroupApp["groupButPower"] = groupIsTrue + publicmethod.Result(0, sendGroupApp, c) +} + +/* +* +@ 作者: 秦东 +@ 时间: 2025-12-26 08:34:59 +@ 功能: 获取分组权限 + + #powerType 授权类型 + #systemKey 授权对象值 +*/ +func GainAppGroupAuth(powerType, systemKey string) (butAry, groupAry []string) { + var groupPower modelssystempermission.AuthGroupPower + groupPower.GetCont(map[string]interface{}{"`appType`": "app", "`orgPowerType`": powerType, "`orgOrUserKey`": systemKey}) + if groupPower.PowerInfo != "" { + json.Unmarshal([]byte(groupPower.PowerInfo), &butAry) + } + if groupPower.GroupStatus != "" { + json.Unmarshal([]byte(groupPower.GroupStatus), &groupAry) + } + if powerType == "person" && groupPower.Id == 0 { + //Step 1: 获取人员相关权限 + var userCont modelshr.PersonArchives + userCont.GetCont(map[string]interface{}{"`key`": systemKey}) + //Step 2: 获取相关角色 + var SystemRole []int64 + overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Select("`id`").Where("`state` = 1 AND `types` = 1").Where("FIND_IN_SET(?, `roleuser`)", systemKey).Find(&SystemRole) + var roleIdAry []string + if userCont.Role != "" { + myRole := strings.Split(userCont.Role, ",") + roleIdAry = publicmethod.MergeStruct[string](myRole, roleIdAry) + } + for _, v := range SystemRole { + val := strconv.FormatInt(v, 10) + if !publicmethod.IsInTrue[string](val, roleIdAry) { + roleIdAry = append(roleIdAry, val) + } + } + if len(roleIdAry) > 0 { + var rolePowerAry []modelssystempermission.AuthGroupPower + overall.CONSTANT_DB_System_Permission.Where("`appType` = ? AND `orgPowerType` = ? AND `orgOrUserKey` IN ?", "app", "role", roleIdAry).Find(&rolePowerAry) + for _, v := range rolePowerAry { + if v.PowerInfo != "" { + var roleButAry []string + json.Unmarshal([]byte(v.PowerInfo), &roleButAry) + butAry = publicmethod.MergeStruct[string](roleButAry, butAry) + } + if v.GroupStatus != "" { + var roleGroupAry []string + json.Unmarshal([]byte(v.GroupStatus), &roleGroupAry) + groupAry = publicmethod.MergeStruct[string](roleGroupAry, groupAry) + } + } + } + + //行政组织 + var groupPower modelssystempermission.AuthGroupPower + groupPower.GetCont(map[string]interface{}{"`appType`": "app", "`orgPowerType`": "org", "`orgOrUserKey`": systemKey}) + if groupPower.Id > 0 { + if groupPower.PowerInfo != "" { + var roleButAry []string + json.Unmarshal([]byte(groupPower.PowerInfo), &roleButAry) + butAry = publicmethod.MergeStruct[string](roleButAry, butAry) + } + if groupPower.GroupStatus != "" { + var roleGroupAry []string + json.Unmarshal([]byte(groupPower.GroupStatus), &roleGroupAry) + groupAry = publicmethod.MergeStruct[string](roleGroupAry, groupAry) + } + } else { + var allFirstOrgId publicmethod.GetOrgAllParent + orgId, _ := strconv.ParseInt(systemKey, 10, 64) + allFirstOrgId.GetOrgFirst(orgId) + if len(allFirstOrgId.Id) > 0 { + for _, v := range allFirstOrgId.Id { + var groupPowerFirst modelssystempermission.AuthGroupPower + groupPowerFirst.GetCont(map[string]interface{}{"`appType`": "app", "`orgPowerType`": "org", "`orgOrUserKey`": v}) + if groupPowerFirst.Id > 0 { + if groupPowerFirst.PowerInfo != "" { + var roleButAry []string + json.Unmarshal([]byte(groupPowerFirst.PowerInfo), &roleButAry) + butAry = publicmethod.MergeStruct[string](roleButAry, butAry) + } + if groupPowerFirst.GroupStatus != "" { + var roleGroupAry []string + json.Unmarshal([]byte(groupPowerFirst.GroupStatus), &roleGroupAry) + groupAry = publicmethod.MergeStruct[string](roleGroupAry, groupAry) + } + break + } + } + } + } + + //职务 + var groupPowerPostst modelssystempermission.AuthGroupPower + groupPowerPostst.GetCont(map[string]interface{}{"`appType`": "app", "`orgPowerType`": "job", "`orgOrUserKey`": userCont.Position}) + if groupPowerPostst.PowerInfo != "" { + var roleButAry []string + json.Unmarshal([]byte(groupPowerPostst.PowerInfo), &roleButAry) + butAry = publicmethod.MergeStruct[string](roleButAry, butAry) + } + if groupPowerPostst.GroupStatus != "" { + var roleGroupAry []string + json.Unmarshal([]byte(groupPowerPostst.GroupStatus), &roleGroupAry) + groupAry = publicmethod.MergeStruct[string](roleGroupAry, groupAry) + } + + } + return +} + +/* +* +@ 作者: 秦东 +@ 时间: 2025-12-24 13:38:13 +@ 功能: 根据分组获取App列表 +*/ +func (a *ApiMethod) GetGroupAppList(c *gin.Context) { + var requestData GetGroupAppList + c.ShouldBindJSON(&requestData) + if requestData.PowerType == "" { + publicmethod.Result(1, requestData, c, "未知配权系统!不可进行配权") + return + } + + if requestData.RoleId == "" { + publicmethod.Result(1, requestData, c, "未知配权系统!不可进行配权") + return + } + if requestData.Group == "" { + publicmethod.Result(1, requestData, c, "未知配权系统分组!不可进行配权") + return + } + list := GetGroupAppListIng(requestData.Group, requestData.PowerType, "app", requestData.RoleId) + publicmethod.Result(0, list, c) +} + +/* +* +@ 作者: 秦东 +@ 时间: 2025-12-17 11:08:15 +@ 功能: 获取分组App +*/ +// func (a *AppGroupInfo) GetGroupApp() { +func GetGroupAppListIng(uuId, powerType, appType, powerId 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 + + appCont.IsTrue, appCont.OperationButton, _ = AppCallBackShow(v.SignCode, powerType, appType, powerId) //是否选中 + if len(appCont.OperationButton) < 1 { + appCont.OperationButton = []string{} + } + if len(appCont.AppMenuTree) < 1 { + appCont.AppMenuTree = []AppMenuTreeInit{} + } + appAry = append(appAry, appCont) + } + + return +} + +/* +* +@ 作者: 秦东 +@ 时间: 2025-12-24 15:39:54 +@ 功能: 获取app菜单 +*/ +func (a *ApiMethod) GetAppMenuList(c *gin.Context) { + var requestData GetGroupAppList + c.ShouldBindJSON(&requestData) + if requestData.PowerType == "" { + publicmethod.Result(1, requestData, c, "未知配权系统!不可进行配权") + return + } + + if requestData.RoleId == "" { + publicmethod.Result(1, requestData, c, "未知配权系统!不可进行配权") + return + } + if requestData.AppId == "" { + publicmethod.Result(1, requestData, c, "未知配权App!不可进行配权") + return + } + + var menuList []modelAppPlatform.Appmenus + err := overall.CONSTANT_DB_AppPlatform.Where("`state` = 1 AND `isLock` = 2 AND `appkey` = ?", requestData.AppId).Find(&menuList).Error + if err != nil { + return + } + sort.Slice(menuList, func(i, j int) bool { + return menuList[i].EditTime < menuList[j].EditTime + }) + sort.Slice(menuList, func(i, j int) bool { + return menuList[i].Sort < menuList[j].Sort + }) + key, _ := strconv.ParseInt(requestData.AppId, 10, 64) + // list := AppTreeMenusnOne(key, menuList) + var authId []int64 + switch requestData.PowerType { + case "role": + var authPower modelssystempermission.AuthPower + authPower.GetCont(map[string]interface{}{"`appType`": "app", "`orgPowerType`": requestData.PowerType, "`orgOrUserKey`": requestData.RoleId, "`appKey`": requestData.AppId}, "`id`", "`isTrue`", "`appButPower`") + if authPower.Id != 0 { + authId = append(authId, authPower.Id) + } + case "org": + var authPower modelssystempermission.AuthPower + authPower.GetCont(map[string]interface{}{"`appType`": "app", "`orgPowerType`": requestData.PowerType, "`orgOrUserKey`": requestData.RoleId, "`appKey`": requestData.AppId}, "`id`", "`isTrue`", "`appButPower`") + if authPower.Id != 0 { + authId = append(authId, authPower.Id) + } else { + orgIdInt, _ := strconv.ParseInt(requestData.RoleId, 10, 64) + var allFirstOrgId publicmethod.GetOrgAllParent + allFirstOrgId.GetOrgFirst(orgIdInt) + if len(allFirstOrgId.Id) > 0 { + for _, v := range allFirstOrgId.Id { + if v != 0 { + var authPowerIng modelssystempermission.AuthPower + authPowerIng.GetCont(map[string]interface{}{"`appType`": "app", "`orgPowerType`": requestData.PowerType, "`orgOrUserKey`": v, "`appKey`": requestData.AppId}, "`id`", "`isTrue`", "`appButPower`") + if authPower.Id != 0 { + authId = append(authId, authPowerIng.Id) + break + } + + } + } + } + } + case "job": + var authPower modelssystempermission.AuthPower + authPower.GetCont(map[string]interface{}{"`appType`": "app", "`orgPowerType`": requestData.PowerType, "`orgOrUserKey`": requestData.RoleId, "`appKey`": requestData.AppId}, "`id`", "`isTrue`", "`appButPower`") + if authPower.Id != 0 { + authId = append(authId, authPower.Id) + } + case "person": + var authPower modelssystempermission.AuthPower + authPower.GetCont(map[string]interface{}{"`appType`": "app", "`orgPowerType`": requestData.PowerType, "`orgOrUserKey`": requestData.RoleId, "`appKey`": requestData.AppId}, "`id`", "`isTrue`", "`appButPower`") + if authPower.Id != 0 { + authId = append(authId, authPower.Id) + } else { + appType := "app" + appId, _ := strconv.ParseInt(requestData.AppId, 10, 64) + var authPower GainAppPowerTop + //角色 + syncSeting.Add(1) + go authPower.HaveAppAuthPower(appId, "role", appType, requestData.RoleId) + //行政组织 + syncSeting.Add(1) + go authPower.HaveAppAuthPower(appId, "org", appType, requestData.RoleId) + syncSeting.Wait() + //岗位 + syncSeting.Add(1) + go authPower.HaveAppAuthPower(appId, "job", appType, requestData.RoleId) + syncSeting.Wait() + if len(authPower.List) > 0 { + for _, v := range authPower.List { + if v.IsTrue == 1 { + authId = append(authId, v.Id) + } + } + } + } + default: + } + + menuTree := AppTreeMenus(key, authId, menuList) + publicmethod.Result(0, menuTree, c) +} + +/* +* +@ 作者: 秦东 +@ 时间: 2024-04-23 13:42:51 +@ 功能: App菜单树处理 +*/ +func AppTreeMenusnOne(parentId 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.FormPower = []string{} + menuCont.ListPower = []string{} + menuCont.PagePower = []string{} + + menuCont.VisibleRange.Types = 1 + menuCont.VisibleRange.Attribute = []int64{} + menuCont.Children = AppTreeMenusnOne(v.Id, menuList) + menusTree = append(menusTree, menuCont) + } + } + return +} + +/* +* +@ 作者: 秦东 +@ 时间: 2025-12-26 15:54:30 +@ 功能: 分组授权 +*/ +func (a *ApiMethod) AppGroupPowerConfig(c *gin.Context) { + var requestData ConfigSetupGroup + c.ShouldBindJSON(&requestData) + if requestData.PowerType == "" { + publicmethod.Result(1, requestData, c, "未知配权系统!不可进行配权") + return + } + + if requestData.PowerId == "" { + publicmethod.Result(1, requestData, c, "未知配权系统!不可进行配权") + return + } + powerInfo, jsonErr := json.Marshal(requestData.GroupButPower) + + var groupInfo modelssystempermission.AuthGroupPower + groupInfo.GetCont(map[string]interface{}{"`appType`": "app", "`orgPowerType`": requestData.PowerType, "`orgOrUserKey`": requestData.PowerId}) + if groupInfo.Id != 0 { + saveData := publicmethod.MapOut[string]() + if jsonErr == nil { + saveData["powerInfo"] = string(powerInfo) + } else { + saveData["powerInfo"] = "[]" + } + saveData["`time`"] = time.Now().Unix() + var saveInfo modelssystempermission.AuthGroupPower + saveInfo.EiteCont(map[string]interface{}{"`id`": groupInfo.Id}, saveData) + } else { + uuid := publicmethod.GetUUid(1) + powerId := publicmethod.TypeToInterface(requestData.PowerId) + var saveGroupPower modelssystempermission.AuthGroupPower + saveGroupPower.Id = uuid + saveGroupPower.AppType = "app" + saveGroupPower.OrgPowerType = requestData.PowerType + saveGroupPower.OrgOrUserKey, _ = strconv.ParseInt(powerId, 10, 64) + saveGroupPower.Time = time.Now().Unix() + saveGroupPower.PowerInfo = string(powerInfo) + saveGroupPower.GroupStatus = "[]" + overall.CONSTANT_DB_System_Permission.Create(&saveGroupPower) + } + publicmethod.Result(0, groupInfo, c) +} + +/* +* +@ 作者: 秦东 +@ 时间: 2025-12-27 08:13:42 +@ 功能: 写入App及相关菜单权限 +*/ +func (a *ApiMethod) AppPowerConfig(c *gin.Context) { + var requestData AppMenuPower + c.ShouldBindJSON(&requestData) + if requestData.PowerType == "" { + publicmethod.Result(1, requestData, c, "未知配权系统!不可进行配权") + return + } + + if requestData.PowerId == "" { + publicmethod.Result(1, requestData, c, "未知配权系统!不可进行配权") + return + } + if requestData.AppId == "" { + publicmethod.Result(1, requestData, c, "未知配权应用!不可进行配权") + return + } + appPowerJson, _ := json.Marshal(requestData.MenuList) + appType := "app" + uuid := publicmethod.GetUUid(1) + var appPowerInfo modelssystempermission.AuthPower + appPowerInfo.GetCont(map[string]interface{}{"`appType`": appType, "`orgPowerType`": requestData.PowerType, "`orgOrUserKey`": requestData.PowerId, "`appKey`": requestData.AppId}, "`id`", "`isTrue`", "`appButPower`") + if appPowerInfo.Id == 0 { //新增 + var newAppPowerInfo modelssystempermission.AuthPower + newAppPowerInfo.Id = uuid + newAppPowerInfo.OrgPowerType = requestData.PowerType + newAppPowerInfo.OrgOrUserKey, _ = strconv.ParseInt(requestData.PowerId, 10, 64) + newAppPowerInfo.AppType = appType + newAppPowerInfo.AppKey, _ = strconv.ParseInt(requestData.AppId, 10, 64) + newAppPowerInfo.Time = time.Now().Unix() + if requestData.AppIsTrue { + newAppPowerInfo.IsTrue = 1 //1:有;非1:无) + } else { + newAppPowerInfo.IsTrue = 0 + } + newAppPowerInfo.PowerInfo = string(appPowerJson) + operAtionBut, _ := json.Marshal(requestData.AppPower) + newAppPowerInfo.AppButPower = string(operAtionBut) + overall.CONSTANT_DB_System_Permission.Create(&newAppPowerInfo) + var oldPower modelssystempermission.PowerInfo + oldPower.DelCont(map[string]interface{}{"`authId`": uuid}) + var menuPowList AppMenuAry + menuPowList.List = []AppMenuInfo{} + menuPowList.AppMenuTreeSubNew(requestData.MenuList, uuid) + } else { //编辑 + uuid = appPowerInfo.Id + saveData := publicmethod.MapOut[string]() + saveData["powerInfo"] = string(appPowerJson) + if requestData.AppIsTrue { + saveData["isTrue"] = 1 + } else { + saveData["isTrue"] = 0 + } + operAtionBut, _ := json.Marshal(requestData.AppPower) + saveData["appButPower"] = string(operAtionBut) + saveData["time"] = time.Now().Unix() + var saveAppPowerInfo modelssystempermission.AuthPower + saveAppPowerInfo.EiteCont(map[string]interface{}{"`id`": appPowerInfo.Id}, saveData) + var oldPower modelssystempermission.PowerInfo + oldPower.DelCont(map[string]interface{}{"`authId`": appPowerInfo.Id}) + var menuPowList AppMenuAry + menuPowList.List = []AppMenuInfo{} + menuPowList.AppMenuTreeSubNew(requestData.MenuList, appPowerInfo.Id) + } + AppGroupJudje(appType, requestData.PowerType, requestData.PowerId, requestData.GroupList) + publicmethod.Result(0, requestData, c) +} + +/* +* +@ 作者: 秦东 +@ 时间: 2026-01-10 11:42:57 +@ 功能: 处理App分组 +*/ +func AppGroupJudje(appType, powerType, powerId string, groupList []AppInfoPower) { + var groupIdAry []string + for _, v := range groupList { + if v.IsTrue { + groupIdAry = append(groupIdAry, v.Id) + } + } + groupIdAryJson, _ := json.Marshal(groupIdAry) + var authGroupInfo modelssystempermission.AuthGroupPower + authGroupInfo.GetCont(map[string]interface{}{"`appType`": appType, "`orgPowerType`": powerType, "`orgOrUserKey`": powerId}) + if authGroupInfo.Id != 0 { + saveData := publicmethod.MapOut[string]() + saveData["groupStatus"] = string(groupIdAryJson) + saveData["`time`"] = time.Now().Unix() + var newAuthGroupInfo modelssystempermission.AuthGroupPower + newAuthGroupInfo.EiteCont(map[string]interface{}{"`id`": authGroupInfo.Id}, saveData) + } else { + powerIdInt, _ := strconv.ParseInt(powerId, 10, 64) + var addInfo modelssystempermission.AuthGroupPower + addInfo.Id = publicmethod.GetUUid(1) + addInfo.AppType = appType + addInfo.OrgPowerType = powerType + addInfo.OrgOrUserKey = powerIdInt + addInfo.Time = time.Now().Unix() + addInfo.PowerInfo = "[]" + addInfo.GroupStatus = string(groupIdAryJson) + overall.CONSTANT_DB_System_Permission.Create(&addInfo) + } +} diff --git a/api/version1/grantpowers/postpower.go b/api/version1/grantpowers/postpower.go index 2a11926..c11e229 100644 --- a/api/version1/grantpowers/postpower.go +++ b/api/version1/grantpowers/postpower.go @@ -2,6 +2,7 @@ package grantpowers import ( "appPlatform/models/modelAppPlatform" + "appPlatform/models/modelshr" "appPlatform/models/modelsschool" "appPlatform/models/modelsstorage" "appPlatform/models/modelssystempermission" @@ -657,7 +658,7 @@ func (a *ApiMethod) AppInitAuthorization(c *gin.Context) { requestData.PowerType = "org" } if requestData.AppType == "" { - requestData.AppType = "system" + requestData.AppType = "app" } if requestData.RoleId == "" { requestData.RoleId = "0" @@ -727,7 +728,10 @@ func GetGroupApp(uuId int64, powerType, appType, powerId, systemId string) (appA appCont.ParentId = strconv.FormatInt(v.Groupid, 10) //上级 appCont.IsPick = false var authId []int64 + // if v.SignCode == 339779471756234752 { 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) } @@ -753,30 +757,62 @@ func AppCallBackShow(appId int64, powerType, appType, powerId string) (isTrue bo 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 { + var authPower GainAppPowerTop + //角色 + syncSeting.Add(1) + go authPower.HaveAppAuthPower(appId, "role", appType, powerId) + //行政组织 + syncSeting.Add(1) + go authPower.HaveAppAuthPower(appId, "org", appType, powerId) + syncSeting.Wait() + //岗位 + syncSeting.Add(1) + go authPower.HaveAppAuthPower(appId, "job", appType, powerId) + + syncSeting.Wait() + + if len(authPower.List) > 0 { + for _, v := range authPower.List { 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) + var butPowerAry []string + json.Unmarshal([]byte(v.AppButPower), &butPowerAry) + if len(butPowerAry) > 0 { + butPower = publicmethod.MergeStruct[string](butPowerAry, butPower) } + } + } } + + // 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 } @@ -791,6 +827,67 @@ func AppCallBackShow(appId int64, powerType, appType, powerId string) (isTrue bo return } +/* +* +@ 作者: 秦东 +@ 时间: 2026-01-04 11:36:50 +@ 功能: 获取App权限列表 +*/ +func (g *GainAppPowerTop) HaveAppAuthPower(appId int64, powerType, appType, powerId string) { + defer syncSeting.Done() + //Step 1: 获取人员相关权限 + var userCont modelshr.PersonArchives + userCont.GetCont(map[string]interface{}{"`key`": powerId}) + + gormDb := overall.CONSTANT_DB_System_Permission.Where("`appType` = ? AND `appKey` = ?", appType, appId) + switch powerType { + case "role": + //Step 2: 获取相关角色 + var SystemRole []int64 + overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Select("`id`").Where("`state` = 1 AND `types` = 1").Where("FIND_IN_SET(?, `roleuser`)", userCont.Key).Find(&SystemRole) + if len(SystemRole) > 0 { + var authList []modelssystempermission.AuthPower + gormDb.Where("`orgOrUserKey` IN ? AND `orgPowerType` = ?", SystemRole, "role").Find(&authList) + if len(authList) > 0 { + g.List = append(g.List, authList...) + } + + } + case "org": + if userCont.AdminOrg != 0 { + var authList []modelssystempermission.AuthPower + gormDb.Where("`orgOrUserKey` IN ? AND `orgPowerType` = ?", userCont.AdminOrg, "org").Find(&authList) + if len(authList) > 0 { + g.List = append(g.List, authList...) + } else { + var allFirstOrgId publicmethod.GetOrgAllParent + allFirstOrgId.GetOrgFirst(userCont.AdminOrg) + if len(allFirstOrgId.Id) > 0 { + for _, v := range allFirstOrgId.Id { + if v != 0 { + var authOrgList []modelssystempermission.AuthPower + gormDb.Where("`orgOrUserKey` IN ? AND `orgPowerType` = ?", v, "org").Find(&authOrgList) + if len(authOrgList) > 0 { + g.List = append(g.List, authList...) + break + } + } + } + } + } + } + + case "job": + if userCont.Position != 0 { + var authList []modelssystempermission.AuthPower + gormDb.Where("`orgOrUserKey` = ? AND `orgPowerType` = ?", userCont.Position).Find(&authList) + if len(authList) > 0 { + g.List = append(g.List, authList...) + } + } + } +} + /* * @ 作者: 秦东 @@ -852,8 +949,9 @@ func AppTreeMenus(parentId int64, authId []int64, menuList []modelAppPlatform.Ap */ func AppMenuCallBackShow(menuId int64, authId []int64) (isTrue bool, pagePower, ListPower, FormPower []string, types int64, userPower []int64) { isTrue = false + types = 1 var menuPower []modelssystempermission.PowerInfo - overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.PowerInfo{}).Where(" `authId` IN ? AND `appType` = ? AND `itemId` = ? ", authId, menuId).Find(&menuPower) + overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.PowerInfo{}).Where(" `authId` IN ? AND `itemId` = ? ", authId, menuId).Find(&menuPower) for _, v := range menuPower { if v.IsPick == 1 { isTrue = true @@ -917,12 +1015,14 @@ func (a *ApiMethod) TabsAuthorizationMode(c *gin.Context) { } groupIsShow, _ := json.Marshal(groupIdAry) + groupBurStr, _ := json.Marshal(requestData.GroupPower) //写入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["powerInfo"] = string(groupBurStr) saveData["time"] = time.Now().Unix() var saveInfo modelssystempermission.AuthGroupPower saveInfo.EiteCont(map[string]interface{}{"`id`": appGroupPower.Id}, saveData) @@ -934,7 +1034,7 @@ func (a *ApiMethod) TabsAuthorizationMode(c *gin.Context) { saveGroupPower.OrgPowerType = requestData.PowerType saveGroupPower.OrgOrUserKey, _ = strconv.ParseInt(requestData.RoleId, 10, 64) saveGroupPower.Time = time.Now().Unix() - saveGroupPower.PowerInfo = "['xz','dl','bj','xzapp']" + saveGroupPower.PowerInfo = string(groupBurStr) saveGroupPower.GroupStatus = string(groupIsShow) overall.CONSTANT_DB_System_Permission.Create(&saveGroupPower) } diff --git a/api/version1/grantpowers/type.go b/api/version1/grantpowers/type.go index 68dcd9b..5898585 100644 --- a/api/version1/grantpowers/type.go +++ b/api/version1/grantpowers/type.go @@ -1,6 +1,7 @@ package grantpowers import ( + "appPlatform/models/modelssystempermission" "appPlatform/overall/publicmethod" "sync" @@ -208,21 +209,25 @@ type AppInfoPower struct { // 应用菜单树 type AppMenuTreeInit struct { PowerContInit - AppKey string `json:"appKey"` - PagePower []string `json:"pagePower"` - FormPower []string `json:"formPower"` - ListPower []string `json:"listPower"` - VisibleRange DatePowerInfo `json:"visibleRange"` - MenuType int `json:"menuType"` - Children []AppMenuTreeInit `json:"children"` + AppKey string `json:"appKey"` + PagePower []string `json:"pagePower"` + PagePowerIsAll bool `json:"pagePowerIsAll"` + FormPower []string `json:"formPower"` + FormPowerIsAll bool `json:"formPowerIsAll"` + ListPower []string `json:"listPower"` + ListPowerIsAll bool `json:"listPowerIsAll"` + VisibleRange DatePowerInfo `json:"visibleRange"` + MenuType int `json:"menuType"` + Children []AppMenuTreeInit `json:"children"` } // 提交授权 type SaveAppPower struct { - AppType string `json:"appType"` - PowerType string `json:"powerType"` - RoleId string `json:"roleId"` - ListPower []AppGroupInfo `json:"listPower"` + AppType string `json:"appType"` + PowerType string `json:"powerType"` + RoleId string `json:"roleId"` + ListPower []AppGroupInfo `json:"listPower"` + GroupPower []string `json:"groupPower"` } // 自定义App菜单列表 @@ -239,3 +244,41 @@ type AppMenuInfo struct { type AppMenuAry struct { List []AppMenuInfo `json:"list"` } + +type AppConfig struct { + PowerType string `json:"powerType"` + PowerId interface{} `json:"powerId"` +} + +type GetGroupAppList struct { + AppType string `json:"appType"` + PowerType string `json:"powerType"` + RoleId string `json:"roleId"` + Group string `json:"group"` + AppId string `json:"appId"` +} + +type ConfigSetupGroup struct { + AppConfig + GroupButPower []string `json:"groupButPower"` +} + +type AppMenuPower struct { + PowerType string `json:"powerType"` + PowerId string `json:"powerId"` + AppId string `json:"appId"` + AppPower []string `json:"appPower"` + AppIsTrue bool `json:"appIsTrue"` + MenuList []AppMenuTreeInit `json:"menuList"` + GroupList []AppInfoPower `json:"groupList"` +} + +/* +* +@ 作者: 秦东 +@ 时间: 2026-01-04 11:31:23 +@ 功能: 获取App层面权限 +*/ +type GainAppPowerTop struct { + List []modelssystempermission.AuthPower +} diff --git a/api/version1/humanResources/org.go b/api/version1/humanResources/org.go index 9374a1a..6fbacda 100644 --- a/api/version1/humanResources/org.go +++ b/api/version1/humanResources/org.go @@ -39,7 +39,8 @@ func (a *ApiMethod) AuthorizeOrgTree(c *gin.Context) { fmt.Printf("权限-----22222222222222222222222222222222222222222222222222222222222222222222222---->%v\n\n\n", gotmDb) //获取权限 myPower := publicmethod.GetMyMenuPower(myContInfo.Key, requestData.MenuId) - fmt.Printf("权限--------->%v------>%v\n\n\n", myPower.Scope, myPower) + myPowerJson, _ := json.Marshal(myPower) + fmt.Printf("权限--------->%v------>%v\n\n\n", myPower.Scope, string(myPowerJson)) var fisrtId int64 switch myPower.Scope { //可见范围(1:本人;2:本岗位;3:本部门;4:本分部;5:指定行政组织;6:所有) case 2: diff --git a/api/version1/menus/menus.go b/api/version1/menus/menus.go index 622ae05..a04b385 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 93fdf4d..89deed8 100644 --- a/api/version1/setupRoule/authorization.go +++ b/api/version1/setupRoule/authorization.go @@ -139,6 +139,32 @@ func (a *AppSystemInfo) EditAuthGroupPower(uuid int64) { saveGroupPower.EiteCont(map[string]interface{}{"`id`": uuid}, saveData) } } +func (a *AppSystemInfo) EditAuthGroupPowerEs(uuid int64, powerAry []string) { + powerSte, _ := json.Marshal(powerAry) + var groupPower modelssystempermission.AuthGroupPower + err := groupPower.GetCont(map[string]interface{}{"`id`": uuid}) + // fmt.Printf("编辑自定义应用分组授权--->%v--->%v\n\n", err, groupPower.Time) + if err != nil || groupPower.Time == 0 { + oukId, _ := strconv.ParseInt(a.RoleId, 10, 64) + var saveGroupPower modelssystempermission.AuthGroupPower + saveGroupPower.Id = uuid + saveGroupPower.AppType = a.AppSystem + saveGroupPower.OrgPowerType = a.PowerType + saveGroupPower.OrgOrUserKey = oukId + saveGroupPower.Time = time.Now().Unix() + saveGroupPower.PowerInfo = string(powerSte) + overall.CONSTANT_DB_System_Permission.Create(&saveGroupPower) + } else { + saveData := publicmethod.MapOut[string]() + saveData["`appType`"] = a.AppSystem + saveData["`orgPowerType`"] = a.PowerType + saveData["`orgOrUserKey`"] = a.RoleId + saveData["`time`"] = time.Now().Unix() + saveData["`powerInfo`"] = string(powerSte) + var saveGroupPower modelssystempermission.AuthGroupPower + saveGroupPower.EiteCont(map[string]interface{}{"`id`": uuid}, saveData) + } +} /* * @@ -150,6 +176,7 @@ func (a *AppSystemInfo) SplitPermissions(uuid int64) error { var oldPower modelssystempermission.PowerInfo err := oldPower.DelCont(map[string]interface{}{"`authId`": uuid}) var insterAry []modelssystempermission.PowerInfo + switch a.AppSystem { case "app": @@ -187,6 +214,7 @@ func (a *AppSystemInfo) SplitPermissions(uuid int64) error { insterAry = append(insterAry, saveInfo) } case "system": + var appStsMap []AppPowerTree for _, v := range a.SystemPower { isPick := 0 if v.IsTrue { @@ -209,14 +237,45 @@ func (a *AppSystemInfo) SplitPermissions(uuid int64) error { saveInfo.ButPower = jieguo //按钮权限 saveInfo.Time = time.Now().Unix() //编辑时间 insterAry = append(insterAry, saveInfo) + appStsMap = append(appStsMap, v) if len(v.Children) > 0 { var childAry SystemTreePower childAry.WriteSystemInfo(uuid, v.Children) if len(childAry.WriteInfo) > 0 { insterAry = append(insterAry, childAry.WriteInfo...) } + if len(childAry.AppMenuMap) > 0 { + appStsMap = append(appStsMap, childAry.AppMenuMap...) + } + } + + } + var appGroupPower []string + for _, v := range appStsMap { + if v.Name == "极刻零码" { + for _, bv := range v.ButtenPower { + switch bv.Name { + case "新增分组": + appGroupPower = append(appGroupPower, "xz") + case "删除分组": + appGroupPower = append(appGroupPower, "dl") + case "编辑分组": + appGroupPower = append(appGroupPower, "bj") + case "新增App": + appGroupPower = append(appGroupPower, "xz") + default: + } + } } } + var groupPower modelssystempermission.AuthGroupPower + groupPower.GetCont(map[string]interface{}{"`appType`": "app", "`orgPowerType`": a.PowerType, "`orgOrUserKey`": a.RoleId}) + if groupPower.Id != 0 { + a.EditAuthGroupPowerEs(groupPower.Id, appGroupPower) + } else { + a.EditAuthGroupPowerEs(uuid, appGroupPower) + } + default: } if len(insterAry) > 0 { @@ -248,6 +307,7 @@ func (s *SystemTreePower) WriteSystemInfo(uuid int64, list []AppPowerTree) { saveInfo.ButPower = jieguo //按钮权限 saveInfo.Time = time.Now().Unix() //编辑时间 s.WriteInfo = append(s.WriteInfo, saveInfo) + s.AppMenuMap = append(s.AppMenuMap, v) if len(v.Children) > 0 { s.WriteSystemInfo(uuid, v.Children) } diff --git a/api/version1/setupRoule/entry.go b/api/version1/setupRoule/entry.go index 35bdc9f..0fbc370 100644 --- a/api/version1/setupRoule/entry.go +++ b/api/version1/setupRoule/entry.go @@ -137,7 +137,8 @@ type DatePowerInfo struct { // 权限树写入 type SystemTreePower struct { - WriteInfo []modelssystempermission.PowerInfo + WriteInfo []modelssystempermission.PowerInfo + AppMenuMap []AppPowerTree } // 获取角色所有人 diff --git a/api/version1/setupRoule/power.go b/api/version1/setupRoule/power.go index 5b5324f..2092a8f 100644 --- a/api/version1/setupRoule/power.go +++ b/api/version1/setupRoule/power.go @@ -28,6 +28,7 @@ func (a *ApiMethod) AppPowerUnit(c *gin.Context) { requestData.RoleId = "0" } powerInfo, _ := publicmethod.GetSystemPower(requestData.PowerType, requestData.AppSystem, requestData.RoleId, requestData.AppId) + var appPowerTrue []AppPowerTree switch requestData.AppSystem { default: @@ -44,7 +45,7 @@ func (a *ApiMethod) AppPowerUnit(c *gin.Context) { */ func AppMenuPower(powerType, unitId string, powerInfo publicmethod.SendSystemPower) []AppPowerTree { var menuList []AppPowerInfo - overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.Menus{}).Where("`visible` = 1").Find(&menuList) + overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.Menus{}).Where("`visible` = 1 OR `visible` = 2").Find(&menuList) sort.Slice(menuList, func(i, j int) bool { return menuList[i].Sort < menuList[j].Sort @@ -95,6 +96,8 @@ func MenuButList(noButMenu, ButMenu []AppPowerInfo) (menuButList []AppMenuBut) { menuButInfo.ParentId = v.ParentId //父菜单ID menuButInfo.IsTrue = v.IsTrue menuButInfo.AppPowerList = []int64{1} + menuButInfo.Visible = 1 + menuButInfo.VisibleRange.Types = 1 for _, bv := range ButMenu { if bv.ParentId == v.Id { // var butInfo AppPowerInfo @@ -149,8 +152,15 @@ func MenuPower(menuInfo []AppMenuBut, powerInfo publicmethod.SendSystemPower) (m for _, pv := range powerInfo.PowerList { if pv.ItemId == int64(v.Id) { v.IsTrue = pv.IsPick - v.Visible = pv.VisibleRange - v.VisibleRange.Types = pv.VisibleRange + v.Visible = 1 + if pv.VisibleRange > 1 { + v.Visible = pv.VisibleRange + } + v.VisibleRange.Types = 1 + if pv.VisibleRange > 1 { + v.VisibleRange.Types = pv.VisibleRange + } + if len(pv.VisibleOrg) > 0 { // var visStr []string // for _, visv := range pv.VisibleOrg { diff --git a/api/version1/user/type.go b/api/version1/user/type.go index 39a89dd..16441e4 100644 --- a/api/version1/user/type.go +++ b/api/version1/user/type.go @@ -127,19 +127,20 @@ type SendOrgAndManInfo struct { // 输出权限列表 type SendAllPower struct { - SystemPower []SystemInfoPower `json:"systemPower"` - MenuIdAry []int64 `json:"menuIdAry"` - MenuButIdAry []string `json:"menuButIdAry"` - AppSystemPower []AppMyPower `json:"appSystemPower"` - AppKeyAry []string `json:"appKeyAry"` - AppGroupPower []string `json:"appGroupPower"` //自定义App分组权限 - AppGroupMenu []string `json:"appGroupMenu"` + SystemPower []SystemInfoPower `json:"systemPower"` //系统权限 + MenuIdAry []int64 `json:"menuIdAry"` //菜单 + MenuButIdAry []string `json:"menuButIdAry"` //菜单按钮 + AppSystemPower []AppMyPower `json:"appSystemPower"` //自定义App权限 + AppKeyAry []string `json:"appKeyAry"` //自定义App识别码 + AppGroupPower []string `json:"appGroupPower"` //自定义App分组权限 + AppGroupMenu []string `json:"appGroupMenu"` //自定义分组菜单 + Level int64 `json:"level"` //等级 } type SystemInfoPower struct { - AppId string `json:"AppId"` - publicmethod.PublicName - IsPick bool `json:"isPick` + AppId string `json:"AppId"` //菜单ID + publicmethod.PublicName //菜单名称 + IsPick bool `json:"isPick` //是否授权 OutPowerInfo } diff --git a/api/version1/workWechat/wechat.go b/api/version1/workWechat/wechat.go index 031a306..92c250a 100644 --- a/api/version1/workWechat/wechat.go +++ b/api/version1/workWechat/wechat.go @@ -152,7 +152,7 @@ func (a *ApiMethod) LookOnePeopleArchives(c *gin.Context) { } var surverManInfo modelshr.ManCont - err = surverManInfo.GetCont(map[string]interface{}{"`number`": requestData.SurveyMan}, "`emp_type`", "`company`", "`maindeparment`", "`admin_org`", "`position`", "`position`", "`role`") + err = surverManInfo.GetCont(map[string]interface{}{"`number`": requestData.SurveyMan}, "`emp_type`", "`company`", "`maindeparment`", "`admin_org`", "`position`", "`position`", "`role`", "`key`") if err != nil { publicmethod.Result(0, sendData, c) return @@ -166,42 +166,86 @@ func (a *ApiMethod) LookOnePeopleArchives(c *gin.Context) { var orgList []string sendData.Purview, _, orgList, sendData.Level = user.GetUserPower("appsystem", surverManInfo.Position, roleList) - // fmt.Printf("人员信息--->Purview:%v--->orgList:%v--->Level:%v\n", sendData.Purview, orgList, sendData.Level) + myPower := publicmethod.GetMyMenuPower(surverManInfo.Key, "135") - if publicmethod.IsInTrue[string]("210700510225772544", sendData.Purview) { + fmt.Printf("人员信息--->Purview:%v--->orgList:%v--->Level:%v\n", sendData.Purview, orgList, sendData.Level) + + myPowerJson, _ := json.Marshal(myPower) + fmt.Printf("权限--------->%v------>%v\n\n\n", myPower.Scope, string(myPowerJson)) + + // if publicmethod.IsInTrue[string]("210700510225772544", sendData.Purview) { + if myPower.IsPick { //获取被查看人行政组织 var lookManInfo modelshr.PersonArchives - lookManInfo.GetCont(map[string]interface{}{"`number`": requestData.UnSurveyMan}, "`company`", "`maindeparment`", "`admin_org`") - switch sendData.Level { + lookManInfo.GetCont(map[string]interface{}{"`number`": requestData.UnSurveyMan}, "`company`", "`maindeparment`", "`admin_org`", "`key`", "`position`") + // switch sendData.Level { + switch myPower.Scope { case 1: - var sunOrg publicmethod.GetOrgAllParent - sunOrg.GetOrgSun(surverManInfo.AdminOrg) - sunOrg.Id = append(sunOrg.Id, surverManInfo.AdminOrg) - if publicmethod.IsInTrue[int64](lookManInfo.Company, sunOrg.Id) || publicmethod.IsInTrue[int64](lookManInfo.MainDeparment, sunOrg.Id) || publicmethod.IsInTrue[int64](lookManInfo.AdminOrg, sunOrg.Id) { + if surverManInfo.Key == lookManInfo.Key { sendData.IsOk = 1 + } else { + sendData.IsOk = 2 } + // var sunOrg publicmethod.GetOrgAllParent + // sunOrg.GetOrgSun(surverManInfo.AdminOrg) + // sunOrg.Id = append(sunOrg.Id, surverManInfo.AdminOrg) + // if publicmethod.IsInTrue[int64](lookManInfo.Company, sunOrg.Id) || publicmethod.IsInTrue[int64](lookManInfo.MainDeparment, sunOrg.Id) || publicmethod.IsInTrue[int64](lookManInfo.AdminOrg, sunOrg.Id) { + // sendData.IsOk = 1 + // } case 2: - var sunOrg publicmethod.GetOrgAllParent - sunOrg.GetOrgSun(surverManInfo.MainDeparment) - sunOrg.Id = append(sunOrg.Id, surverManInfo.MainDeparment) - if publicmethod.IsInTrue[int64](lookManInfo.Company, sunOrg.Id) || publicmethod.IsInTrue[int64](lookManInfo.MainDeparment, sunOrg.Id) || publicmethod.IsInTrue[int64](lookManInfo.AdminOrg, sunOrg.Id) { + if surverManInfo.Position == lookManInfo.Position { sendData.IsOk = 1 + } else { + sendData.IsOk = 2 } + // var sunOrg publicmethod.GetOrgAllParent + // sunOrg.GetOrgSun(surverManInfo.MainDeparment) + // sunOrg.Id = append(sunOrg.Id, surverManInfo.MainDeparment) + // if publicmethod.IsInTrue[int64](lookManInfo.Company, sunOrg.Id) || publicmethod.IsInTrue[int64](lookManInfo.MainDeparment, sunOrg.Id) || publicmethod.IsInTrue[int64](lookManInfo.AdminOrg, sunOrg.Id) { + // sendData.IsOk = 1 + // } case 3: - var sunOrg publicmethod.GetOrgAllParent - sunOrg.GetOrgSun(surverManInfo.Company) - sunOrg.Id = append(sunOrg.Id, surverManInfo.Company) - if publicmethod.IsInTrue[int64](lookManInfo.Company, sunOrg.Id) || publicmethod.IsInTrue[int64](lookManInfo.MainDeparment, sunOrg.Id) || publicmethod.IsInTrue[int64](lookManInfo.AdminOrg, sunOrg.Id) { - sendData.IsOk = 1 + var powerMan publicmethod.GetOrgAllParent + powerMan.GetOrgSun(surverManInfo.AdminOrg) + powerMan.Id = append(powerMan.Id, surverManInfo.AdminOrg) + + var lookMan publicmethod.GetOrgAllParent + lookMan.GetOrgSun(lookManInfo.AdminOrg) + lookMan.Id = append(lookMan.Id, lookManInfo.AdminOrg) + for _, lv := range lookMan.Id { + if publicmethod.IsInTrue[int64](lv, powerMan.Id) { + sendData.IsOk = 1 + } } + // var sunOrg publicmethod.GetOrgAllParent + // sunOrg.GetOrgSun(surverManInfo.Company) + // sunOrg.Id = append(sunOrg.Id, surverManInfo.Company) + // if publicmethod.IsInTrue[int64](lookManInfo.Company, sunOrg.Id) || publicmethod.IsInTrue[int64](lookManInfo.MainDeparment, sunOrg.Id) || publicmethod.IsInTrue[int64](lookManInfo.AdminOrg, sunOrg.Id) { + // sendData.IsOk = 1 + // } case 4: - departMent := strconv.FormatInt(lookManInfo.MainDeparment, 10) - orgId := strconv.FormatInt(lookManInfo.AdminOrg, 10) - companyId := strconv.FormatInt(lookManInfo.Company, 10) - if publicmethod.IsInTrue[string](companyId, orgList) || publicmethod.IsInTrue[string](departMent, orgList) || publicmethod.IsInTrue[string](orgId, orgList) { + if surverManInfo.Company == lookManInfo.Company { sendData.IsOk = 1 + } else { + sendData.IsOk = 2 } + // departMent := strconv.FormatInt(lookManInfo.MainDeparment, 10) + // orgId := strconv.FormatInt(lookManInfo.AdminOrg, 10) + // companyId := strconv.FormatInt(lookManInfo.Company, 10) + // if publicmethod.IsInTrue[string](companyId, orgList) || publicmethod.IsInTrue[string](departMent, orgList) || publicmethod.IsInTrue[string](orgId, orgList) { + // sendData.IsOk = 1 + // } case 5: + var orgMap []int64 + for _, sv := range myPower.ScopeManAry { + orgMap = append(orgMap, int64(sv)) + } + if publicmethod.IsInTrue[int64](lookManInfo.AdminOrg, orgMap) { + sendData.IsOk = 1 + } else { + sendData.IsOk = 2 + } + case 6: sendData.IsOk = 1 default: sendData.IsOk = 2 diff --git a/apirouter/authenticationroute/signcoderoute.go b/apirouter/authenticationroute/signcoderoute.go index c27614a..417310e 100644 --- a/apirouter/authenticationroute/signcoderoute.go +++ b/apirouter/authenticationroute/signcoderoute.go @@ -31,5 +31,7 @@ func (a *RoleApiRouter) RouterGroup(router *gin.RouterGroup) { apiRouter.POST("editRoleCont", methodBinding.EditRoleCont) //编辑角色组 apiRouter.POST("editRoleStatus", methodBinding.EditRoleStatus) //修改角色状态 apiRouter.POST("getOrgPostTree", methodBinding.GetOrgPostTree) //获取行政组织加岗位树 + + apiRouter.POST("verifyInformationRolePersonnel", methodBinding.VerifyInformationRolePersonnel) //校队角色人员信息 } } diff --git a/apirouter/v1/grantsystempower/pc.go b/apirouter/v1/grantsystempower/pc.go index 39d7c19..e949287 100644 --- a/apirouter/v1/grantsystempower/pc.go +++ b/apirouter/v1/grantsystempower/pc.go @@ -25,5 +25,12 @@ func (a *ApiRouter) RouterGroupPc(router *gin.RouterGroup) { apiRouter.POST("appInitAuthorization", methodBinding.AppInitAuthorization) //初始化应用授权选项 apiRouter.POST("tabsAuthorizationMode", methodBinding.TabsAuthorizationMode) //选项卡App授权模式 + + apiRouter.POST("getAppGroupo", methodBinding.GetAppGroupo) //初始化v选项卡App双轴 + apiRouter.POST("getGroupAppList", methodBinding.GetGroupAppList) //根据分组获取App列表 + apiRouter.POST("getAppMenuList", methodBinding.GetAppMenuList) //获取app菜单 + + apiRouter.POST("appGroupPowerConfig", methodBinding.AppGroupPowerConfig) //分组授权 + apiRouter.POST("appPowerConfig", methodBinding.AppPowerConfig) //写入App及相关菜单权限 } } diff --git a/config/configDatabase/database.yaml b/config/configDatabase/database.yaml index 29f5b5e..c279275 100644 --- a/config/configDatabase/database.yaml +++ b/config/configDatabase/database.yaml @@ -260,8 +260,8 @@ storage: #应用平台数据库 servermaster: - url_path: '36.133.126.182' #数据库地址 - port: 3306 #数据库端口 + url_path: '36.133.123.69' #数据库地址 + port: 13366 #数据库端口 charset: 'utf8mb4' #数据库编码方式 parseTime: 'True' #是否自动转换时间 loc: 'Local' #时区 diff --git a/overall/publicmethod/getUserPower.go b/overall/publicmethod/getUserPower.go index 7ab7a01..d754111 100644 --- a/overall/publicmethod/getUserPower.go +++ b/overall/publicmethod/getUserPower.go @@ -221,7 +221,7 @@ func (g *GainUserPower) GetUserPower() (powerInfo SendUserPower) { # */ -func (g *GainUserPower) MakeSearchSql(gormDb *gorm.DB, userCont modelshr.ManCont, isOdeb string, appFormPower AppMyPowerTable) *gorm.DB { +func (g *GainUserPower) MakeSearchSql(gormDb *gorm.DB, userCont modelshr.ManCont, isOdeb string, appFormPower AppMyPowerTable, timeSet PowerTimeSql) *gorm.DB { // powerInfo := g.GetUserPower() // // js, _ := json.Marshal(powerInfo) // fmt.Printf("\n\n\n等级-----%v--- ---->%v\n\n\n", isOdeb, powerInfo) @@ -275,7 +275,12 @@ func (g *GainUserPower) MakeSearchSql(gormDb *gorm.DB, userCont modelshr.ManCont case 6: default: } - gormDb = gormDb.Or("f.`creater` = ?", userCont.Key) + if timeSet.IsTime { + gormDb = gormDb.Or("f.`creater` = ? AND ? BETWEEN ? AND ? ", userCont.Key, timeSet.TimeWord, timeSet.StartTime, timeSet.EndTime) + } else { + gormDb = gormDb.Or("f.`creater` = ?", userCont.Key) + } + return gormDb } @@ -291,13 +296,16 @@ func GetSystemPower(powerType, systemTyep, powerId, systemId string) (powerInfo powerInfo.PowerId = powerId powerInfo.SystemId = systemId powerInfo.SystemIsPick = false + + fmt.Printf("%v--------->%v--------->%v\n\n", powerType, systemTyep, powerId) if powerType == "" || systemTyep == "" || powerId == "" { return } - if systemId != "system" && systemId == "" { + fmt.Printf("%v--------->%v--------->%v\n\n", systemId, systemId, systemId) + if systemTyep != "system" && systemId == "" { return } - + fmt.Printf("%v-----1---->%v--------->%v\n\n", systemId, systemId, systemId) var masterPower modelssystempermission.AuthPower gormDb := overall.CONSTANT_DB_System_Permission.Model(&masterPower).Where("`orgPowerType` = ? AND `orgOrUserKey` = ? AND `appType` = ?", powerType, powerId, systemTyep) switch systemTyep { diff --git a/overall/publicmethod/technique.go b/overall/publicmethod/technique.go index e470585..ed14d19 100644 --- a/overall/publicmethod/technique.go +++ b/overall/publicmethod/technique.go @@ -2556,7 +2556,7 @@ func GetMenuRouterThree(parentId int, threeData []modelAppPlatform.Menus) []Menu if v.Types == 5 { // node.Path = fmt.Sprintf("%v?appid=%v&tableid=%v", v.Path, v.AppId, v.TableId) } - node.AppId = v.AppId + node.AppId = int64(v.Id) node.TableId = v.TableId node.Component = v.Component //组件路径 node.Redirect = v.Redirect //跳转链接 diff --git a/overall/publicmethod/type.go b/overall/publicmethod/type.go index f71446d..b1074ed 100644 --- a/overall/publicmethod/type.go +++ b/overall/publicmethod/type.go @@ -464,3 +464,11 @@ type SendAppTabelPower struct { FormPower []AppMyPowerTable `json:"formPower"` ButPower []string `json:"butPower"` } + +// 时间参数 +type PowerTimeSql struct { + IsTime bool + TimeWord interface{} + StartTime interface{} + EndTime interface{} +}