Browse Source

授权完成

master
herenshan112 4 days ago
parent
commit
7179db645b
  1. 85
      api/version1/grantpowers/menuPower.go
  2. 6
      api/version1/grantpowers/myAppPower.go
  3. 475
      api/version1/grantpowers/postpower.go
  4. 64
      api/version1/grantpowers/type.go
  5. 2
      api/version1/setupRoule/power.go
  6. 94
      api/version1/user/setPower.go
  7. 2
      api/version1/user/type.go
  8. 2
      api/version1/user/userCont.go
  9. 4
      apirouter/v1/grantsystempower/pc.go
  10. 339
      config/configDatabase/database_5.241.yaml
  11. 2
      go.mod
  12. 1
      models/modelssystempermission/auth_group_power.go
  13. 3
      overall/publicmethod/technique.go

85
api/version1/grantpowers/menuPower.go

@ -0,0 +1,85 @@
package grantpowers
import (
"appPlatform/models/modelssystempermission"
"appPlatform/overall"
"encoding/json"
"strconv"
"time"
)
/*
*
@ 作者: 秦东
@ 时间: 2025-12-18 16:30:08
@ 功能: 解析自定义App菜单列表
*/
func (a *AppMenuAry) AppMenuTreeSubNew(AppMenuTree []AppMenuTreeInit, uuid int64) {
if len(AppMenuTree) > 0 {
for _, v := range AppMenuTree {
var menuInfo AppMenuInfo
menuInfo.Id = v.Id //识别符
menuInfo.Name = v.Name //名称
menuInfo.ParentId = v.ParentId //上级
menuInfo.IsPick = v.IsPick //是否激活
menuInfo.IsTrue = v.IsTrue //是否选中
menuInfo.AppKey = v.AppKey
menuInfo.PagePower = v.PagePower
menuInfo.FormPower = v.FormPower
menuInfo.ListPower = v.ListPower
menuInfo.VisibleRange = v.VisibleRange
menuInfo.MenuType = v.MenuType
a.List = append(a.List, menuInfo)
EditAppMenuPoserSave(uuid, menuInfo)
if len(v.Children) > 0 {
a.AppMenuTreeSubNew(v.Children, uuid)
}
}
}
}
func EditAppMenuPoserSave(uuid int64, v AppMenuInfo) {
// json, _ := json.Marshal(a.List)
// fmt.Printf("\n\n%v----------------->%v\n\n", uuid, string(json))
var saveInfo modelssystempermission.PowerInfo
saveInfo.AuthId = uuid //归属权限
saveInfo.ItemId, _ = strconv.ParseInt(v.Id, 10, 64) //项目ID
if v.IsTrue {
saveInfo.IsPick = 1 //是否有权(1:有;非1:无)
} else {
saveInfo.IsPick = 0 //是否有权(1:有;非1:无)
}
tpAry := MyCreateTablePower(v.FormPower)
if tpAry == "null" {
tpAry = "[]"
}
saveInfo.TablePower = tpAry //表单权限
lpAry := MyCreateTablePower(v.ListPower)
if lpAry == "null" {
lpAry = "[]"
}
saveInfo.ListPower = lpAry //列表权限
pgButAry := MyCreateTablePower(v.PagePower)
if pgButAry == "null" {
pgButAry = "[]"
}
saveInfo.PageButPower = pgButAry //列表权限
inStr := strconv.FormatInt(v.VisibleRange.Types, 10)
intVal, _ := strconv.Atoi(inStr)
saveInfo.VisibleRange = intVal //可见范围(1:本人;2:本岗位;3:本部门;4:本分部;5:指定行政组织;6:所有)
if len(v.VisibleRange.Attribute) > 0 {
visibleOrgStr, _ := json.Marshal(v.VisibleRange.Attribute)
saveInfo.VisibleOrg = string(visibleOrgStr) //可见范围辅助参数
} else {
saveInfo.VisibleOrg = "[]"
}
saveInfo.ButPower = "[]" //按钮权限
saveInfo.Time = time.Now().Unix() //编辑时间
overall.CONSTANT_DB_System_Permission.Create(&saveInfo)
}

6
api/version1/grantpowers/myAppPower.go

@ -35,7 +35,7 @@ func (a *ApiMethod) GainAppEmpowerPower(c *gin.Context) {
powerInfo, formButPowerList := publicmethod.GetSystemPower(requestData.PowerType, requestData.AppType, requestData.RoleId, requestData.Id) powerInfo, formButPowerList := publicmethod.GetSystemPower(requestData.PowerType, requestData.AppType, requestData.RoleId, requestData.Id)
var appMenuList []modelAppPlatform.Appmenus var appMenuList []modelAppPlatform.Appmenus
overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.Appmenus{}).Where("`isLock` = 2 AND `appkey` = ?", appSignCode).Find(&appMenuList) overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.Appmenus{}).Where("`state` = 1 AND `isLock` = 2 AND `appkey` = ?", appSignCode).Find(&appMenuList)
var sendList []CusterAppTablePower var sendList []CusterAppTablePower
for _, v := range appMenuList { for _, v := range appMenuList {
powerInfo, isOk := CallBackAppMenuPower(v, powerInfo.PowerList) powerInfo, isOk := CallBackAppMenuPower(v, powerInfo.PowerList)
@ -63,8 +63,8 @@ func (a *ApiMethod) GainAppEmpowerPower(c *gin.Context) {
} }
} }
outData := publicmethod.MapOut[string]() outData := publicmethod.MapOut[string]()
// outData["list"] = AppMenuTree(appSignCode, sendList) outData["list"] = AppMenuTree(appSignCode, sendList)
outData["list"] = sendList // outData["list"] = sendList
outData["groupButPower"] = []string{} outData["groupButPower"] = []string{}
outData["formButPower"] = formButPowerList outData["formButPower"] = formButPowerList
//获取app按钮控制 //获取app按钮控制

475
api/version1/grantpowers/postpower.go

@ -9,6 +9,7 @@ import (
"appPlatform/overall/publicmethod" "appPlatform/overall/publicmethod"
"encoding/json" "encoding/json"
"fmt" "fmt"
"sort"
"strconv" "strconv"
"strings" "strings"
"time" "time"
@ -642,3 +643,477 @@ func CallBackAppMenuPower(tableInfo modelAppPlatform.Appmenus, powerList []publi
} }
return return
} }
/*
*
@ 作者: 秦东
@ 时间: 2025-12-17 10:00:38
@ 功能: 初始化应用授权选项
*/
func (a *ApiMethod) AppInitAuthorization(c *gin.Context) {
var requestData GainAppIdAndRoleNew
c.ShouldBindJSON(&requestData)
if requestData.PowerType == "" {
requestData.PowerType = "org"
}
if requestData.AppType == "" {
requestData.AppType = "system"
}
if requestData.RoleId == "" {
requestData.RoleId = "0"
}
var groupPower modelssystempermission.AuthGroupPower
groupPower.GetCont(map[string]interface{}{"`appType`": requestData.AppType, "`orgPowerType`": requestData.PowerType, "`orgOrUserKey`": requestData.RoleId})
//Step1:获取分组
var groupIsTrue []string
if groupPower.GroupStatus != "" {
json.Unmarshal([]byte(groupPower.GroupStatus), &groupIsTrue)
}
var AppPowerInfo []AppGroupInfo
var groupInfo modelAppPlatform.CustomerFormGroup
groupAry, _ := groupInfo.ContMap("`state` = 1")
//进行排序
sort.Slice(groupAry, func(i, j int) bool {
return groupAry[i].Sort < groupAry[j].Sort
})
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 //是否激活
fmt.Printf("%v----%v---%v\n\n\n", groupId, groupIsTrue, publicmethod.IsInTrue[string](groupId, groupIsTrue))
groupCont.IsTrue = publicmethod.IsInTrue[string](groupId, groupIsTrue) //是否选中
groupCont.AppList = GetGroupApp(v.Id, requestData.PowerType, requestData.AppType, requestData.RoleId, requestData.Id)
// syncSeting.Add(1)
// go groupCont.GetGroupApp()
AppPowerInfo = append(AppPowerInfo, groupCont)
}
syncSeting.Wait()
sendData := publicmethod.MapOut[string]()
sendData["groupButPower"] = []string{}
if groupPower.PowerInfo != "" {
var butPower []string
json.Unmarshal([]byte(groupPower.PowerInfo), &butPower)
// fmt.Printf("\n\nbutPower---------->%v\n\n", butPower)
sendData["groupButPower"] = butPower
}
sendData["appList"] = AppPowerInfo
publicmethod.Result(0, sendData, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2025-12-17 11:08:15
@ 功能: 获取分组App
*/
// func (a *AppGroupInfo) GetGroupApp() {
func GetGroupApp(uuId int64, powerType, appType, powerId, systemId 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
var authId []int64
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)
}
return
}
/*
*
@ 作者: 秦东
@ 时间: 2025-12-19 11:27:42
@ 功能: 获取APP回显是否选中
#appId Id
#powerType 授权类型
#appType 授权系统
#powerId 项目Id
*/
func AppCallBackShow(appId int64, powerType, appType, powerId string) (isTrue bool, butPower []string, authId []int64) {
isTrue = false
var authPower modelssystempermission.AuthPower
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 {
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
}
authId = append(authId, authPower.Id)
if authPower.IsTrue == 1 {
isTrue = true
}
if authPower.AppButPower != "" && authPower.AppButPower != "null" {
json.Unmarshal([]byte(authPower.AppButPower), &butPower)
}
return
}
/*
*
@ 作者: 秦东
@ 时间: 2025-12-17 11:28:31
@ 功能: 获取app菜单
*/
func AppMenuList(appId int64, authId []int64, powerType, appType, powerId, systemId string) (menuTree []AppMenuTreeInit) {
var appMenuList []modelAppPlatform.Appmenus
err := overall.CONSTANT_DB_AppPlatform.Where("`state` = 1 AND `isLock` = 2 AND `appkey` = ?", appId).Find(&appMenuList).Error
if err != nil {
return
}
sort.Slice(appMenuList, func(i, j int) bool {
return appMenuList[i].EditTime < appMenuList[j].EditTime
})
sort.Slice(appMenuList, func(i, j int) bool {
return appMenuList[i].Sort < appMenuList[j].Sort
})
menuTree = AppTreeMenus(appId, authId, appMenuList)
return
}
/*
*
@ 作者: 秦东
@ 时间: 2024-04-23 13:42:51
@ 功能: App菜单树处理
*/
func AppTreeMenus(parentId int64, authId []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.VisibleRange.Types = 1
menuCont.IsTrue, menuCont.PagePower, menuCont.ListPower, menuCont.FormPower, menuCont.VisibleRange.Types, menuCont.VisibleRange.Attribute = AppMenuCallBackShow(v.Id, authId)
menuCont.Children = AppTreeMenus(v.Id, authId, menuList)
menusTree = append(menusTree, menuCont)
}
}
return
}
/*
*
@ 作者: 秦东
@ 时间: 2025-12-19 11:27:42
@ 功能: 获取APP中菜单回显是否选中
#appId Id
#powerType 授权类型
#appType 授权系统
#powerId 项目Id
*/
func AppMenuCallBackShow(menuId int64, authId []int64) (isTrue bool, pagePower, ListPower, FormPower []string, types int64, userPower []int64) {
isTrue = false
var menuPower []modelssystempermission.PowerInfo
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.PowerInfo{}).Where(" `authId` IN ? AND `appType` = ? AND `itemId` = ? ", authId, menuId).Find(&menuPower)
for _, v := range menuPower {
if v.IsPick == 1 {
isTrue = true
}
if v.PageButPower != "" && v.PageButPower != "null" {
json.Unmarshal([]byte(v.PageButPower), &pagePower)
}
if v.TablePower != "" && v.TablePower != "null" {
json.Unmarshal([]byte(v.TablePower), &FormPower)
}
if v.ListPower != "" && v.ListPower != "null" {
json.Unmarshal([]byte(v.ListPower), &ListPower)
}
if types <= int64(v.VisibleRange) {
types = int64(v.VisibleRange)
}
if v.VisibleOrg != "" && v.VisibleOrg != "null" {
json.Unmarshal([]byte(v.VisibleOrg), &userPower)
}
}
return
}
/*
*
@ 作者: 秦东
@ 时间: 2025-12-18 14:39:53
@ 功能: 选项卡App授权模式
*/
func (a *ApiMethod) TabsAuthorizationMode(c *gin.Context) {
var requestData SaveAppPower
c.ShouldBindJSON(&requestData)
if requestData.PowerType == "" {
publicmethod.Result(1, requestData, c, "未知授权类型!不可编辑权限!")
return
}
if requestData.AppType == "" {
publicmethod.Result(1, requestData, c, "未知授权系统!不可编辑权限!")
return
}
if requestData.RoleId == "" {
publicmethod.Result(1, requestData, c, "未知授权项!不可编辑权限!")
return
}
if len(requestData.ListPower) < 1 {
publicmethod.Result(1, requestData, c, "未知授权内容!不可编辑权限!")
return
}
var groupIdAry []string
for _, v := range requestData.ListPower {
if v.IsTrue {
if !publicmethod.IsInTrue(v.Id, groupIdAry) {
groupIdAry = append(groupIdAry, v.Id)
}
}
// if i == 0 {
// syncSeting.Add(1)
// go appPowerSetup(requestData.AppType, requestData.PowerType, requestData.RoleId, v.AppList)
// }
appPowerSetup(requestData.AppType, requestData.PowerType, requestData.RoleId, v.AppList)
}
groupIsShow, _ := json.Marshal(groupIdAry)
//写入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["time"] = time.Now().Unix()
var saveInfo modelssystempermission.AuthGroupPower
saveInfo.EiteCont(map[string]interface{}{"`id`": appGroupPower.Id}, saveData)
} else { //新增
uuid := publicmethod.GetUUid(1)
var saveGroupPower modelssystempermission.AuthGroupPower
saveGroupPower.Id = uuid
saveGroupPower.AppType = requestData.AppType
saveGroupPower.OrgPowerType = requestData.PowerType
saveGroupPower.OrgOrUserKey, _ = strconv.ParseInt(requestData.RoleId, 10, 64)
saveGroupPower.Time = time.Now().Unix()
saveGroupPower.PowerInfo = "['xz','dl','bj','xzapp']"
saveGroupPower.GroupStatus = string(groupIsShow)
overall.CONSTANT_DB_System_Permission.Create(&saveGroupPower)
}
// syncSeting.Wait()
publicmethod.Result(0, err, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2025-12-18 15:32:49
@ 功能: 批量处理App授权
#uuid 统一编码
#appType 系统类型(system系统平台app自定义表单与应用)
#powerType 赋权类型org组织job岗位role角色person个人
#roleId 具体执行人
#appList App列表
*/
func appPowerSetup(appType, powerType, roleId string, appList []AppInfoPower) {
// defer syncSeting.Done()
for _, v := range appList {
// if i == 0 {
uuid := publicmethod.GetUUid(1)
var appPowerInfo modelssystempermission.AuthPower
appPowerInfo.GetCont(map[string]interface{}{"`appType`": appType, "`orgPowerType`": powerType, "`orgOrUserKey`": roleId, "`appKey`": v.Id})
appPowerJson, _ := json.Marshal(v.AppMenuTree)
if appPowerInfo.Id == 0 { //新增
var newAppPowerInfo modelssystempermission.AuthPower
newAppPowerInfo.Id = uuid
newAppPowerInfo.OrgPowerType = powerType
newAppPowerInfo.OrgOrUserKey, _ = strconv.ParseInt(roleId, 10, 64)
newAppPowerInfo.AppType = appType
newAppPowerInfo.AppKey, _ = strconv.ParseInt(v.Id, 10, 64)
newAppPowerInfo.Time = time.Now().Unix()
if v.IsTrue {
newAppPowerInfo.IsTrue = 1 //1:有;非1:无)
} else {
newAppPowerInfo.IsTrue = 0
}
newAppPowerInfo.PowerInfo = string(appPowerJson)
operAtionBut, _ := json.Marshal(v.OperationButton)
newAppPowerInfo.AppButPower = string(operAtionBut)
overall.CONSTANT_DB_System_Permission.Create(&newAppPowerInfo)
// var menuPowList AppMenuAry
// menuPowList.List = []AppMenuInfo{}
// menuPowList.AppMenuTreeSub(v.AppMenuTree)
// menuPowList.EditAppMenuPoser(uuid)
var oldPower modelssystempermission.PowerInfo
oldPower.DelCont(map[string]interface{}{"`authId`": uuid})
var menuPowList AppMenuAry
menuPowList.List = []AppMenuInfo{}
menuPowList.AppMenuTreeSubNew(v.AppMenuTree, uuid)
} else { //编辑
uuid = appPowerInfo.Id
saveData := publicmethod.MapOut[string]()
saveData["powerInfo"] = string(appPowerJson)
if v.IsTrue {
saveData["isTrue"] = 1
} else {
saveData["isTrue"] = 0
}
operAtionBut, _ := json.Marshal(v.OperationButton)
saveData["appButPower"] = string(operAtionBut)
saveData["time"] = time.Now().Unix()
var saveAppPowerInfo modelssystempermission.AuthPower
saveAppPowerInfo.EiteCont(map[string]interface{}{"`id`": appPowerInfo.Id}, saveData)
// var menuPowList AppMenuAry
// menuPowList.List = []AppMenuInfo{}
// menuPowList.AppMenuTreeSub(v.AppMenuTree)
// menuPowList.EditAppMenuPoser(appPowerInfo.Id)
var oldPower modelssystempermission.PowerInfo
oldPower.DelCont(map[string]interface{}{"`authId`": appPowerInfo.Id})
var menuPowList AppMenuAry
menuPowList.List = []AppMenuInfo{}
menuPowList.AppMenuTreeSubNew(v.AppMenuTree, appPowerInfo.Id)
}
// }
}
}
/*
*
@ 作者: 秦东
@ 时间: 2025-12-18 16:51:04
@ 功能: 将自定义App菜单权限写入数据库
*/
func (a *AppMenuAry) EditAppMenuPoser(uuid int64) {
json, _ := json.Marshal(a.List)
fmt.Printf("\n\n%v----------------->%v\n\n", uuid, string(json))
var oldPower modelssystempermission.PowerInfo
oldPower.DelCont(map[string]interface{}{"`authId`": uuid})
var insterAry []modelssystempermission.PowerInfo
for _, v := range a.List {
var saveInfo modelssystempermission.PowerInfo
saveInfo.AuthId = uuid //归属权限
saveInfo.ItemId, _ = strconv.ParseInt(v.Id, 10, 64) //项目ID
if v.IsTrue {
saveInfo.IsPick = 1 //是否有权(1:有;非1:无)
} else {
saveInfo.IsPick = 0 //是否有权(1:有;非1:无)
}
tpAry := MyCreateTablePower(v.FormPower)
if tpAry == "null" {
tpAry = "[]"
}
saveInfo.TablePower = tpAry //表单权限
lpAry := MyCreateTablePower(v.ListPower)
if lpAry == "null" {
lpAry = "[]"
}
saveInfo.ListPower = lpAry //列表权限
pgButAry := MyCreateTablePower(v.PagePower)
if pgButAry == "null" {
pgButAry = "[]"
}
saveInfo.PageButPower = pgButAry //列表权限
inStr := strconv.FormatInt(v.VisibleRange.Types, 10)
intVal, _ := strconv.Atoi(inStr)
saveInfo.VisibleRange = intVal //可见范围(1:本人;2:本岗位;3:本部门;4:本分部;5:指定行政组织;6:所有)
// visibleOrgStr, _ := json.Marshal(v.VisibleRange.Attribute)
// saveInfo.VisibleOrg = string(visibleOrgStr) //可见范围辅助参数
saveInfo.ButPower = "[]" //按钮权限
saveInfo.Time = time.Now().Unix() //编辑时间
insterAry = append(insterAry, saveInfo)
}
if len(insterAry) > 0 {
overall.CONSTANT_DB_System_Permission.Create(&insterAry)
}
}
/*
*
@ 作者: 秦东
@ 时间: 2025-11-20 11:39:52
@ 功能: 解释自定义表单权限
*/
func MyCreateTablePower(powerList []string) string {
if len(powerList) <= 0 {
return "[]"
}
var powerAry []string
for _, v := range powerList {
if !publicmethod.IsInTrue[string](v, powerAry) {
powerAry = append(powerAry, v)
}
}
jsonStr, _ := json.Marshal(powerAry)
return string(jsonStr)
}
/*
*
@ 作者: 秦东
@ 时间: 2025-12-18 16:30:08
@ 功能: 解析自定义App菜单列表
*/
func (a *AppMenuAry) AppMenuTreeSub(AppMenuTree []AppMenuTreeInit) {
if len(AppMenuTree) > 0 {
for _, v := range AppMenuTree {
var menuInfo AppMenuInfo
menuInfo.Id = v.Id //识别符
menuInfo.Name = v.Name //名称
menuInfo.ParentId = v.ParentId //上级
menuInfo.IsPick = v.IsPick //是否激活
menuInfo.IsTrue = v.IsTrue //是否选中
menuInfo.AppKey = v.AppKey
menuInfo.PagePower = v.PagePower
menuInfo.FormPower = v.FormPower
menuInfo.ListPower = v.ListPower
menuInfo.VisibleRange = v.VisibleRange
menuInfo.MenuType = v.MenuType
a.List = append(a.List, menuInfo)
if len(v.Children) > 0 {
a.AppMenuTreeSub(v.Children)
}
}
}
}

64
api/version1/grantpowers/type.go

@ -11,6 +11,7 @@ type ApiMethod struct{}
// 协程设置 // 协程设置
var syncSeting = sync.WaitGroup{} var syncSeting = sync.WaitGroup{}
var syncSetSun = sync.WaitGroup{}
/* /*
* *
@ -175,3 +176,66 @@ type visibleRangeInfo struct {
Typrs int `json:"typrs"` //可见范围 //1、本人;2、本岗位、3、本部门;4、本分部、5、指定行政组织;6、所有 Typrs int `json:"typrs"` //可见范围 //1、本人;2、本岗位、3、本部门;4、本分部、5、指定行政组织;6、所有
Val []int `json:"val"` //自定义行政组织 Val []int `json:"val"` //自定义行政组织
} }
// 自定义App权限架构
type AppPowerCont struct {
AppPower []string `json:"appPower"`
AppGroupList []AppGroupInfo `json:"appGroupList"`
}
// 授权基础字段
type PowerContInit struct {
Id string `json:"id"` //识别符
Name string `json:"name"` //名称
ParentId string `json:"parentId"` //上级
IsPick bool `json:"isPick"` //是否激活
IsTrue bool `json:"isTrue"` //是否选中
}
// App自定义分组
type AppGroupInfo struct {
PowerContInit
AppList []AppInfoPower `json:"appList"`
}
// App结构
type AppInfoPower struct {
PowerContInit
OperationButton []string `json:"operationButton"` //按钮权限
AppMenuTree []AppMenuTreeInit `json:"appMenuTree"` //应用菜单树
}
// 应用菜单树
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"`
}
// 提交授权
type SaveAppPower struct {
AppType string `json:"appType"`
PowerType string `json:"powerType"`
RoleId string `json:"roleId"`
ListPower []AppGroupInfo `json:"listPower"`
}
// 自定义App菜单列表
type AppMenuInfo 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"`
}
type AppMenuAry struct {
List []AppMenuInfo `json:"list"`
}

2
api/version1/setupRoule/power.go

@ -27,7 +27,7 @@ func (a *ApiMethod) AppPowerUnit(c *gin.Context) {
if requestData.RoleId == "" { if requestData.RoleId == "" {
requestData.RoleId = "0" requestData.RoleId = "0"
} }
powerInfo, _ := publicmethod.GetSystemPower(requestData.PowerType, requestData.AppSystem, requestData.RoleId, requestData.PowerType) powerInfo, _ := publicmethod.GetSystemPower(requestData.PowerType, requestData.AppSystem, requestData.RoleId, requestData.AppId)
var appPowerTrue []AppPowerTree var appPowerTrue []AppPowerTree
switch requestData.AppSystem { switch requestData.AppSystem {
default: default:

94
api/version1/user/setPower.go

@ -9,6 +9,7 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"strconv" "strconv"
"strings"
) )
/* /*
@ -17,9 +18,9 @@ import (
@ 时间: 2025-11-24 08:30:44 @ 时间: 2025-11-24 08:30:44
@ 功能: 获取个人系统权限 @ 功能: 获取个人系统权限
*/ */
func GetMyPower(powerType string, oupk, org, poetId int64) (allPower SendAllPower, err error) { func GetMyPower(powerType, role string, oupk, org, poetId int64) (allPower SendAllPower, err error) {
allPower.AppGroupPower = GainAppGroupPower(oupk, org, poetId) allPower.AppGroupPower, allPower.AppGroupMenu = GainAppGroupPower(oupk, org, poetId, role)
//获取系统权限 //获取系统权限
var systemPower []modelssystempermission.AuthPowerList var systemPower []modelssystempermission.AuthPowerList
@ -144,16 +145,16 @@ func GetMyPower(powerType string, oupk, org, poetId int64) (allPower SendAllPowe
#org 行政组织 #org 行政组织
#poetId 岗位 #poetId 岗位
*/ */
func GainAppGroupPower(oupk, org, poetId int64) []string { func GainAppGroupPower(oupk, org, poetId int64, roleId string) (groupPower, groupAuth []string) {
var groupPower []string
//Step1: 判断有没有设定个人权限 //Step1: 判断有没有设定个人权限
groupPower = GainGroupAppPower("person", oupk) groupPower, groupAuth = GainGroupAppPower("person", oupk)
if len(groupPower) > 0 { if len(groupPower) > 0 {
return groupPower return
} }
//Step2: 获取职位权限 //Step2: 获取职位权限
postPowerArt := GainGroupAppPower("job", poetId) postPowerArt, postGroupAuth := GainGroupAppPower("job", poetId)
if len(postPowerArt) > 0 { if len(postPowerArt) > 0 {
for _, v := range postPowerArt { for _, v := range postPowerArt {
if !publicmethod.IsInTrue[string](v, groupPower) { if !publicmethod.IsInTrue[string](v, groupPower) {
@ -161,7 +162,14 @@ func GainAppGroupPower(oupk, org, poetId int64) []string {
} }
} }
} }
//Step2: 行政组织 if len(postGroupAuth) > 0 {
for _, v := range postGroupAuth {
if !publicmethod.IsInTrue[string](v, groupAuth) {
groupAuth = append(groupAuth, v)
}
}
}
//Step3: 行政组织
if org != 0 { if org != 0 {
var orgPowerList OrgAryPower var orgPowerList OrgAryPower
orgPowerList.GetOrgPower(org) orgPowerList.GetOrgPower(org)
@ -173,14 +181,59 @@ func GainAppGroupPower(oupk, org, poetId int64) []string {
} }
} }
} }
if len(orgPowerList.GroupPowerAry) > 0 {
for _, v := range orgPowerList.GroupPowerAry {
if !publicmethod.IsInTrue[string](v, groupAuth) {
groupAuth = append(groupAuth, v)
}
}
}
} }
return groupPower //Step4: 获取角色权限
if roleId != "" {
roleIdAry := strings.Split(roleId, ",")
// var roleIdAry []int64
// err := json.Unmarshal([]byte(roleId), &roleIdAry)
// fmt.Printf("%v----%v----%v----%v\n\n", oupk, org, err, roleIdAry)
for _, v := range roleIdAry {
roId, _ := strconv.ParseInt(v, 10, 64)
rolePowerArt, roleGroupAuth := GainGroupAppPower("role", roId)
for _, rv := range rolePowerArt {
if !publicmethod.IsInTrue[string](rv, groupPower) {
groupPower = append(groupPower, rv)
}
}
for _, rv := range roleGroupAuth {
if !publicmethod.IsInTrue[string](rv, groupAuth) {
groupAuth = append(groupAuth, rv)
}
}
}
}
// rolePowerArt, roleGroupAuth := GainGroupAppPower("role", oupk)
// if len(rolePowerArt) > 0 {
// for _, v := range rolePowerArt {
// if !publicmethod.IsInTrue[string](v, groupPower) {
// groupPower = append(groupPower, v)
// }
// }
// }
// if len(roleGroupAuth) > 0 {
// for _, v := range roleGroupAuth {
// if !publicmethod.IsInTrue[string](v, groupAuth) {
// groupAuth = append(groupAuth, v)
// }
// }
// }
fmt.Printf("%v----%v----%v----%v\n\n", oupk, org, poetId, roleId)
return
} }
func (o *OrgAryPower) GetOrgPower(orgId int64) { func (o *OrgAryPower) GetOrgPower(orgId int64) {
if orgId != 0 { if orgId != 0 {
orgPowerArt := GainGroupAppPower("org", orgId) orgPowerArt, groupAuth := GainGroupAppPower("org", orgId)
if len(orgPowerArt) > 0 { if len(orgPowerArt) > 0 {
for _, v := range orgPowerArt { for _, v := range orgPowerArt {
if !publicmethod.IsInTrue[string](v, o.PowerAry) { if !publicmethod.IsInTrue[string](v, o.PowerAry) {
@ -194,6 +247,20 @@ func (o *OrgAryPower) GetOrgPower(orgId int64) {
o.GetOrgPower(orgInfo.Superior) o.GetOrgPower(orgInfo.Superior)
} }
} }
if len(groupAuth) > 0 {
for _, v := range groupAuth {
if !publicmethod.IsInTrue[string](v, o.GroupPowerAry) {
o.GroupPowerAry = append(o.GroupPowerAry, v)
}
}
} else {
var orgInfo modelshr.AdministrativeOrganization
orgInfo.GetCont(map[string]interface{}{"`id`": orgId}, "`superior`")
if orgInfo.Superior != 0 {
o.GetOrgPower(orgInfo.Superior)
}
}
} }
} }
@ -203,13 +270,16 @@ func (o *OrgAryPower) GetOrgPower(orgId int64) {
@ 时间: 2025-12-11 16:00:06 @ 时间: 2025-12-11 16:00:06
@ 功能: 获取分组授权 @ 功能: 获取分组授权
*/ */
func GainGroupAppPower(types string, id int64) (powerArt []string) { func GainGroupAppPower(types string, id int64) (powerArt []string, groupAuth []string) {
var myPower modelssystempermission.AuthGroupPower var myPower modelssystempermission.AuthGroupPower
err := overall.CONSTANT_DB_System_Permission.Where("`appType` = 'app' AND `orgPowerType` = ? AND `orgOrUserKey` = ?", types, id).First(&myPower).Error err := overall.CONSTANT_DB_System_Permission.Where("`appType` = 'app' AND `orgPowerType` = ? AND `orgOrUserKey` = ?", types, id).First(&myPower).Error
if err == nil || myPower.Id != 0 { if err == nil || myPower.Id != 0 {
if myPower.PowerInfo != "" && myPower.PowerInfo != "null" { if myPower.PowerInfo != "" && myPower.PowerInfo != "null" {
json.Unmarshal([]byte(myPower.PowerInfo), &powerArt) json.Unmarshal([]byte(myPower.PowerInfo), &powerArt)
} }
if myPower.GroupStatus != "" && myPower.GroupStatus != "null" {
json.Unmarshal([]byte(myPower.GroupStatus), &groupAuth)
}
} }
return return
} }
@ -322,7 +392,7 @@ func (x *XieChengPowerSys) GetAppFormPower(sysType, powerType string, key int64)
} }
case "role": case "role":
var roleId []int64 var roleId []int64
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Select("`id`").Where("FIND_IN_SET(?, `superior`)", key).Find(&roleId) overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Select("`id`").Where("FIND_IN_SET(?, `roleuser`)", key).Find(&roleId)
if len(roleId) > 0 { if len(roleId) > 0 {
var appAuthPower []modelssystempermission.AuthPower var appAuthPower []modelssystempermission.AuthPower
overall.CONSTANT_DB_System_Permission.Where("`appType` = ? AND `orgPowerType` = ? AND `orgOrUserKey` IN ? AND `appKey` <> 0", sysType, powerType, roleId).Find(&appAuthPower) overall.CONSTANT_DB_System_Permission.Where("`appType` = ? AND `orgPowerType` = ? AND `orgOrUserKey` IN ? AND `appKey` <> 0", sysType, powerType, roleId).Find(&appAuthPower)

2
api/version1/user/type.go

@ -133,6 +133,7 @@ type SendAllPower struct {
AppSystemPower []AppMyPower `json:"appSystemPower"` AppSystemPower []AppMyPower `json:"appSystemPower"`
AppKeyAry []string `json:"appKeyAry"` AppKeyAry []string `json:"appKeyAry"`
AppGroupPower []string `json:"appGroupPower"` //自定义App分组权限 AppGroupPower []string `json:"appGroupPower"` //自定义App分组权限
AppGroupMenu []string `json:"appGroupMenu"`
} }
type SystemInfoPower struct { type SystemInfoPower struct {
@ -196,4 +197,5 @@ type AppMyPowerTable struct {
// 获取行政组织矩阵权限 // 获取行政组织矩阵权限
type OrgAryPower struct { type OrgAryPower struct {
PowerAry []string PowerAry []string
GroupPowerAry []string
} }

2
api/version1/user/userCont.go

@ -83,7 +83,7 @@ func (a *ApiMethod) GetUserCont(c *gin.Context) {
sendData.Mobilephone = myContInfo.Mobilephone sendData.Mobilephone = myContInfo.Mobilephone
sendData.Currentresidence = myContInfo.Currentresidence sendData.Currentresidence = myContInfo.Currentresidence
sendData.AllPowerConfig, _ = GetMyPower("person", myContInfo.Key, myContInfo.AdminOrg, myContInfo.Position) sendData.AllPowerConfig, _ = GetMyPower("person", myContInfo.Role, myContInfo.Key, myContInfo.AdminOrg, myContInfo.Position)
writeRedisData, _ := json.Marshal(sendData.AllPowerConfig) writeRedisData, _ := json.Marshal(sendData.AllPowerConfig)
publicmethod.SetupPowerInfo(myContInfo.Key, string(writeRedisData)) publicmethod.SetupPowerInfo(myContInfo.Key, string(writeRedisData))

4
apirouter/v1/grantsystempower/pc.go

@ -21,5 +21,9 @@ func (a *ApiRouter) RouterGroupPc(router *gin.RouterGroup) {
apiRouter.POST("setpAppTableForms", methodBinding.SetpAppTableForm) //提交APp单一表单权限 apiRouter.POST("setpAppTableForms", methodBinding.SetpAppTableForm) //提交APp单一表单权限
apiRouter.POST("gainAppTableListNew", methodBinding.GainAppTableListNew) //获取对应App下边的表单 apiRouter.POST("gainAppTableListNew", methodBinding.GainAppTableListNew) //获取对应App下边的表单
apiRouter.POST("gainAppEmpowerPower", methodBinding.GainAppEmpowerPower) //获取对应App下边的菜单 apiRouter.POST("gainAppEmpowerPower", methodBinding.GainAppEmpowerPower) //获取对应App下边的菜单
apiRouter.POST("appInitAuthorization", methodBinding.AppInitAuthorization) //初始化应用授权选项
apiRouter.POST("tabsAuthorizationMode", methodBinding.TabsAuthorizationMode) //选项卡App授权模式
} }
} }

339
config/configDatabase/database_5.241.yaml

@ -0,0 +1,339 @@
#数据库配置
#主数据库
master:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'hengxingaoke_tes' #数据库名称
username: 'hengxingaoke_tes' #数据库用户民
password: 'JsTt6iTpkZ85wDnF' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#微信数据库
wechat:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'wechatuser' #数据库名称
username: 'wechatuser' #数据库用户民
password: '8jrFG2AzpJPxs88m' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#HR数据库
hrdatabase:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
name: 'hr_new' #数据库名称
username: 'hr_new' #数据库用户民
password: 'kPMP6NafMsdccxDX' #数据库密码
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#文档属性数据库
fileBookDate:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'learnmessage' #数据库名称
username: 'learnmessage' #数据库用户民
password: 'JyppSdcLT27f7dpB' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#错题库
errorSubjectDate:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'errorsubject' #数据库名称
username: 'errorsubject' #数据库用户民
password: 'abRcXzraCMFYC4Me' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#自我测验
myTestDate:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'selftestdatabase' #数据库名称
username: 'selftestdatabase' #数据库用户民
password: 'mXDWEBJCd5acnCjD' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#图文信息数据库
imageTextDate:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'readdocument' #数据库名称
username: 'readdocument' #数据库用户民
password: 'CY2yanCmAP8p8bxj' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#计分明细数据库
scoringDetailsDate:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'leaguetabledata' #数据库名称
username: 'leaguetabledata' #数据库用户民
password: 'PxeX8Dnw88G4Jpnr' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#趣味问答
questionsAnswersDate:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'ques_and_answers' #数据库名称
username: 'ques_and_answers' #数据库用户民
password: 'CT7XGBrAwdnXkTNX' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#风云榜统计数据库
billboardDate:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'statisticsing' #数据库名称
username: 'statisticsing' #数据库用户民
password: '4iMZNtMT8fk8imEb' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#健康上报数据库
healthReportDate:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'location' #数据库名称
username: 'location' #数据库用户民
password: 'XreBJrkYh7K3jfbm' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#绩效考核数据库
kpiDate:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'perform' #数据库名称
username: 'perform' #数据库用户民
password: 'amtzSrN5WnMsS4hb' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#企业微信回调记录
wechatCallBackLogDate:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'wechatlog' #数据库名称
username: 'wechatlog' #数据库用户民
password: 'j7Hs8Tb6SkZzy2ee' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#管理档案
managearchives:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'manage_archives' #数据库名称
username: 'manage_archives' #数据库用户民
password: 'c3ExYFLzFiLka72W' #数据库密码
max_idle_conns: 100 #最大空闲数量1
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志2
#系统权限配置数据库
systemPermission:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'system_empower' #数据库名称
username: 'system_empower' #数据库用户民
password: 'NTYni4L2mfxk5zZZ' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#应用平台数据库
appPlatformDatabase:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'app_platform' #数据库名称
username: 'app_platform' #数据库用户民
password: 'GJ8m6tXrSDL2SfA2' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#仓库系统
storage:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
name: 'depository' #数据库名称
username: 'depository' #数据库用户民
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#应用平台数据库
servermaster:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'hengxingaoke_tes' #数据库名称
username: 'hengxingaoke_tes' #数据库用户民
password: 'JsTt6iTpkZ85wDnF' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
tidbrmaster:
url_path: '120.224.6.6' #数据库地址
port: 60400 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'hengxingaoke_tes' #数据库名称
username: 'root' #数据库用户民
password: '9z_Bu28r1*DZ3K6@+a' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#自定义数据库
customerFormDatabase:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'customer_form' #数据库名称
username: 'customer_form' #数据库用户民
password: 'Mjh4msNtADGjiMaC' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#流程执行记录
flowLogDatabase:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'flow_log' #数据库名称
username: 'flow_log' #数据库用户民
password: 'pakXanN4r4pCeWXE' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#自定义表单修改数据历史记录库
reviseFormData:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'reviseform' #数据库名称
username: 'reviseform' #数据库用户民
password: 'AhwtAWMnezmGjCPn' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#性格色彩
charactercolor:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'charactercolor' #数据库名称
username: 'charactercolor' #数据库用户民
password: 'Zj8BeyFa3ftZHiNH' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#HR内网数据库
hrdatabaseinside:
url_path: '120.224.6.6' #数据库地址
port: 6666 #数据库端口
name: 'hr_new' #数据库名称
username: 'hr_new' #数据库用户民
password: 'AnknKiXiXaxNrw78' #数据库密码
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志
#生产排班记录
jobScheduling:
url_path: '127.0.0.1' #数据库地址
port: 13366 #数据库端口
charset: 'utf8mb4' #数据库编码方式
parseTime: 'True' #是否自动转换时间
loc: 'Local' #时区
name: 'jobscheduling' #数据库名称
username: 'jobscheduling' #数据库用户民
password: 'YKEyZsxZaEPT4kcK' #数据库密码
max_idle_conns: 100 #最大空闲数量
max_open_conns: 100 #最大打开数量
gorm_log: true #是否开启gorm日志

2
go.mod

@ -75,7 +75,7 @@ require (
golang.org/x/crypto v0.38.0 // indirect golang.org/x/crypto v0.38.0 // indirect
golang.org/x/net v0.40.0 // indirect golang.org/x/net v0.40.0 // indirect
golang.org/x/sys v0.33.0 // indirect golang.org/x/sys v0.33.0 // indirect
golang.org/x/text v0.25.0 // indirect golang.org/x/text v0.25.0
google.golang.org/protobuf v1.31.0 // indirect google.golang.org/protobuf v1.31.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect
gorm.io/driver/postgres v1.5.11 gorm.io/driver/postgres v1.5.11

1
models/modelssystempermission/auth_group_power.go

@ -13,6 +13,7 @@ type AuthGroupPower struct {
OrgOrUserKey int64 `gorm:"column:orgOrUserKey;type:bigint(20) unsigned;default:0;comment:行政组织或角色、人员识别符;NOT NULL" json:"orgOrUserKey"` OrgOrUserKey int64 `gorm:"column:orgOrUserKey;type:bigint(20) unsigned;default:0;comment:行政组织或角色、人员识别符;NOT NULL" json:"orgOrUserKey"`
Time int64 `gorm:"column:time;type:bigint(20) unsigned;default:0;comment:编辑时间;NOT NULL" json:"time"` Time int64 `gorm:"column:time;type:bigint(20) unsigned;default:0;comment:编辑时间;NOT NULL" json:"time"`
PowerInfo string `gorm:"column:powerInfo;type:text;comment:权限结构体" json:"powerInfo"` PowerInfo string `gorm:"column:powerInfo;type:text;comment:权限结构体" json:"powerInfo"`
GroupStatus string `gorm:"column:groupStatus;type:text;comment:分组权限状态" json:"groupStatus"`
} }
func (cont *AuthGroupPower) TableName() string { func (cont *AuthGroupPower) TableName() string {

3
overall/publicmethod/technique.go

@ -1009,6 +1009,9 @@ func readMenuList(postid int64, system string) (menuIdAry, menuUrl []string, err
if err != nil { if err != nil {
return return
} }
if ponitId == "" {
return
}
menuIdAry = strings.Split(ponitId, ",") menuIdAry = strings.Split(ponitId, ",")
if len(menuIdAry) < 1 { if len(menuIdAry) < 1 {
return return

Loading…
Cancel
Save