Merge remote-tracking branch 'origin/main' into lichang
This commit is contained in:
@@ -7,11 +7,12 @@
|
|||||||
- 修复 OMC网元操作重启失败
|
- 修复 OMC网元操作重启失败
|
||||||
- 优化 产品化共性问题,adb(redis)增加密码保护
|
- 优化 产品化共性问题,adb(redis)增加密码保护
|
||||||
- 修复 调度任务获取网元状态任务失败
|
- 修复 调度任务获取网元状态任务失败
|
||||||
- 优化 UPF标准版的MML输出内容完整性, restconfg.yaml配置文件增加了MML配置项
|
- 优化 UPF标准版的MML输出内容完整性, restconf.yaml配置文件增加了MML配置项
|
||||||
- 新增 合入PCF和UDM的参数配置,新增plmn list参数配置项
|
- 新增 合入PCF和UDM的参数配置,新增plmn list参数配置项
|
||||||
- 修复 网元license上传时如果遇到网元没有system.ini文件时失败的问题
|
- 修复 网元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
|
- 优化 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相关配置项同步至使用中的配置文件
|
- 优化 安装过程会将/usr/local/omc/etc目录下的配置文件备份为.bak, 然后将/usr/local/omc/etc/default目录下的配置文件拷贝至/usr/local/omc/etc目录
|
||||||
|
- 新增 支持告警通过短信中心的短信前转功能需求,配置项是restconf.yaml的alarm.smsc
|
||||||
|
|
||||||
## 2.2404.3-20240412
|
## 2.2404.3-20240412
|
||||||
|
|
||||||
|
|||||||
@@ -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 (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 (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 (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;
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
|
|||||||
@@ -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 (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 (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 (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;
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
|
|||||||
@@ -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 (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 (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 (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;
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
|
|||||||
@@ -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 (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 (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 (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;
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ type SmfUEInfo struct {
|
|||||||
UpfN3IP string `json:"upfN3IP"`
|
UpfN3IP string `json:"upfN3IP"`
|
||||||
RanN3IP string `json:"ranN3IP"`
|
RanN3IP string `json:"ranN3IP"`
|
||||||
Activetime string `json:"activeTime"`
|
Activetime string `json:"activeTime"`
|
||||||
|
UpState string `json:"upState"`
|
||||||
} `json:"pduSessionInfo"`
|
} `json:"pduSessionInfo"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ const (
|
|||||||
YYYYMMDDHHMMSS = "20060102150405"
|
YYYYMMDDHHMMSS = "20060102150405"
|
||||||
// 年-月-日 时:分:秒 列如:2022-12-30 01:01:59
|
// 年-月-日 时:分:秒 列如:2022-12-30 01:01:59
|
||||||
YYYY_MM_DD_HH_MM_SS = "2006-01-02 15:04:05"
|
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
|
||||||
)
|
)
|
||||||
|
|
||||||
// 格式时间字符串
|
// 格式时间字符串
|
||||||
|
|||||||
@@ -179,7 +179,7 @@ func (s *SysLogLoginController) Export(c *gin.Context) {
|
|||||||
"E" + idx: row.OS,
|
"E" + idx: row.OS,
|
||||||
"F" + idx: row.Browser,
|
"F" + idx: row.Browser,
|
||||||
"G" + idx: statusValue,
|
"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,
|
"I" + idx: row.Msg,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ func (s *SysLogOperateController) Export(c *gin.Context) {
|
|||||||
"E" + idx: row.RequestMethod,
|
"E" + idx: row.RequestMethod,
|
||||||
"F" + idx: row.OperIP,
|
"F" + idx: row.OperIP,
|
||||||
"G" + idx: statusValue,
|
"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,
|
"I" + idx: row.CostTime,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import (
|
|||||||
|
|
||||||
"be.ems/src/framework/i18n"
|
"be.ems/src/framework/i18n"
|
||||||
"be.ems/src/framework/utils/ctx"
|
"be.ems/src/framework/utils/ctx"
|
||||||
|
"be.ems/src/framework/utils/date"
|
||||||
"be.ems/src/framework/utils/file"
|
"be.ems/src/framework/utils/file"
|
||||||
"be.ems/src/framework/utils/parse"
|
"be.ems/src/framework/utils/parse"
|
||||||
"be.ems/src/framework/vo/result"
|
"be.ems/src/framework/vo/result"
|
||||||
@@ -210,20 +211,17 @@ func (s *SysPostController) Export(c *gin.Context) {
|
|||||||
language := ctx.AcceptLanguage(c)
|
language := ctx.AcceptLanguage(c)
|
||||||
// 查询结果,根据查询条件结果,单页最大值限制
|
// 查询结果,根据查询条件结果,单页最大值限制
|
||||||
// querys := ctx.BodyJSONMap(c)
|
// querys := ctx.BodyJSONMap(c)
|
||||||
// data := s.sysPostService.SelectPostPage(querys)
|
querys := map[string]any{
|
||||||
// if data["total"].(int64) == 0 {
|
"pageNum": 1,
|
||||||
// // 导出数据记录为空
|
"pageSize": 1000,
|
||||||
// c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty")))
|
}
|
||||||
// return
|
data := s.sysPostService.SelectPostPage(querys)
|
||||||
// }
|
if data["total"].(int64) == 0 {
|
||||||
// rows := data["rows"].([]model.SysPost)
|
|
||||||
|
|
||||||
rows := s.sysPostService.SelectPostList(model.SysPost{})
|
|
||||||
if len(rows) <= 0 {
|
|
||||||
// 导出数据记录为空
|
// 导出数据记录为空
|
||||||
c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty")))
|
c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty")))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
rows := data["rows"].([]model.SysPost)
|
||||||
|
|
||||||
// 闭包函数处理多语言
|
// 闭包函数处理多语言
|
||||||
converI18n := func(language string, arr *[]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"),
|
"C1": i18n.TKey(language, "post.export.code"),
|
||||||
"D1": i18n.TKey(language, "post.export.sort"),
|
"D1": i18n.TKey(language, "post.export.sort"),
|
||||||
"E1": i18n.TKey(language, "post.export.status"),
|
"E1": i18n.TKey(language, "post.export.status"),
|
||||||
|
"F1": i18n.TKey(language, "post.export.time"),
|
||||||
}
|
}
|
||||||
// 从第二行开始的数据
|
// 从第二行开始的数据
|
||||||
dataCells := make([]map[string]any, 0)
|
dataCells := make([]map[string]any, 0)
|
||||||
@@ -258,6 +257,7 @@ func (s *SysPostController) Export(c *gin.Context) {
|
|||||||
"C" + idx: row.PostCode,
|
"C" + idx: row.PostCode,
|
||||||
"D" + idx: row.PostSort,
|
"D" + idx: row.PostSort,
|
||||||
"E" + idx: statusValue,
|
"E" + idx: statusValue,
|
||||||
|
"F" + idx: date.ParseDateToStr(row.CreateTime, date.YYYY_MM_DDTHH_MM_SSZ),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import (
|
|||||||
"be.ems/src/framework/constants/admin"
|
"be.ems/src/framework/constants/admin"
|
||||||
"be.ems/src/framework/i18n"
|
"be.ems/src/framework/i18n"
|
||||||
"be.ems/src/framework/utils/ctx"
|
"be.ems/src/framework/utils/ctx"
|
||||||
|
"be.ems/src/framework/utils/date"
|
||||||
"be.ems/src/framework/utils/file"
|
"be.ems/src/framework/utils/file"
|
||||||
"be.ems/src/framework/utils/parse"
|
"be.ems/src/framework/utils/parse"
|
||||||
"be.ems/src/framework/vo/result"
|
"be.ems/src/framework/vo/result"
|
||||||
@@ -413,21 +414,18 @@ func (s *SysRoleController) Export(c *gin.Context) {
|
|||||||
language := ctx.AcceptLanguage(c)
|
language := ctx.AcceptLanguage(c)
|
||||||
// 查询结果,根据查询条件结果,单页最大值限制
|
// 查询结果,根据查询条件结果,单页最大值限制
|
||||||
// querys := ctx.BodyJSONMap(c)
|
// querys := ctx.BodyJSONMap(c)
|
||||||
|
querys := map[string]any{
|
||||||
|
"pageNum": 1,
|
||||||
|
"pageSize": 1000,
|
||||||
|
}
|
||||||
dataScopeSQL := ctx.LoginUserToDataScopeSQL(c, "d", "")
|
dataScopeSQL := ctx.LoginUserToDataScopeSQL(c, "d", "")
|
||||||
// data := s.sysRoleService.SelectRolePage(querys, dataScopeSQL)
|
data := s.sysRoleService.SelectRolePage(querys, dataScopeSQL)
|
||||||
// if data["total"].(int64) == 0 {
|
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 {
|
|
||||||
// 导出数据记录为空
|
// 导出数据记录为空
|
||||||
c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty")))
|
c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty")))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
rows := data["rows"].([]model.SysRole)
|
||||||
|
|
||||||
// 闭包函数处理多语言
|
// 闭包函数处理多语言
|
||||||
converI18n := func(language string, arr *[]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"),
|
"C1": i18n.TKey(language, "role.export.key"),
|
||||||
"D1": i18n.TKey(language, "role.export.sort"),
|
"D1": i18n.TKey(language, "role.export.sort"),
|
||||||
"E1": i18n.TKey(language, "role.export.status"),
|
"E1": i18n.TKey(language, "role.export.status"),
|
||||||
|
"F1": i18n.TKey(language, "role.export.time"),
|
||||||
// "F1": i18n.TKey(language, "role.export.dataScope"),
|
// "F1": i18n.TKey(language, "role.export.dataScope"),
|
||||||
}
|
}
|
||||||
// 读取系统角色数据范围字典数据
|
// 读取系统角色数据范围字典数据
|
||||||
@@ -474,6 +473,7 @@ func (s *SysRoleController) Export(c *gin.Context) {
|
|||||||
"C" + idx: row.RoleKey,
|
"C" + idx: row.RoleKey,
|
||||||
"D" + idx: row.RoleSort,
|
"D" + idx: row.RoleSort,
|
||||||
"E" + idx: statusValue,
|
"E" + idx: statusValue,
|
||||||
|
"F" + idx: date.ParseDateToStr(row.CreateTime, date.YYYY_MM_DDTHH_MM_SSZ),
|
||||||
// "F" + idx: dataScope,
|
// "F" + idx: dataScope,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -474,21 +474,18 @@ func (s *SysUserController) Export(c *gin.Context) {
|
|||||||
language := ctx.AcceptLanguage(c)
|
language := ctx.AcceptLanguage(c)
|
||||||
// 查询结果,根据查询条件结果,单页最大值限制
|
// 查询结果,根据查询条件结果,单页最大值限制
|
||||||
// querys := ctx.BodyJSONMap(c)
|
// querys := ctx.BodyJSONMap(c)
|
||||||
|
querys := map[string]any{
|
||||||
|
"pageNum": 1,
|
||||||
|
"pageSize": 1000,
|
||||||
|
}
|
||||||
dataScopeSQL := ctx.LoginUserToDataScopeSQL(c, "d", "u")
|
dataScopeSQL := ctx.LoginUserToDataScopeSQL(c, "d", "u")
|
||||||
// data := s.sysUserService.SelectUserPage(querys, dataScopeSQL)
|
data := s.sysUserService.SelectUserPage(querys, dataScopeSQL)
|
||||||
// if data["total"].(int64) == 0 {
|
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 {
|
|
||||||
// 导出数据记录为空
|
// 导出数据记录为空
|
||||||
c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty")))
|
c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.exportEmpty")))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
rows := data["rows"].([]model.SysUser)
|
||||||
|
|
||||||
// 闭包函数处理多语言
|
// 闭包函数处理多语言
|
||||||
converI18n := func(language string, arr *[]model.SysUser) {
|
converI18n := func(language string, arr *[]model.SysUser) {
|
||||||
@@ -543,9 +540,7 @@ func (s *SysUserController) Export(c *gin.Context) {
|
|||||||
// 用户角色, 默认导出首个
|
// 用户角色, 默认导出首个
|
||||||
userRole := ""
|
userRole := ""
|
||||||
if len(row.Roles) > 0 {
|
if len(row.Roles) > 0 {
|
||||||
roleID := row.Roles[0].RoleID
|
userRole = i18n.TKey(language, row.Roles[0].RoleName)
|
||||||
roleName := i18n.TKey(language, row.Roles[0].RoleName)
|
|
||||||
userRole = fmt.Sprintf("%s-%s", roleID, roleName)
|
|
||||||
}
|
}
|
||||||
dataCells = append(dataCells, map[string]any{
|
dataCells = append(dataCells, map[string]any{
|
||||||
"A" + idx: row.UserID,
|
"A" + idx: row.UserID,
|
||||||
|
|||||||
Reference in New Issue
Block a user