fix: export csv file contain tenant name
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user