diff --git a/build/database/lite/install/sys_i18n.sql b/build/database/lite/install/sys_i18n.sql index 2e440a15..ce325f4d 100644 --- a/build/database/lite/install/sys_i18n.sql +++ b/build/database/lite/install/sys_i18n.sql @@ -941,6 +941,14 @@ INSERT INTO "sys_i18n" VALUES (765, "dictData.sys_user_type.oauth2", "OAuth2", " INSERT INTO "sys_i18n" VALUES (766, "user.export.userType", "用户类型", "User Type"); INSERT INTO "sys_i18n" VALUES (767, "menu.system.loginSource", "第三方登录认证", "Third Party Login Source"); INSERT INTO "sys_i18n" VALUES (768, "log.operate.title.sysLoginSource", "认证源", "Login Source"); +INSERT INTO "sys_i18n" VALUES (769, 'job.delete_cdr_record', '删除-过期话单记录', 'Delete-Expired CDR Records'); +INSERT INTO "sys_i18n" VALUES (770, 'job.delete_cdr_record_remark', 'storeDays:表示保留最近天数的数据记录 +neList:表示匹配的网元类型', 'storeDays: Indicates the most recent days of data records retained +neList: Indicates the type of network elements matched'); +INSERT INTO "sys_i18n" VALUES (771, 'job.delete_uenb_record', '删除-过期终端接入基站记录', 'Delete-Expired UE-NB Records'); +INSERT INTO "sys_i18n" VALUES (772, 'job.delete_uenb_record_remark', 'storeDays:表示保留最近天数的数据记录 +neList:表示匹配的网元类型', 'storeDays: Indicates the most recent days of data records retained +neList: Indicates the type of network elements matched'); INSERT INTO "sys_i18n" VALUES (2000, 'menu.psap.agent', '座席', 'Agent'); INSERT INTO "sys_i18n" VALUES (2001, 'menu.psap.agent.callings', '并行话务', 'Calling Information'); diff --git a/build/database/lite/install/sys_job.sql b/build/database/lite/install/sys_job.sql index 0e16f7b4..5a1ae066 100644 --- a/build/database/lite/install/sys_job.sql +++ b/build/database/lite/install/sys_job.sql @@ -40,6 +40,8 @@ INSERT INTO "sys_job" VALUES (6, 'job.ne_config_backup', 'SYSTEM', 'ne_config_ba INSERT INTO "sys_job" VALUES (10, 'job.delete_ne_config_backup', 'SYSTEM', 'delete_ne_config_backup', '{"storeDays":7,"storeNum":7}', '0 20 0 * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.delete_ne_config_backup_remark'); INSERT INTO "sys_job" VALUES (11, 'job.delete_alarm_record', 'SYSTEM', 'delete_alarm_record', '{"storeDays":7}', '0 10 0 * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.delete_alarm_record_remark'); INSERT INTO "sys_job" VALUES (12, 'job.delete_kpi_record', 'SYSTEM', 'delete_kpi_record', '{"storeDays":7,"neList":["IMS","AMF","UDM","UPF","MME","SMSC","SMF","MME"]}', '0 20 0 * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.delete_kpi_record_remark'); +INSERT INTO "sys_job" VALUES (13, 'job.delete_cdr_record', 'SYSTEM', 'delete_cdr_record', '{\"storeDays\":7,\"neList\":[\"IMS\",\"SMF\",\"SGWC\",\"SMSC\"]}', '0 25 0 * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.delete_cdr_record_remark'); +INSERT INTO "sys_job" VALUES (14, 'job.delete_uenb_record', 'SYSTEM', 'delete_uenb_record', '{\"storeDays\":7,\"neList\":[\"AMF\",\"MME\"]}', '0 28 0 * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.delete_uenb_record_remark'); INSERT INTO "sys_job" VALUES (20, 'job.ne_alarm_state_check', 'SYSTEM', 'ne_alarm_state_check', '{"alarmTitle":"NE State Check Alarm","alarmType":"EquipmentAlarm","origSeverity":"Major","specificProblem":"alarm cause: the system state of target NE has not been received","specificProblemId":"AC10000","addInfo":""}', '0/30 * * * * ?', '3', '0', '1', '0', 'system', 1698478134839, 'system', 1698478134839, 'job.ne_alarm_state_check_remark'); INSERT INTO "sys_job" VALUES (21, 'job.ne_alarm_state_check_cmd', 'SYSTEM', 'ne_alarm_state_check_cmd', '{"alarmTitle":"NE State Check Alarm CPU/Menory/Disk","alarmType":"EquipmentAlarm","origSeverity":"Major","specificProblem":"Alarm Cause: CPU/Menory/Disk status received from target NE reaches the threshold","specificProblemId":"AC10100","addInfo":"","cpuUseGt":70,"memUseGt":70,"diskUseGt":70}', '0/15 * * * * ?', '3', '0', '1', '0', 'system', 1698478134839, 'system', 1698478134839, 'job.ne_alarm_state_check_cmd_remark'); diff --git a/build/database/lite/upgrade/upg_sys_i18n.sql b/build/database/lite/upgrade/upg_sys_i18n.sql index 256fbb8a..c62c8f04 100644 --- a/build/database/lite/upgrade/upg_sys_i18n.sql +++ b/build/database/lite/upgrade/upg_sys_i18n.sql @@ -940,6 +940,14 @@ REPLACE INTO "sys_i18n" VALUES (765, "dictData.sys_user_type.oauth2", "OAuth2", REPLACE INTO "sys_i18n" VALUES (766, "user.export.userType", "用户类型", "User Type"); REPLACE INTO "sys_i18n" VALUES (767, "menu.system.loginSource", "第三方登录认证", "Third Party Login Source"); REPLACE INTO "sys_i18n" VALUES (768, "log.operate.title.sysLoginSource", "认证源", "Login Source"); +REPLACE INTO "sys_i18n" VALUES (769, 'job.delete_cdr_record', '删除-过期话单记录', 'Delete-Expired CDR Records'); +REPLACE INTO "sys_i18n" VALUES (770, 'job.delete_cdr_record_remark', 'storeDays:表示保留最近天数的数据记录 +neList:表示匹配的网元类型', 'storeDays: Indicates the most recent days of data records retained +neList: Indicates the type of network elements matched'); +REPLACE INTO "sys_i18n" VALUES (771, 'job.delete_uenb_record', '删除-过期终端接入基站记录', 'Delete-Expired UE-NB Records'); +REPLACE INTO "sys_i18n" VALUES (772, 'job.delete_uenb_record_remark', 'storeDays:表示保留最近天数的数据记录 +neList:表示匹配的网元类型', 'storeDays: Indicates the most recent days of data records retained +neList: Indicates the type of network elements matched'); REPLACE INTO "sys_i18n" VALUES (2000, 'menu.psap.agent', '座席', 'Agent'); REPLACE INTO "sys_i18n" VALUES (2001, 'menu.psap.agent.callings', '并行话务', 'Calling Information'); diff --git a/build/database/lite/upgrade/upg_sys_job.sql b/build/database/lite/upgrade/upg_sys_job.sql index 47859628..e1f00d8c 100644 --- a/build/database/lite/upgrade/upg_sys_job.sql +++ b/build/database/lite/upgrade/upg_sys_job.sql @@ -39,6 +39,8 @@ REPLACE INTO "sys_job" VALUES (6, 'job.ne_config_backup', 'SYSTEM', 'ne_config_b REPLACE INTO "sys_job" VALUES (10, 'job.delete_ne_config_backup', 'SYSTEM', 'delete_ne_config_backup', '{"storeDays":7,"storeNum":7}', '0 20 0 * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.delete_ne_config_backup_remark'); REPLACE INTO "sys_job" VALUES (11, 'job.delete_alarm_record', 'SYSTEM', 'delete_alarm_record', '{"storeDays":7}', '0 10 0 * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.delete_alarm_record_remark'); REPLACE INTO "sys_job" VALUES (12, 'job.delete_kpi_record', 'SYSTEM', 'delete_kpi_record', '{"storeDays":7,"neList":["IMS","AMF","UDM","UPF","MME","SMSC","SMF","MME"]}', '0 20 0 * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.delete_kpi_record_remark'); +REPLACE INTO "sys_job" VALUES (13, 'job.delete_cdr_record', 'SYSTEM', 'delete_cdr_record', '{\"storeDays\":7,\"neList\":[\"IMS\",\"SMF\",\"SGWC\",\"SMSC\"]}', '0 25 0 * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.delete_cdr_record_remark'); +REPLACE INTO "sys_job" VALUES (14, 'job.delete_uenb_record', 'SYSTEM', 'delete_uenb_record', '{\"storeDays\":7,\"neList\":[\"AMF\",\"MME\"]}', '0 28 0 * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.delete_uenb_record_remark'); REPLACE INTO "sys_job" VALUES (20, 'job.ne_alarm_state_check', 'SYSTEM', 'ne_alarm_state_check', '{"alarmTitle":"NE State Check Alarm","alarmType":"EquipmentAlarm","origSeverity":"Major","specificProblem":"alarm cause: the system state of target NE has not been received","specificProblemId":"AC10000","addInfo":""}', '0/30 * * * * ?', '3', '0', '1', '0', 'system', 1698478134839, 'system', 1698478134839, 'job.ne_alarm_state_check_remark'); REPLACE INTO "sys_job" VALUES (21, 'job.ne_alarm_state_check_cmd', 'SYSTEM', 'ne_alarm_state_check_cmd', '{"alarmTitle":"NE State Check Alarm CPU/Menory/Disk","alarmType":"EquipmentAlarm","origSeverity":"Major","specificProblem":"Alarm Cause: CPU/Menory/Disk status received from target NE reaches the threshold","specificProblemId":"AC10100","addInfo":"","cpuUseGt":70,"memUseGt":70,"diskUseGt":70}', '0/15 * * * * ?', '3', '0', '1', '0', 'system', 1698478134839, 'system', 1698478134839, 'job.ne_alarm_state_check_cmd_remark'); diff --git a/build/database/std/install/sys_i18n.sql b/build/database/std/install/sys_i18n.sql index 88c198b5..fd6b1ab3 100644 --- a/build/database/std/install/sys_i18n.sql +++ b/build/database/std/install/sys_i18n.sql @@ -783,6 +783,10 @@ INSERT INTO `sys_i18n` VALUES (765, "dictData.sys_user_type.oauth2", "OAuth2", " INSERT INTO `sys_i18n` VALUES (766, "user.export.userType", "用户类型", "User Type"); INSERT INTO `sys_i18n` VALUES (767, "menu.system.loginSource", "第三方登录认证", "Third Party Login Source"); INSERT INTO `sys_i18n` VALUES (768, "log.operate.title.sysLoginSource", "认证源", "Login Source"); +INSERT INTO `sys_i18n` VALUES (769, 'job.delete_cdr_record', '删除-过期话单记录', 'Delete-Expired CDR Records'); +INSERT INTO `sys_i18n` VALUES (770, 'job.delete_cdr_record_remark', 'storeDays:表示保留最近天数的数据记录\r\nneList:表示匹配的网元类型', 'storeDays: Indicates the most recent days of data records retained\r\nneList: Indicates the type of network elements matched'); +INSERT INTO `sys_i18n` VALUES (771, 'job.delete_uenb_record', '删除-过期终端接入基站记录', 'Delete-Expired UE-NB Records'); +INSERT INTO `sys_i18n` VALUES (772, 'job.delete_uenb_record_remark', 'storeDays:表示保留最近天数的数据记录\r\nneList:表示匹配的网元类型', 'storeDays: Indicates the most recent days of data records retained\r\nneList: Indicates the type of network elements matched'); INSERT INTO `sys_i18n` VALUES (2000, 'menu.psap.agent', '座席', 'Agent'); INSERT INTO `sys_i18n` VALUES (2001, 'menu.psap.agent.callings', '并行话务', 'Calling Information'); diff --git a/build/database/std/install/sys_job.sql b/build/database/std/install/sys_job.sql index f7ea93d8..6b28cacc 100644 --- a/build/database/std/install/sys_job.sql +++ b/build/database/std/install/sys_job.sql @@ -35,6 +35,8 @@ INSERT INTO `sys_job` VALUES (6, 'job.ne_config_backup', 'SYSTEM', 'ne_config_ba INSERT INTO `sys_job` VALUES (10, 'job.delete_ne_config_backup', 'SYSTEM', 'delete_ne_config_backup', '{\"storeDays\":7,\"storeNum\":7}', '0 20 0 * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.delete_ne_config_backup_remark'); INSERT INTO `sys_job` VALUES (11, 'job.delete_alarm_record', 'SYSTEM', 'delete_alarm_record', '{\"storeDays\":7}', '0 10 0 * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.delete_alarm_record_remark'); INSERT INTO `sys_job` VALUES (12, 'job.delete_kpi_record', 'SYSTEM', 'delete_kpi_record', '{\"storeDays\":7,\"neList\":[\"IMS\",\"AMF\",\"UDM\",\"UPF\",\"MME\",\"SMSC\",\"SMF\",\"MME\"]}', '0 20 0 * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.delete_kpi_record_remark'); +INSERT INTO `sys_job` VALUES (13, 'job.delete_cdr_record', 'SYSTEM', 'delete_cdr_record', '{\"storeDays\":7,\"neList\":[\"IMS\",\"SMF\",\"SGWC\",\"SMSC\"]}', '0 25 0 * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.delete_cdr_record_remark'); +INSERT INTO `sys_job` VALUES (14, 'job.delete_uenb_record', 'SYSTEM', 'delete_uenb_record', '{\"storeDays\":7,\"neList\":[\"AMF\",\"MME\"]}', '0 28 0 * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.delete_uenb_record_remark'); INSERT INTO `sys_job` VALUES (20, 'job.ne_alarm_state_check', 'SYSTEM', 'ne_alarm_state_check', '{\"alarmTitle\":\"NE State Check Alarm\",\"alarmType\":\"EquipmentAlarm\",\"origSeverity\":\"Major\",\"specificProblem\":\"alarm cause: the system state of target NE has not been received\",\"specificProblemId\":\"AC10000\",\"addInfo\":\"\"}', '0/30 * * * * ?', '3', '0', '1', '0', 'system', 1698478134839, 'system', 1698478134839, 'job.ne_alarm_state_check_remark'); INSERT INTO `sys_job` VALUES (21, 'job.ne_alarm_state_check_cmd', 'SYSTEM', 'ne_alarm_state_check_cmd', '{\"alarmTitle\":\"NE State Check Alarm CPU/Menory/Disk\",\"alarmType\":\"EquipmentAlarm\",\"origSeverity\":\"Major\",\"specificProblem\":\"Alarm Cause: CPU/Menory/Disk status received from target NE reaches the threshold\",\"specificProblemId\":\"AC10100\",\"addInfo\":\"\",\"cpuUseGt\":70,\"memUseGt\":70,\"diskUseGt\":70}', '0/15 * * * * ?', '3', '0', '1', '0', 'system', 1698478134839, 'system', 1698478134839, 'job.ne_alarm_state_check_cmd_remark'); diff --git a/build/database/std/upgrade/upg_sys_i18n.sql b/build/database/std/upgrade/upg_sys_i18n.sql index 45033918..178ba0c6 100644 --- a/build/database/std/upgrade/upg_sys_i18n.sql +++ b/build/database/std/upgrade/upg_sys_i18n.sql @@ -780,6 +780,10 @@ REPLACE INTO `sys_i18n` VALUES (765, "dictData.sys_user_type.oauth2", "OAuth2", REPLACE INTO `sys_i18n` VALUES (766, "user.export.userType", "用户类型", "User Type"); REPLACE INTO `sys_i18n` VALUES (767, "menu.system.loginSource", "第三方登录认证", "Third Party Login Source"); REPLACE INTO `sys_i18n` VALUES (768, "log.operate.title.sysLoginSource", "认证源", "Login Source"); +REPLACE INTO `sys_i18n` VALUES (769, 'job.delete_cdr_record', '删除-过期话单记录', 'Delete-Expired CDR Records'); +REPLACE INTO `sys_i18n` VALUES (770, 'job.delete_cdr_record_remark', 'storeDays:表示保留最近天数的数据记录\r\nneList:表示匹配的网元类型', 'storeDays: Indicates the most recent days of data records retained\r\nneList: Indicates the type of network elements matched'); +REPLACE INTO `sys_i18n` VALUES (771, 'job.delete_uenb_record', '删除-过期终端接入基站记录', 'Delete-Expired UE-NB Records'); +REPLACE INTO `sys_i18n` VALUES (772, 'job.delete_uenb_record_remark', 'storeDays:表示保留最近天数的数据记录\r\nneList:表示匹配的网元类型', 'storeDays: Indicates the most recent days of data records retained\r\nneList: Indicates the type of network elements matched'); REPLACE INTO `sys_i18n` VALUES (2000, 'menu.psap.agent', '座席', 'Agent'); REPLACE INTO `sys_i18n` VALUES (2001, 'menu.psap.agent.callings', '并行话务', 'Calling Information'); diff --git a/build/database/std/upgrade/upg_sys_job.sql b/build/database/std/upgrade/upg_sys_job.sql index 9752e55c..9e964593 100644 --- a/build/database/std/upgrade/upg_sys_job.sql +++ b/build/database/std/upgrade/upg_sys_job.sql @@ -51,6 +51,8 @@ REPLACE INTO `sys_job` VALUES (6, 'job.ne_config_backup', 'SYSTEM', 'ne_config_b REPLACE INTO `sys_job` VALUES (10, 'job.delete_ne_config_backup', 'SYSTEM', 'delete_ne_config_backup', '{\"storeDays\":7,\"storeNum\":7}', '0 20 0 * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.delete_ne_config_backup_remark'); REPLACE INTO `sys_job` VALUES (11, 'job.delete_alarm_record', 'SYSTEM', 'delete_alarm_record', '{\"storeDays\":7}', '0 10 0 * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.delete_alarm_record_remark'); REPLACE INTO `sys_job` VALUES (12, 'job.delete_kpi_record', 'SYSTEM', 'delete_kpi_record', '{\"storeDays\":7,\"neList\":[\"IMS\",\"AMF\",\"UDM\",\"UPF\",\"MME\",\"SMSC\",\"SMF\",\"MME\"]}', '0 20 0 * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.delete_kpi_record_remark'); +REPLACE INTO `sys_job` VALUES (13, 'job.delete_cdr_record', 'SYSTEM', 'delete_cdr_record', '{\"storeDays\":7,\"neList\":[\"IMS\",\"SMF\",\"SGWC\",\"SMSC\"]}', '0 25 0 * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.delete_cdr_record_remark'); +REPLACE INTO `sys_job` VALUES (14, 'job.delete_uenb_record', 'SYSTEM', 'delete_uenb_record', '{\"storeDays\":7,\"neList\":[\"AMF\",\"MME\"]}', '0 28 0 * * ?', '3', '0', '1', '1', 'system', 1698478134839, 'system', 1698478134839, 'job.delete_uenb_record_remark'); REPLACE INTO `sys_job` VALUES (20, 'job.ne_alarm_state_check', 'SYSTEM', 'ne_alarm_state_check', '{\"alarmTitle\":\"NE State Check Alarm\",\"alarmType\":\"EquipmentAlarm\",\"origSeverity\":\"Major\",\"specificProblem\":\"alarm cause: the system state of target NE has not been received\",\"specificProblemId\":\"AC10000\",\"addInfo\":\"\"}', '0/30 * * * * ?', '3', '0', '1', '0', 'system', 1698478134839, 'system', 1698478134839, 'job.ne_alarm_state_check_remark'); REPLACE INTO `sys_job` VALUES (21, 'job.ne_alarm_state_check_cmd', 'SYSTEM', 'ne_alarm_state_check_cmd', '{\"alarmTitle\":\"NE State Check Alarm CPU/Menory/Disk\",\"alarmType\":\"EquipmentAlarm\",\"origSeverity\":\"Major\",\"specificProblem\":\"Alarm Cause: CPU/Menory/Disk status received from target NE reaches the threshold\",\"specificProblemId\":\"AC10100\",\"addInfo\":\"\",\"cpuUseGt\":70,\"memUseGt\":70,\"diskUseGt\":70}', '0/15 * * * * ?', '3', '0', '1', '0', 'system', 1698478134839, 'system', 1698478134839, 'job.ne_alarm_state_check_cmd_remark'); diff --git a/src/modules/crontask/processor/delete_cdr_record/delete_cdr_record.go b/src/modules/crontask/processor/delete_cdr_record/delete_cdr_record.go new file mode 100644 index 00000000..3ff4239c --- /dev/null +++ b/src/modules/crontask/processor/delete_cdr_record/delete_cdr_record.go @@ -0,0 +1,67 @@ +package delete_CDR_record + +import ( + "encoding/json" + "fmt" + "strings" + "time" + + "be.ems/src/framework/cron" + "be.ems/src/framework/database/db" + "be.ems/src/framework/logger" +) + +var NewProcessor = &DeleteCDRRecordProcessor{ + count: 0, +} + +// DeleteCDRRecordProcessor 删除CDR记录 +type DeleteCDRRecordProcessor struct { + count int // 执行次数 +} + +func (s *DeleteCDRRecordProcessor) Execute(data any) (any, error) { + s.count++ // 执行次数加一 + options := data.(cron.JobData) + sysJob := options.SysJob + logger.Infof("重复:%v 任务ID:%d 执行次数:%d", options.Repeat, sysJob.JobId, s.count) + // 返回结果,用于记录执行结果 + result := map[string]any{ + "count": s.count, + } + + // 读取参数值 + var params struct { + StoreDays int `json:"storeDays"` // store days + NeList []string `json:"neList"` // ne list + } + err := json.Unmarshal([]byte(sysJob.TargetParams), ¶ms) + if err != nil { + return nil, fmt.Errorf("json params err: %v", err) + } + if params.StoreDays < 0 { + return nil, fmt.Errorf("params storeDays less than 0 ") + } + if len(params.NeList) <= 0 { + return nil, fmt.Errorf("params neList less than 0 ") + } + + // 计算删除时间 + ltTime := time.Now().AddDate(0, 0, -params.StoreDays).UnixMilli() + + for _, neType := range params.NeList { + neTypeLower := strings.ToLower(neType) + + // 数据表 + cdrTableName := fmt.Sprintf("cdr_event_%s", neTypeLower) + cdrTx := db.DB("").Table(cdrTableName).Where("created_at < ?", ltTime) + if err := cdrTx.Delete(nil).Error; err != nil { + result[neTypeLower] = err.Error() + } else { + result[neTypeLower] = cdrTx.RowsAffected + } + } + + // 返回结果,用于记录执行结果 + return result, nil +} diff --git a/src/modules/crontask/processor/delete_data_record/delete_data_record.go b/src/modules/crontask/processor/delete_data_record/delete_data_record.go index 0504b721..692a1af9 100644 --- a/src/modules/crontask/processor/delete_data_record/delete_data_record.go +++ b/src/modules/crontask/processor/delete_data_record/delete_data_record.go @@ -21,7 +21,7 @@ type DeleteDataRecordProcessor struct { type optionParams struct { TableName string `json:"tableName"` // table name - ColName string `json:"colName"` // column name + ColName string `json:"colName"` // column name is timestamp milliseconds StoreDays int `json:"storeDays"` // store days WhereSQL string `json:"whereSQL"` // extras condition for where } @@ -45,13 +45,16 @@ func (s *DeleteDataRecordProcessor) Execute(data any) (any, error) { if params.TableName == "" { return nil, fmt.Errorf("params tableName is empty ") } + if params.ColName == "" { + return nil, fmt.Errorf("params colName is empty ") + } if params.StoreDays < 0 { return nil, fmt.Errorf("params storeDays less than 0 ") } // 指定表名 tx := db.DB("").Table(params.TableName) - if params.StoreDays >= 0 && params.ColName != "" { + if params.StoreDays >= 0 { // 计算删除时间 ltTime := time.Now().AddDate(0, 0, -params.StoreDays).UnixMilli() tx = tx.Where(fmt.Sprintf("%s < ?", params.ColName), ltTime) diff --git a/src/modules/crontask/processor/delete_kpi_record/delete_kpi_record.go b/src/modules/crontask/processor/delete_kpi_record/delete_kpi_record.go index 9199f28d..ea87fd9a 100644 --- a/src/modules/crontask/processor/delete_kpi_record/delete_kpi_record.go +++ b/src/modules/crontask/processor/delete_kpi_record/delete_kpi_record.go @@ -56,18 +56,18 @@ func (s *DeleteKPIRecordProcessor) Execute(data any) (any, error) { kpiTableName := fmt.Sprintf("kpi_report_%s", neTypeLower) kpiTx := db.DB("").Table(kpiTableName).Where("created_at < ?", ltTime) if err := kpiTx.Delete(nil).Error; err != nil { - result[kpiTableName] = err.Error() + result[neTypeLower] = err.Error() } else { - result[kpiTableName] = kpiTx.RowsAffected + result[neTypeLower] = kpiTx.RowsAffected } // KPI自定义数据表 kpicTableName := fmt.Sprintf("kpi_c_report_%s", neTypeLower) kpicTx := db.DB("").Table(kpicTableName).Where("created_at < ?", ltTime) if err := kpicTx.Delete(nil).Error; err != nil { - result[kpiTableName] = err.Error() + result["c_"+neTypeLower] = err.Error() } else { - result[kpiTableName] = kpicTx.RowsAffected + result["c_"+neTypeLower] = kpicTx.RowsAffected } } diff --git a/src/modules/crontask/processor/delete_uenb_record/delete_uenb_record.go b/src/modules/crontask/processor/delete_uenb_record/delete_uenb_record.go new file mode 100644 index 00000000..d19662e8 --- /dev/null +++ b/src/modules/crontask/processor/delete_uenb_record/delete_uenb_record.go @@ -0,0 +1,67 @@ +package delete_UENB_record + +import ( + "encoding/json" + "fmt" + "strings" + "time" + + "be.ems/src/framework/cron" + "be.ems/src/framework/database/db" + "be.ems/src/framework/logger" +) + +var NewProcessor = &DeleteUENBRecordProcessor{ + count: 0, +} + +// DeleteUENBRecordProcessor 删除UENB记录 +type DeleteUENBRecordProcessor struct { + count int // 执行次数 +} + +func (s *DeleteUENBRecordProcessor) Execute(data any) (any, error) { + s.count++ // 执行次数加一 + options := data.(cron.JobData) + sysJob := options.SysJob + logger.Infof("重复:%v 任务ID:%d 执行次数:%d", options.Repeat, sysJob.JobId, s.count) + // 返回结果,用于记录执行结果 + result := map[string]any{ + "count": s.count, + } + + // 读取参数值 + var params struct { + StoreDays int `json:"storeDays"` // store days + NeList []string `json:"neList"` // ne list + } + err := json.Unmarshal([]byte(sysJob.TargetParams), ¶ms) + if err != nil { + return nil, fmt.Errorf("json params err: %v", err) + } + if params.StoreDays < 0 { + return nil, fmt.Errorf("params storeDays less than 0 ") + } + if len(params.NeList) <= 0 { + return nil, fmt.Errorf("params neList less than 0 ") + } + + // 计算删除时间 + ltTime := time.Now().AddDate(0, 0, -params.StoreDays).UnixMilli() + + for _, neType := range params.NeList { + neTypeLower := strings.ToLower(neType) + + // 数据表 + uenbTableName := fmt.Sprintf("ue_event_%s", neTypeLower) + uenbTx := db.DB("").Table(uenbTableName).Where("created_at < ?", ltTime) + if err := uenbTx.Delete(nil).Error; err != nil { + result[neTypeLower] = err.Error() + } else { + result[neTypeLower] = uenbTx.RowsAffected + } + } + + // 返回结果,用于记录执行结果 + return result, nil +} diff --git a/src/modules/crontask/processor/ne_alarm_state_check_cmd/ne_alarm_state_check_cmd.go b/src/modules/crontask/processor/ne_alarm_state_check_cmd/ne_alarm_state_check_cmd.go index 12dc40ae..6cd31605 100644 --- a/src/modules/crontask/processor/ne_alarm_state_check_cmd/ne_alarm_state_check_cmd.go +++ b/src/modules/crontask/processor/ne_alarm_state_check_cmd/ne_alarm_state_check_cmd.go @@ -237,7 +237,8 @@ func (s NeAlarmStateCheckCMDProcessor) serverState(state map[string]any) (float6 } s.neStateService.Insert(neState) // 删除网元状态记录7天前 - s.neStateService.DeleteByTime(time.Now().UnixMilli() - 7*24*60*60*1000) + ltTime := time.Now().AddDate(0, 0, -7).UnixMilli() + s.neStateService.DeleteByTime(ltTime) // 推送ws消息 groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_NE_STATE, neState.NeType, neState.NeId) s.wsSendService.ByGroupID(groupID, neState) diff --git a/src/modules/crontask/processor/processor.go b/src/modules/crontask/processor/processor.go index c4e203cf..ededc7bd 100644 --- a/src/modules/crontask/processor/processor.go +++ b/src/modules/crontask/processor/processor.go @@ -8,9 +8,11 @@ import ( processorBackupExportUDM "be.ems/src/modules/crontask/processor/backup_export_udm" processorBackupRemoveFile "be.ems/src/modules/crontask/processor/backup_remove_file" processorDeleteAlarmRecord "be.ems/src/modules/crontask/processor/delete_alarm_record" + processorDeleteCDRRecord "be.ems/src/modules/crontask/processor/delete_cdr_record" processorDeleteDataRecord "be.ems/src/modules/crontask/processor/delete_data_record" processorDeleteKPIRecord "be.ems/src/modules/crontask/processor/delete_kpi_record" processorDeleteNeConfigBackup "be.ems/src/modules/crontask/processor/delete_ne_config_backup" + processorDeleteUENBRecord "be.ems/src/modules/crontask/processor/delete_uenb_record" processorMonitorSysResource "be.ems/src/modules/crontask/processor/monitor_sys_resource" processorNeAlarmStateCheck "be.ems/src/modules/crontask/processor/ne_alarm_state_check" processorNeAlarmStateCheckCMD "be.ems/src/modules/crontask/processor/ne_alarm_state_check_cmd" @@ -41,6 +43,10 @@ func InitCronQueue() { cron.CreateQueue("delete_alarm_record", processorDeleteAlarmRecord.NewProcessor) // 删除-KPI数据记录 cron.CreateQueue("delete_kpi_record", processorDeleteKPIRecord.NewProcessor) + // 删除-KPI数据记录 + cron.CreateQueue("delete_cdr_record", processorDeleteCDRRecord.NewProcessor) + // 删除-UENB数据记录 + cron.CreateQueue("delete_uenb_record", processorDeleteUENBRecord.NewProcessor) // 删除-网元配置文件定期备份 cron.CreateQueue("delete_ne_config_backup", processorDeleteNeConfigBackup.NewProcessor)