fix: export csv file contain tenant name

This commit is contained in:
2024-10-15 10:10:19 +08:00
parent 25232876b0
commit f592f1c544
11 changed files with 39 additions and 4 deletions

View File

@@ -29,9 +29,10 @@ CREATE TABLE `cdr_event_smsc` (
`timestamp` int DEFAULT NULL,
`cdr_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`tenant_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
KEY `id` (`id`) USING BTREE,
KEY `idx_type_timestamp` (`ne_type`,`timestamp`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
INDEX `id`(`id`) USING BTREE,
INDEX `idx_type_timestamp`(`ne_type`, `timestamp`, `tenant_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -734,5 +734,6 @@ INSERT INTO `sys_dict_data` VALUES (11037, 11000, 'tenant.errHasChildUse', '操
INSERT INTO `sys_dict_data` VALUES (11038, 11000, 'tenant.errHasUserUse', '不允许删除,租户已分配用户数:{num}', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
INSERT INTO `sys_dict_data` VALUES (11039, 11000, 'tenant.errAssetExists', '租赁资产[{type}:{key}]与现有的资产有冲突', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
INSERT INTO `sys_dict_data` VALUES (11040, 11000, 'menu.tenant.smscCDR', '短信话单', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
INSERT INTO `sys_dict_data` VALUES (11041, 11041, 'log.operate.export.tenantName', '租户名称', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -734,5 +734,6 @@ INSERT INTO `sys_dict_data` VALUES (14037, 14000, 'tenant.errHasChildUse', 'Oper
INSERT INTO `sys_dict_data` VALUES (14038, 14000, 'tenant.errHasUserUse', 'Deletion is not allowed, number of users the tenant has been assigned to: {num}', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
INSERT INTO `sys_dict_data` VALUES (14039, 14000, 'tenant.errAssetExists', 'There is a conflict between tenancy asset[{type}:{key}] and a existing asset', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
INSERT INTO `sys_dict_data` VALUES (14040, 14000, 'menu.tenant.smscCDR', 'SMS CDR', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
INSERT INTO `sys_dict_data` VALUES (11041, 11041, 'log.operate.export.tenantName', 'Tenant Name', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -33,4 +33,9 @@ CREATE TABLE IF NOT EXISTS `cdr_event_smsc` (
KEY `idx_type_timestamp` (`ne_type`,`timestamp`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
ALTER TABLE `cdr_event_smsc`
ADD COLUMN IF NOT EXISTS `tenant_id` varchar(32) NULL AFTER `created_at`,
DROP INDEX IF EXISTS `idx_type_timestamp`,
ADD INDEX IF NOT EXISTS `idx_type_timestamp`(`ne_type`, `timestamp`, `tenant_id`) USING BTREE;
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -741,5 +741,6 @@ REPLACE INTO `sys_dict_data` VALUES (11037, 11000, 'tenant.errHasChildUse', '操
REPLACE INTO `sys_dict_data` VALUES (11038, 11000, 'tenant.errHasUserUse', '不允许删除,租户已分配用户数:{num}', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
REPLACE INTO `sys_dict_data` VALUES (11039, 11000, 'tenant.errAssetExists', '租赁资产[{type}:{key}]与现有的资产有冲突', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
REPLACE INTO `sys_dict_data` VALUES (11040, 11000, 'menu.tenant.smscCDR', '短信话单', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
INSERT INTO `sys_dict_data` VALUES (11041, 11041, 'log.operate.export.tenantName', '租户名称', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -736,5 +736,6 @@ REPLACE INTO `sys_dict_data` VALUES (14037, 14000, 'tenant.errHasChildUse', 'Ope
REPLACE INTO `sys_dict_data` VALUES (14038, 14000, 'tenant.errHasUserUse', 'Deletion is not allowed, number of users the tenant has been assigned to: {num}', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
REPLACE INTO `sys_dict_data` VALUES (14039, 14000, 'tenant.errAssetExists', 'There is a conflict between tenancy asset[{type}:{key}] and a existing asset', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
REPLACE INTO `sys_dict_data` VALUES (14040, 14000, 'menu.tenant.smscCDR', 'SMS CDR', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
REPLACE INTO `sys_dict_data` VALUES (11041, 11041, 'log.operate.export.tenantName', 'Tenant Name', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL);
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -130,6 +130,7 @@ func (s *IMSController) CDRExport(c *gin.Context) {
"F1": "Duration",
"G1": "Result",
"H1": "Time",
"I1": "Tenant Name", // for multi-tenancy
}
// 读取字典数据 CDR SIP响应代码类别类型
dictCDRSipCode := sysService.NewSysDictDataImpl.SelectDictDataByType("cdr_sip_code")
@@ -195,6 +196,11 @@ func (s *IMSController) CDRExport(c *gin.Context) {
releaseTime := parse.Number(v)
timeStr = date.ParseDateToStr(releaseTime, date.YYYY_MM_DDTHH_MM_SSZ)
}
// tenant name
tenantName := ""
if v, ok := cdrJSON["tenantName"]; ok && v != nil {
tenantName = v.(string)
}
dataCells = append(dataCells, map[string]any{
"A" + idx: row.ID,
@@ -205,6 +211,7 @@ func (s *IMSController) CDRExport(c *gin.Context) {
"F" + idx: duration,
"G" + idx: callResult,
"H" + idx: timeStr,
"I" + idx: tenantName,
})
}

View File

@@ -134,6 +134,7 @@ func (s *SMFController) CDRExport(c *gin.Context) {
"H1": "Duration",
"I1": "Invocation Time",
"J1": "PDU Session Charging Information",
"K1": "Tenant Name", // for multi-tenancy
}
// 从第二行开始的数据
dataCells := make([]map[string]any, 0)
@@ -243,6 +244,11 @@ PDU Type: %s
PDU IPv4 Address: %s
PDU IPv6 Addres Swith Prefix: %s`, User_Identifier, SSC_Mode, RAT_Type, DNN_ID, PDU_Type, PDU_IPv4, PDU_IPv6)
}
// Tenant Name
tenantName := ""
if v, ok := cdrJSON["tenantName"]; ok && v != nil {
tenantName = v.(string)
}
dataCells = append(dataCells, map[string]any{
"A" + idx: row.ID,
@@ -255,6 +261,7 @@ PDU IPv6 Addres Swith Prefix: %s`, User_Identifier, SSC_Mode, RAT_Type, DNN_ID,
"H" + idx: duration,
"I" + idx: invocationTimestamp,
"J" + idx: pduSessionChargingInformation,
"K" + idx: tenantName,
})
}

View File

@@ -128,6 +128,7 @@ func (s *SMSCController) CDRExport(c *gin.Context) {
"E1": "Called",
"F1": "Result",
"G1": "Time",
"H1": "Tenant Name", // for multi-tenancy
}
// 从第二行开始的数据
dataCells := make([]map[string]any, 0)
@@ -174,6 +175,11 @@ func (s *SMSCController) CDRExport(c *gin.Context) {
releaseTime := parse.Number(v)
timeStr = date.ParseDateToStr(releaseTime, date.YYYY_MM_DDTHH_MM_SSZ)
}
// Tenant name
tenantName := ""
if v, ok := cdrJSON["tenantName"]; ok && v != nil {
tenantName = v.(string)
}
dataCells = append(dataCells, map[string]any{
"A" + idx: row.ID,
@@ -183,6 +189,7 @@ func (s *SMSCController) CDRExport(c *gin.Context) {
"E" + idx: called,
"F" + idx: callResult,
"G" + idx: timeStr,
"H" + idx: tenantName,
})
}

View File

@@ -11,6 +11,8 @@ type CDREventSMSC struct {
Timestamp int64 `json:"timestamp" gorm:"column:timestamp"`
CDRJSONStr string `json:"cdrJSON" gorm:"column:cdr_json"`
CreatedAt time.Time `json:"createdAt" gorm:"column:created_at;default:CURRENT_TIMESTAMP"`
TenantID string `json:"tenantID" gorm:"column:tenant_id"` // for multi-tenancy
TenantName string `json:"tenantName" gorm:"column:tenant_name"` // for multi-tenancy
}
// CDREventSMSCQuery CDR会话对象SMSC查询参数结构体
@@ -23,7 +25,7 @@ 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"`
TenantName string `json:"tenantName" form:"tenantName"` // for multi-tenancy
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

View File

@@ -151,6 +151,7 @@ func (s *SysLogOperateController) Export(c *gin.Context) {
"G1": i18n.TKey(language, "log.operate.export.status"),
"H1": i18n.TKey(language, "log.operate.export.operTime"),
"I1": i18n.TKey(language, "log.operate.export.costTime"),
"J1": i18n.TKey(language, "log.operate.export.tenantName"),
}
// 从第二行开始的数据
dataCells := make([]map[string]any, 0)
@@ -203,6 +204,7 @@ func (s *SysLogOperateController) Export(c *gin.Context) {
"G" + idx: statusValue,
"H" + idx: date.ParseDateToStr(row.OperTime, date.YYYY_MM_DDTHH_MM_SSZ),
"I" + idx: row.CostTime,
"J" + idx: row.TenantName,
})
}