diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d4a423a..acfc3577 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,11 +7,12 @@ - 修复 OMC网元操作重启失败 - 优化 产品化共性问题,adb(redis)增加密码保护 - 修复 调度任务获取网元状态任务失败 -- 优化 UPF标准版的MML输出内容完整性, restconfg.yaml配置文件增加了MML配置项 +- 优化 UPF标准版的MML输出内容完整性, restconf.yaml配置文件增加了MML配置项 - 新增 合入PCF和UDM的参数配置,新增plmn list参数配置项 - 修复 网元license上传时如果遇到网元没有system.ini文件时失败的问题 -- 优化 adb安装目录变化:1. 判断/usr/local/bin/adb-server存在时,则OMC不安装adb, 2.判断/usr/local/bin/adb-server不存在时,安装adb至新的路径,并判断老的adb是否存在,拷贝/usr/local/db/bin/conf/dump.rdb至/usr/local/etc/adb,修改/usr/local/db目录为/usr/local/adb.old -- 新增 支持告警通过短信中心的短信前转功能需求,对应的配置项是alarm.smsc,可将default的restconf.yaml相关配置项同步至使用中的配置文件 +- 优化 adb安装目录变化:1. 判断/usr/local/bin/adb-server存在时,则OMC不安装adb, 2.判断/usr/local/bin/adb-server不存在时,安装adb至新的路径,并判断老的adb是否存在,如果存在则拷贝/usr/local/db/bin/conf/dump.rdb至/usr/local/etc/adb,修改/usr/local/db目录为/usr/local/adb.old +- 优化 安装过程会将/usr/local/omc/etc目录下的配置文件备份为.bak, 然后将/usr/local/omc/etc/default目录下的配置文件拷贝至/usr/local/omc/etc目录 +- 新增 支持告警通过短信中心的短信前转功能需求,配置项是restconf.yaml的alarm.smsc ## 2.2404.3-20240412 diff --git a/database/install/sys_dict_data1_i18n_zh.sql b/database/install/sys_dict_data1_i18n_zh.sql index 583cfb63..b4bbbb5f 100644 --- a/database/install/sys_dict_data1_i18n_zh.sql +++ b/database/install/sys_dict_data1_i18n_zh.sql @@ -653,5 +653,8 @@ INSERT INTO `sys_dict_data` VALUES (2126, 2126, 'ne_license_status.1', '有效', INSERT INTO `sys_dict_data` VALUES (2127, 2127, 'menu.dashboard.mocn', 'MOCN', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (2128, 2128, 'menu.monitor.cdr', '话单', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (2129, 2129, 'menu.monitor.event', '事件', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (2130, 2130, 'post.export.time', '创建时间', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (2131, 2131, 'role.export.time', '创建时间', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); + SET FOREIGN_KEY_CHECKS = 1; diff --git a/database/install/sys_dict_data2_i18n_en.sql b/database/install/sys_dict_data2_i18n_en.sql index 08fb494f..b3656eb1 100644 --- a/database/install/sys_dict_data2_i18n_en.sql +++ b/database/install/sys_dict_data2_i18n_en.sql @@ -653,5 +653,7 @@ INSERT INTO `sys_dict_data` VALUES (4126, 4126, 'ne_license_status.1', 'Valid', INSERT INTO `sys_dict_data` VALUES (4127, 4127, 'menu.dashboard.mocn', 'MOCN', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (4128, 4128, 'menu.monitor.cdr', 'CDR', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (4129, 4129, 'menu.monitor.event', 'Event', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (4130, 4130, 'post.export.time', 'Creation Time', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (4131, 4131, 'role.export.time', 'Creation Time', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); 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 b90ba9c1..fbf791bf 100644 --- a/database/upgrade/upg_sys_dict_data1_i18n_zh.sql +++ b/database/upgrade/upg_sys_dict_data1_i18n_zh.sql @@ -650,5 +650,7 @@ REPLACE INTO `sys_dict_data` VALUES (2126, 2126, 'ne_license_status.1', '有效' REPLACE INTO `sys_dict_data` VALUES (2127, 2127, 'menu.dashboard.mocn', 'MOCN', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (2128, 2128, 'menu.monitor.cdr', '话单', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (2129, 2129, 'menu.monitor.event', '事件', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); +REPLACE INTO `sys_dict_data` VALUES (2130, 2130, 'post.export.time', '创建时间', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); +REPLACE INTO `sys_dict_data` VALUES (2131, 2131, 'role.export.time', '创建时间', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); SET FOREIGN_KEY_CHECKS = 1; diff --git a/database/upgrade/upg_sys_dict_data2_i18n_en.sql b/database/upgrade/upg_sys_dict_data2_i18n_en.sql index e6f55176..5fc28555 100644 --- a/database/upgrade/upg_sys_dict_data2_i18n_en.sql +++ b/database/upgrade/upg_sys_dict_data2_i18n_en.sql @@ -651,5 +651,7 @@ REPLACE INTO `sys_dict_data` VALUES (4126, 4126, 'ne_license_status.1', 'Valid', REPLACE INTO `sys_dict_data` VALUES (4127, 4127, 'menu.dashboard.mocn', 'MOCN', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (4128, 4128, 'menu.monitor.cdr', 'CDR', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (4129, 4129, 'menu.monitor.event', 'Event', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); +REPLACE INTO `sys_dict_data` VALUES (4130, 4130, 'post.export.time', 'Creation Time', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); +REPLACE INTO `sys_dict_data` VALUES (4131, 4131, 'role.export.time', 'Creation Time', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); SET FOREIGN_KEY_CHECKS = 1; diff --git a/features/ue/ue.go b/features/ue/ue.go index 24b61328..279e24b9 100644 --- a/features/ue/ue.go +++ b/features/ue/ue.go @@ -46,6 +46,7 @@ type SmfUEInfo struct { UpfN3IP string `json:"upfN3IP"` RanN3IP string `json:"ranN3IP"` Activetime string `json:"activeTime"` + UpState string `json:"upState"` } `json:"pduSessionInfo"` } diff --git a/src/framework/utils/date/date.go b/src/framework/utils/date/date.go index 533bf099..84ae33d4 100644 --- a/src/framework/utils/date/date.go +++ b/src/framework/utils/date/date.go @@ -17,6 +17,8 @@ const ( YYYYMMDDHHMMSS = "20060102150405" // 年-月-日 时:分:秒 列如:2022-12-30 01:01:59 YYYY_MM_DD_HH_MM_SS = "2006-01-02 15:04:05" + // 年-月-日T时:分:秒Z时区 列如:2022-12-30T01:01:59+08:00 + YYYY_MM_DDTHH_MM_SSZ = time.RFC3339 ) // 格式时间字符串 diff --git a/src/modules/system/controller/sys_log_login.go b/src/modules/system/controller/sys_log_login.go index fb1fad17..7a75b49d 100644 --- a/src/modules/system/controller/sys_log_login.go +++ b/src/modules/system/controller/sys_log_login.go @@ -179,7 +179,7 @@ func (s *SysLogLoginController) Export(c *gin.Context) { "E" + idx: row.OS, "F" + idx: row.Browser, "G" + idx: statusValue, - "H" + idx: date.ParseDateToStr(row.LoginTime, date.YYYY_MM_DD_HH_MM_SS), + "H" + idx: date.ParseDateToStr(row.LoginTime, date.YYYY_MM_DDTHH_MM_SSZ), "I" + idx: row.Msg, }) } diff --git a/src/modules/system/controller/sys_log_operate.go b/src/modules/system/controller/sys_log_operate.go index f1987a49..3c542a9c 100644 --- a/src/modules/system/controller/sys_log_operate.go +++ b/src/modules/system/controller/sys_log_operate.go @@ -190,7 +190,7 @@ func (s *SysLogOperateController) Export(c *gin.Context) { "E" + idx: row.RequestMethod, "F" + idx: row.OperIP, "G" + idx: statusValue, - "H" + idx: date.ParseDateToStr(row.OperTime, date.YYYY_MM_DD_HH_MM_SS), + "H" + idx: date.ParseDateToStr(row.OperTime, date.YYYY_MM_DDTHH_MM_SSZ), "I" + idx: row.CostTime, }) } diff --git a/src/modules/system/controller/sys_post.go b/src/modules/system/controller/sys_post.go index 082bb5ca..7d2b6584 100644 --- a/src/modules/system/controller/sys_post.go +++ b/src/modules/system/controller/sys_post.go @@ -8,6 +8,7 @@ import ( "be.ems/src/framework/i18n" "be.ems/src/framework/utils/ctx" + "be.ems/src/framework/utils/date" "be.ems/src/framework/utils/file" "be.ems/src/framework/utils/parse" "be.ems/src/framework/vo/result" @@ -210,20 +211,17 @@ func (s *SysPostController) Export(c *gin.Context) { language := ctx.AcceptLanguage(c) // 查询结果,根据查询条件结果,单页最大值限制 // querys := ctx.BodyJSONMap(c) - // data := s.sysPostService.SelectPostPage(querys) - // if data["total"].(int64) == 0 { - // // 导出数据记录为空 - // c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty"))) - // return - // } - // rows := data["rows"].([]model.SysPost) - - rows := s.sysPostService.SelectPostList(model.SysPost{}) - if len(rows) <= 0 { + querys := map[string]any{ + "pageNum": 1, + "pageSize": 1000, + } + data := s.sysPostService.SelectPostPage(querys) + if data["total"].(int64) == 0 { // 导出数据记录为空 c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty"))) return } + rows := data["rows"].([]model.SysPost) // 闭包函数处理多语言 converI18n := func(language string, arr *[]model.SysPost) { @@ -243,6 +241,7 @@ func (s *SysPostController) Export(c *gin.Context) { "C1": i18n.TKey(language, "post.export.code"), "D1": i18n.TKey(language, "post.export.sort"), "E1": i18n.TKey(language, "post.export.status"), + "F1": i18n.TKey(language, "post.export.time"), } // 从第二行开始的数据 dataCells := make([]map[string]any, 0) @@ -258,6 +257,7 @@ func (s *SysPostController) Export(c *gin.Context) { "C" + idx: row.PostCode, "D" + idx: row.PostSort, "E" + idx: statusValue, + "F" + idx: date.ParseDateToStr(row.CreateTime, date.YYYY_MM_DDTHH_MM_SSZ), }) } diff --git a/src/modules/system/controller/sys_role.go b/src/modules/system/controller/sys_role.go index 26afe813..be43f919 100644 --- a/src/modules/system/controller/sys_role.go +++ b/src/modules/system/controller/sys_role.go @@ -9,6 +9,7 @@ import ( "be.ems/src/framework/constants/admin" "be.ems/src/framework/i18n" "be.ems/src/framework/utils/ctx" + "be.ems/src/framework/utils/date" "be.ems/src/framework/utils/file" "be.ems/src/framework/utils/parse" "be.ems/src/framework/vo/result" @@ -413,21 +414,18 @@ func (s *SysRoleController) Export(c *gin.Context) { language := ctx.AcceptLanguage(c) // 查询结果,根据查询条件结果,单页最大值限制 // querys := ctx.BodyJSONMap(c) + querys := map[string]any{ + "pageNum": 1, + "pageSize": 1000, + } dataScopeSQL := ctx.LoginUserToDataScopeSQL(c, "d", "") - // data := s.sysRoleService.SelectRolePage(querys, dataScopeSQL) - // if data["total"].(int64) == 0 { - // // 导出数据记录为空 - // c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty"))) - // return - // } - // rows := data["rows"].([]model.SysRole) - - rows := s.sysRoleService.SelectRoleList(model.SysRole{}, dataScopeSQL) - if len(rows) <= 0 { + data := s.sysRoleService.SelectRolePage(querys, dataScopeSQL) + if data["total"].(int64) == 0 { // 导出数据记录为空 c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty"))) return } + rows := data["rows"].([]model.SysRole) // 闭包函数处理多语言 converI18n := func(language string, arr *[]model.SysRole) { @@ -447,6 +445,7 @@ func (s *SysRoleController) Export(c *gin.Context) { "C1": i18n.TKey(language, "role.export.key"), "D1": i18n.TKey(language, "role.export.sort"), "E1": i18n.TKey(language, "role.export.status"), + "F1": i18n.TKey(language, "role.export.time"), // "F1": i18n.TKey(language, "role.export.dataScope"), } // 读取系统角色数据范围字典数据 @@ -474,6 +473,7 @@ func (s *SysRoleController) Export(c *gin.Context) { "C" + idx: row.RoleKey, "D" + idx: row.RoleSort, "E" + idx: statusValue, + "F" + idx: date.ParseDateToStr(row.CreateTime, date.YYYY_MM_DDTHH_MM_SSZ), // "F" + idx: dataScope, }) } diff --git a/src/modules/system/controller/sys_user.go b/src/modules/system/controller/sys_user.go index 64523437..e5515a10 100644 --- a/src/modules/system/controller/sys_user.go +++ b/src/modules/system/controller/sys_user.go @@ -474,21 +474,18 @@ func (s *SysUserController) Export(c *gin.Context) { language := ctx.AcceptLanguage(c) // 查询结果,根据查询条件结果,单页最大值限制 // querys := ctx.BodyJSONMap(c) + querys := map[string]any{ + "pageNum": 1, + "pageSize": 1000, + } dataScopeSQL := ctx.LoginUserToDataScopeSQL(c, "d", "u") - // data := s.sysUserService.SelectUserPage(querys, dataScopeSQL) - // if data["total"].(int64) == 0 { - // // 导出数据记录为空 - // c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty"))) - // return - // } - // rows := data["rows"].([]model.SysUser) - - rows := s.sysUserService.SelectUserList(model.SysUser{}, dataScopeSQL) - if len(rows) <= 0 { + data := s.sysUserService.SelectUserPage(querys, dataScopeSQL) + if data["total"].(int64) == 0 { // 导出数据记录为空 c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty"))) return } + rows := data["rows"].([]model.SysUser) // 闭包函数处理多语言 converI18n := func(language string, arr *[]model.SysUser) { @@ -543,9 +540,7 @@ func (s *SysUserController) Export(c *gin.Context) { // 用户角色, 默认导出首个 userRole := "" if len(row.Roles) > 0 { - roleID := row.Roles[0].RoleID - roleName := i18n.TKey(language, row.Roles[0].RoleName) - userRole = fmt.Sprintf("%s-%s", roleID, roleName) + userRole = i18n.TKey(language, row.Roles[0].RoleName) } dataCells = append(dataCells, map[string]any{ "A" + idx: row.UserID,