Browse Source

新权限设计完毕

master
herenshan112 6 days ago
parent
commit
dbe96506c4
  1. 107
      api/version1/customerApp/appControll.go
  2. 4
      api/version1/customerform/form.go
  3. 4
      api/version1/customerform/formTable.go
  4. 6
      api/version1/customerform/formTableList.go
  5. 6
      api/version1/dataCenter/runDataBase.go
  6. 103
      api/version1/grantpowers/myAppPower.go
  7. 46
      api/version1/grantpowers/postpower.go
  8. 33
      api/version1/grantpowers/type.go
  9. 2
      api/version1/setupRoule/power.go
  10. 8
      api/version1/taskplatform/taskflowing/editformflow.go
  11. 23
      api/version1/taskplatform/taskmanagement/formcontrol.go
  12. 2
      api/version1/taskplatform/taskmanagement/importFormFile.go
  13. 104
      api/version1/user/setPower.go
  14. 10
      api/version1/user/type.go
  15. 1
      apirouter/v1/grantsystempower/pc.go
  16. 1
      models/customerForm/taskrecord.go
  17. 2
      models/modelssystempermission/authpowerlist.go
  18. 79
      overall/publicmethod/getUserPower.go
  19. 24
      overall/publicmethod/powerRedis.go
  20. 2
      overall/publicmethod/type.go

107
api/version1/customerApp/appControll.go

@ -310,15 +310,18 @@ func (a *ApiMethod) GainAppEditPsge(c *gin.Context) {
sendInfo["describe"] = appCont.Describe
sendInfo["MyContJwtPower"], sendInfo["MyContJwtPowerErr"] = c.Get(overall.MyContJwtPower)
sendInfo["myPower"] = myPower
if appCont.ListJson != "" {
var menuTerr []AppMenuTree
json.Unmarshal([]byte(appCont.ListJson), &menuTerr)
sendInfo["menuTree"] = menuTerr
} else {
syncSeting.Add(1)
sendInfo["menuTree"] = GainAppMenuTree(appCont.SignCode)
syncSeting.Wait()
}
// if appCont.ListJson != "" {
// var menuTerr []AppMenuTree
// json.Unmarshal([]byte(appCont.ListJson), &menuTerr)
// sendInfo["menuTree"] = menuTerr
// } else {
// syncSeting.Add(1)
// sendInfo["menuTree"] = GainAppMenuTree(appCont.SignCode)
// syncSeting.Wait()
// }
syncSeting.Add(1)
sendInfo["menuTree"] = GainAppMenuTree(appCont.SignCode, myPower)
syncSeting.Wait()
publicmethod.Result(0, sendInfo, c)
}
@ -339,7 +342,7 @@ func (a *ApiMethod) GainAppEditPsge(c *gin.Context) {
#
*/
func GainAppMenuTree(key int64) (menusTree []AppMenuTree) {
func GainAppMenuTree(key int64, menuPower publicmethod.SendAppTabelPower) (menusTree []AppMenuTree) {
defer syncSeting.Done()
if key == 0 {
return
@ -356,6 +359,19 @@ func GainAppMenuTree(key int64) (menusTree []AppMenuTree) {
sort.Slice(menuList, func(i, j int) bool {
return menuList[i].Sort < menuList[j].Sort
})
var treeList []modelAppPlatform.Appmenus
for _, v := range menuList {
if v.IsLock == 1 {
treeList = append(treeList, v)
} else {
muiStr := strconv.FormatInt(v.Id, 10)
if publicmethod.IsInTrue[string](muiStr, menuPower.FormTrue) {
treeList = append(treeList, v)
}
}
}
menusTree = AppTreeMenus(key, menuList)
return
}
@ -511,9 +527,12 @@ func (a *ApiMethod) SaveAppMenu(c *gin.Context) {
publicmethod.Result(104, err, c)
return
}
menuUUidStr := strconv.FormatInt(menuUUid, 10)
myPower := publicmethod.GetMyTableMenuPower(userCont.Key, menuUUidStr)
var newAppMenu []AppMenuTree
syncSeting.Add(1)
newAppMenu = GainAppMenuTree(appKeyId)
newAppMenu = GainAppMenuTree(appKeyId, myPower)
syncSeting.Wait()
saveData := publicmethod.MapOut[string]()
menuTreeJson, _ := json.Marshal(newAppMenu)
@ -563,8 +582,13 @@ func (a *ApiMethod) GainAllAppMenu(c *gin.Context) {
if appCont.ListJson != "" {
json.Unmarshal([]byte(appCont.ListJson), &menuTreeMap)
} else {
context, _ := c.Get(overall.MyContJwt)
var userCont modelshr.ManCont
userCont.GetLoginCont(context) //当前操作人
myPower := publicmethod.GetMyTableMenuPower(userCont.Key, requestData.Id)
syncSeting.Add(1)
menuTreeMap = GainAppMenuTree(appCont.SignCode)
menuTreeMap = GainAppMenuTree(appCont.SignCode, myPower)
syncSeting.Wait()
}
@ -686,9 +710,16 @@ func (a *ApiMethod) EditAppMenuLable(c *gin.Context) {
EditAppMenuFormName(oldMenuInfo.Id, requestData.Label)
}
}
context, _ := c.Get(overall.MyContJwt)
var userCont modelshr.ManCont
userCont.GetLoginCont(context) //当前操作人
appSig := strconv.FormatInt(oldMenuInfo.Appkey, 10)
myPower := publicmethod.GetMyTableMenuPower(userCont.Key, appSig)
syncSeting.Add(1)
var newAppMenuJson []AppMenuTree
syncSeting.Add(1)
newAppMenuJson = GainAppMenuTree(oldMenuInfo.Appkey)
newAppMenuJson = GainAppMenuTree(oldMenuInfo.Appkey, myPower)
syncSeting.Wait()
menuTreeJson, _ := json.Marshal(newAppMenuJson)
editForm["listjson"] = string(menuTreeJson)
@ -776,9 +807,16 @@ func (a *ApiMethod) AppMenuShowOrHide(c *gin.Context) {
editForm := publicmethod.MapOut[string]()
var cusForm modelAppPlatform.CustomerForm
err = cusForm.GetCont(map[string]interface{}{"`signCode`": oldMenuInfo.Appkey}, "`listjson`")
context, _ := c.Get(overall.MyContJwt)
var userCont modelshr.ManCont
userCont.GetLoginCont(context) //当前操作人
appSig := strconv.FormatInt(oldMenuInfo.Appkey, 10)
myPower := publicmethod.GetMyTableMenuPower(userCont.Key, appSig)
var newAppMenuJson []AppMenuTree
syncSeting.Add(1)
newAppMenuJson = GainAppMenuTree(oldMenuInfo.Appkey)
newAppMenuJson = GainAppMenuTree(oldMenuInfo.Appkey, myPower)
syncSeting.Wait()
menuTreeJson, _ := json.Marshal(newAppMenuJson)
editForm["listjson"] = string(menuTreeJson)
@ -835,9 +873,16 @@ func (a *ApiMethod) DelAppMenu(c *gin.Context) {
editForm := publicmethod.MapOut[string]()
var cusForm modelAppPlatform.CustomerForm
err = cusForm.GetCont(map[string]interface{}{"`signCode`": oldMenuInfo.Appkey}, "`listjson`")
context, _ := c.Get(overall.MyContJwt)
var userCont modelshr.ManCont
userCont.GetLoginCont(context) //当前操作人
appSig := strconv.FormatInt(oldMenuInfo.Appkey, 10)
myPower := publicmethod.GetMyTableMenuPower(userCont.Key, appSig)
var newAppMenuJson []AppMenuTree
syncSeting.Add(1)
newAppMenuJson = GainAppMenuTree(oldMenuInfo.Appkey)
newAppMenuJson = GainAppMenuTree(oldMenuInfo.Appkey, myPower)
syncSeting.Wait()
menuTreeJson, _ := json.Marshal(newAppMenuJson)
editForm["listjson"] = string(menuTreeJson)
@ -1459,13 +1504,14 @@ func SaveAppFormMenu(menuId, appkey, parent, creater, cureeTime int64, class int
}
}
var newAppMenuJson []AppMenuTree
syncSeting.Add(1)
newAppMenuJson = GainAppMenuTree(appkey)
syncSeting.Wait()
// var newAppMenuJson []AppMenuTree
// syncSeting.Add(1)
// newAppMenuJson = GainAppMenuTree(appkey)
// syncSeting.Wait()
// menuTreeJson, _ := json.Marshal(newAppMenuJson)
editForm := publicmethod.MapOut[string]()
menuTreeJson, _ := json.Marshal(newAppMenuJson)
editForm["listjson"] = string(menuTreeJson)
// editForm["listjson"] = string(menuTreeJson)
editForm["`edit_time`"] = cureeTime
var appCont modelAppPlatform.CustomerForm
appCont.EiteCont(map[string]interface{}{"`signCode`": appkey}, editForm)
@ -2329,10 +2375,17 @@ func (a *ApiMethod) EditAppMenusIcon(c *gin.Context) {
return
}
editForm := publicmethod.MapOut[string]()
context, _ := c.Get(overall.MyContJwt)
var userCont modelshr.ManCont
userCont.GetLoginCont(context) //当前操作人
appSig := strconv.FormatInt(oldMenuInfo.Appkey, 10)
myPower := publicmethod.GetMyTableMenuPower(userCont.Key, appSig)
var cusForm modelAppPlatform.CustomerForm
var newAppMenuJson []AppMenuTree
syncSeting.Add(1)
newAppMenuJson = GainAppMenuTree(oldMenuInfo.Appkey)
newAppMenuJson = GainAppMenuTree(oldMenuInfo.Appkey, myPower)
syncSeting.Wait()
menuTreeJson, _ := json.Marshal(newAppMenuJson)
editForm["listjson"] = string(menuTreeJson)
@ -2534,10 +2587,16 @@ func (a *ApiMethod) MoveAppMenus(c *gin.Context) {
overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.Appmenus{}).Where("`id` IN ?", sunAppId.Key).Updates(sunEditMenu)
}
context, _ := c.Get(overall.MyContJwt)
var userCont modelshr.ManCont
userCont.GetLoginCont(context) //当前操作人
appSig := strconv.FormatInt(oldAppkey, 10)
myPower := publicmethod.GetMyTableMenuPower(userCont.Key, appSig)
//目标App菜单重组
var newAppMenuJson []AppMenuTree
syncSeting.Add(1)
newAppMenuJson = GainAppMenuTree(newAppkey)
newAppMenuJson = GainAppMenuTree(newAppkey, myPower)
syncSeting.Wait()
menuTreeJson, _ := json.Marshal(newAppMenuJson)
sunEditMenuJson := publicmethod.MapOut[string]()
@ -2547,7 +2606,7 @@ func (a *ApiMethod) MoveAppMenus(c *gin.Context) {
if newAppkey != oldAppkey {
var oldAppMenuJson []AppMenuTree
syncSeting.Add(1)
oldAppMenuJson = GainAppMenuTree(oldAppkey)
oldAppMenuJson = GainAppMenuTree(oldAppkey, myPower)
syncSeting.Wait()
menuTreeJsonOld, _ := json.Marshal(oldAppMenuJson)
sunoldEditMenuJson := publicmethod.MapOut[string]()

4
api/version1/customerform/form.go

@ -1542,11 +1542,11 @@ func CreateDataSourceForm(sqlDb *gorm.DB, formName, notes, engine string, isMast
if !isTrue { //当数据表不存在时进行创建
if isMasters {
//创建主表
sqlCreateTable := fmt.Sprintf("CREATE TABLE `%v` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`masters_key` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '主表标识',`creater` bigint(20) unsigned DEFAULT '0' COMMENT '创建人',`createrOrg` bigint(20) unsigned DEFAULT '0' COMMENT '创建人行政组织',`creater_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',`edit_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '编辑时间',`flow_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '流程识别标识',`states` int(11) unsigned NOT NULL DEFAULT '1' COMMENT '状态(1:启用,2:禁用;3:删除)',`flowIsOpen` int(1) unsigned NOT NULL DEFAULT '2' COMMENT '是否开启工作流',PRIMARY KEY (`id`) USING BTREE,UNIQUE KEY `id` (`id`) USING HASH,UNIQUE KEY `masters_key` (`masters_key`) USING HASH) ENGINE=%v DEFAULT CHARSET=utf8mb4 COMMENT='%v'", formName, engine, notes)
sqlCreateTable := fmt.Sprintf("CREATE TABLE `%v` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`masters_key` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '主表标识',`creater` bigint(20) unsigned DEFAULT '0' COMMENT '创建人',`createrOrg` bigint(20) unsigned DEFAULT '0' COMMENT '创建人行政组织',`createrPositon` bigint(20) unsigned DEFAULT '0' COMMENT '创建人岗位',`creater_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',`edit_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '编辑时间',`flow_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '流程识别标识',`states` int(11) unsigned NOT NULL DEFAULT '1' COMMENT '状态(1:启用,2:禁用;3:删除)',`flowIsOpen` int(1) unsigned NOT NULL DEFAULT '2' COMMENT '是否开启工作流',PRIMARY KEY (`id`) USING BTREE,UNIQUE KEY `id` (`id`) USING HASH,UNIQUE KEY `masters_key` (`masters_key`) USING HASH) ENGINE=%v DEFAULT CHARSET=utf8mb4 COMMENT='%v'", formName, engine, notes)
err = sqlDb.Exec(sqlCreateTable).Error
} else {
//创建子表
sqlCreateTable := fmt.Sprintf("CREATE TABLE `%v` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`masters_key` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '主表标识',`creater` bigint(20) unsigned DEFAULT '0' COMMENT '创建人',`createrOrg` bigint(20) unsigned DEFAULT '0' COMMENT '创建人行政组织',`creater_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',`edit_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '编辑时间',`states` int(11) unsigned NOT NULL DEFAULT '1' COMMENT '状态(1:启用,2:禁用;3:删除)',PRIMARY KEY (`id`) USING BTREE,UNIQUE KEY `id` (`id`) USING HASH,KEY `masters_key` (`masters_key`) USING HASH) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='%v'", formName, notes)
sqlCreateTable := fmt.Sprintf("CREATE TABLE `%v` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`masters_key` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '主表标识',`creater` bigint(20) unsigned DEFAULT '0' COMMENT '创建人',`createrOrg` bigint(20) unsigned DEFAULT '0' COMMENT '创建人行政组织',`createrPositon` bigint(20) unsigned DEFAULT '0' COMMENT '创建人岗位',`creater_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',`edit_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '编辑时间',`states` int(11) unsigned NOT NULL DEFAULT '1' COMMENT '状态(1:启用,2:禁用;3:删除)',PRIMARY KEY (`id`) USING BTREE,UNIQUE KEY `id` (`id`) USING HASH,KEY `masters_key` (`masters_key`) USING HASH) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='%v'", formName, notes)
err = sqlDb.Exec(sqlCreateTable).Error
}
}

4
api/version1/customerform/formTable.go

@ -347,7 +347,7 @@ func (f *FormTableSql) TableSubUnitAnalysis(tablename string, subUnitAry []Maste
var sqlAllAry []string
fmt.Printf("tablename--->%v===>%v\n", tablename, isMaster)
oldTable := []string{"id", "masters_key", "creater", "createrOrg", "creater_time", "edit_time", "flow_id", "states", "flowIsOpen"}
oldTable := []string{"id", "masters_key", "creater", "createrOrg", "creater_time", "edit_time", "flow_id", "states", "flowIsOpen", "createrPositon"}
var alreadyExists []string
for _, v := range subUnitAry {
@ -478,6 +478,8 @@ func newFieldOld(tablename string, oldTable, alreadyExists []string) (sql []stri
sql = append(sql, fmt.Sprintf("ALTER TABLE `%v` ADD COLUMN %v int(1) unsigned NOT NULL DEFAULT '2' COMMENT '是否开启工作流';", tablename, v))
case "createrOrg":
sql = append(sql, fmt.Sprintf("ALTER TABLE `%v` ADD COLUMN %v int(1) unsigned NOT NULL DEFAULT '2' COMMENT '创建人行政组织';", tablename, v))
case "createrPositon":
sql = append(sql, fmt.Sprintf("ALTER TABLE `%v` ADD COLUMN %v int(1) unsigned NOT NULL DEFAULT '2' COMMENT '创建人岗位';", tablename, v))
default:
}
}

6
api/version1/customerform/formTableList.go

@ -60,6 +60,8 @@ func (a *ApiMethod) GainFormPageListContNew(c *gin.Context) {
publicmethod.Result(1, err, c, "未知表单!无法获取字段!")
return
}
// appKey := strconv.FormatInt(formInfo.Groupid, 10)
myPower := publicmethod.GetMyFormPower(userCont.Key, formInfo.Groupid, formInfo.SignCode)
//解析表单列表数据结构
var formJsonCont CustomerFormMaster
json.Unmarshal([]byte(formInfo.MastesFormJson), &formJsonCont)
@ -98,7 +100,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)
gormDb = powerSearch.MakeSearchSql(gormDb, userCont, formJsonCont.Form.DataSource, myPower)
//Step 4 获取一共有多少条数据
var total int64
totalErr := gormDb.Count(&total).Error
@ -180,7 +182,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)
gormDb = powerSearch.MakeSearchSql(gormDb, userCont, formJsonCont.Form.DataSource, myPower)
//Step 3 获取一共有多少条数据
var total int64
totalErr := gormDb.Count(&total).Error

6
api/version1/dataCenter/runDataBase.go

@ -61,5 +61,11 @@ func (a *ApiMethod) GainDataTable(c *gin.Context) {
overall.CONSTANT_DB_CustomerForm.Exec(sql)
// }
}
for _, v := range tableInfo {
// if v.TableKey != "taskrecord" {
sql := fmt.Sprintf("ALTER TABLE `%v` ADD COLUMN %v bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '创建人岗位';", v.TableKey, "createrPositon")
overall.CONSTANT_DB_CustomerForm.Exec(sql)
// }
}
publicmethod.Result(0, tableInfo, c)
}

103
api/version1/grantpowers/myAppPower.go

@ -0,0 +1,103 @@
package grantpowers
import (
"appPlatform/models/modelAppPlatform"
"appPlatform/models/modelssystempermission"
"appPlatform/overall"
"appPlatform/overall/publicmethod"
"encoding/json"
"strconv"
"github.com/gin-gonic/gin"
)
/*
*
@ 作者: 秦东
@ 时间: 2025-12-11 11:12:02
@ 功能: 处理自定义应用授权数据
*/
func (a *ApiMethod) GainAppEmpowerPower(c *gin.Context) {
var requestData GainAppIdAndRoleNew
err := c.ShouldBindJSON(&requestData)
if err != nil {
publicmethod.Result(100, err, c)
return
}
if requestData.Id == "" {
publicmethod.Result(1, err, c, "未知App!不可获取表单列表!")
return
}
appSignCode, _ := strconv.ParseInt(requestData.Id, 10, 64)
roleIdInt, _ := strconv.ParseInt(requestData.RoleId, 10, 64)
powerInfo, formButPowerList := publicmethod.GetSystemPower(requestData.PowerType, requestData.AppType, requestData.RoleId, requestData.Id)
var appMenuList []modelAppPlatform.Appmenus
overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.Appmenus{}).Where("`isLock` = 2 AND `appkey` = ?", appSignCode).Find(&appMenuList)
var sendList []CusterAppTablePower
for _, v := range appMenuList {
powerInfo, isOk := CallBackAppMenuPower(v, powerInfo.PowerList)
if isOk {
sendList = append(sendList, powerInfo)
} else {
var cfInfo modelAppPlatform.CustomerForm
cfInfo.GetCont(map[string]interface{}{"`signCode`": v.Id}, "`groupid`", "`listjson`")
formPower := GainAppTablePower(roleIdInt, cfInfo.Groupid, v.Id)
var sendInfo CusterAppTablePower
sendInfo.Id = strconv.FormatInt(v.Id, 10)
sendInfo.Name = v.Label
sendInfo.SignCode = strconv.FormatInt(v.Id, 10)
sendInfo.TablePower = formPower.TablePower
sendInfo.ListPower = formPower.ListPower
if cfInfo.ListJson != "" {
sendInfo.IstIsTrue = true
} else {
sendInfo.IstIsTrue = false
}
sendInfo.DatePower.Types = formPower.DatePower.Types
sendInfo.DatePower.Attribute = formPower.DatePower.Attribute
sendInfo.ParentId = v.Parent
sendList = append(sendList, sendInfo)
}
}
outData := publicmethod.MapOut[string]()
// outData["list"] = AppMenuTree(appSignCode, sendList)
outData["list"] = sendList
outData["groupButPower"] = []string{}
outData["formButPower"] = formButPowerList
//获取app按钮控制
var groupPower modelssystempermission.AuthGroupPower
groupPower.GetCont(map[string]interface{}{"`appType`": requestData.AppType, "`orgPowerType`": requestData.PowerType, "`orgOrUserKey`": roleIdInt})
if groupPower.PowerInfo != "" {
var butPower []string
json.Unmarshal([]byte(groupPower.PowerInfo), &butPower)
outData["groupButPower"] = butPower
}
publicmethod.Result(0, outData, c)
}
func AppMenuTree(parentId int64, list []CusterAppTablePower) []CusterAppTablePower {
treeList := []CusterAppTablePower{}
for _, v := range list {
if v.ParentId == parentId {
var treeInfo CusterAppTablePower
treeInfo.Id = v.Id //表单ID
treeInfo.Name = v.Name //表单名称
treeInfo.SignCode = v.SignCode //表单识别符
treeInfo.ParentId = v.ParentId //上级
treeInfo.IstIsTrue = v.IstIsTrue
treeInfo.TableIsAll = v.TableIsAll
treeInfo.TablePower = v.TablePower //表单权限
treeInfo.ListIsAll = v.ListIsAll
treeInfo.ListPower = v.ListPower //列表权限
treeInfo.DatePower = v.DatePower //数据权限
treeInfo.AppButPower = v.AppButPower //页面按钮权限
idInt, _ := strconv.ParseInt(v.Id, 10, 64)
treeInfo.Children = AppMenuTree(idInt, list)
treeList = append(treeList, treeInfo)
}
}
return treeList
}

46
api/version1/grantpowers/postpower.go

@ -527,7 +527,7 @@ func (a *ApiMethod) GainAppTableListNew(c *gin.Context) {
// }
roleIdInt, _ := strconv.ParseInt(requestData.RoleId, 10, 64)
powerInfo := publicmethod.GetSystemPower(requestData.PowerType, requestData.AppType, requestData.RoleId, requestData.Id)
powerInfo, formButPowerList := publicmethod.GetSystemPower(requestData.PowerType, requestData.AppType, requestData.RoleId, requestData.Id)
// var appInfo modelAppPlatform.CustomerForm
// appInfo.GetCont(map[string]interface{}{"`signCode`":requestData.Id},"``")
var custForm []modelAppPlatform.CustomerForm
@ -558,16 +558,17 @@ func (a *ApiMethod) GainAppTableListNew(c *gin.Context) {
}
outData := publicmethod.MapOut[string]()
outData["list"] = sendList
outData["butPower"] = []string{}
outData["groupButPower"] = []string{}
outData["formButPower"] = formButPowerList
//获取app按钮控制
var groupPower modelssystempermission.AuthGroupPower
groupPower.GetCont(map[string]interface{}{"`appType`": requestData.AppType, "`orgPowerType`": requestData.PowerType, "`orgOrUserKey`": roleIdInt})
if groupPower.PowerInfo != "" {
var butPower []string
json.Unmarshal([]byte(groupPower.PowerInfo), &butPower)
outData["butPower"] = butPower
outData["groupButPower"] = butPower
}
publicmethod.Result(0, sendList, c)
publicmethod.Result(0, outData, c)
// publicmethod.Result(0, custForm, c)
}
@ -604,3 +605,40 @@ func CallBackTablePower(tableInfo modelAppPlatform.CustomerForm, powerList []pub
}
return
}
/*
*
@ 作者: 秦东
@ 时间: 2025-12-11 13:33:37
@ 功能: 回显自定义app菜单权限
*/
func CallBackAppMenuPower(tableInfo modelAppPlatform.Appmenus, powerList []publicmethod.ItemInfo) (sendInfo CusterAppTablePower, isOk bool) {
for _, v := range powerList {
if tableInfo.Id == v.ItemId {
sendInfo.Id = strconv.FormatInt(tableInfo.Id, 10)
sendInfo.Name = tableInfo.Label
sendInfo.ParentId = tableInfo.Parent
sendInfo.SignCode = strconv.FormatInt(tableInfo.Id, 10)
sendInfo.TablePower = v.TablePower
sendInfo.ListPower = v.ListPower
var cfInfo modelAppPlatform.CustomerForm
cfInfo.GetCont(map[string]interface{}{"`signCode`": tableInfo.Id}, "`listjson`")
if cfInfo.ListJson != "" {
sendInfo.IstIsTrue = true
} else {
sendInfo.IstIsTrue = false
}
sendInfo.ListIsAll = v.IsPick
sendInfo.DatePower.Types = int64(v.VisibleRange)
var attId []int64
for _, iv := range v.VisibleOrg {
// ivInt, _ := strconv.ParseInt(iv, 10, 64)
// attId = append(attId, ivInt)
attId = append(attId, iv)
}
sendInfo.DatePower.Attribute = attId
isOk = true
}
}
return
}

33
api/version1/grantpowers/type.go

@ -59,15 +59,18 @@ type GetRolePowerCont struct {
@ 功能: 输出表单权限数据结构
*/
type CusterAppTablePower struct {
Id string `json:"id"` //表单ID
Name string `json:"name"` //表单名称
SignCode string `json:"signCode"` //表单识别符
IstIsTrue bool `json:"istIsTrue"`
TableIsAll bool `json:"tableIsAll"`
TablePower []string `json:"tablePower"` //表单权限
ListIsAll bool `json:"listIsAll"`
ListPower []string `json:"listPower"` //列表权限
DatePower DatePowerInfo `json:"datePower"` //数据权限
Id string `json:"id"` //表单ID
Name string `json:"name"` //表单名称
SignCode string `json:"signCode"` //表单识别符
ParentId int64 `json:"parentId"` //上级
IstIsTrue bool `json:"istIsTrue"`
TableIsAll bool `json:"tableIsAll"`
TablePower []string `json:"tablePower"` //表单权限
ListIsAll bool `json:"listIsAll"`
ListPower []string `json:"listPower"` //列表权限
DatePower DatePowerInfo `json:"datePower"` //数据权限
AppButPower []string `json:"appButPower"` //页面按钮权限
Children []CusterAppTablePower `json:"children"`
}
type DatePowerInfo struct {
@ -75,6 +78,18 @@ type DatePowerInfo struct {
Attribute []int64 `json:"attribute"` //全选属性
}
/*
*
@ 作者: 秦东
@ 时间: 2025-12-11 13:40:50
@ 功能: 输出自定义App菜单权限
*/
type CusterAppMenuPower struct {
Id string `json:"id"` //表单ID
Name string `json:"name"` //表单名称
IstIsTrue bool `json:"istIsTrue"`
}
/*
*
@ 作者: 秦东

2
api/version1/setupRoule/power.go

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

8
api/version1/taskplatform/taskflowing/editformflow.go

@ -473,7 +473,7 @@ func (a *ApiMethod) EditFormLogData(c *gin.Context) {
saveData := publicmethod.MapOut[string]()
//组装数据表新增数据
masrWriteMap := taskmanagement.MakeFormMapData(flowInfo.FlowKey, userCont.Key, userCont.AdminOrg, cureeTime, masterField, masterUnitList, 2)
masrWriteMap := taskmanagement.MakeFormMapData(flowInfo.FlowKey, userCont.Key, userCont.AdminOrg, userCont.Position, cureeTime, masterField, masterUnitList, 2)
masterTableJson, _ := json.Marshal(masrWriteMap)
editFormDataLogInfo.DataCont = string(masterTableJson)
//判断是否有子表
@ -483,7 +483,7 @@ func (a *ApiMethod) EditFormLogData(c *gin.Context) {
for _, v := range formUnitCont.SunFormInfo {
sunTypeAry[v.TableName] = v.UbitInfo
}
sunTableData := EditSunDatabase(flowInfo.FlowKey, userCont.Key, userCont.AdminOrg, cureeTime, formCont.TableKey, masrWriteMap, sunFieldAry, sunTypeAry)
sunTableData := EditSunDatabase(flowInfo.FlowKey, userCont.Key, userCont.AdminOrg, userCont.Position, cureeTime, formCont.TableKey, masrWriteMap, sunFieldAry, sunTypeAry)
fmt.Printf("判断是否有子表得数据-->%v\n", sunTableData)
saveData["sunTypeAry"] = sunTableData
sunTableJson, _ := json.Marshal(sunTableData)
@ -558,7 +558,7 @@ func (a *ApiMethod) EditFormLogData(c *gin.Context) {
#
*/
func EditSunDatabase(uuid, creater, createrOrg, createrTime int64, masterTableName string, masterDataCont, sunDataList map[string]interface{}, sunTable map[string]map[string]customerform.MasterStruct) (sunTableData map[string]interface{}) {
func EditSunDatabase(uuid, creater, createrOrg, userPositon, createrTime int64, masterTableName string, masterDataCont, sunDataList map[string]interface{}, sunTable map[string]map[string]customerform.MasterStruct) (sunTableData map[string]interface{}) {
if len(masterDataCont) > 0 {
if len(sunDataList) > 0 {
sunMasterMap := publicmethod.MapOut[string]()
@ -577,7 +577,7 @@ func EditSunDatabase(uuid, creater, createrOrg, createrTime int64, masterTableNa
for _, sv := range s { //拆分子表
if sdf, isOk := sv.(map[string]interface{}); isOk {
if sunTableType, sunIsOk := sunTable[k]; sunIsOk {
masterWriteVal := taskmanagement.MakeFormMapData(uuid, creater, createrOrg, createrTime, sdf, sunTableType, 2) //转换数据表值
masterWriteVal := taskmanagement.MakeFormMapData(uuid, creater, createrOrg, userPositon, createrTime, sdf, sunTableType, 2) //转换数据表值
// fmt.Printf("处理指标字段值-1-->%v--->%v\n", sunTableType, masterWriteVal)
if len(masterWriteVal) > 0 {
sunCont = append(sunCont, masterWriteVal)

23
api/version1/taskplatform/taskmanagement/formcontrol.go

@ -114,7 +114,7 @@ func (a *ApiMethod) AddFormAddData(c *gin.Context) {
//判断是否
if len(sunFieldAry) > 0 {
//有子表
err = WriteSunDatabase(uuid, userCont.Key, userCont.AdminOrg, cureeTime, formCont.TableKey, masterWriteVal, sunFieldAry, sunTable)
err = WriteSunDatabase(uuid, userCont.Key, userCont.AdminOrg, userCont.Position, cureeTime, formCont.TableKey, masterWriteVal, sunFieldAry, sunTable)
} else {
//无子表
err = overall.CONSTANT_DB_CustomerForm.Table(formCont.TableKey).Create(masterWriteVal).Error
@ -165,7 +165,7 @@ func (a *ApiMethod) AddFormAddData(c *gin.Context) {
#
*/
func WriteSunDatabase(uuid, creater, userOrg, createrTime int64, masterTableName string, masterDataCont, sunDataList map[string]interface{}, sunTable map[string]map[string]customerform.MasterStruct) (err error) {
func WriteSunDatabase(uuid, creater, userOrg, userPositon, createrTime int64, masterTableName string, masterDataCont, sunDataList map[string]interface{}, sunTable map[string]map[string]customerform.MasterStruct) (err error) {
if len(masterDataCont) > 0 {
if len(sunDataList) > 0 {
sunMasterMap := publicmethod.MapOut[string]()
@ -183,7 +183,7 @@ func WriteSunDatabase(uuid, creater, userOrg, createrTime int64, masterTableName
for _, sv := range s { //拆分子表
if sdf, isOk := sv.(map[string]interface{}); isOk {
if sunTableType, sunIsOk := sunTable[k]; sunIsOk {
masterWriteVal := MakeFormMapData(uuid, creater, userOrg, createrTime, sdf, sunTableType, 2) //转换数据表值
masterWriteVal := MakeFormMapData(uuid, creater, userOrg, userPositon, createrTime, sdf, sunTableType, 2) //转换数据表值
if len(masterWriteVal) > 0 {
sunCont = append(sunCont, masterWriteVal)
}
@ -566,7 +566,7 @@ func (a *ApiMethod) AddFormAddNewData(c *gin.Context) {
masterUnitList[v.Name] = v
}
masrWriteMap := MakeFormMapData(uuid, userCont.Key, userCont.AdminOrg, cureeTime, masterField, masterUnitList, 1)
masrWriteMap := MakeFormMapData(uuid, userCont.Key, userCont.AdminOrg, userCont.Position, cureeTime, masterField, masterUnitList, 1)
masrWriteMap["flowIsOpen"] = formCont.FlowIsOpen
//任务列表
var taskCont modelAppPlatform.Task
@ -595,7 +595,7 @@ func (a *ApiMethod) AddFormAddNewData(c *gin.Context) {
sunTypeAry[v.TableName] = v.UbitInfo
}
err = WriteSunDatabase(uuid, userCont.Key, userCont.AdminOrg, cureeTime, formCont.TableKey, masrWriteMap, sunFieldAry, sunTypeAry)
err = WriteSunDatabase(uuid, userCont.Key, userCont.AdminOrg, userCont.Position, cureeTime, formCont.TableKey, masrWriteMap, sunFieldAry, sunTypeAry)
} else {
// //无子表
err = overall.CONSTANT_DB_CustomerForm.Table(formCont.TableKey).Create(masrWriteMap).Error
@ -647,7 +647,7 @@ func (a *ApiMethod) AddFormAddNewData(c *gin.Context) {
#
*/
func MakeFormMapData(uuid, userKey, userOrg, cureeTime int64, fieldVal map[string]interface{}, subUnit map[string]customerform.MasterStruct, calss int) map[string]interface{} {
func MakeFormMapData(uuid, userKey, userOrg, userPositon, cureeTime int64, fieldVal map[string]interface{}, subUnit map[string]customerform.MasterStruct, calss int) map[string]interface{} {
keyAndVal := make(map[string]interface{})
if calss == 1 {
keyAndVal["creater_time"] = cureeTime
@ -655,6 +655,7 @@ func MakeFormMapData(uuid, userKey, userOrg, cureeTime int64, fieldVal map[strin
keyAndVal["masters_key"] = uuid
keyAndVal["creater"] = userKey
keyAndVal["createrOrg"] = userOrg
keyAndVal["createrPositon"] = userPositon
keyAndVal["edit_time"] = cureeTime
for k, v := range fieldVal {
fmt.Printf("写入字段:%v->%v\n", k, v)
@ -878,7 +879,7 @@ func (a *ApiMethod) AddCustomerForm(c *gin.Context) {
masterUnitList[v.Name] = v
}
masrWriteMap := MakeFormMapData(uuid, userCont.Key, userCont.AdminOrg, cureeTime, masterField, masterUnitList, 1)
masrWriteMap := MakeFormMapData(uuid, userCont.Key, userCont.AdminOrg, userCont.Position, cureeTime, masterField, masterUnitList, 1)
masrWriteMap["flowIsOpen"] = formCont.FlowIsOpen
//任务列表
var taskCont customerForm.TaskRecord
@ -932,7 +933,7 @@ func (a *ApiMethod) AddCustomerForm(c *gin.Context) {
sunTypeAry[v.TableName] = v.UbitInfo
}
err = WriteSunDatabaseSoucer(sqlDborm, uuid, userCont.Key, userCont.AdminOrg, cureeTime, formJsonCont.Form.DataSourceConfig.TableKey, masrWriteMap, sunFieldAry, sunTypeAry)
err = WriteSunDatabaseSoucer(sqlDborm, uuid, userCont.Key, userCont.AdminOrg, userCont.Position, cureeTime, formJsonCont.Form.DataSourceConfig.TableKey, masrWriteMap, sunFieldAry, sunTypeAry)
} else {
// //无子表
@ -950,7 +951,7 @@ func (a *ApiMethod) AddCustomerForm(c *gin.Context) {
sunTypeAry[v.TableName] = v.UbitInfo
}
err = WriteSunDatabase(uuid, userCont.Key, userCont.AdminOrg, cureeTime, formCont.TableKey, masrWriteMap, sunFieldAry, sunTypeAry)
err = WriteSunDatabase(uuid, userCont.Key, userCont.AdminOrg, userCont.Position, cureeTime, formCont.TableKey, masrWriteMap, sunFieldAry, sunTypeAry)
} else {
// //无子表
@ -1855,7 +1856,7 @@ func GainOrgManWechat(orgId int64) (wechatMap []string) {
#
*/
func WriteSunDatabaseSoucer(sqlDb *gorm.DB, uuid, creater, userOrg, createrTime int64, masterTableName string, masterDataCont, sunDataList map[string]interface{}, sunTable map[string]map[string]customerform.MasterStruct) (err error) {
func WriteSunDatabaseSoucer(sqlDb *gorm.DB, uuid, creater, userOrg, userPositon, createrTime int64, masterTableName string, masterDataCont, sunDataList map[string]interface{}, sunTable map[string]map[string]customerform.MasterStruct) (err error) {
if len(masterDataCont) > 0 {
if len(sunDataList) > 0 {
sunMasterMap := publicmethod.MapOut[string]()
@ -1873,7 +1874,7 @@ func WriteSunDatabaseSoucer(sqlDb *gorm.DB, uuid, creater, userOrg, createrTime
for _, sv := range s { //拆分子表
if sdf, isOk := sv.(map[string]interface{}); isOk {
if sunTableType, sunIsOk := sunTable[k]; sunIsOk {
masterWriteVal := MakeFormMapData(uuid, creater, userOrg, createrTime, sdf, sunTableType, 2) //转换数据表值
masterWriteVal := MakeFormMapData(uuid, creater, userOrg, userPositon, createrTime, sdf, sunTableType, 2) //转换数据表值
if len(masterWriteVal) > 0 {
sunCont = append(sunCont, masterWriteVal)
}

2
api/version1/taskplatform/taskmanagement/importFormFile.go

@ -69,6 +69,7 @@ func (a *ApiMethod) ImportFormListFile(ctx *gin.Context) {
valueMap["creater_time"] = cureeTime
valueMap["creater"] = userCont.Key
valueMap["createrOrg"] = userCont.AdminOrg
valueMap["createrPositon"] = userCont.Position
valueMap["edit_time"] = cureeTime
i, l := 0, len(title)
for k := range data {
@ -101,6 +102,7 @@ func (a *ApiMethod) ImportFormListFile(ctx *gin.Context) {
taskCont.VersionId = formCont.Id //来源于哪个表单"`
taskCont.Status = 2
taskCont.CreaterOrg = valueMap["createrOrg"].(int64)
taskCont.CreaterPositon = valueMap["createrPositon"].(int64)
taskCont.MastesForm = formCont.MastesForm
taskCont.MastesFormJson = formCont.MastesFormJson
if err = overall.CONSTANT_DB_CustomerForm.Create(&taskCont).Error; err != nil {

104
api/version1/user/setPower.go

@ -2,6 +2,7 @@ package user
import (
"appPlatform/models/modelAppPlatform"
"appPlatform/models/modelshr"
"appPlatform/models/modelssystempermission"
"appPlatform/overall"
"appPlatform/overall/publicmethod"
@ -18,6 +19,8 @@ import (
*/
func GetMyPower(powerType string, oupk, org, poetId int64) (allPower SendAllPower, err error) {
allPower.AppGroupPower = GainAppGroupPower(oupk, org, poetId)
//获取系统权限
var systemPower []modelssystempermission.AuthPowerList
err = overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.AuthPowerList{}).Where("`appType` = 'system' AND `orgPowerType` = 'person' AND `orgOrUserKey` = ? AND `appKey` = 0", oupk).Find(&systemPower).Error
@ -96,6 +99,9 @@ func GetMyPower(powerType string, oupk, org, poetId int64) (allPower SendAllPowe
} else {
myAppInfo.IsPick = false
}
if v.AppButPower != "" && v.AppButPower != "null" {
json.Unmarshal([]byte(v.AppButPower), &myAppInfo.ButPower)
}
myAppInfo.FormTrue, myAppInfo.FormPower = GetTablePower(v.Id)
allPower.AppSystemPower = append(allPower.AppSystemPower, myAppInfo)
}
@ -128,6 +134,86 @@ func GetMyPower(powerType string, oupk, org, poetId int64) (allPower SendAllPowe
return
}
/*
*
@ 作者: 秦东
@ 时间: 2025-12-11 15:44:48
@ 功能: 获取自定义App分组的权限
#oupk 个人识别符
#org 行政组织
#poetId 岗位
*/
func GainAppGroupPower(oupk, org, poetId int64) []string {
var groupPower []string
//Step1: 判断有没有设定个人权限
groupPower = GainGroupAppPower("person", oupk)
if len(groupPower) > 0 {
return groupPower
}
//Step2: 获取职位权限
postPowerArt := GainGroupAppPower("job", poetId)
if len(postPowerArt) > 0 {
for _, v := range postPowerArt {
if !publicmethod.IsInTrue[string](v, groupPower) {
groupPower = append(groupPower, v)
}
}
}
//Step2: 行政组织
if org != 0 {
var orgPowerList OrgAryPower
orgPowerList.GetOrgPower(org)
if len(orgPowerList.PowerAry) > 0 {
for _, v := range orgPowerList.PowerAry {
if !publicmethod.IsInTrue[string](v, groupPower) {
groupPower = append(groupPower, v)
}
}
}
}
return groupPower
}
func (o *OrgAryPower) GetOrgPower(orgId int64) {
if orgId != 0 {
orgPowerArt := GainGroupAppPower("org", orgId)
if len(orgPowerArt) > 0 {
for _, v := range orgPowerArt {
if !publicmethod.IsInTrue[string](v, o.PowerAry) {
o.PowerAry = append(o.PowerAry, v)
}
}
} else {
var orgInfo modelshr.AdministrativeOrganization
orgInfo.GetCont(map[string]interface{}{"`id`": orgId}, "`superior`")
if orgInfo.Superior != 0 {
o.GetOrgPower(orgInfo.Superior)
}
}
}
}
/*
*
@ 作者: 秦东
@ 时间: 2025-12-11 16:00:06
@ 功能: 获取分组授权
*/
func GainGroupAppPower(types string, id int64) (powerArt []string) {
var myPower modelssystempermission.AuthGroupPower
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 myPower.PowerInfo != "" && myPower.PowerInfo != "null" {
json.Unmarshal([]byte(myPower.PowerInfo), &powerArt)
}
}
return
}
// 合并组织、角色、岗位权限
func MergePower(FormTable []AppMyPower) (list []AppMyPower) {
for _, v := range FormTable { //循环所有授权
@ -197,6 +283,9 @@ func (x *XieChengPowerSys) GetAppFormPower(sysType, powerType string, key int64)
} else {
appSetUpPower.IsPick = false
}
if v.AppButPower != "" && v.AppButPower != "null" {
json.Unmarshal([]byte(v.AppButPower), &appSetUpPower.ButPower)
}
appSetUpPower.FormTrue, appSetUpPower.FormPower = GetMyAppTableForm(v.Id)
x.FormTable = append(x.FormTable, appSetUpPower)
}
@ -221,6 +310,9 @@ func (x *XieChengPowerSys) GetAppFormPower(sysType, powerType string, key int64)
} else {
appSetUpPower.IsPick = false
}
if v.AppButPower != "" && v.AppButPower != "null" {
json.Unmarshal([]byte(v.AppButPower), &appSetUpPower.ButPower)
}
appSetUpPower.FormTrue, appSetUpPower.FormPower = GetMyAppTableForm(v.Id)
x.FormTable = append(x.FormTable, appSetUpPower)
}
@ -248,6 +340,9 @@ func (x *XieChengPowerSys) GetAppFormPower(sysType, powerType string, key int64)
} else {
appSetUpPower.IsPick = false
}
if v.AppButPower != "" && v.AppButPower != "null" {
json.Unmarshal([]byte(v.AppButPower), &appSetUpPower.ButPower)
}
appSetUpPower.FormTrue, appSetUpPower.FormPower = GetMyAppTableForm(v.Id)
x.FormTable = append(x.FormTable, appSetUpPower)
}
@ -269,6 +364,9 @@ func (x *XieChengPowerSys) GetAppFormPower(sysType, powerType string, key int64)
} else {
appSetUpPower.IsPick = false
}
if v.AppButPower != "" && v.AppButPower != "null" {
json.Unmarshal([]byte(v.AppButPower), &appSetUpPower.ButPower)
}
appSetUpPower.FormTrue, appSetUpPower.FormPower = GetMyAppTableForm(v.Id)
x.FormTable = append(x.FormTable, appSetUpPower)
}
@ -305,6 +403,9 @@ func GetMyAppTableForm(authid int64) (formId []string, list []AppMyPowerTable) {
if v.VisibleOrg != "" && v.VisibleOrg != "null" {
json.Unmarshal([]byte(v.VisibleOrg), &formInfo.ScopeManAry)
}
if v.PageButPower != "" && v.PageButPower != "null" {
json.Unmarshal([]byte(v.PageButPower), &formInfo.PagePower)
}
list = append(list, formInfo)
}
return
@ -497,6 +598,9 @@ func GetTablePower(authId int64) (itenIdAry []string, TableList []AppMyPowerTabl
if v.ListPower != "" && v.ListPower != "null" {
json.Unmarshal([]byte(v.ListPower), &formPwInfo.ListPower)
}
if v.PageButPower != "" && v.PageButPower != "null" {
json.Unmarshal([]byte(v.PageButPower), &formPwInfo.PagePower)
}
TableList = append(TableList, formPwInfo)
}
return

10
api/version1/user/type.go

@ -130,8 +130,9 @@ type SendAllPower struct {
SystemPower []SystemInfoPower `json:"systemPower"`
MenuIdAry []int64 `json:"menuIdAry"`
MenuButIdAry []string `json:"menuButIdAry"`
AppSystemPower []AppMyPower `json:"AppSystemPower"`
AppSystemPower []AppMyPower `json:"appSystemPower"`
AppKeyAry []string `json:"appKeyAry"`
AppGroupPower []string `json:"appGroupPower"` //自定义App分组权限
}
type SystemInfoPower struct {
@ -180,6 +181,7 @@ type AppMyPower struct {
IsPick bool `json:"isPick`
FormTrue []string `json:"formTrue"`
FormPower []AppMyPowerTable `json:"formPower"`
ButPower []string `json:"butPower"`
}
type AppMyPowerTable struct {
AppId string `json:"AppId"`
@ -188,4 +190,10 @@ type AppMyPowerTable struct {
TablePower []string `json:"tablePower"`
Scope int `json:"scope"`
ScopeManAry []int `json:"scopeManAry"`
PagePower []string `json:"PagePower"`
}
// 获取行政组织矩阵权限
type OrgAryPower struct {
PowerAry []string
}

1
apirouter/v1/grantsystempower/pc.go

@ -20,5 +20,6 @@ func (a *ApiRouter) RouterGroupPc(router *gin.RouterGroup) {
apiRouter.POST("gainAppTableList", methodBinding.GainAppTableList) //获取对应App下边的表单
apiRouter.POST("setpAppTableForms", methodBinding.SetpAppTableForm) //提交APp单一表单权限
apiRouter.POST("gainAppTableListNew", methodBinding.GainAppTableListNew) //获取对应App下边的表单
apiRouter.POST("gainAppEmpowerPower", methodBinding.GainAppEmpowerPower) //获取对应App下边的菜单
}
}

1
models/customerForm/taskrecord.go

@ -31,6 +31,7 @@ type TaskRecord struct {
RunFlowId int64 `json:"runFlowId" gorm:"column:runFlowId;type:bigint(20) unsigned;default:0;not null;comment:正在执行得流程"`
MsgId int64 `json:"msgId" gorm:"column:msgId;type:bigint(20) unsigned;default:0;not null;comment:发送消息得任务ID"`
CreaterOrg int64 `json:"createrOrg" gorm:"column:createrOrg;type:bigint(20) unsigned;default:0;not null;comment:发起人行政组织"`
CreaterPositon int64 `json:"createrPositon" gorm:"column:createrPositon;type:bigint(20) unsigned;default:0;not null;comment:发起人岗位"`
}
func (TaskRecord *TaskRecord) TableName() string {

2
models/modelssystempermission/authpowerlist.go

@ -17,6 +17,7 @@ type AuthPowerList struct {
VisibleOrg string `gorm:"column:visibleOrg;type:text;comment:可见范围辅助参数" json:"visibleOrg"`
ButPower string `gorm:"column:butPower;type:text;comment:按钮权限" json:"butPower"`
Time int64 `gorm:"column:time;type:bigint(20) unsigned;default:0;comment:编辑时间;NOT NULL" json:"time"`
PageButPower string `gorm:"column:pageButPower;type:text;comment:页面表单权限" json:"pageButPower"`
OrgPowerType string `gorm:"column:orgPowerType;type:varchar(20);comment:赋权类型(org:组织;job:岗位;role:角色;person:个人)" json:"orgPowerType"`
OrgOrUserKey int64 `gorm:"column:orgOrUserKey;type:bigint(20) unsigned;default:0;comment:行政组织或角色、人员识别符;NOT NULL" json:"orgOrUserKey"`
@ -24,6 +25,7 @@ type AuthPowerList struct {
AppKey int64 `gorm:"column:appKey;type:bigint(20) unsigned;default:0;comment:自定义应用App" json:"appKey"`
IsTrue int `gorm:"column:isTrue;type:int(1) unsigned;default:0;comment:是否有权(1:有;非1:无);NOT NULL" json:"isTrue"`
PowerInfo string `json:"powerInfo" gorm:"column:powerInfo;type:text;comment:权限结构体"`
AppButPower string `gorm:"column:appButPower;type:text;comment:自定义应用按钮授权" json:"appButPower"`
}
func (cont *AuthPowerList) TableName() string {

79
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) *gorm.DB {
func (g *GainUserPower) MakeSearchSql(gormDb *gorm.DB, userCont modelshr.ManCont, isOdeb string, appFormPower AppMyPowerTable) *gorm.DB {
powerInfo := g.GetUserPower()
// js, _ := json.Marshal(powerInfo)
fmt.Printf("\n\n\n等级-----%v--- ---->%v\n\n\n", isOdeb, powerInfo)
@ -254,7 +254,28 @@ func (g *GainUserPower) MakeSearchSql(gormDb *gorm.DB, userCont modelshr.ManCont
// gormDb = gormDb.Where("f.`creater` = ?", userCont.Key)
}
}
//确定可以看到数据的边界
//1:本人;2:本岗位;3:本部门;4:本分部;5:指定行政组织;6:所有
switch appFormPower.Scope {
case 2:
gormDb = gormDb.Where("f.`createrPositon` = ?", userCont.Key)
case 3:
var sunOrg GetOrgAllParent
sunOrg.GetOrgSun(userCont.MainDeparment)
sunOrg.Id = append(sunOrg.Id, userCont.MainDeparment)
gormDb = gormDb.Where("f.`createrOrg` IN ?", sunOrg.Id)
case 4:
var sunOrg GetOrgAllParent
sunOrg.GetOrgSun(userCont.Company)
sunOrg.Id = append(sunOrg.Id, userCont.MainDeparment)
gormDb = gormDb.Where("f.`createrOrg` IN ?", sunOrg.Id)
case 5:
gormDb = gormDb.Where("f.`createrOrg` IN ?", appFormPower.ScopeManAry)
case 6:
default:
}
gormDb = gormDb.Where("f.`creater` = ?", userCont.Key)
return gormDb
}
@ -264,7 +285,7 @@ func (g *GainUserPower) MakeSearchSql(gormDb *gorm.DB, userCont modelshr.ManCont
@ 时间: 2025-11-21 09:38:23
@ 功能: 根据系统参数获取权限
*/
func GetSystemPower(powerType, systemTyep, powerId, systemId string) (powerInfo SendSystemPower) {
func GetSystemPower(powerType, systemTyep, powerId, systemId string) (powerInfo SendSystemPower, tableBut []string) {
powerInfo.PowerType = powerType
powerInfo.SystemTyep = systemTyep
powerInfo.PowerId = powerId
@ -287,13 +308,16 @@ func GetSystemPower(powerType, systemTyep, powerId, systemId string) (powerInfo
default:
}
err := gormDb.First(&masterPower).Error
if masterPower.AppButPower != "" {
json.Unmarshal([]byte(masterPower.AppButPower), &tableBut)
}
if err != nil {
if powerType == "person" {
var userInfo modelshr.PersonArchives
userInfo.GetCont(map[string]interface{}{"`key`": powerId}, "`id`", "`company`", "`maindeparment`", "`admin_org`", "`position`")
var roleId []int64
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Select("`id`").Where("FIND_IN_SET(?, `roleuser`)", powerId).Find(&roleId)
powerInfo.SystemIsPick, powerInfo.PowerList = PersonalAuthorization(systemTyep, systemId, roleId, userInfo)
powerInfo.SystemIsPick, powerInfo.PowerList, tableBut = PersonalAuthorization(systemTyep, systemId, roleId, userInfo)
}
fmt.Printf("没有个人授权--->%v\n\n\n", masterPower)
@ -344,7 +368,7 @@ func GetSystemPower(powerType, systemTyep, powerId, systemId string) (powerInfo
@ 时间: 2025-12-05 09:19:08
@ 功能: 当个人没有设定自定义权限的时候返回其所在其他维度的赋权情况
*/
func PersonalAuthorization(systemTyep, systemId string, roleId []int64, userInfo modelshr.PersonArchives) (isTrue bool, PowerList []ItemInfo) {
func PersonalAuthorization(systemTyep, systemId string, roleId []int64, userInfo modelshr.PersonArchives) (isTrue bool, PowerList []ItemInfo, tableBut []string) {
//获取角色相关授权
var masterPower []modelssystempermission.AuthPower
gormDb := overall.CONSTANT_DB_System_Permission.Model(&masterPower).Where("`orgPowerType` = 'role' AND `orgOrUserKey` IN ? AND `appType` = ?", roleId, systemTyep)
@ -363,6 +387,11 @@ func PersonalAuthorization(systemTyep, systemId string, roleId []int64, userInfo
isTrue = true
}
autId = append(autId, v.Id)
if v.AppButPower != "" {
var tbinfo []string
json.Unmarshal([]byte(v.AppButPower), &tbinfo)
tableBut = append(tableBut, tbinfo...)
}
}
if len(autId) > 0 {
@ -389,6 +418,13 @@ func PersonalAuthorization(systemTyep, systemId string, roleId []int64, userInfo
isTrue = true
}
}
if masterPowerPost.AppButPower != "" {
var tbinfo []string
json.Unmarshal([]byte(masterPowerPost.AppButPower), &tbinfo)
tableBut = append(tableBut, tbinfo...)
}
var poserListPost []modelssystempermission.PowerInfo
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.PowerInfo{}).Where("`authId` = ?", masterPowerPost.Id).Find(&poserListPost)
PowerList = append(PowerList, mergePowerAry(poserListPost, PowerList)...)
@ -396,48 +432,62 @@ func PersonalAuthorization(systemTyep, systemId string, roleId []int64, userInfo
}
//根据行政组织
if userInfo.AdminOrg != 0 {
adOrgList, isTrues := OrgGetPower(systemTyep, systemId, userInfo.AdminOrg)
adOrgList, isTrues, taButPwer := OrgGetPower(systemTyep, systemId, userInfo.AdminOrg)
isTrue = isTrues
if len(adOrgList) > 0 {
tableBut = append(tableBut, taButPwer...)
PowerList = append(PowerList, mergePowerAry(adOrgList, PowerList)...)
} else if userInfo.MainDeparment != 0 {
adOrgList, isTrues := OrgGetPower(systemTyep, systemId, userInfo.MainDeparment)
adOrgList, isTrues, taButPwer := OrgGetPower(systemTyep, systemId, userInfo.MainDeparment)
isTrue = isTrues
if len(adOrgList) > 0 {
tableBut = append(tableBut, taButPwer...)
PowerList = append(PowerList, mergePowerAry(adOrgList, PowerList)...)
} else if userInfo.Company != 0 {
adOrgList, isTrues := OrgGetPower(systemTyep, systemId, userInfo.Company)
adOrgList, isTrues, taButPwer := OrgGetPower(systemTyep, systemId, userInfo.Company)
isTrue = isTrues
if len(adOrgList) > 0 {
tableBut = append(tableBut, taButPwer...)
PowerList = append(PowerList, mergePowerAry(adOrgList, PowerList)...)
}
}
} else if userInfo.Company != 0 {
adOrgList, isTrues := OrgGetPower(systemTyep, systemId, userInfo.Company)
adOrgList, isTrues, taButPwer := OrgGetPower(systemTyep, systemId, userInfo.Company)
isTrue = isTrues
if len(adOrgList) > 0 {
tableBut = append(tableBut, taButPwer...)
PowerList = append(PowerList, mergePowerAry(adOrgList, PowerList)...)
}
}
} else if userInfo.MainDeparment != 0 {
adOrgList, isTrues := OrgGetPower(systemTyep, systemId, userInfo.MainDeparment)
adOrgList, isTrues, taButPwer := OrgGetPower(systemTyep, systemId, userInfo.MainDeparment)
isTrue = isTrues
if len(adOrgList) > 0 {
tableBut = append(tableBut, taButPwer...)
PowerList = append(PowerList, mergePowerAry(adOrgList, PowerList)...)
} else if userInfo.Company != 0 {
adOrgList, isTrues := OrgGetPower(systemTyep, systemId, userInfo.Company)
adOrgList, isTrues, taButPwer := OrgGetPower(systemTyep, systemId, userInfo.Company)
isTrue = isTrues
if len(adOrgList) > 0 {
tableBut = append(tableBut, taButPwer...)
PowerList = append(PowerList, mergePowerAry(adOrgList, PowerList)...)
}
}
} else if userInfo.Company != 0 {
adOrgList, isTrues := OrgGetPower(systemTyep, systemId, userInfo.Company)
adOrgList, isTrues, taButPwer := OrgGetPower(systemTyep, systemId, userInfo.Company)
isTrue = isTrues
if len(adOrgList) > 0 {
tableBut = append(tableBut, taButPwer...)
PowerList = append(PowerList, mergePowerAry(adOrgList, PowerList)...)
}
}
var quchong []string
for _, v := range tableBut {
if !IsInTrue[string](v, quchong) {
quchong = append(quchong, v)
}
}
tableBut = quchong
return
}
@ -447,7 +497,7 @@ func PersonalAuthorization(systemTyep, systemId string, roleId []int64, userInfo
@ 时间: 2025-12-05 11:04:26
@ 功能: 根据行政组织获取授权
*/
func OrgGetPower(systemTyep, systemId string, orgId int64) (PowerList []modelssystempermission.PowerInfo, isTrue bool) {
func OrgGetPower(systemTyep, systemId string, orgId int64) (PowerList []modelssystempermission.PowerInfo, isTrue bool, tableButPow []string) {
var masterPower modelssystempermission.AuthPower
gormDb := overall.CONSTANT_DB_System_Permission.Model(&masterPower).Where("`orgPowerType` = 'org' AND `orgOrUserKey` = ? AND `appType` = ?", orgId, systemTyep)
switch systemTyep {
@ -464,6 +514,11 @@ func OrgGetPower(systemTyep, systemId string, orgId int64) (PowerList []modelssy
if masterPower.IsTrue == 1 {
isTrue = true
}
if masterPower.AppButPower != "" {
var tbinfo []string
json.Unmarshal([]byte(masterPower.AppButPower), &tbinfo)
tableButPow = append(tableButPow, tbinfo...)
}
overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.PowerInfo{}).Where("`authId` = ?", masterPower.Id).Find(&PowerList)
return
}

24
overall/publicmethod/powerRedis.go

@ -5,6 +5,7 @@ import (
"appPlatform/overall"
"encoding/json"
"fmt"
"strconv"
)
/*
@ -64,6 +65,29 @@ func GetMyTableMenuPower(userKey int64, menuId string) (menuPower SendAppTabelPo
if v.AppId == menuId {
menuPower.FormPower = v.FormPower
menuPower.FormTrue = v.FormTrue
menuPower.ButPower = v.ButPower
}
}
return
}
/*
*
@ 作者: 秦东
@ 时间: 2025-12-12 15:35:29
@ 功能: 获取自定义应用具体单一表单权限
*/
func GetMyFormPower(userKey, appKey, formKey int64) (menuPower AppMyPowerTable) {
appKeyStr := strconv.FormatInt(appKey, 10)
formKeyStr := strconv.FormatInt(formKey, 10)
myPower := GetSystemPowerInfo(userKey)
for _, v := range myPower.AppSystemPower {
if v.AppId == appKeyStr {
for _, fv := range v.FormPower {
if fv.AppId == formKeyStr {
menuPower = fv
}
}
}
}
return

2
overall/publicmethod/type.go

@ -442,6 +442,7 @@ type AppMyPower struct {
IsPick bool `json:"isPick`
FormTrue []string `json:"formTrue"`
FormPower []AppMyPowerTable `json:"formPower"`
ButPower []string `json:"butPower"`
}
type AppMyPowerTable struct {
AppId string `json:"AppId"`
@ -461,4 +462,5 @@ type OrgIdLevel struct {
type SendAppTabelPower struct {
FormTrue []string `json:"formTrue"`
FormPower []AppMyPowerTable `json:"formPower"`
ButPower []string `json:"butPower"`
}

Loading…
Cancel
Save