multi-tenant

This commit is contained in:
2024-06-19 11:15:39 +08:00
parent b9c9734b16
commit 7a785182b7
9 changed files with 247 additions and 55 deletions

View File

@@ -58,6 +58,7 @@ func (s *UDMSubController) ResetData(c *gin.Context) {
func (s *UDMSubController) List(c *gin.Context) {
querys := ctx.QueryMap(c)
querys["neId"] = ""
querys["userName"] = ctx.LoginUserToUserName(c)
data := s.udmSubService.Page(querys)
c.JSON(200, result.Ok(data))
}

View File

@@ -106,10 +106,25 @@ func (r *UDMSubImpl) SelectPage(query map[string]any) map[string]any {
err := dborm.DefaultDB().Table("sys_tenant").
Where("tenant_name=?", v).Cols("tenant_id").Distinct().Find(&tenantID)
if err != nil {
log.Errorf("Find tenant_id err => %v", err)
log.Errorf("Find tenant_id from sys_user err => %v", err)
}
log.Tracef("userName=%v, tenantID=%v", v, tenantID)
if len(tenantID) > 0 {
conditions = append(conditions, "s.tenant_id = ?")
params = append(params, tenantID[0])
}
} else if v, ok := query["userName"]; ok && v != "" {
var tenantID []string
err := dborm.DefaultDB().Table("sys_user").
Where("user_name=?", v).Cols("tenant_id").Distinct().Find(&tenantID)
if err != nil {
log.Errorf("Find tenant_id from sys_user err => %v", err)
}
log.Tracef("userName=%v, tenantID=%v", v, tenantID)
if len(tenantID) > 0 {
conditions = append(conditions, "s.tenant_id = ?")
params = append(params, tenantID[0])
}
conditions = append(conditions, "s.tenant_id = ?")
params = append(params, tenantID[0])
}
// 构建查询条件语句
@@ -339,7 +354,7 @@ func (r *UDMSubImpl) SetTenantID(subArr *[]model.UDMSub) {
for s := 0; s < len(*subArr); s++ {
var tenantID []string
err := dborm.DefaultDB().Table("sys_tenant").
Where("tenancy_type='IMSI' and tenancy_key=?", (*subArr)[s].Imsi).Cols("parent_id").Distinct().Find(&tenantID)
Where("status='1' and tenancy_type='IMSI' and ? like tenancy_key", (*subArr)[s].Imsi).Cols("parent_id").Distinct().Find(&tenantID)
if err != nil {
log.Errorf("Find tenant_id err => %v", err)
continue

View File

@@ -15,6 +15,7 @@ import (
"be.ems/src/modules/system/model"
"be.ems/src/modules/system/service"
dborm "be.ems/lib/core/datasource"
"github.com/gin-gonic/gin"
)
@@ -42,6 +43,11 @@ func (s *SysLogOperateController) List(c *gin.Context) {
querys["title"] = i18n.TFindKeyPrefix(language, "log.operate.title", v.(string))
}
// multi-tenancy, only filter user setting tenant_id
userName := ctx.LoginUserToUserName(c)
if s.IsTenancyUser(userName) {
querys["operName"] = userName
}
data := s.SysLogOperateService.SelectSysLogOperatePage(querys)
rows := data["rows"].([]model.SysLogOperate)
@@ -204,3 +210,12 @@ func (s *SysLogOperateController) Export(c *gin.Context) {
c.FileAttachment(saveFilePath, fileName)
}
func (s *SysLogOperateController) IsTenancyUser(userName string) bool {
var tenantID []int64
dborm.DefaultDB().Table("sys_user").Where("user_name=?", userName).Cols("tenant_id").Find(&tenantID)
if len(tenantID) > 0 {
return true
}
return false
}

View File

@@ -99,6 +99,12 @@ func (r *SysLogOperateImpl) SelectSysLogOperatePage(query map[string]any) map[st
params = append(params, parse.Number(endTime.(string)))
}
// multi-tenancy, only filter user setting tenant_id
if v, ok := query["operName"]; ok && v != "" {
conditions = append(conditions, "oper_name=?")
params = append(params, v)
}
// 构建查询条件语句
whereSql := ""
if len(conditions) > 0 {