diff --git a/CHANGELOG.md b/CHANGELOG.md index efd715b6..d4f3a60e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # 版本发布日志 +## 2.2502.3-20250221 + +- 修复 网元授权序号查询 +- 更新 SGWC导出表格数据字段修改/兼容3G的SGWC字段 + ## 2.2502.2-20250214 - 修复 修改调度任务导出SMSC-CDR时间格式错误 diff --git a/database/install/sys_dict_data1_i18n_zh.sql b/database/install/sys_dict_data1_i18n_zh.sql index 8e421677..fefb3c3f 100644 --- a/database/install/sys_dict_data1_i18n_zh.sql +++ b/database/install/sys_dict_data1_i18n_zh.sql @@ -695,6 +695,7 @@ INSERT INTO `sys_dict_data` VALUES (2184, 2184, 'config.sys.homePage', '自定 INSERT INTO `sys_dict_data` VALUES (2185, 2185, 'config.sys.homePageRemark', '选择列表中的任一页面作为主页路径', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (2186, 2186, 'menu.config.neOverview', '网元概览', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (2187, 2187, 'menu.config.neOverviewRemark', '显示所有网元状态配置和license等概览信息', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (2188, 2188, 'job.exportSGWCCDR', '定期从漫游数据话单表导出文件至指定目录', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); -- multi-tenancy INSERT INTO `sys_dict_data` VALUES (11000, 11000, 'menu.security.tenant', '租户管理', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); diff --git a/database/install/sys_dict_data2_i18n_en.sql b/database/install/sys_dict_data2_i18n_en.sql index ab3d7784..dece96ea 100644 --- a/database/install/sys_dict_data2_i18n_en.sql +++ b/database/install/sys_dict_data2_i18n_en.sql @@ -695,6 +695,7 @@ INSERT INTO `sys_dict_data` VALUES (4184, 4184, 'config.sys.homePage', 'Custom H INSERT INTO `sys_dict_data` VALUES (4185, 4185, 'config.sys.homePageRemark', 'Select any page in the list as the homepage', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (4186, 4186, 'menu.config.neOverview', 'NE Overview', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (4187, 4187, 'menu.config.neOverviewRemark', 'Displays overview information such as status, configuration and license of all network elements', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (4188, 4188, 'job.exportSGWCCDR', 'Export regularly from Roaming Data CDR table', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); -- 多租户 INSERT INTO `sys_dict_data` VALUES (14000, 14000, 'menu.security.tenant', 'Tenant Management', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); diff --git a/database/install/sys_job.sql b/database/install/sys_job.sql index bf42aa96..cfe614e6 100644 --- a/database/install/sys_job.sql +++ b/database/install/sys_job.sql @@ -43,5 +43,6 @@ INSERT INTO `sys_job` VALUES (12, 'job.exportIMSCDR', 'SYSTEM', 'exportTable', ' INSERT INTO `sys_job` VALUES (13, 'job.exportSMFCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_smf\",\"columns\":\"id,ne_type,ne_name,rm_uid,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) AS record_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.chargingID\')) AS charging_id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.subscriberIdentifier.subscriptionIDType\')) AS subscriber_id_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.subscriberIdentifier.subscriptionIDData\')) AS subscriber_id_data,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.duration\')) AS duration,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.invocationTimestamp\')) as invocationTimestamp,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataVolumeUplink\')) AS data_volume_uplink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataVolumeDownlink\')) AS data_volume_downlink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataTotalVolume\')) AS data_total_volume,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.pDUSessionChargingInformation.pDUAddress.pDUIPv4Address\')) AS pdu_ipv4_address,timestamp\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/smf_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724309047797, ''); INSERT INTO `sys_job` VALUES (14, 'job.exportSMSCCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_smsc\",\"columns\":\"id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) as record_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.serviceType\')) as service_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.callerParty\')) as caller_party,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.calledParty\')) as called_party,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.result\')) as result,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.updateTime\')) as update_time\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/smsc_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724309047797, ''); INSERT INTO `sys_job` VALUES (15, 'job.removeExportedFiles', 'SYSTEM', 'removeFile', '[{\"filePath\":\"/usr/local/omc/backup/operate_log\",\"maxDays\":30},{\"filePath\":\"/usr/local/omc/backup/ims_cdr\",\"maxDays\":30},{\"filePath\":\"/usr/local/omc/backup/smf_cdr\",\"maxDays\":30},{\"filePath\":\"/usr/local/omc/backup/smsc_cdr\",\"maxDays\":30}]', '0 10 0 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1728634085631, ''); +INSERT INTO `sys_job` VALUES (16, 'job.exportSGWCCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_sgwc\",\"columns\":\"id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) as recordType,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.accessPointNameNI\')) as accessPointNameNI,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.servedIMSI\')) as IMSI,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.servedMSISDN\')) as MSISDN,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.servedPDPPDNAddress\')) as PdpAddress,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.duration\')) as duration,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordOpeningTime\')) as recordOpeningTime,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.chargingID\')) as chargingID,JSON_UNQUOTE(JSON_EXTRACT(cdr_json, \'$.listOfTrafficVolumes[0].dataVolumeGPRSDownlink\')) AS dataVolumeGPRSDownlink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json, \'$.listOfTrafficVolumes[0].dataVolumeGPRsUplink\')) as dataVolumeGPRsUplink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.userLocationInformation.tai.tac\')) as tac,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.userLocationInformation.ecgi.eutraCellId\')) as cellID\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/sgwc_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724309047797, ''); SET FOREIGN_KEY_CHECKS = 1; diff --git a/database/upgrade/upg_sys_dict_data1_i18n_zh.sql b/database/upgrade/upg_sys_dict_data1_i18n_zh.sql index 69f10677..ad5ab7bc 100644 --- a/database/upgrade/upg_sys_dict_data1_i18n_zh.sql +++ b/database/upgrade/upg_sys_dict_data1_i18n_zh.sql @@ -702,6 +702,7 @@ REPLACE INTO `sys_dict_data` VALUES (2184, 2184, 'config.sys.homePage', '自定 REPLACE INTO `sys_dict_data` VALUES (2185, 2185, 'config.sys.homePageRemark', '选择列表中的任一页面作为主页路径', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (2186, 2186, 'menu.config.neOverview', '网元概览', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (2187, 2187, 'menu.config.neOverviewRemark', '显示所有网元状态配置和license等概览信息', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); +REPLACE INTO `sys_dict_data` VALUES (2188, 2188, 'job.exportSGWCCDR', '定期从漫游数据话单表导出文件至指定目录', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); -- multi-tenancy REPLACE INTO `sys_dict_data` VALUES (11000, 11000, 'menu.security.tenant', '租户管理', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); diff --git a/database/upgrade/upg_sys_dict_data2_i18n_en.sql b/database/upgrade/upg_sys_dict_data2_i18n_en.sql index 75cb0c8e..22c964b3 100644 --- a/database/upgrade/upg_sys_dict_data2_i18n_en.sql +++ b/database/upgrade/upg_sys_dict_data2_i18n_en.sql @@ -701,6 +701,7 @@ REPLACE INTO `sys_dict_data` VALUES (4184, 4184, 'config.sys.homePage', 'Custom REPLACE INTO `sys_dict_data` VALUES (4185, 4185, 'config.sys.homePageRemark', 'Select any page in the list as the homepage', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (4186, 4186, 'menu.config.neOverview', 'NE Overview', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (4187, 4187, 'menu.config.neOverviewRemark', 'Displays overview information such as status, configuration and license of all network elements', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); +REPLACE INTO `sys_dict_data` VALUES (4188, 4188, 'job.exportSGWCCDR', 'Export regularly from Roaming Data CDR table', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); -- 多租户 REPLACE INTO `sys_dict_data` VALUES (14000, 14000, 'menu.security.tenant', 'Tenant Management', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); diff --git a/database/upgrade/upg_sys_job.sql b/database/upgrade/upg_sys_job.sql index 086a5804..bbd827d9 100644 --- a/database/upgrade/upg_sys_job.sql +++ b/database/upgrade/upg_sys_job.sql @@ -47,5 +47,6 @@ REPLACE INTO `sys_job` VALUES (12, 'job.exportIMSCDR', 'SYSTEM', 'exportTable', REPLACE INTO `sys_job` VALUES (13, 'job.exportSMFCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_smf\",\"columns\":\"id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) AS record_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.chargingID\')) AS charging_id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.subscriberIdentifier.subscriptionIDType\')) AS subscriber_id_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.subscriberIdentifier.subscriptionIDData\')) AS subscriber_id_data,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.duration\')) AS duration,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.invocationTimestamp\')) as invocationTimestamp,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataVolumeUplink\')) AS data_volume_uplink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataVolumeDownlink\')) AS data_volume_downlink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.listOfMultipleUnitUsage[*].usedUnitContainer[*].dataTotalVolume\')) AS data_total_volume,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.pDUSessionChargingInformation.pDUAddress.pDUIPv4Address\')) AS pdu_ipv4_address,timestamp\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/smf_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724309047797, ''); REPLACE INTO `sys_job` VALUES (14, 'job.exportSMSCCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_smsc\",\"columns\":\"id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) as record_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.serviceType\')) as service_type,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.callerParty\')) as caller_party,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.calledParty\')) as called_party,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.result\')) as result,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.updateTime\')) as update_time\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/smsc_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724309047797, ''); REPLACE INTO `sys_job` VALUES (15, 'job.removeExportedFiles', 'SYSTEM', 'removeFile', '[{\"filePath\":\"/usr/local/omc/backup/operate_log\",\"maxDays\":30},{\"filePath\":\"/usr/local/omc/backup/ims_cdr\",\"maxDays\":30},{\"filePath\":\"/usr/local/omc/backup/smf_cdr\",\"maxDays\":30},{\"filePath\":\"/usr/local/omc/backup/smsc_cdr\",\"maxDays\":30}]', '0 10 0 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1728634085631, ''); +REPLACE INTO `sys_job` VALUES (16, 'job.exportSGWCCDR', 'SYSTEM', 'exportTable', '{\"duration\":1,\"tableName\":\"cdr_event_sgwc\",\"columns\":\"id,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordType\')) as recordType,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.accessPointNameNI\')) as accessPointNameNI,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.servedIMSI\')) as IMSI,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.servedMSISDN\')) as MSISDN,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.servedPDPPDNAddress\')) as PdpAddress,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.duration\')) as duration,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.recordOpeningTime\')) as recordOpeningTime,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.chargingID\')) as chargingID,JSON_UNQUOTE(JSON_EXTRACT(cdr_json, \'$.listOfTrafficVolumes[0].dataVolumeGPRSDownlink\')) AS dataVolumeGPRSDownlink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json, \'$.listOfTrafficVolumes[0].dataVolumeGPRsUplink\')) as dataVolumeGPRsUplink,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.userLocationInformation.tai.tac\')) as tac,JSON_UNQUOTE(JSON_EXTRACT(cdr_json,\'$.userLocationInformation.ecgi.eutraCellId\')) as cellID\",\"timeCol\":\"timestamp\",\"timeUnit\":\"second\",\"extras\":\"\",\"filePath\":\"/usr/local/omc/backup/sgwc_cdr\"}', '0 0 0/1 * * ?', '3', '0', '1', '1', 'supervisor', 1698478134842, 'admin', 1724309047797, ''); SET FOREIGN_KEY_CHECKS = 1; \ No newline at end of file diff --git a/makefile b/makefile index 059003f9..da45b9ee 100644 --- a/makefile +++ b/makefile @@ -3,7 +3,7 @@ ProjectL = omc ProjectU = OMC PROJECT = $(ProjectL) -VERSION = 2.2502.2 +VERSION = 2.2502.3 RelDate = `date +%Y%m%d` Release = $(RelDate) RelVer = $(VERSION)-$(RelDate) diff --git a/mkpkg.sh b/mkpkg.sh index 83449f26..6ffb2d3d 100755 --- a/mkpkg.sh +++ b/mkpkg.sh @@ -2,7 +2,7 @@ ProcList="restagent sshsvc" ProjectL=omc -VERSION=2.2502.2 +VERSION=2.2502.3 RelDate=`date +%Y%m%d` Release=${RelDate} RelVer=${VERSION}-${RelDate} diff --git a/restagent/makefile b/restagent/makefile index f969d6d6..6685169a 100644 --- a/restagent/makefile +++ b/restagent/makefile @@ -1,7 +1,7 @@ # Makefile for rest agent project PROJECT = OMC -VERSION = 2.2502.2 +VERSION = 2.2502.3 PLATFORM = amd64 ARMPLATFORM = aarch64 BUILDDIR = ../../build diff --git a/src/modules/crontask/processor/genNeStateAlarm/genNeStateAlarm.go b/src/modules/crontask/processor/genNeStateAlarm/genNeStateAlarm.go index c24bcd94..e217c271 100644 --- a/src/modules/crontask/processor/genNeStateAlarm/genNeStateAlarm.go +++ b/src/modules/crontask/processor/genNeStateAlarm/genNeStateAlarm.go @@ -10,20 +10,28 @@ import ( "be.ems/features/fm" "be.ems/lib/config" - "be.ems/lib/dborm" - "be.ems/lib/global" "be.ems/lib/log" "be.ems/src/framework/cron" + "be.ems/src/framework/datasource" + "be.ems/src/framework/utils/date" + "be.ems/src/framework/utils/parse" "github.com/go-resty/resty/v2" + + neModel "be.ems/src/modules/network_element/model" + neService "be.ems/src/modules/network_element/service" ) var NewProcessor = &BarProcessor{ - progress: 0, - count: 0, + neConfigBackupService: neService.NewNeConfigBackup, + neInfoService: neService.NewNeInfo, + progress: 0, + count: 0, } // bar 队列任务处理 type BarProcessor struct { + neConfigBackupService *neService.NeConfigBackup // 网元配置文件备份记录服务 + neInfoService *neService.NeInfo // 网元信息服务 // 任务进度 progress int // 执行次数 @@ -97,32 +105,26 @@ func (s *BarProcessor) Execute(data any) (any, error) { return nil, err } - var nes []dborm.NeInfo - _, err = dborm.XormGetAllNeInfo(&nes) - if err != nil { - log.Error("Failed to get all ne info:", err) - return nil, err - } - succActiveAlarmNum := 0 failActiveAlarmNum := 0 succClearAlarmNum := 0 failClearAlarmNum := 0 - for _, ne := range nes { + neList := s.neInfoService.SelectList(neModel.NeInfo{}, true, false) + for _, ne := range neList { //log.Debug("ne:", ne) - sql := fmt.Sprintf("select * from ne_state where ne_type='%s' and ne_id='%s' order by `timestamp` desc limit 1", ne.NeType, ne.NeId) - log.Debug("SQL:", sql) - neState, err := dborm.XormGetDataBySQL(sql) - if err != nil { - log.Error("Failed to get ne_state:", err) - continue - } - if len(*neState) == 0 { - log.Warn("Not found record in ne_state:") - //continue - } + // sql := fmt.Sprintf("select * from ne_state where ne_type='%s' and ne_id='%s' order by `timestamp` desc limit 1", ne.NeType, ne.NeId) + // log.Debug("SQL:", sql) + // neState, err := dborm.XormGetDataBySQL(sql) + // if err != nil { + // log.Error("Failed to get ne_state:", err) + // continue + // } + // if len(*neState) == 0 { + // log.Warn("Not found record in ne_state:") + // //continue + // } //log.Debug("neState:", *neState) // params := "10000" @@ -138,33 +140,31 @@ func (s *BarProcessor) Execute(data any) (any, error) { // log.Debug("alarmDefine:", alarmDefine) - sql = fmt.Sprintf("select * from alarm where alarm_id = '%s' and ne_type='%s' and ne_id = '%s' order by event_time desc limit 1", + // 是否存在告警 + sql := fmt.Sprintf("select * from alarm where alarm_id = '%s' and ne_type='%s' and ne_id = '%s' order by event_time desc limit 1", alarmDefine.AlarmID, ne.NeType, ne.RmUID) - alarm, err := dborm.XormGetDataBySQL(sql) + alarm, err := datasource.RawDB("", sql, nil) if err != nil { - log.Error("Failed to get alarm:", err) continue } - //log.Debug("alarm:", *alarm) - - var timestamp string - if len(*neState) == 0 { - log.Infof("Not found ne_state neType:%s, neId:%s", ne.NeType, ne.NeId) - timestamp = ne.UpdateTime.Format(time.DateTime) - } else { - timestamp = (*neState)[0]["timestamp"] + alarmStatus := "0" + if len(alarm) > 0 { + alarmStatus = fmt.Sprint(alarm[0]["alarm_status"]) } - // 解析日期时间字符串为时间对象 - seconds, err := global.GetSecondsSinceDatetime(timestamp) - if err != nil { - log.Error("Failed to GetSecondsSinceDatetime:", err) - continue + changeTime := time.UnixMilli(ne.UpdateTime) + // 检查状态 + isOnline := false + if ne.ServerState != nil { + isOnline = parse.Boolean(ne.ServerState["online"]) } - log.Debugf("timestamp:%s seconds:%d", timestamp, seconds) - if seconds <= alarmDefine.Threshold { - if len(*alarm) == 0 || (*alarm)[0]["alarm_status"] == fm.AlarmStatusClearString { + // 在线且状态为活动告警 + if isOnline && alarmStatus == "1" { + if len(alarm) == 0 { + continue + } + if alarmStatus == "0" { continue } @@ -172,7 +172,8 @@ func (s *BarProcessor) Execute(data any) (any, error) { var alarmSeq int = 1 threshold := strconv.FormatInt(alarmDefine.Threshold, 10) SpecificProblem := strings.ReplaceAll(alarmDefine.SpecificProblem, "{threshold}", threshold) - locationInfo := fmt.Sprintf("SystemManagement.State: NE heartbeat timestamp=%s,threshold=%v", timestamp, alarmDefine.Threshold) + timeStr := date.ParseDateToStr(changeTime, date.YYYY_MM_DDTHH_MM_SSZ) + locationInfo := fmt.Sprintf("SystemManagement.State: NE heartbeat timestamp=%s,threshold=%v", timeStr, alarmDefine.Threshold) alarmData := &Alarm{ AlarmSeq: alarmSeq, AlarmId: alarmDefine.AlarmID, @@ -232,16 +233,15 @@ func (s *BarProcessor) Execute(data any) (any, error) { _ = json.Unmarshal(response.Body(), &body) failClearAlarmNum++ } - } else { - var alarmSeq int = 1 - if len(*alarm) > 0 && (*alarm)[0]["alarm_status"] == fm.AlarmStatusActiveString { - log.Info("System state alarm has exist") - continue - } + } + // 不在线且状态为清除告警 + if !isOnline && alarmStatus == "0" { + var alarmSeq int = 1 threshold := strconv.FormatInt(alarmDefine.Threshold, 10) SpecificProblem := strings.ReplaceAll(alarmDefine.SpecificProblem, "{threshold}", threshold) - locationInfo := fmt.Sprintf("SystemManagement.State: NE heartbeat timestamp=%s,threshold=%v", timestamp, alarmDefine.Threshold) + timeStr := date.ParseDateToStr(changeTime, date.YYYY_MM_DDTHH_MM_SSZ) + locationInfo := fmt.Sprintf("SystemManagement.State: NE heartbeat timestamp=%s threshold=%v", timeStr, alarmDefine.Threshold) alarmData := &Alarm{ AlarmSeq: alarmSeq, AlarmId: alarmDefine.AlarmID, diff --git a/src/modules/network_data/model/cdr_event_ims.go b/src/modules/network_data/model/cdr_event_ims.go index 06295b98..29f40864 100644 --- a/src/modules/network_data/model/cdr_event_ims.go +++ b/src/modules/network_data/model/cdr_event_ims.go @@ -26,10 +26,10 @@ type CDREventIMSQuery struct { RecordType string `json:"recordType" form:"recordType"` // 记录行为 MOC MTC MOSM MTSM CallerParty string `json:"callerParty" form:"callerParty"` // 主叫号码 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"` + StartTime int64 `json:"startTime" form:"startTime"` + EndTime int64 `json:"endTime" form:"endTime"` 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/model/cdr_event_sgwc.go b/src/modules/network_data/model/cdr_event_sgwc.go index fedf6a4d..5fa35498 100644 --- a/src/modules/network_data/model/cdr_event_sgwc.go +++ b/src/modules/network_data/model/cdr_event_sgwc.go @@ -27,8 +27,8 @@ type CDREventSGWCQuery struct { RmUID string `json:"rmUID" form:"rmUID"` IMSI string `json:"imsi" form:"imsi"` MSISDN string `json:"msisdn" form:"msisdn"` - StartTime string `json:"startTime" form:"startTime"` - EndTime string `json:"endTime" form:"endTime"` + StartTime int64 `json:"startTime" form:"startTime"` + EndTime int64 `json:"endTime" form:"endTime"` 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/model/cdr_event_smf.go b/src/modules/network_data/model/cdr_event_smf.go index fcd89360..fafde239 100644 --- a/src/modules/network_data/model/cdr_event_smf.go +++ b/src/modules/network_data/model/cdr_event_smf.go @@ -27,10 +27,10 @@ type CDREventSMFQuery struct { RecordType string `json:"recordType" form:"recordType"` // 暂时没用到 SubscriberID string `json:"subscriberID" form:"subscriberID"` DNN string `json:"dnn" form:"dnn"` - StartTime string `json:"startTime" form:"startTime"` - EndTime string `json:"endTime" form:"endTime"` TenantName string `json:"tenantName" form:"tenantName"` UserName string `json:"userName" form:"userName"` + StartTime int64 `json:"startTime" form:"startTime"` + EndTime int64 `json:"endTime" form:"endTime"` 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/model/cdr_event_smsc.go b/src/modules/network_data/model/cdr_event_smsc.go index a330d7ac..1ad1b171 100644 --- a/src/modules/network_data/model/cdr_event_smsc.go +++ b/src/modules/network_data/model/cdr_event_smsc.go @@ -26,10 +26,10 @@ type CDREventSMSCQuery struct { RecordType string `json:"recordType" form:"recordType"` // 记录行为 MOSM MTSM CallerParty string `json:"callerParty" form:"callerParty"` // 主叫号码 CalledParty string `json:"calledParty" form:"calledParty"` // 被叫号码 - StartTime string `json:"startTime" form:"startTime"` - EndTime string `json:"endTime" form:"endTime"` - TenantName string `json:"tenantName" form:"tenantName"` // for multi-tenancy + TenantName string `json:"tenantName" form:"tenantName"` // for multi-tenancy UserName string `json:"userName" form:"userName"` + StartTime int64 `json:"startTime" form:"startTime"` + EndTime int64 `json:"endTime" form:"endTime"` 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/model/ue_event_amf.go b/src/modules/network_data/model/ue_event_amf.go index d323de02..342c3b6f 100644 --- a/src/modules/network_data/model/ue_event_amf.go +++ b/src/modules/network_data/model/ue_event_amf.go @@ -26,8 +26,8 @@ type UEEventAMFQuery struct { RmUID string `json:"rmUID" form:"rmUID"` EventType string `json:"eventType" form:"eventType"` // 事件类型 auth-result detach cm-state IMSI string `json:"imsi" form:"imsi"` // imsi - StartTime string `json:"startTime" form:"startTime"` - EndTime string `json:"endTime" form:"endTime"` + StartTime int64 `json:"startTime" form:"startTime"` + EndTime int64 `json:"endTime" form:"endTime"` 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/model/ue_event_mme.go b/src/modules/network_data/model/ue_event_mme.go index bf26eb64..5d3207df 100644 --- a/src/modules/network_data/model/ue_event_mme.go +++ b/src/modules/network_data/model/ue_event_mme.go @@ -27,8 +27,8 @@ type UEEventMMEQuery struct { RmUID string `json:"rmUID" form:"rmUID"` EventType string `json:"eventType" form:"eventType"` // 事件类型 auth-result detach cm-state IMSI string `json:"imsi" form:"imsi"` // imsi - StartTime string `json:"startTime" form:"startTime"` - EndTime string `json:"endTime" form:"endTime"` + StartTime int64 `json:"startTime" form:"startTime"` + EndTime int64 `json:"endTime" form:"endTime"` 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.go b/src/modules/network_data/repository/cdr_event_ims.go index dbb01f1a..94c872dc 100644 --- a/src/modules/network_data/repository/cdr_event_ims.go +++ b/src/modules/network_data/repository/cdr_event_ims.go @@ -69,19 +69,21 @@ func (r *CDREventIMS) SelectPage(querys model.CDREventIMSQuery) map[string]any { conditions = append(conditions, "rm_uid = ?") params = append(params, querys.RmUID) } - if querys.StartTime != "" { + if querys.StartTime != 0 { conditions = append(conditions, "timestamp >= ?") - if len(querys.StartTime) == 13 { - querys.StartTime = querys.StartTime[:10] + startTime := fmt.Sprintf("%d", querys.StartTime) + if len(startTime) == 13 { + startTime = startTime[:10] } - params = append(params, querys.StartTime) + params = append(params, startTime) } - if querys.EndTime != "" { + if querys.EndTime != 0 { conditions = append(conditions, "timestamp <= ?") - if len(querys.EndTime) == 13 { - querys.EndTime = querys.EndTime[:10] + endTime := fmt.Sprintf("%d", querys.EndTime) + if len(endTime) == 13 { + endTime = endTime[:10] } - params = append(params, querys.EndTime) + params = append(params, endTime) } if querys.CallerParty != "" { conditions = append(conditions, "JSON_EXTRACT(cdr_json, '$.callerParty') = ?") @@ -204,15 +206,15 @@ func (r CDREventIMS) SelectByPage(querys model.CDREventIMSQuery) ([]model.CDREve if querys.RmUID != "" { tx = tx.Where("rm_uid = ?", querys.RmUID) } - if querys.StartTime != "" { - startTime := querys.StartTime + if querys.StartTime != 0 { + startTime := fmt.Sprintf("%d", querys.StartTime) if len(startTime) == 13 { startTime = startTime[:10] } tx = tx.Where("timestamp >= ?", startTime) } - if querys.EndTime != "" { - endTime := querys.EndTime + if querys.EndTime != 0 { + endTime := fmt.Sprintf("%d", querys.EndTime) if len(endTime) == 13 { endTime = endTime[:10] } diff --git a/src/modules/network_data/repository/cdr_event_sgwc.go b/src/modules/network_data/repository/cdr_event_sgwc.go index cf87e9db..783a2cbb 100644 --- a/src/modules/network_data/repository/cdr_event_sgwc.go +++ b/src/modules/network_data/repository/cdr_event_sgwc.go @@ -1,6 +1,8 @@ package repository import ( + "fmt" + "be.ems/src/framework/datasource" "be.ems/src/framework/logger" "be.ems/src/modules/network_data/model" @@ -22,15 +24,15 @@ func (r CDREventSGWC) SelectByPage(querys model.CDREventSGWCQuery) ([]model.CDRE if querys.RmUID != "" { tx = tx.Where("rm_uid = ?", querys.RmUID) } - if querys.StartTime != "" { - startTime := querys.StartTime + if querys.StartTime != 0 { + startTime := fmt.Sprintf("%d", querys.StartTime) if len(startTime) == 13 { startTime = startTime[:10] } tx = tx.Where("timestamp >= ?", startTime) } - if querys.EndTime != "" { - endTime := querys.EndTime + if querys.EndTime != 0 { + endTime := fmt.Sprintf("%d", querys.EndTime) if len(endTime) == 13 { endTime = endTime[:10] } diff --git a/src/modules/network_data/repository/cdr_event_smf.go b/src/modules/network_data/repository/cdr_event_smf.go index 01755e51..abcaec8a 100644 --- a/src/modules/network_data/repository/cdr_event_smf.go +++ b/src/modules/network_data/repository/cdr_event_smf.go @@ -6,6 +6,7 @@ import ( 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" @@ -69,19 +70,21 @@ func (r *CDREventSMF) SelectPage(querys model.CDREventSMFQuery) map[string]any { conditions = append(conditions, "rm_uid = ?") params = append(params, querys.RmUID) } - if querys.StartTime != "" { + if querys.StartTime != 0 { conditions = append(conditions, "timestamp >= ?") - if len(querys.StartTime) == 13 { - querys.StartTime = querys.StartTime[:10] + startTime := fmt.Sprintf("%d", querys.StartTime) + if len(startTime) == 13 { + startTime = startTime[:10] } - params = append(params, querys.StartTime) + params = append(params, startTime) } - if querys.EndTime != "" { + if querys.EndTime != 0 { conditions = append(conditions, "timestamp <= ?") - if len(querys.EndTime) == 13 { - querys.EndTime = querys.EndTime[:10] + endTime := fmt.Sprintf("%d", querys.EndTime) + if len(endTime) == 13 { + endTime = endTime[:10] } - params = append(params, querys.EndTime) + params = append(params, endTime) } if querys.RecordType != "" { conditions = append(conditions, "JSON_EXTRACT(cdr_json, '$.recordType') = ?") @@ -190,15 +193,15 @@ func (r CDREventSMF) SelectByPage(querys model.CDREventSMFQuery) ([]model.CDREve if querys.RmUID != "" { tx = tx.Where("rm_uid = ?", querys.RmUID) } - if querys.StartTime != "" { - startTime := querys.StartTime + if querys.StartTime != 0 { + startTime := fmt.Sprintf("%d", querys.StartTime) if len(startTime) == 13 { startTime = startTime[:10] } tx = tx.Where("timestamp >= ?", startTime) } - if querys.EndTime != "" { - endTime := querys.EndTime + if querys.EndTime != 0 { + endTime := fmt.Sprintf("%d", querys.EndTime) if len(endTime) == 13 { endTime = endTime[:10] } diff --git a/src/modules/network_data/repository/cdr_event_smsc.go b/src/modules/network_data/repository/cdr_event_smsc.go index dcfa6c4f..c37495e9 100644 --- a/src/modules/network_data/repository/cdr_event_smsc.go +++ b/src/modules/network_data/repository/cdr_event_smsc.go @@ -69,19 +69,21 @@ func (r *CDREventSMSC) SelectPage(querys model.CDREventSMSCQuery) map[string]any conditions = append(conditions, "rm_uid = ?") params = append(params, querys.RmUID) } - if querys.StartTime != "" { + if querys.StartTime != 0 { conditions = append(conditions, "timestamp >= ?") - if len(querys.StartTime) == 13 { - querys.StartTime = querys.StartTime[:10] + startTime := fmt.Sprintf("%d", querys.StartTime) + if len(startTime) == 13 { + startTime = startTime[:10] } - params = append(params, querys.StartTime) + params = append(params, startTime) } - if querys.EndTime != "" { + if querys.EndTime != 0 { conditions = append(conditions, "timestamp <= ?") - if len(querys.EndTime) == 13 { - querys.EndTime = querys.EndTime[:10] + endTime := fmt.Sprintf("%d", querys.EndTime) + if len(endTime) == 13 { + endTime = endTime[:10] } - params = append(params, querys.EndTime) + params = append(params, endTime) } if querys.CallerParty != "" { conditions = append(conditions, "JSON_EXTRACT(cdr_json, '$.callerParty') = ?") @@ -205,15 +207,15 @@ func (r CDREventSMSC) SelectByPage(querys model.CDREventSMSCQuery) ([]model.CDRE if querys.RmUID != "" { tx = tx.Where("rm_uid = ?", querys.RmUID) } - if querys.StartTime != "" { - startTime := querys.StartTime + if querys.StartTime != 0 { + startTime := fmt.Sprintf("%d", querys.StartTime) if len(startTime) == 13 { startTime = startTime[:10] } tx = tx.Where("timestamp >= ?", startTime) } - if querys.EndTime != "" { - endTime := querys.EndTime + if querys.EndTime != 0 { + endTime := fmt.Sprintf("%d", querys.EndTime) if len(endTime) == 13 { endTime = endTime[:10] } diff --git a/src/modules/network_data/repository/ue_event_amf.go b/src/modules/network_data/repository/ue_event_amf.go index 1ba87d69..22cb3495 100644 --- a/src/modules/network_data/repository/ue_event_amf.go +++ b/src/modules/network_data/repository/ue_event_amf.go @@ -70,19 +70,21 @@ func (r *UEEventAMF) SelectPage(querys model.UEEventAMFQuery) map[string]any { conditions = append(conditions, "rm_uid = ?") params = append(params, querys.RmUID) } - if querys.StartTime != "" { + if querys.StartTime != 0 { conditions = append(conditions, "timestamp >= ?") - if len(querys.StartTime) == 13 { - querys.StartTime = querys.StartTime[:10] + startTime := fmt.Sprintf("%d", querys.StartTime) + if len(startTime) == 13 { + startTime = startTime[:10] } - params = append(params, querys.StartTime) + params = append(params, startTime) } - if querys.EndTime != "" { + if querys.EndTime != 0 { conditions = append(conditions, "timestamp <= ?") - if len(querys.EndTime) == 13 { - querys.EndTime = querys.EndTime[:10] + endTime := fmt.Sprintf("%d", querys.EndTime) + if len(endTime) == 13 { + endTime = endTime[:10] } - params = append(params, querys.EndTime) + params = append(params, endTime) } if querys.EventType != "" { eventTypes := strings.Split(querys.EventType, ",") @@ -191,15 +193,15 @@ func (r UEEventAMF) SelectByPage(querys model.UEEventAMFQuery) ([]model.UEEventA if querys.RmUID != "" { tx = tx.Where("rm_uid = ?", querys.RmUID) } - if querys.StartTime != "" { - startTime := querys.StartTime + if querys.StartTime != 0 { + startTime := fmt.Sprintf("%d", querys.StartTime) if len(startTime) == 13 { startTime = startTime[:10] } tx = tx.Where("timestamp >= ?", startTime) } - if querys.EndTime != "" { - endTime := querys.EndTime + if querys.EndTime != 0 { + endTime := fmt.Sprintf("%d", querys.EndTime) if len(endTime) == 13 { endTime = endTime[:10] } diff --git a/src/modules/network_data/repository/ue_event_mme.go b/src/modules/network_data/repository/ue_event_mme.go index 0b1b9e64..a4b51348 100644 --- a/src/modules/network_data/repository/ue_event_mme.go +++ b/src/modules/network_data/repository/ue_event_mme.go @@ -70,19 +70,21 @@ func (r *UEEventMME) SelectPage(querys model.UEEventMMEQuery) map[string]any { conditions = append(conditions, "rm_uid = ?") params = append(params, querys.RmUID) } - if querys.StartTime != "" { + if querys.StartTime != 0 { conditions = append(conditions, "timestamp >= ?") - if len(querys.StartTime) == 13 { - querys.StartTime = querys.StartTime[:10] + startTime := fmt.Sprintf("%d", querys.StartTime) + if len(startTime) == 13 { + startTime = startTime[:10] } - params = append(params, querys.StartTime) + params = append(params, startTime) } - if querys.EndTime != "" { + if querys.EndTime != 0 { conditions = append(conditions, "timestamp <= ?") - if len(querys.EndTime) == 13 { - querys.EndTime = querys.EndTime[:10] + endTime := fmt.Sprintf("%d", querys.EndTime) + if len(endTime) == 13 { + endTime = endTime[:10] } - params = append(params, querys.EndTime) + params = append(params, endTime) } if querys.EventType != "" { eventTypes := strings.Split(querys.EventType, ",") @@ -191,15 +193,15 @@ func (r UEEventMME) SelectByPage(querys model.UEEventMMEQuery) ([]model.UEEventM if querys.RmUID != "" { tx = tx.Where("rm_uid = ?", querys.RmUID) } - if querys.StartTime != "" { - startTime := querys.StartTime + if querys.StartTime != 0 { + startTime := fmt.Sprintf("%d", querys.StartTime) if len(startTime) == 13 { startTime = startTime[:10] } tx = tx.Where("timestamp >= ?", startTime) } - if querys.EndTime != "" { - endTime := querys.EndTime + if querys.EndTime != 0 { + endTime := fmt.Sprintf("%d", querys.EndTime) if len(endTime) == 13 { endTime = endTime[:10] } diff --git a/src/modules/network_data/service/cdr_event_sgwc.go b/src/modules/network_data/service/cdr_event_sgwc.go index a0ecb6c7..d07c8fea 100644 --- a/src/modules/network_data/service/cdr_event_sgwc.go +++ b/src/modules/network_data/service/cdr_event_sgwc.go @@ -58,8 +58,8 @@ func (r CDREventSGWC) ExportXlsx(rows []model.CDREventSGWC, fileName string) (st "H1": "GPRS Downlink", "I1": "Duration", "J1": "Invocation Time", - "K1": "GGSN Address", - "L1": "SGSN Address", + "K1": "PGW Address", + "L1": "SGW Address", "M1": "RAT Type", "N1": "PDPPDN Type", "O1": "PDPPDN Address", @@ -102,17 +102,21 @@ func (r CDREventSGWC) ExportXlsx(rows []model.CDREventSGWC, fileName string) (st pGWAddressUsed := "" if v, ok := cdrJSON["pGWAddressUsed"]; ok && v != nil { pGWAddressUsed = fmt.Sprint(v) + headerCells["K1"] = "PGW Address" } if v, ok := cdrJSON["GGSNAddress"]; ok && v != nil { pGWAddressUsed = fmt.Sprint(v) + headerCells["K1"] = "GGSN Address" } // sGWAddress sGWAddress := "" if v, ok := cdrJSON["sGWAddress"]; ok && v != nil { sGWAddress = fmt.Sprint(v) + headerCells["L1"] = "SGW Address" } if v, ok := cdrJSON["SGSNAddress"]; ok && v != nil { sGWAddress = fmt.Sprint(v) + headerCells["L1"] = "SGSN Address" } // recordType recordType := "" diff --git a/src/modules/network_element/repository/ne_info.go b/src/modules/network_element/repository/ne_info.go index 97588aa6..4ab54e3a 100644 --- a/src/modules/network_element/repository/ne_info.go +++ b/src/modules/network_element/repository/ne_info.go @@ -208,8 +208,10 @@ func (r *NeInfo) UpdateState(id, status string) int64 { tx := datasource.DB("").Model(&model.NeInfo{}) // 构建查询条件 tx = tx.Where("id = ?", id) + tx.UpdateColumn("status", status) + tx.UpdateColumn("update_time", time.Now().UnixMilli()) // 执行更新 - if err := tx.UpdateColumn("status", status).Error; err != nil { + if err := tx.Error; err != nil { logger.Errorf("update err => %v", err.Error()) return 0 } diff --git a/sshsvc/makefile b/sshsvc/makefile index 4243beea..13d215cf 100644 --- a/sshsvc/makefile +++ b/sshsvc/makefile @@ -1,7 +1,7 @@ # Makefile for OMC-OMC-crontask project PROJECT = OMC -VERSION = 2.2502.2 +VERSION = 2.2502.3 LIBDIR = be.ems/lib BINNAME = sshsvc