fix: issue of tenant status for all features

This commit is contained in:
2024-09-30 16:40:37 +08:00
parent 41693db39e
commit be63431402
13 changed files with 131 additions and 106 deletions

View File

@@ -62,7 +62,7 @@ func (s *PerfKPIController) GoldKPI(c *gin.Context) {
// multi-tenancy, useName->tenantID->rmUID
selectSQL := fmt.Sprintf(`SELECT t.tenancy_key FROM sys_tenant t WHERE t.status='1' AND t.tenancy_type='UPF' AND t.parent_id =
(SELECT u.tenant_id FROM sys_user u WHERE u.user_name='%s')`, userName)
(SELECT u.tenant_id FROM sys_user u WHERE u.user_name='%s' and u.status=1)`, userName)
err := datasource.DefaultDB().Raw(selectSQL).Scan(&rmUID).Error
if err != nil {
c.JSON(200, result.ErrMsgFmt("DB Get error: %v", err))

View File

@@ -23,6 +23,8 @@ type CDREventSMSCQuery struct {
CalledParty string `json:"calledParty" form:"calledParty"` // 被叫号码
StartTime string `json:"startTime" form:"startTime"`
EndTime string `json:"endTime" form:"endTime"`
TenantName string `json:"tenantName" form:"tenantName"`
UserName string `json:"userName" form:"userName"`
SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=timestamp"` // 排序字段,填写结果字段
SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序asc desc
PageNum int64 `json:"pageNum" form:"pageNum" binding:"required"`

View File

@@ -18,7 +18,7 @@ var NewCDREventIMSImpl = &CDREventIMSImpl{
selectSql: `select id, ne_type, ne_name, rm_uid, timestamp, cdr_json, created_at,
t.tenant_id, t.tenant_name
from cdr_event_ims c
left join sys_tenant t on t.tenant_id = c.tenant_id`,
left join sys_tenant t on t.tenant_id = c.tenant_id and t.status = 1`,
resultMap: map[string]string{
"id": "ID",
@@ -114,7 +114,7 @@ func (r *CDREventIMSImpl) SelectPage(querys model.CDREventIMSQuery) map[string]a
if querys.TenantName != "" {
var tenantID string
_, err := dborm.DefaultDB().Table("sys_tenant").
Where("tenant_name=?", querys.TenantName).Cols("tenant_id").Distinct().Get(&tenantID)
Where("tenant_name=? and status=1", querys.TenantName).Cols("tenant_id").Distinct().Get(&tenantID)
if err != nil {
log.Errorf("Get tenant_id from sys_user err => %v", err)
}
@@ -126,7 +126,7 @@ func (r *CDREventIMSImpl) SelectPage(querys model.CDREventIMSQuery) map[string]a
} else if querys.UserName != "" {
var tenantID string
_, err := dborm.DefaultDB().Table("sys_user").
Where("user_name=?", querys.UserName).Cols("tenant_id").Distinct().Get(&tenantID)
Where("user_name=? and status=1", querys.UserName).Cols("tenant_id").Distinct().Get(&tenantID)
if err != nil {
log.Errorf("Get tenant_id from sys_user err => %v", err)
}

View File

@@ -18,8 +18,7 @@ var NewCDREventSMFImpl = &CDREventSMFImpl{
selectSql: `select id, ne_type, ne_name, rm_uid, timestamp, cdr_json, created_at,
t.tenant_id, t.tenant_name
from cdr_event_smf c
left join sys_tenant t on t.tenant_id = c.tenant_id`,
// selectSql: `select id, ne_type, ne_name, rm_uid, timestamp, JSON_EXTRACT(cdr_json, '$.recordType') AS record_type, JSON_EXTRACT(cdr_json, '$.chargingID') AS charging_id, JSON_EXTRACT(cdr_json, '$.subscriberIdentifier.subscriptionIDData') AS subscriber_id, JSON_EXTRACT(cdr_json, '$.duration') AS duration, JSON_EXTRACT(cdr_json, '$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataVolumeUplink') AS data_volume_uplink, JSON_EXTRACT(cdr_json, '$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataVolumeDownlink') AS data_volume_downlink, JSON_EXTRACT(cdr_json, '$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataTotalVolume') AS data_total_volume, JSON_EXTRACT(cdr_json, '$.pDUSessionChargingInformation.pDUAddress') AS pdu_address, created_at from cdr_event_smf`,
left join sys_tenant t on t.tenant_id = c.tenant_id and t.status = 1`,
resultMap: map[string]string{
"id": "ID",
@@ -31,20 +30,6 @@ var NewCDREventSMFImpl = &CDREventSMFImpl{
"created_at": "CreatedAt",
"tenant_id": "TenantID",
"tenant_name": "TenantName",
// "id": "ID",
// "ne_type": "NeType",
// "ne_name": "NeName",
// "rm_uid": "RmUID",
// "timestamp": "Timestamp",
// "record_type": "RecordType",
// "charging_id": "ChargingID",
// "subscriber_id": "SubscriberID",
// "duration": "Duration",
// "data_volume_uplink": "DataVolumeUplink",
// "data_volume_downlink": "DataVolumeDownlink",
// "data_total_volume": "DataTotalVolume",
// "pdu_address": "PDUAddress",
// "created_at": "CreatedAt",
},
}
@@ -111,7 +96,7 @@ func (r *CDREventSMFImpl) SelectPage(querys model.CDREventSMFQuery) map[string]a
if querys.TenantName != "" {
var tenantID string
_, err := dborm.DefaultDB().Table("sys_tenant").
Where("tenant_name=?", querys.TenantName).Cols("tenant_id").Distinct().Get(&tenantID)
Where("tenant_name=? and status=1", querys.TenantName).Cols("tenant_id").Distinct().Get(&tenantID)
if err != nil {
log.Errorf("Get tenant_id from sys_user err => %v", err)
}
@@ -123,7 +108,7 @@ func (r *CDREventSMFImpl) SelectPage(querys model.CDREventSMFQuery) map[string]a
} else if querys.UserName != "" {
var tenantID string
_, err := dborm.DefaultDB().Table("sys_user").
Where("user_name=?", querys.UserName).Cols("tenant_id").Distinct().Get(&tenantID)
Where("user_name=? and status=1", querys.UserName).Cols("tenant_id").Distinct().Get(&tenantID)
if err != nil {
log.Errorf("Get tenant_id from sys_user err => %v", err)
}

View File

@@ -4,6 +4,8 @@ import (
"fmt"
"strings"
dborm "be.ems/lib/core/datasource"
"be.ems/lib/log"
"be.ems/src/framework/datasource"
"be.ems/src/framework/logger"
"be.ems/src/framework/utils/parse"
@@ -13,16 +15,21 @@ import (
// 实例化数据层 CDREventSMSCImpl 结构体
var NewCDREventSMSCImpl = &CDREventSMSCImpl{
selectSql: `select id, ne_type, ne_name, rm_uid, timestamp, cdr_json, created_at from cdr_event_smsc`,
selectSql: `select id, ne_type, ne_name, rm_uid, timestamp, cdr_json, created_at,
t.tenant_id, t.tenant_name
from cdr_event_smsc c
left join sys_tenant t on t.tenant_id = c.tenant_id and t.status = 1`,
resultMap: map[string]string{
"id": "ID",
"ne_type": "NeType",
"ne_name": "NeName",
"rm_uid": "RmUID",
"timestamp": "Timestamp",
"cdr_json": "CDRJSONStr",
"created_at": "CreatedAt",
"id": "ID",
"ne_type": "NeType",
"ne_name": "NeName",
"rm_uid": "RmUID",
"timestamp": "Timestamp",
"cdr_json": "CDRJSONStr",
"created_at": "CreatedAt",
"tenant_id": "TenantID",
"tenant_name": "TenantName",
},
}
@@ -96,6 +103,33 @@ func (r *CDREventSMSCImpl) SelectPage(querys model.CDREventSMSCQuery) map[string
conditions = append(conditions, fmt.Sprintf("( %s )", strings.Join(queryStrArr, " OR ")))
}
// for multi-tenancy solution
if querys.TenantName != "" {
var tenantID string
_, err := dborm.DefaultDB().Table("sys_tenant").
Where("tenant_name=? and status=1", querys.TenantName).Cols("tenant_id").Distinct().Get(&tenantID)
if err != nil {
log.Errorf("Get tenant_id from sys_user err => %v", err)
}
log.Tracef("userName=%v, tenantID=%v", querys.TenantName, tenantID)
if tenantID != "" {
conditions = append(conditions, "c.tenant_id = ?")
params = append(params, tenantID)
}
} else if querys.UserName != "" {
var tenantID string
_, err := dborm.DefaultDB().Table("sys_user").
Where("user_name=? and status=1", querys.UserName).Cols("tenant_id").Distinct().Get(&tenantID)
if err != nil {
log.Errorf("Get tenant_id from sys_user err => %v", err)
}
log.Tracef("userName=%v, tenantID=%v", querys.UserName, tenantID)
if tenantID != "" {
conditions = append(conditions, "c.tenant_id = ?")
params = append(params, tenantID)
}
}
// 构建查询条件语句
whereSql := ""
if len(conditions) > 0 {

View File

@@ -21,7 +21,7 @@ var NewUDMSub = &UDMSubUser{
s.cag,
t.tenant_id, t.tenant_name
from u_sub_user s
left join sys_tenant t on t.tenant_id = s.tenant_id`,
left join sys_tenant t on t.tenant_id = s.tenant_id and t.status = 1`,
resultMap: map[string]string{
"id": "ID",
@@ -109,7 +109,7 @@ func (r *UDMSubUser) SelectPage(query map[string]any) map[string]any {
if v, ok := query["tenantName"]; ok && v != "" {
var tenantID []string
err := dborm.DefaultDB().Table("sys_tenant").
Where("tenant_name=?", v).Cols("tenant_id").Distinct().Find(&tenantID)
Where("tenant_name=? and status=1", v).Cols("tenant_id").Distinct().Find(&tenantID)
if err != nil {
log.Errorf("Find tenant_id from sys_user err => %v", err)
}

View File

@@ -18,7 +18,7 @@ var NewUEEventAMFImpl = &UEEventAMFImpl{
selectSql: `select id, ne_type, ne_name, rm_uid, timestamp, event_type, event_json, created_at,
t.tenant_id, t.tenant_name
from ue_event_amf e
left join sys_tenant t on t.tenant_id = e.tenant_id`,
left join sys_tenant t on t.tenant_id = e.tenant_id and t.status = 1`,
resultMap: map[string]string{
"id": "ID",
@@ -101,7 +101,7 @@ func (r *UEEventAMFImpl) SelectPage(querys model.UEEventAMFQuery) map[string]any
if querys.TenantName != "" {
var tenantID string
_, err := dborm.DefaultDB().Table("sys_tenant").
Where("tenant_name=?", querys.TenantName).Cols("tenant_id").Distinct().Get(&tenantID)
Where("tenant_name=? and status=1", querys.TenantName).Cols("tenant_id").Distinct().Get(&tenantID)
if err != nil {
log.Errorf("Get tenant_id from sys_user err => %v", err)
}
@@ -113,7 +113,7 @@ func (r *UEEventAMFImpl) SelectPage(querys model.UEEventAMFQuery) map[string]any
} else if querys.UserName != "" {
var tenantID string
_, err := dborm.DefaultDB().Table("sys_user").
Where("user_name=?", querys.UserName).Cols("tenant_id").Distinct().Get(&tenantID)
Where("user_name=? and status=1", querys.UserName).Cols("tenant_id").Distinct().Get(&tenantID)
if err != nil {
log.Errorf("Get tenant_id from sys_user err => %v", err)
}
@@ -123,6 +123,7 @@ func (r *UEEventAMFImpl) SelectPage(querys model.UEEventAMFQuery) map[string]any
params = append(params, tenantID)
}
}
// 构建查询条件语句
whereSql := ""
if len(conditions) > 0 {

View File

@@ -18,7 +18,7 @@ var NewUEEventMMEImpl = &UEEventMMEImpl{
selectSql: `select id, ne_type, ne_name, rm_uid, timestamp, event_type, event_json, created_at,
t.tenant_id, t.tenant_name
from ue_event_mme e
left join sys_tenant t on t.tenant_id = e.tenant_id`,
left join sys_tenant t on t.tenant_id = e.tenant_id and t.status = 1`,
resultMap: map[string]string{
"id": "ID",
@@ -101,7 +101,7 @@ func (r *UEEventMMEImpl) SelectPage(querys model.UEEventMMEQuery) map[string]any
if querys.TenantName != "" {
var tenantID string
_, err := dborm.DefaultDB().Table("sys_tenant").
Where("tenant_name=?", querys.TenantName).Cols("tenant_id").Distinct().Get(&tenantID)
Where("tenant_name=? and status=1", querys.TenantName).Cols("tenant_id").Distinct().Get(&tenantID)
if err != nil {
log.Errorf("Get tenant_id from sys_user err => %v", err)
}
@@ -113,7 +113,7 @@ func (r *UEEventMMEImpl) SelectPage(querys model.UEEventMMEQuery) map[string]any
} else if querys.UserName != "" {
var tenantID string
_, err := dborm.DefaultDB().Table("sys_user").
Where("user_name=?", querys.UserName).Cols("tenant_id").Distinct().Get(&tenantID)
Where("user_name=? and status=1", querys.UserName).Cols("tenant_id").Distinct().Get(&tenantID)
if err != nil {
log.Errorf("Get tenant_id from sys_user err => %v", err)
}