应用集成平台服务端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

154 lines
5.2 KiB

package user
import (
"appPlatform/models/modelshr"
"appPlatform/models/modelssystempermission"
"appPlatform/overall"
"appPlatform/overall/publicmethod"
"encoding/json"
"strconv"
"strings"
"github.com/gin-gonic/gin"
)
/*
*
@ 作者: 秦东
@ 时间: 2023-05-22 10:54:15
@ 功能: 获取当前登录用户信息
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) GetUserCont(c *gin.Context) {
context, _ := c.Get(overall.MyContJwt)
var myContInfo modelshr.ManCont
jsonCont, _ := json.Marshal(context)
jsonUnErr := json.Unmarshal(jsonCont, &myContInfo)
outMap := publicmethod.MapOut[string]()
outMap["context"] = context
outMap["exi"] = jsonUnErr
outMap["myContInfo"] = myContInfo
var sendData SendUserCont
sendData.UserId = strconv.FormatInt(myContInfo.Key, 10)
sendData.Number = myContInfo.Number
sendData.NickName = myContInfo.Name
sendData.Company = strconv.FormatInt(myContInfo.Company, 10) //公司
var companyCont modelshr.AdministrativeOrganization
companyCont.GetCont(map[string]interface{}{"`id`": myContInfo.Company}, "`name`")
sendData.CompanyName = companyCont.Name //公司名称
sendData.Department = strconv.FormatInt(myContInfo.MainDeparment, 10) //主部门
var departCont modelshr.AdministrativeOrganization
departCont.GetCont(map[string]interface{}{"`id`": myContInfo.MainDeparment}, "`name`")
sendData.DepartmentName = departCont.Name //主部门名称
sendData.Organization = strconv.FormatInt(myContInfo.AdminOrg, 10) //行政组织
var orgCont modelshr.AdministrativeOrganization
orgCont.GetCont(map[string]interface{}{"`id`": myContInfo.MainDeparment}, "`name`")
sendData.OrganizationName = orgCont.Name //行政组织名称
sendData.Avatar = myContInfo.Icon
roleList := strings.Split(myContInfo.Role, ",")
// roleList = append(roleList, "ROOT")
sendData.Roles = roleList
//获取权限
menuPoint, _, _ := GetUserPower("appsystem", myContInfo.Position, roleList)
// menuPoint, opeart, orgList := GetUserPower("appsystem", myContInfo.Position, roleList)
// fmt.Printf("menuPoint======>%v\nopeart======>%v\norgList======>%v\n", menuPoint, opeart, orgList)
sendData.Perms = menuPoint
publicmethod.Result(0, sendData, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2023-05-22 11:30:44
@ 功能: 获取用户权限
@ 参数
#appType 系统标识
#postId 职务
#roleList 角色列表
@ 返回值
#menuPoint 菜单操作列表
#opeart 点位
#orgList 行政组织
@ 方法原型
#func GetUserPower(appType string, postId int64, roleList []string) (menuPoint []string, opeart []string, orgList []string)
*/
func GetUserPower(appType string, postId int64, roleList []string) (menuPoint, opeart, orgList []string) {
//获取职务权限
var emPower modelssystempermission.Empower
err := emPower.GetCont(map[string]interface{}{"`post_id`": postId, "`system`": appType})
if err == nil {
if emPower.PointId != "" {
pointIdList := strings.Split(emPower.PointId, ",")
menuPoint = publicmethod.MergeStruct[string](pointIdList, menuPoint)
}
if emPower.Operation != "" {
operationIdList := strings.Split(emPower.Operation, ",")
opeart = publicmethod.MergeStruct[string](operationIdList, opeart)
}
if emPower.Organization != "" {
orgIdList := strings.Split(emPower.Organization, ",")
orgList = publicmethod.MergeStruct[string](orgIdList, orgList)
}
}
// fmt.Printf("职务权限:---->%v\n:---->%v\n", emPower, orgList)
//获取角色权限
if len(roleList) > 0 {
var roleId []int64
err = overall.CONSTANT_DB_System_Permission.Model(&modelssystempermission.SystemRole{}).Select("`id`").Where("`state` = 1 AND `id` IN ?", roleList).Find(&roleId).Error
if err == nil && len(roleId) > 0 {
for _, v := range roleId {
var roleEmpower modelssystempermission.RoleEmpower
err = roleEmpower.GetCont(map[string]interface{}{"`role_id`": v, "`system`": appType})
if err == nil {
if roleEmpower.PointId != "" {
pointIdList := strings.Split(roleEmpower.PointId, ",")
menuPoint = publicmethod.MergeStruct[string](pointIdList, menuPoint)
}
if roleEmpower.Operation != "" {
operationIdList := strings.Split(roleEmpower.Operation, ",")
opeart = publicmethod.MergeStruct[string](operationIdList, opeart)
}
if roleEmpower.Organization != "" {
orgIdList := strings.Split(roleEmpower.Organization, ",")
orgList = publicmethod.MergeStruct[string](orgIdList, orgList)
}
}
}
}
// for _, v := range roleList {
// var roleEmpower modelssystempermission.RoleEmpower
// err = roleEmpower.GetCont(map[string]interface{}{"`role_id`": v, "`system`": appType})
// if err == nil {
// if roleEmpower.PointId != "" {
// pointIdList := strings.Split(roleEmpower.PointId, ",")
// menuPoint = publicmethod.MergeStruct[string](pointIdList, menuPoint)
// }
// if roleEmpower.Operation != "" {
// operationIdList := strings.Split(roleEmpower.Operation, ",")
// opeart = publicmethod.MergeStruct[string](operationIdList, opeart)
// }
// if roleEmpower.Organization != "" {
// orgIdList := strings.Split(roleEmpower.Organization, ",")
// orgList = publicmethod.MergeStruct[string](orgIdList, orgList)
// }
// }
// }
}
return
}