diff --git a/features/udm_user/repo/repo_udm_sub_user.go b/features/udm_user/repo/repo_udm_sub_user.go index f0611208..9cf961a3 100644 --- a/features/udm_user/repo/repo_udm_sub_user.go +++ b/features/udm_user/repo/repo_udm_sub_user.go @@ -19,7 +19,7 @@ var NewRepoUdmSubUser = &RepoUdmSubUser{ s.ne_id, s.eps_flag, s.eps_odb, s.hplmn_odb, s.ard, s.epstpl, s.context_id, s.apn_context, s.static_ip, 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", @@ -92,7 +92,7 @@ func (r *RepoUdmSubUser) SelectPage(query map[string]any) map[string]any { if v, ok := query["tenantName"]; ok && v != "" { var tenantID []string err := datasource.DefaultDB().Table("sys_tenant"). - Where("tenant_name='?'", v).Select("tenant_id").Distinct().Find(&tenantID) + Where("tenant_name='?' and status=1", v).Select("tenant_id").Distinct().Find(&tenantID) if err != nil { log.Errorf("Find tenant_id err => %v", err) } @@ -181,7 +181,7 @@ func (r *RepoUdmSubUser) SelectList(auth model.UdmSubUser) []model.UdmSubUser { if auth.TenantName != "" { var tenantID []string err := datasource.DefaultDB().Table("sys_tenant"). - Where("tenant_name='?'", auth.TenantName).Cols("tenant_id").Distinct().Find(&tenantID) + Where("tenant_name='?' and status=1", auth.TenantName).Cols("tenant_id").Distinct().Find(&tenantID) if err != nil { log.Errorf("Find tenant_id err => %v", err) } @@ -504,7 +504,7 @@ func (r *RepoUdmSubUser) SetTenantName(subArr *[]model.UdmSubUser) { for s := 0; s < len(*subArr); s++ { var tenantName []string err := datasource.DefaultDB().Table("sys_tenant"). - Where("tenancy_type='IMSI' and tenancy_key='?'", (*subArr)[s].Imsi).Cols("tenant_name").Find(&tenantName) + Where("tenancy_type='IMSI' and tenancy_key='?' and status=1", (*subArr)[s].Imsi).Cols("tenant_name").Find(&tenantName) if err != nil { log.Errorf("Find tenant_name err => %v", err) continue @@ -519,7 +519,7 @@ func (r *RepoUdmSubUser) SetTenantID(subArr *[]model.UdmSubUser) { for s := 0; s < len(*subArr); s++ { var tenantID []string err := datasource.DefaultDB().Table("sys_tenant"). - Where("tenancy_type='IMSI' and tenancy_key='?'", (*subArr)[s].Imsi).Cols("parent_id").Distinct().Find(&tenantID) + Where("tenancy_type='IMSI' and tenancy_key='?' and status=1", (*subArr)[s].Imsi).Cols("parent_id").Distinct().Find(&tenantID) if err != nil { log.Errorf("Find tenant_id err => %v", err) continue diff --git a/src/modules/network_data/controller/all_kpi.go b/src/modules/network_data/controller/all_kpi.go index fd13db5e..97f0bb35 100644 --- a/src/modules/network_data/controller/all_kpi.go +++ b/src/modules/network_data/controller/all_kpi.go @@ -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)) diff --git a/src/modules/network_data/model/cdr_event_smsc.go b/src/modules/network_data/model/cdr_event_smsc.go index 6a50e597..773f44a7 100644 --- a/src/modules/network_data/model/cdr_event_smsc.go +++ b/src/modules/network_data/model/cdr_event_smsc.go @@ -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"` diff --git a/src/modules/network_data/repository/cdr_event_ims.impl.go b/src/modules/network_data/repository/cdr_event_ims.impl.go index 1e4508fc..b42ece8f 100644 --- a/src/modules/network_data/repository/cdr_event_ims.impl.go +++ b/src/modules/network_data/repository/cdr_event_ims.impl.go @@ -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) } diff --git a/src/modules/network_data/repository/cdr_event_smf.impl.go b/src/modules/network_data/repository/cdr_event_smf.impl.go index dab30208..34086285 100644 --- a/src/modules/network_data/repository/cdr_event_smf.impl.go +++ b/src/modules/network_data/repository/cdr_event_smf.impl.go @@ -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) } diff --git a/src/modules/network_data/repository/cdr_event_smsc.impl.go b/src/modules/network_data/repository/cdr_event_smsc.impl.go index 82182313..a4aa0834 100644 --- a/src/modules/network_data/repository/cdr_event_smsc.impl.go +++ b/src/modules/network_data/repository/cdr_event_smsc.impl.go @@ -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 { diff --git a/src/modules/network_data/repository/udm_sub.go b/src/modules/network_data/repository/udm_sub.go index 635dc62d..5d5b2b1a 100644 --- a/src/modules/network_data/repository/udm_sub.go +++ b/src/modules/network_data/repository/udm_sub.go @@ -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) } diff --git a/src/modules/network_data/repository/ue_event_amf.impl.go b/src/modules/network_data/repository/ue_event_amf.impl.go index 5f6c4fd1..5ecbd39f 100644 --- a/src/modules/network_data/repository/ue_event_amf.impl.go +++ b/src/modules/network_data/repository/ue_event_amf.impl.go @@ -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 { diff --git a/src/modules/network_data/repository/ue_event_mme.impl.go b/src/modules/network_data/repository/ue_event_mme.impl.go index 6ff86390..c1db1102 100644 --- a/src/modules/network_data/repository/ue_event_mme.impl.go +++ b/src/modules/network_data/repository/ue_event_mme.impl.go @@ -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) } diff --git a/src/modules/system/model/sys_tenant.go b/src/modules/system/model/sys_tenant.go index 656c1f5b..9e408117 100644 --- a/src/modules/system/model/sys_tenant.go +++ b/src/modules/system/model/sys_tenant.go @@ -4,7 +4,7 @@ package model type SysTenant struct { // 租户ID TenantID string `json:"tenantId"` - // 父部门ID + // 父租户ID ParentID string `json:"parentId" binding:"required"` // 祖级列表 Ancestors string `json:"ancestors"` @@ -16,7 +16,7 @@ type SysTenant struct { TenancyType string `json:"tenancyType"` // tenancy key: key of sd-sst, apn, imsi, msisdn TenancyKey string `json:"tenancyKey"` - // 部门状态(0正常 1停用) + // 租户状态(0正常 1停用) Status string `json:"status"` // 删除标志(0代表存在 1代表删除) DelFlag string `json:"delFlag"` @@ -31,9 +31,9 @@ type SysTenant struct { // ====== 非数据库字段属性 ====== - // 子部门列表 + // 子租户列表 Children []SysTenant `json:"children,omitempty"` - // 父部门名称 + // 父租户名称 ParentName string `json:"parentName,omitempty"` } diff --git a/src/modules/system/repository/sys_log_operate.impl.go b/src/modules/system/repository/sys_log_operate.impl.go index a621f60b..a32bae56 100644 --- a/src/modules/system/repository/sys_log_operate.impl.go +++ b/src/modules/system/repository/sys_log_operate.impl.go @@ -20,7 +20,7 @@ var NewSysLogOperateImpl = &SysLogOperateImpl{ l.oper_url, l.oper_ip, l.oper_location, l.oper_param, l.oper_msg, l.status, l.oper_time, l.cost_time, t.tenant_name from sys_log_operate l - left join sys_tenant t on t.tenant_id = l.tenant_id`, + left join sys_tenant t on t.tenant_id = l.tenant_id and t.status = 1`, resultMap: map[string]string{ "oper_id": "OperID", @@ -108,7 +108,7 @@ func (r *SysLogOperateImpl) SelectSysLogOperatePage(query map[string]any, dataSc if v, ok := query["tenantName"]; ok && v != "" { var tenantID string _, err := dborm.DefaultDB().Table("sys_tenant"). - Where("tenant_name=?", v).Cols("tenant_id").Distinct().Get(&tenantID) + Where("tenant_name=? and status=1", v).Cols("tenant_id").Distinct().Get(&tenantID) if err != nil { log.Errorf("get tenant_id err => %v", err) } @@ -119,7 +119,7 @@ func (r *SysLogOperateImpl) SelectSysLogOperatePage(query map[string]any, dataSc log.Tracef("tenantName=%v, tenantID=%v", v, tenantID) } - // 构建查询条件语句 + // 构建查询条件语句, left join sys_tenant to support multi-tenancy selectSql := r.selectSql totalSql := "select count(oper_id) as 'total' from sys_log_operate l" whereSql := "" @@ -128,15 +128,17 @@ func (r *SysLogOperateImpl) SelectSysLogOperatePage(query map[string]any, dataSc whereSql += dataScopeSQL } else if dataScopeSQL != "" { totalSql = `select count(o.oper_id) as 'total' - from sys_log_operate o - left join sys_user u on u.user_name = o.oper_name - left join sys_dept d on u.dept_id = d.dept_id` + from sys_log_operate o + left join sys_user u on u.user_name = o.oper_name + left join sys_dept d on u.dept_id = d.dept_id + left join sys_tenant t on u.tenant_id = t.tenant_id and t.status = 1 ` selectSql = `select - o.oper_id, o.title, o.business_type, o.method, o.request_method, o.operator_type, o.oper_name, o.dept_name, - o.oper_url, o.oper_ip, o.oper_location, o.oper_param, o.oper_msg, o.status, o.oper_time, o.cost_time - from sys_log_operate o - left join sys_user u on u.user_name = o.oper_name - left join sys_dept d on u.dept_id = d.dept_id` + o.oper_id, o.title, o.business_type, o.method, o.request_method, o.operator_type, o.oper_name, o.dept_name, + o.oper_url, o.oper_ip, o.oper_location, o.oper_param, o.oper_msg, o.status, o.oper_time, o.cost_time + from sys_log_operate o + left join sys_user u on u.user_name = o.oper_name + left join sys_dept d on u.dept_id = d.dept_id + left join sys_tenant t on u.tenant_id = t.tenant_id and t.status = 1 ` whereSql += " where 1=1" + dataScopeSQL } diff --git a/src/modules/system/repository/sys_tenant.impl.go b/src/modules/system/repository/sys_tenant.impl.go index 72065e71..60f144a3 100644 --- a/src/modules/system/repository/sys_tenant.impl.go +++ b/src/modules/system/repository/sys_tenant.impl.go @@ -15,9 +15,9 @@ import ( // 实例化数据层 SysTenantImpl 结构体 var NewSysTenantImpl = &SysTenantImpl{ selectSql: `select - t.tenant_id, t.parent_id, t.ancestors, t.tenant_name, t.order_num, t.tenancy_type, t.tenancy_key, t.status, - t.del_flag, t.create_by, t.create_time - from sys_tenant t`, + t.tenant_id, t.parent_id, t.ancestors, t.tenant_name, t.order_num, t.tenancy_type, t.tenancy_key, t.status, + t.del_flag, t.create_by, t.create_time + from sys_tenant t `, resultMap: map[string]string{ "tenant_id": "TenantID", @@ -103,17 +103,17 @@ func (r *SysTenantImpl) SelectTenantList(sysTenant model.SysTenant, dataScopeSQL // SelectTenantListByRoleId 根据角色ID查询租户树信息 func (r *SysTenantImpl) SelectTenantListByRoleId(roleId string, tenantCheckStrictly bool) []string { - querySql := `select t.tenant_id as 'str' from sys_tenant d - left join sys_role_tenant rd on t.tenant_id = rt.tenant_id - where rt.role_id = ? ` + querySql := `select t.tenant_id as 'str' from sys_tenant t + left join sys_role_tenant rt on t.tenant_id = rt.tenant_id + where rt.role_id = ? and t.status = 1 ` var params []any params = append(params, roleId) // 展开 if tenantCheckStrictly { querySql += ` and t.tenant_id not in - (select t.parent_id from sys_tenant d - inner join sys_role_tenant rd on t.tenant_id = rt.tenant_id - and rt.role_id = ?) ` + (select t.parent_id from sys_tenant t + inner join sys_role_tenant rt on t.tenant_id = rt.tenant_id + and rt.role_id = ?) ` params = append(params, roleId) } querySql += "order by t.parent_id, t.order_num" @@ -138,9 +138,9 @@ func (r *SysTenantImpl) SelectTenantListByRoleId(roleId string, tenantCheckStric // SelectTenantById 根据租户ID查询信息 func (r *SysTenantImpl) SelectTenantById(tenantId string) model.SysTenant { querySql := `select t.tenant_id, t.parent_id, t.ancestors, - t.tenant_name, t.order_num, t.tenancy_type, t.tenancy_key, t.status, - (select tenant_name from sys_tenant where tenant_id = t.parent_id) parent_name - from sys_tenant t where t.tenant_id = ?` + t.tenant_name, t.order_num, t.tenancy_type, t.tenancy_key, t.status, + (select tenant_name from sys_tenant where tenant_id = t.parent_id and status = 1) parent_name + from sys_tenant t where t.tenant_id = ? and t.status = 1 ` results, err := datasource.RawDB("", querySql, []any{tenantId}) if err != nil { logger.Errorf("query err => %v", err) diff --git a/src/modules/system/repository/sys_user.impl.go b/src/modules/system/repository/sys_user.impl.go index 95d4eb41..02b2eb40 100644 --- a/src/modules/system/repository/sys_user.impl.go +++ b/src/modules/system/repository/sys_user.impl.go @@ -16,15 +16,15 @@ import ( // 实例化数据层 SysUserImpl 结构体 var NewSysUserImpl = &SysUserImpl{ selectSql: `select - u.user_id, u.dept_id, u.tenant_id, u.user_name, u.nick_name, u.user_type, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, - d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status, - t.tenant_id, t.parent_id, t.ancestors, t.tenant_name, t.order_num, t.tenancy_type, t.tenancy_key, t.status as tenant_status, - r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status - from sys_user u - left join sys_dept d on u.dept_id = d.dept_id - left join sys_tenant t on u.tenant_id = t.tenant_id - left join sys_user_role ur on u.user_id = ur.user_id - left join sys_role r on r.role_id = ur.role_id`, + u.user_id, u.dept_id, u.tenant_id, u.user_name, u.nick_name, u.user_type, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, + d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status, + t.tenant_id, t.parent_id, t.ancestors, t.tenant_name, t.order_num, t.tenancy_type, t.tenancy_key, t.status as tenant_status, + r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status + from sys_user u + left join sys_dept d on u.dept_id = d.dept_id + left join sys_tenant t on u.tenant_id = t.tenant_id + left join sys_user_role ur on u.user_id = ur.user_id + left join sys_role r on r.role_id = ur.role_id `, sysUserMap: map[string]string{ "user_id": "UserID", @@ -146,11 +146,11 @@ func (r *SysUserImpl) convertResultRows(rows []map[string]any) []model.SysUser { // SelectUserPage 根据条件分页查询用户列表 func (r *SysUserImpl) SelectUserPage(query map[string]any, dataScopeSQL string) map[string]any { selectUserTotalSql := `select count(distinct u.user_id) as 'total' - from sys_user u - left join sys_dept d on u.dept_id = d.dept_id - left join sys_tenant t on u.tenant_id = t.tenant_id - left join sys_user_role ur on u.user_id = ur.user_id - left join sys_role r on r.role_id = ur.role_id` + from sys_user u + left join sys_dept d on u.dept_id = d.dept_id + left join sys_tenant t on u.tenant_id = t.tenant_id + left join sys_user_role ur on u.user_id = ur.user_id + left join sys_role r on r.role_id = ur.role_id ` // 查询条件拼接 var conditions []string @@ -269,11 +269,11 @@ func (r *SysUserImpl) SelectAllocatedPage(query map[string]any, dataScopeSQL str params = append(params, roleId) } else { conditions = append(conditions, `(r.role_id != ? or r.role_id IS NULL) - and u.user_id not in ( - select u.user_id from sys_user u - inner join sys_user_role ur on u.user_id = ur.user_id - and ur.role_id = ? - )`) + and u.user_id not in ( + select u.user_id from sys_user u + inner join sys_user_role ur on u.user_id = ur.user_id + and ur.role_id = ? + )`) params = append(params, roleId) params = append(params, roleId) } @@ -295,10 +295,10 @@ func (r *SysUserImpl) SelectAllocatedPage(query map[string]any, dataScopeSQL str // 查询数量 长度为0直接返回 totalSql := `select count(distinct u.user_id) as 'total' from sys_user u - left join sys_dept d on u.dept_id = d.dept_id - left join sys_tenant t on u.tenant_id = t.tenant_id - left join sys_user_role ur on u.user_id = ur.user_id - left join sys_role r on r.role_id = ur.role_id` + left join sys_dept d on u.dept_id = d.dept_id + left join sys_tenant t on u.tenant_id = t.tenant_id + left join sys_user_role ur on u.user_id = ur.user_id + left join sys_role r on r.role_id = ur.role_id ` totalRows, err := datasource.RawDB("", totalSql+whereSql+dataScopeSQL, params) if err != nil { logger.Errorf("total err => %v", err) @@ -319,13 +319,13 @@ func (r *SysUserImpl) SelectAllocatedPage(query map[string]any, dataScopeSQL str // 查询数据 querySql := `select distinct - u.user_id, u.dept_id, u.tenant_id, u.user_name, u.nick_name, u.email, - u.phonenumber, u.status, u.create_time, d.dept_name, t.tenant_name - from sys_user u - left join sys_dept d on u.dept_id = d.dept_id - left join sys_tenant t on u.tenant_id = t.tenant_id - left join sys_user_role ur on u.user_id = ur.user_id - left join sys_role r on r.role_id = ur.role_id` + u.user_id, u.dept_id, u.tenant_id, u.user_name, u.nick_name, u.email, + u.phonenumber, u.status, u.create_time, d.dept_name, t.tenant_name + from sys_user u + left join sys_dept d on u.dept_id = d.dept_id + left join sys_tenant t on u.tenant_id = t.tenant_id + left join sys_user_role ur on u.user_id = ur.user_id + left join sys_role r on r.role_id = ur.role_id` querySql = querySql + whereSql + dataScopeSQL + pageSql results, err := datasource.RawDB("", querySql, params) if err != nil { @@ -340,12 +340,13 @@ func (r *SysUserImpl) SelectAllocatedPage(query map[string]any, dataScopeSQL str // SelectUserList 根据条件查询用户列表 func (r *SysUserImpl) SelectUserList(sysUser model.SysUser, dataScopeSQL string) []model.SysUser { selectUserSql := `select - u.user_id, u.dept_id, u.tenant_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, - d.dept_name, d.leader - t.tenant_name, t.tenancy_type, t.tenancy_key - from sys_user u - left join sys_dept d on u.dept_id = d.dept_id - left join sys_tenant t on u.tenant_id = t.tenant_id` + u.user_id, u.dept_id, u.tenant_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, + u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, + d.dept_name, d.leader + t.tenant_name, t.tenancy_type, t.tenancy_key + from sys_user u + left join sys_dept d on u.dept_id = d.dept_id + left join sys_tenant t on u.tenant_id = t.tenant_id and t.status = 1` // 查询条件拼接 var conditions []string